Improved approach to honor aspect ratio during size changes.

This commit is contained in:
Jim Evins
2015-09-07 16:19:35 -04:00
parent 360d85bbbc
commit 409abe4428
3 changed files with 34 additions and 7 deletions
+7 -3
View File
@@ -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 );
}
+13 -3
View File
@@ -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
View File
@@ -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
{