40
40
//---------------------------------------------------------
42
// "val" - slider value in range 0-1024
42
// "val" - slider value in range 0-convertQuickZoomLevelToMag(zoomLevels-1)
43
43
//---------------------------------------------------------
45
45
void ScrollScale::setScale ( int val )
47
47
int off = offset();
49
val = convertQuickZoomLevelToMag(zoomLevels-1) - val;
51
51
if ( scaleMin < 0 )
52
52
min = 1.0/ ( -scaleMin );
59
59
max = double ( scaleMax );
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 );
93
// printf("scaleMin %d scaleMax %d val=%d emit scaleVal=%d\n", scaleMin, scaleMax, val, scaleVal);
94
94
emit scaleChanged ( scaleVal );
96
96
setRange ( minVal, maxVal );
248
248
for ( int i = 0; i < 8; ++i )
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;
262
262
scale = new QSlider (o);
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)
522
522
int ScrollScale::convertQuickZoomLevelToMag(int zoomlevel)
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,
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
530
return vals[zoomlevel];