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 )
|
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
|
else
|
||||||
{
|
{
|
||||||
setHHonorAspect( h );
|
w = h/aspectRatio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setSize( w, h );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -278,11 +278,21 @@ namespace glabels
|
|||||||
|
|
||||||
if ( sizeAspectCheck->isChecked() )
|
if ( sizeAspectCheck->isChecked() )
|
||||||
{
|
{
|
||||||
mObject->setSizeHonorAspect( sizeWSpin->value(), sizeHSpin->value() );
|
double spinW = sizeWSpin->value();
|
||||||
sizeWSpin->setValue( mObject->w() );
|
double spinH = sizeHSpin->value();
|
||||||
|
|
||||||
|
if ( fabs(spinW - mObject->w()) > fabs(spinH - mObject->h()) )
|
||||||
|
{
|
||||||
|
mObject->setWHonorAspect( spinW );
|
||||||
sizeHSpin->setValue( mObject->h() );
|
sizeHSpin->setValue( mObject->h() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
mObject->setHHonorAspect( spinH );
|
||||||
|
sizeWSpin->setValue( mObject->w() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
mObject->setSize( sizeWSpin->value(), sizeHSpin->value() );
|
mObject->setSize( sizeWSpin->value(), sizeHSpin->value() );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -810,7 +810,20 @@ glabels::View::handleResizeMotion( double xWorld, double yWorld )
|
|||||||
{
|
{
|
||||||
if ( mResizeHonorAspect )
|
if ( mResizeHonorAspect )
|
||||||
{
|
{
|
||||||
|
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 );
|
mResizeObject->setSizeHonorAspect( w, h );
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user