Change-Id: I22a3a13e059ac7d3479f12860564fe3eb1b55e44 Reviewed-on: https://gerrit.libreoffice.org/39282 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
168 lines
5.5 KiB
C++
168 lines
5.5 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#include <svx/uiobject.hxx>
|
|
|
|
#include <svx/svdobj.hxx>
|
|
|
|
#include <tools/fract.hxx>
|
|
|
|
SdrUIObject::~SdrUIObject()
|
|
{
|
|
}
|
|
|
|
StringMap SdrUIObject::get_state()
|
|
{
|
|
StringMap aMap;
|
|
SdrObject* pObject = get_object();
|
|
|
|
if (!pObject)
|
|
return aMap;
|
|
|
|
aMap["Name"] = pObject->GetName();
|
|
aMap["Description"] = pObject->GetDescription();
|
|
aMap["Title"] = pObject->GetTitle();
|
|
aMap["Z-Order"] = OUString::number(pObject->GetOrdNum());
|
|
aMap["Layer"] = OUString::number(sal_uInt8(pObject->GetLayer()));
|
|
aMap["IsGroupObject"] = OUString::boolean(pObject->IsGroupObject());
|
|
aMap["IsPolyObject"] = OUString::boolean(pObject->IsPolyObj());
|
|
aMap["PointCount"] = OUString::number(pObject->GetPointCount());
|
|
aMap["HasTextEdit"] = OUString::boolean(pObject->HasTextEdit());
|
|
aMap["HasMacro"] = OUString::boolean(pObject->HasMacro());
|
|
aMap["IsClosed"] = OUString::boolean(pObject->IsClosedObj());
|
|
aMap["IsEdgeObject"] = OUString::boolean(pObject->IsEdgeObj());
|
|
aMap["Is3DObject"] = OUString::boolean(pObject->Is3DObj());
|
|
aMap["IsUNOObject"] = OUString::boolean(pObject->IsUnoObj());
|
|
aMap["MoveProtected"] = OUString::boolean(pObject->IsMoveProtect());
|
|
aMap["ResizeProtected"] = OUString::boolean(pObject->IsResizeProtect());
|
|
aMap["Printable"] = OUString::boolean(pObject->IsPrintable());
|
|
aMap["Visible"] = OUString::boolean(pObject->IsVisible());
|
|
aMap["HasText"] = OUString::boolean(pObject->HasText());
|
|
|
|
return aMap;
|
|
}
|
|
|
|
void SdrUIObject::execute(const OUString& rAction,
|
|
const StringMap& rParameters)
|
|
{
|
|
SdrObject* pObj = get_object();
|
|
if (!pObj)
|
|
return;
|
|
|
|
if (rAction == "MOVE")
|
|
{
|
|
auto itrNX = rParameters.find("X");
|
|
if (itrNX == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter X");
|
|
|
|
auto itrNY = rParameters.find("Y");
|
|
if (itrNY == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter Y");
|
|
|
|
long nX = itrNX->second.toInt32();
|
|
long nY = itrNY->second.toInt32();
|
|
Size aMoveRange(nX, nY);
|
|
pObj->Move(aMoveRange);
|
|
}
|
|
else if (rAction == "RESIZE")
|
|
{
|
|
auto itrNX = rParameters.find("X");
|
|
if (itrNX == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter X");
|
|
|
|
auto itrNY = rParameters.find("Y");
|
|
if (itrNY == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter Y");
|
|
|
|
long nX = itrNX->second.toInt32();
|
|
long nY = itrNY->second.toInt32();
|
|
Point aPos(nX, nY);
|
|
|
|
auto itrFracX = rParameters.find("FRAC_X");
|
|
if (itrFracX == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter FRAC_X");
|
|
double nFracX = itrFracX->second.toDouble();
|
|
Fraction aFracX(nFracX);
|
|
|
|
auto itrFracY = rParameters.find("FRAC_Y");
|
|
if (itrFracY == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter FRAC_Y");
|
|
double nFracY = itrFracY->second.toDouble();
|
|
Fraction aFracY(nFracY);
|
|
pObj->Resize(aPos, aFracX, aFracY, true/*bRelative*/);
|
|
}
|
|
else if (rAction == "CROP")
|
|
{
|
|
auto itrNX = rParameters.find("X");
|
|
if (itrNX == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter X");
|
|
|
|
auto itrNY = rParameters.find("Y");
|
|
if (itrNY == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter Y");
|
|
|
|
long nX = itrNX->second.toInt32();
|
|
long nY = itrNY->second.toInt32();
|
|
Point aPos(nX, nY);
|
|
|
|
auto itrFracX = rParameters.find("FRAC_X");
|
|
if (itrFracX == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter FRAC_X");
|
|
double nFracX = itrFracX->second.toDouble();
|
|
Fraction aFracX(nFracX);
|
|
|
|
auto itrFracY = rParameters.find("FRAC_Y");
|
|
if (itrFracY == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter FRAC_Y");
|
|
double nFracY = itrFracY->second.toDouble();
|
|
Fraction aFracY(nFracY);
|
|
|
|
pObj->Crop(aPos, aFracX, aFracY);
|
|
}
|
|
else if (rAction == "ROTATE")
|
|
{
|
|
auto itrNX = rParameters.find("X");
|
|
if (itrNX == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter X");
|
|
|
|
auto itrNY = rParameters.find("Y");
|
|
if (itrNY == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter Y");
|
|
|
|
long nX = itrNX->second.toInt32();
|
|
long nY = itrNY->second.toInt32();
|
|
Point aPos(nX, nY);
|
|
|
|
auto itrAngle = rParameters.find("ANGLE");
|
|
if (itrAngle == rParameters.end())
|
|
throw css::uno::RuntimeException("missing parameter ANGLE");
|
|
|
|
double nAngle = itrAngle->second.toDouble();
|
|
pObj->Rotate(aPos, nAngle, 0, 0);
|
|
}
|
|
else if (rAction == "Mirror")
|
|
{
|
|
Point aPos;
|
|
Point aPos2;
|
|
pObj->Mirror(aPos, aPos2);
|
|
}
|
|
else if (rAction == "SHEAR")
|
|
{
|
|
Point aPos;
|
|
pObj->Shear(aPos, 0.0/*nAngle*/, 0, false);
|
|
}
|
|
}
|
|
|
|
OUString SdrUIObject::get_type() const
|
|
{
|
|
return OUString("SdrUIObject");
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|