~ubuntu-branches/ubuntu/saucy/muse/saucy

« back to all changes in this revision

Viewing changes to muse/widgets/scrollscale.cpp

  • Committer: Package Import Robot
  • Author(s): Alessio Treglia
  • Date: 2013-01-31 10:21:39 UTC
  • mfrom: (1.1.15)
  • Revision ID: package-import@ubuntu.com-20130131102139-3nzmsj7eoul58cp5
Tags: 2.1.1-1
* New upstream release.
* Refresh patches.
* Remove unnecessary debian/patches/0001-es_locale_fix.patch.
* Fix Vcs fields.
* Refresh debian/copyright.
* Elaborate public-domain licensed code.
* Fix doc-base control file.
* Bump debhelper requirements.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
//    "val" - slider value in range 0-convertQuickZoomLevelToMag(zoomLevels-1)
43
43
//---------------------------------------------------------
44
44
 
45
 
void ScrollScale::setScale ( int val )
 
45
void ScrollScale::setScale ( int val, int pos_offset )
46
46
{
47
47
        int off = offset();
 
48
        int old_scale_val = scaleVal;
48
49
        if ( invers )
49
50
        val = convertQuickZoomLevelToMag(zoomLevels-1) - val;
50
51
        double min, max;
107
108
    pos = off * scaleVal;
108
109
    pmax = maxVal * scaleVal - i;
109
110
  }
 
111
 
 
112
  // Zoom at cursor support...
 
113
  if(pos_offset != 0)
 
114
  {
 
115
    double oscale = old_scale_val;
 
116
    double nscale = scaleVal;
 
117
    if(old_scale_val < 1)
 
118
      oscale = 1.0 / -old_scale_val;
 
119
    if(scaleVal < 1)
 
120
      nscale = 1.0 / -scaleVal;
 
121
    double scale_fact = nscale / oscale;
 
122
    int pos_diff = (int)((double)pos_offset * scale_fact - (double)pos_offset + 0.5);  // 0.5 for round-off
 
123
    pos += pos_diff;
 
124
  }
 
125
  
110
126
  if(pos > pmax)
111
127
    pos = pmax;
112
128
  setPos(pos);
116
132
//   setMag
117
133
//---------------------------------------------------------
118
134
 
119
 
void ScrollScale::setMag ( int cs )
 
135
void ScrollScale::setMag ( int cs, int pos_offset )
120
136
{
 
137
        scale->blockSignals(true);
121
138
        scale->setValue ( cs );
122
 
        setScale ( cs );
 
139
        scale->blockSignals(false);
 
140
        setScale ( cs, pos_offset );
123
141
}
124
142
 
125
143
//---------------------------------------------------------
290
308
        box->addWidget ( scale, 5 );
291
309
        setLayout(box);
292
310
        connect ( scale, SIGNAL ( valueChanged ( int ) ), SLOT ( setScale ( int ) ) );
293
 
        ///connect ( scale, SIGNAL ( valueChanged ( int ) ), SIGNAL ( lscaleChanged ( int ) ) );  // ??
294
311
        connect ( scroll, SIGNAL ( valueChanged ( int ) ), SIGNAL ( scrollChanged ( int ) ) );
295
312
}
296
313
 
524
541
      int vals[] = {
525
542
            0,   1,   15,  30,  46,  62,  80,  99,  119, 140,
526
543
            163, 187, 214, 242, 274, 308, 346, 388, 436, 491,
527
 
            555, 631, 726, 849, 1024, 1200, 1400, 1500, 1800,
528
 
            2100, 2500 };
 
544
            555, 631, 726, 849, 1024, 1200, 1300, 1400, 1500, 1600, 1700, 1800,    
 
545
            1900, 2100, 2200, 2300, 2400, 2500 };  
529
546
 
530
547
      return vals[zoomlevel];
531
548
}