Improved approach to honor aspect ratio during size changes.
This commit is contained in:
@@ -778,14 +778,18 @@ namespace glabels
|
||||
///
|
||||
void LabelModelObject::setSizeHonorAspect( double w, double h )
|
||||
{
|
||||
if ( fabs(w - mW) > fabs(h - mH) )
|
||||
double aspectRatio = mH / mW;
|
||||
|
||||
if ( h > (w*aspectRatio) )
|
||||
{
|
||||
setWHonorAspect( w );
|
||||
h = w*aspectRatio;
|
||||
}
|
||||
else
|
||||
{
|
||||
setHHonorAspect( h );
|
||||
w = h/aspectRatio;
|
||||
}
|
||||
|
||||
setSize( w, h );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -278,9 +278,19 @@ namespace glabels
|
||||
|
||||
if ( sizeAspectCheck->isChecked() )
|
||||
{
|
||||
mObject->setSizeHonorAspect( sizeWSpin->value(), sizeHSpin->value() );
|
||||
sizeWSpin->setValue( mObject->w() );
|
||||
sizeHSpin->setValue( mObject->h() );
|
||||
double spinW = sizeWSpin->value();
|
||||
double spinH = sizeHSpin->value();
|
||||
|
||||
if ( fabs(spinW - mObject->w()) > fabs(spinH - mObject->h()) )
|
||||
{
|
||||
mObject->setWHonorAspect( spinW );
|
||||
sizeHSpin->setValue( mObject->h() );
|
||||
}
|
||||
else
|
||||
{
|
||||
mObject->setHHonorAspect( spinH );
|
||||
sizeWSpin->setValue( mObject->w() );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+14
-1
@@ -810,7 +810,20 @@ glabels::View::handleResizeMotion( double xWorld, double yWorld )
|
||||
{
|
||||
if ( mResizeHonorAspect )
|
||||
{
|
||||
mResizeObject->setSizeHonorAspect( w, h );
|
||||
switch ( location )
|
||||
{
|
||||
case Handle::E:
|
||||
case Handle::W:
|
||||
mResizeObject->setWHonorAspect( w );
|
||||
break;
|
||||
case Handle::N:
|
||||
case Handle::S:
|
||||
mResizeObject->setHHonorAspect( h );
|
||||
break;
|
||||
default:
|
||||
mResizeObject->setSizeHonorAspect( w, h );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user