// adapt x-value switch( aAnchor )
{ case drawing::Alignment_TOP: case drawing::Alignment_CENTER: case drawing::Alignment_BOTTOM:
fXDelta -= static_cast< double >( aObjectSize.Width ) / 2.0; break; case drawing::Alignment_TOP_RIGHT: case drawing::Alignment_RIGHT: case drawing::Alignment_BOTTOM_RIGHT:
fXDelta -= aObjectSize.Width; break; case drawing::Alignment_TOP_LEFT: case drawing::Alignment_LEFT: case drawing::Alignment_BOTTOM_LEFT: default: // nothing to do break;
}
// adapt y-value switch( aAnchor )
{ case drawing::Alignment_LEFT: case drawing::Alignment_CENTER: case drawing::Alignment_RIGHT:
fYDelta -= static_cast< double >( aObjectSize.Height ) / 2.0; break; case drawing::Alignment_BOTTOM_LEFT: case drawing::Alignment_BOTTOM: case drawing::Alignment_BOTTOM_RIGHT:
fYDelta -= aObjectSize.Height; break; case drawing::Alignment_TOP_LEFT: case drawing::Alignment_TOP: case drawing::Alignment_TOP_RIGHT: default: // nothing to do break;
}
// adapt x-value switch( aAnchor )
{ case drawing::Alignment_TOP: case drawing::Alignment_CENTER: case drawing::Alignment_BOTTOM: // nothing to do break; case drawing::Alignment_TOP_RIGHT: case drawing::Alignment_RIGHT: case drawing::Alignment_BOTTOM_RIGHT:
fXDelta -= aUnrotatedObjectSize.Width/2; break; case drawing::Alignment_TOP_LEFT: case drawing::Alignment_LEFT: case drawing::Alignment_BOTTOM_LEFT: default:
fXDelta += aUnrotatedObjectSize.Width/2; break;
}
// adapt y-value switch( aAnchor )
{ case drawing::Alignment_LEFT: case drawing::Alignment_CENTER: case drawing::Alignment_RIGHT: // nothing to do break; case drawing::Alignment_BOTTOM_LEFT: case drawing::Alignment_BOTTOM: case drawing::Alignment_BOTTOM_RIGHT:
fYDelta -= aUnrotatedObjectSize.Height/2; break; case drawing::Alignment_TOP_LEFT: case drawing::Alignment_TOP: case drawing::Alignment_TOP_RIGHT:
fYDelta += aUnrotatedObjectSize.Height/2; break; default: // nothing to do break;
}
// shift X switch( rInOutPosition.Anchor )
{ case drawing::Alignment_TOP_LEFT: case drawing::Alignment_LEFT: case drawing::Alignment_BOTTOM_LEFT:
aPos.Primary -= fShiftAmountX; break; case drawing::Alignment_TOP: case drawing::Alignment_CENTER: case drawing::Alignment_BOTTOM: // nothing break; case drawing::Alignment_TOP_RIGHT: case drawing::Alignment_RIGHT: case drawing::Alignment_BOTTOM_RIGHT:
aPos.Primary += fShiftAmountX; break; case drawing::Alignment::Alignment_MAKE_FIXED_SIZE: break;
}
// shift Y switch( rInOutPosition.Anchor )
{ case drawing::Alignment_TOP: case drawing::Alignment_TOP_LEFT: case drawing::Alignment_TOP_RIGHT:
aPos.Secondary -= fShiftAmountY; break; case drawing::Alignment_CENTER: case drawing::Alignment_LEFT: case drawing::Alignment_RIGHT: // nothing break; case drawing::Alignment_BOTTOM: case drawing::Alignment_BOTTOM_LEFT: case drawing::Alignment_BOTTOM_RIGHT:
aPos.Secondary += fShiftAmountY; break; case drawing::Alignment::Alignment_MAKE_FIXED_SIZE: break;
}
// anchor must not be changed
OSL_ASSERT( rInOutPosition.Anchor == aPos.Anchor );
// Note: this somewhat complicated check allows the output being // out-of-bounds if the input was also out-of-bounds, and the change is // for "advantage". E.g., you have a chart that laps out on the left // side. If you shrink it, this should be possible, also if it still // laps out on the left side afterwards. But you shouldn't be able to // grow it then.
// Do not grow, if this leads to corners being off-screen if( fAmountX > 0.0 &&
( (aUpperLeft.Primary < fPosCheckThreshold) ||
(aLowerRight.Primary > (1.0 - fPosCheckThreshold)) )) returnfalse; if( fAmountY > 0.0 &&
( (aUpperLeft.Secondary < fPosCheckThreshold) ||
(aLowerRight.Secondary > (1.0 - fPosCheckThreshold)) )) returnfalse;
// Do not shrink, if this leads to a size too small if( fAmountX < 0.0 &&
( aSize.Primary < fSizeCheckThreshold )) returnfalse; if( fAmountY < 0.0 &&
( aSize.Secondary < fSizeCheckThreshold )) returnfalse;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.