497 |
int mask = ~(((1 << region->pDimensionDefinitions[dim].bits) - 1) << bitpos); |
int mask = ~(((1 << region->pDimensionDefinitions[dim].bits) - 1) << bitpos); |
498 |
c = dimregno & mask; // mask away this dimension |
c = dimregno & mask; // mask away this dimension |
499 |
} |
} |
500 |
bool customsplits = |
const bool customsplits = |
501 |
((region->pDimensionDefinitions[dim].split_type == gig::split_type_normal && |
((region->pDimensionDefinitions[dim].split_type == gig::split_type_normal && |
502 |
region->pDimensionRegions[c]->DimensionUpperLimits[dim]) || |
region->pDimensionRegions[c]->DimensionUpperLimits[dim]) || |
503 |
(region->pDimensionDefinitions[dim].dimension == gig::dimension_velocity && |
(region->pDimensionDefinitions[dim].dimension == gig::dimension_velocity && |
504 |
region->pDimensionRegions[c]->VelocityUpperLimit)); |
region->pDimensionRegions[c]->VelocityUpperLimit)); |
505 |
|
|
506 |
if (customsplits) { |
// dimensions of split_type_bit cannot be resized |
507 |
|
if (region->pDimensionDefinitions[dim].split_type != gig::split_type_bit) { |
508 |
int prev_limit = 0; |
int prev_limit = 0; |
509 |
for (int j = 0 ; j < nbZones - 1 ; j++) { |
for (int iZone = 0 ; iZone < nbZones - 1 ; iZone++) { |
510 |
gig::DimensionRegion *d = region->pDimensionRegions[c + (j << bitpos)]; |
gig::DimensionRegion *d = region->pDimensionRegions[c + (iZone << bitpos)]; |
511 |
int upperLimit = d->DimensionUpperLimits[dim]; |
const int upperLimit = |
512 |
if (!upperLimit) upperLimit = d->VelocityUpperLimit; |
(customsplits) ? |
513 |
|
(d->DimensionUpperLimits[dim]) ? |
514 |
|
d->DimensionUpperLimits[dim] : d->VelocityUpperLimit |
515 |
|
: (iZone+1) * (int)region->pDimensionDefinitions[dim].zone_size; |
516 |
int limit = upperLimit + 1; |
int limit = upperLimit + 1; |
517 |
int limitx = int((w - label_width - 1) * limit / 128.0 + 0.5) + label_width; |
int limitx = int((w - label_width - 1) * limit / 128.0 + 0.5) + label_width; |
|
|
|
518 |
if (x <= limitx - 2) break; |
if (x <= limitx - 2) break; |
519 |
if (x <= limitx + 2) { |
if (x <= limitx + 2) { |
520 |
resize.dimension = dim; |
resize.dimension = dim; |
521 |
resize.offset = j << bitpos; |
resize.offset = iZone << bitpos; |
522 |
resize.pos = limit; |
resize.pos = limit; |
523 |
resize.min = prev_limit; |
resize.min = prev_limit; |
524 |
|
|
525 |
int dr = (dimregno >> bitpos) & |
int dr = (dimregno >> bitpos) & |
526 |
((1 << region->pDimensionDefinitions[dim].bits) - 1); |
((1 << region->pDimensionDefinitions[dim].bits) - 1); |
527 |
resize.selected = dr == j ? resize.left : |
resize.selected = dr == iZone ? resize.left : |
528 |
dr == j + 1 ? resize.right : resize.none; |
dr == iZone + 1 ? resize.right : resize.none; |
529 |
|
|
530 |
|
iZone++; |
531 |
|
gig::DimensionRegion *d = region->pDimensionRegions[c + (iZone << bitpos)]; |
532 |
|
|
533 |
|
const int upperLimit = |
534 |
|
(customsplits) ? |
535 |
|
(d->DimensionUpperLimits[dim]) ? |
536 |
|
d->DimensionUpperLimits[dim] : d->VelocityUpperLimit |
537 |
|
: (iZone+1) * (int)region->pDimensionDefinitions[dim].zone_size; |
538 |
|
|
|
j++; |
|
|
gig::DimensionRegion *d = region->pDimensionRegions[c + (j << bitpos)]; |
|
|
int upperLimit = d->DimensionUpperLimits[dim]; |
|
|
if (!upperLimit) upperLimit = d->VelocityUpperLimit; |
|
539 |
int limit = upperLimit + 1; |
int limit = upperLimit + 1; |
540 |
resize.max = limit; |
resize.max = limit; |
541 |
return true; |
return true; |