~ubuntu-branches/ubuntu/wily/muse/wily

« back to all changes in this revision

Viewing changes to muse/widgets/scrollscale.cpp

  • Committer: Package Import Robot
  • Author(s): Fabrice Coutadeur, Fabrice Coutadeur, Alessio Treglia
  • Date: 2012-08-04 07:05:22 UTC
  • mfrom: (1.1.11)
  • Revision ID: package-import@ubuntu.com-20120804070522-yf76neafek15rjv6
Tags: 2.0.1-1
[ Fabrice Coutadeur ]
* New stable bug fixing release.
* debian/compat: set compat to 9 to automatically get hardening flags

[ Alessio Treglia ]
* Add Fabrice Coutadeur to the Uploaders field.
* Refresh 1001-buildsystem.patch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
 
40
40
//---------------------------------------------------------
41
41
//   setScale
42
 
//    "val" - slider value in range 0-1024
 
42
//    "val" - slider value in range 0-convertQuickZoomLevelToMag(zoomLevels-1)
43
43
//---------------------------------------------------------
44
44
 
45
45
void ScrollScale::setScale ( int val )
46
46
{
47
47
        int off = offset();
48
48
        if ( invers )
49
 
                val = 1024 - val;
 
49
        val = convertQuickZoomLevelToMag(zoomLevels-1) - val;
50
50
        double min, max;
51
51
        if ( scaleMin < 0 )
52
52
                min = 1.0/ ( -scaleMin );
59
59
                max = double ( scaleMax );
60
60
 
61
61
        double diff = max-min;
62
 
        double fkt  = double ( val ) /1024.0;
 
62
    double fkt  = double ( val ) /double(convertQuickZoomLevelToMag(zoomLevels-1));
63
63
        double v = ( pow ( logbase, fkt )-1 ) / ( logbase-1 );
64
64
        double scale;
65
65
        if ( invers )
90
90
                        scale = scaleMin;
91
91
        }
92
92
#endif
93
 
 
 
93
//    printf("scaleMin %d scaleMax %d val=%d emit scaleVal=%d\n", scaleMin, scaleMax, val, scaleVal);
94
94
        emit scaleChanged ( scaleVal );
95
95
        if ( !noScale )
96
96
                setRange ( minVal, maxVal );
219
219
        scaleMin    = s1;
220
220
        scaleMax    = s2;
221
221
        minVal      = min_;
222
 
        maxVal      = max_;
 
222
    maxVal      = max_;
223
223
        up          = 0;
224
224
        down        = 0;
225
225
        logbase     = bas;
247
247
        int delta = 256;
248
248
        for ( int i = 0; i < 8; ++i )
249
249
        {
250
 
                int tryVal   = invers ? 1025 - cur : cur;
251
 
                double fkt   = double ( tryVal ) /1024.0;
 
250
        int tryVal   = invers ? convertQuickZoomLevelToMag(zoomLevels-1)+1 - cur : cur;
 
251
        double fkt   = double ( tryVal ) /double(convertQuickZoomLevelToMag(zoomLevels-1));
252
252
                double v     = ( pow ( logbase, fkt )-1 ) / ( logbase-1 );
253
253
                double scale = invers ? ( max - v * diff ) : ( min + v * diff );
254
254
                if ( scale == cmag ) // not very likely
256
256
 //printf("iteration %d invers:%d soll %f(cur:%d) - ist %f\n", i, invers, scale, cur, cmag);
257
257
                int dd = invers ? -delta : delta;
258
258
                cur += ( scale < cmag ) ? dd : -dd;
259
 
                delta/=2;
 
259
        delta/=2;
260
260
        }
261
261
 
262
262
        scale  = new QSlider (o);
264
264
        // It messes up tabbing, and really should have a shortcut instead.
265
265
        scale->setFocusPolicy(Qt::NoFocus);  
266
266
        scale->setMinimum(0);
267
 
        scale->setMaximum(1024);
 
267
        scale->setMaximum(convertQuickZoomLevelToMag(zoomLevels-1));
268
268
        scale->setPageStep(1);
269
269
        scale->setValue(cur);   
270
270
 
504
504
      if (mag == 0)
505
505
            return 0;
506
506
 
507
 
      for (int i=0; i<24; i++) {
 
507
      for (int i=0; i<zoomLevels-1; i++) {
508
508
            int val1 = ScrollScale::convertQuickZoomLevelToMag(i);
509
509
            int val2 = ScrollScale::convertQuickZoomLevelToMag(i + 1);
510
510
            if (mag > val1 && mag <= val2)
521
521
 */
522
522
int ScrollScale::convertQuickZoomLevelToMag(int zoomlevel)
523
523
{
524
 
      int vals[] = { 0, 1, 15, 30, 46, 62, 80, 99, 119, 140, 163, 
525
 
            187, 214, 242, 274, 308, 346, 388, 436, 491, 555, 631, 
526
 
            726, 849, 1024 };
 
524
      int vals[] = {
 
525
            0,   1,   15,  30,  46,  62,  80,  99,  119, 140,
 
526
            163, 187, 214, 242, 274, 308, 346, 388, 436, 491,
 
527
            555, 631, 726, 849, 1024, 1200, 1400, 1500, 1800,
 
528
            2100, 2500 };
527
529
 
528
530
      return vals[zoomlevel];
529
531
}