From 89189743b9795cae13c69f69cdf6901b9ed354a7 Mon Sep 17 00:00:00 2001 From: Marco Cecchetti Date: Fri, 30 Nov 2018 17:20:37 +0100 Subject: lok: shape selection: perform the needed unit conversion in a clever way Change-Id: I505bd41801b5fd1898a9eddc81b102f2f7ae20b5 Reviewed-on: https://gerrit.libreoffice.org/70563 Tested-by: Jenkins Reviewed-by: Marco Cecchetti --- .../sidebar/possize/PosSizePropertyPanel.cxx | 65 ++-------------------- svx/source/svdraw/svdedtv1.cxx | 38 ++----------- 2 files changed, 9 insertions(+), 94 deletions(-) (limited to 'svx') diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index 2f4d63fb2079..fd45c8cfaa41 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -45,7 +45,7 @@ #include #include #include -#include + #include using namespace css; @@ -53,27 +53,6 @@ using namespace css::uno; const char USERITEM_NAME[] = "FitItem"; -namespace { - -bool lcl_twipsNeeded(const SdrView* pView) -{ - const bool bTiledRendering = comphelper::LibreOfficeKit::isActive(); - if (bTiledRendering) - { - // We gets the position in twips - if (OutputDevice* pOutputDevice = pView->GetFirstOutputDevice()) - { - if (pOutputDevice->GetMapMode().GetMapUnit() == MapUnit::Map100thMM) - { - return true; - } - } - } - return false; -} - -} // anonymouus ns - namespace svx { namespace sidebar { PosSizePropertyPanel::PosSizePropertyPanel( @@ -401,11 +380,6 @@ IMPL_LINK_NOARG( PosSizePropertyPanel, ChangePosXHdl, Edit&, void ) Fraction aUIScale = mpView->GetModel()->GetUIScale(); lX = long( lX * aUIScale ); - if (lcl_twipsNeeded(mpView)) - { - lX = OutputDevice::LogicToLogic(lX, MapUnit::Map100thMM, MapUnit::MapTwip); - } - SfxInt32Item aPosXItem( SID_ATTR_TRANSFORM_POS_X,static_cast(lX)); GetBindings()->GetDispatcher()->ExecuteList( @@ -423,11 +397,6 @@ IMPL_LINK_NOARG( PosSizePropertyPanel, ChangePosYHdl, Edit&, void ) Fraction aUIScale = mpView->GetModel()->GetUIScale(); lY = long( lY * aUIScale ); - if (lcl_twipsNeeded(mpView)) - { - lY = OutputDevice::LogicToLogic(lY, MapUnit::Map100thMM, MapUnit::MapTwip); - } - SfxInt32Item aPosYItem( SID_ATTR_TRANSFORM_POS_Y,static_cast(lY)); GetBindings()->GetDispatcher()->ExecuteList( @@ -485,18 +454,9 @@ IMPL_LINK_NOARG( PosSizePropertyPanel, AngleModifiedHdl, Edit&, void ) // #i123993# Need to take UIScale into account when executing rotations const double fUIScale(mpView && mpView->GetModel() ? double(mpView->GetModel()->GetUIScale()) : 1.0); - long nRotateX = basegfx::fround(mlRotX * fUIScale); - long nRotateY = basegfx::fround(mlRotY * fUIScale); - - if (lcl_twipsNeeded(mpView)) - { - nRotateX = OutputDevice::LogicToLogic(nRotateX, MapUnit::Map100thMM, MapUnit::MapTwip); - nRotateY = OutputDevice::LogicToLogic(nRotateY, MapUnit::Map100thMM, MapUnit::MapTwip); - } - SfxInt32Item aAngleItem( SID_ATTR_TRANSFORM_ANGLE,static_cast(nTmp)); - SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, nRotateX); - SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, nRotateY); + SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, basegfx::fround(mlRotX * fUIScale)); + SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, basegfx::fround(mlRotY * fUIScale)); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_TRANSFORM, SfxCallMode::RECORD, { &aAngleItem, &aRotXItem, &aRotYItem }); @@ -509,18 +469,9 @@ IMPL_LINK_NOARG( PosSizePropertyPanel, RotationHdl, DialControl*, void ) // #i123993# Need to take UIScale into account when executing rotations const double fUIScale(mpView && mpView->GetModel() ? double(mpView->GetModel()->GetUIScale()) : 1.0); - long nRotateX = basegfx::fround(mlRotX * fUIScale); - long nRotateY = basegfx::fround(mlRotY * fUIScale); - - if (lcl_twipsNeeded(mpView)) - { - nRotateX = OutputDevice::LogicToLogic(nRotateX, MapUnit::Map100thMM, MapUnit::MapTwip); - nRotateY = OutputDevice::LogicToLogic(nRotateY, MapUnit::Map100thMM, MapUnit::MapTwip); - } - SfxInt32Item aAngleItem( SID_ATTR_TRANSFORM_ANGLE,static_cast(nTmp)); - SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, nRotateX); - SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, nRotateY); + SfxInt32Item aRotXItem( SID_ATTR_TRANSFORM_ROT_X, basegfx::fround(mlRotX * fUIScale)); + SfxInt32Item aRotYItem( SID_ATTR_TRANSFORM_ROT_Y, basegfx::fround(mlRotY * fUIScale)); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_TRANSFORM, SfxCallMode::RECORD, { &aAngleItem, &aRotXItem, &aRotYItem }); @@ -888,12 +839,6 @@ void PosSizePropertyPanel::executeSize() lHeight = OutputDevice::LogicToLogic( lHeight, MapUnit::Map100thMM, mePoolUnit ); lHeight = static_cast(mpMtrWidth->Denormalize( lHeight )); - if (lcl_twipsNeeded(mpView)) - { - lWidth = OutputDevice::LogicToLogic(lWidth, MapUnit::Map100thMM, MapUnit::MapTwip); - lHeight = OutputDevice::LogicToLogic(lHeight, MapUnit::Map100thMM, MapUnit::MapTwip); - } - // put Width & Height to itemset SfxUInt32Item aWidthItem( SID_ATTR_TRANSFORM_WIDTH, static_cast(lWidth)); SfxUInt32Item aHeightItem( SID_ATTR_TRANSFORM_HEIGHT, static_cast(lHeight)); diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx index b623579f8e3c..f781b64b36f7 100644 --- a/svx/source/svdraw/svdedtv1.cxx +++ b/svx/source/svdraw/svdedtv1.cxx @@ -1427,19 +1427,7 @@ static Point ImpGetPoint(const tools::Rectangle& rRect, RectPoint eRP) void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr) { - bool bDealingWithTwips = false; const bool bTiledRendering = comphelper::LibreOfficeKit::isActive(); - if (bTiledRendering) - { - // We gets the position in twips - if (OutputDevice* pOutputDevice = mpMarkedPV->GetView().GetFirstOutputDevice()) - { - if (pOutputDevice->GetMapMode().GetMapUnit() == MapUnit::Map100thMM) - { - bDealingWithTwips = true; - } - } - } tools::Rectangle aRect(GetMarkedObjRect()); @@ -1455,14 +1443,8 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr) SdrObject* pObj=nullptr; RectPoint eSizePoint=RectPoint::MM; - long nPosX=aRect.Left(); - long nPosY=aRect.Top(); - if (bDealingWithTwips) - { - nPosX = OutputDevice::LogicToLogic(nPosX, MapUnit::Map100thMM, MapUnit::MapTwip); - nPosY = OutputDevice::LogicToLogic(nPosY, MapUnit::Map100thMM, MapUnit::MapTwip); - } - + long nPosDX=0; + long nPosDY=0; long nSizX=0; long nSizY=0; long nRotateAngle=0; @@ -1504,11 +1486,11 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr) // position if (SfxItemState::SET==rAttr.GetItemState(SID_ATTR_TRANSFORM_POS_X,true,&pPoolItem)) { - nPosX=static_cast(pPoolItem)->GetValue(); + nPosDX=static_cast(pPoolItem)->GetValue() - aRect.Left(); bChgPos=true; } if (SfxItemState::SET==rAttr.GetItemState(SID_ATTR_TRANSFORM_POS_Y,true,&pPoolItem)){ - nPosY=static_cast(pPoolItem)->GetValue(); + nPosDY=static_cast(pPoolItem)->GetValue() - aRect.Top(); bChgPos=true; } // size @@ -1598,18 +1580,6 @@ void SdrEditView::SetGeoAttrToMarked(const SfxItemSet& rAttr) bSetAttr=true; } - if(bDealingWithTwips) { - nPosX = OutputDevice::LogicToLogic(nPosX, MapUnit::MapTwip, MapUnit::Map100thMM); - nPosY = OutputDevice::LogicToLogic(nPosY, MapUnit::MapTwip, MapUnit::Map100thMM); - nSizX = OutputDevice::LogicToLogic(nSizX, MapUnit::MapTwip, MapUnit::Map100thMM); - nSizY = OutputDevice::LogicToLogic(nSizY, MapUnit::MapTwip, MapUnit::Map100thMM); - nRotateX = OutputDevice::LogicToLogic(nRotateX, MapUnit::MapTwip, MapUnit::Map100thMM); - nRotateY = OutputDevice::LogicToLogic(nRotateY, MapUnit::MapTwip, MapUnit::Map100thMM); - } - - long nPosDX = nPosX - aRect.Left(); - long nPosDY = nPosY - aRect.Top(); - ForcePossibilities(); BegUndo(SvxResId(STR_EditTransform),GetDescriptionOfMarkedObjects()); -- cgit