Kaydet (Commit) 2f8eb233 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl Kaydeden (comit) Tomaž Vajngerl

remove margin param. and replace it with a relative "rectangle"

Relative rectangle - x1, y1, x2, y2 with valid values in the range
between 0.0 and 1.0, where 0, 0 is top left corner and 1, 1 is the
bottom right corner of the control rectangle.

Change-Id: I2b782a43e91328cf43dc0722e50c55414fb3e867
Reviewed-on: https://gerrit.libreoffice.org/68691
Tested-by: Jenkins
Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst 9671ac2d
...@@ -37,7 +37,6 @@ public: ...@@ -37,7 +37,6 @@ public:
DrawCommand(DrawCommandType aType) DrawCommand(DrawCommandType aType)
: maType(aType) : maType(aType)
, mnStrokeWidth(-1) , mnStrokeWidth(-1)
, mnMargin(0)
{ {
} }
...@@ -46,7 +45,6 @@ public: ...@@ -46,7 +45,6 @@ public:
Color maStrokeColor; Color maStrokeColor;
Color maFillColor; Color maFillColor;
sal_Int32 mnStrokeWidth; sal_Int32 mnStrokeWidth;
sal_Int32 mnMargin;
}; };
class VCL_DLLPUBLIC RectangleDrawCommand : public DrawCommand class VCL_DLLPUBLIC RectangleDrawCommand : public DrawCommand
...@@ -55,10 +53,19 @@ public: ...@@ -55,10 +53,19 @@ public:
sal_Int32 mnRx; sal_Int32 mnRx;
sal_Int32 mnRy; sal_Int32 mnRy;
float mfX1;
float mfY1;
float mfX2;
float mfY2;
RectangleDrawCommand() RectangleDrawCommand()
: DrawCommand(DrawCommandType::RECTANGLE) : DrawCommand(DrawCommandType::RECTANGLE)
, mnRx(0) , mnRx(0)
, mnRy(0) , mnRy(0)
, mfX1(0.0f)
, mfY1(0.0f)
, mfX2(1.0f)
, mfY2(1.0f)
{ {
} }
}; };
...@@ -66,8 +73,17 @@ public: ...@@ -66,8 +73,17 @@ public:
class VCL_DLLPUBLIC CircleDrawCommand : public DrawCommand class VCL_DLLPUBLIC CircleDrawCommand : public DrawCommand
{ {
public: public:
float mfX1;
float mfY1;
float mfX2;
float mfY2;
CircleDrawCommand() CircleDrawCommand()
: DrawCommand(DrawCommandType::CIRCLE) : DrawCommand(DrawCommandType::CIRCLE)
, mfX1(0.0f)
, mfY1(0.0f)
, mfX2(1.0f)
, mfY2(1.0f)
{ {
} }
}; };
...@@ -139,10 +155,11 @@ public: ...@@ -139,10 +155,11 @@ public:
std::vector<std::shared_ptr<DrawCommand>> mpDrawCommands; std::vector<std::shared_ptr<DrawCommand>> mpDrawCommands;
void addDrawRectangle(Color aStrokeColor, sal_Int32 nStrokeWidth, Color aFillColor, void addDrawRectangle(Color aStrokeColor, sal_Int32 nStrokeWidth, Color aFillColor, float fX1,
sal_Int32 nRx, sal_Int32 nRy, sal_Int32 nMargin); float fY1, float fX2, float fY2, sal_Int32 nRx, sal_Int32 nRy);
void addDrawCircle(Color aStrokeColor, sal_Int32 nStrokeWidth, Color aFillColor, void addDrawCircle(Color aStrokeColor, sal_Int32 nStrokeWidth, Color aFillColor, float fX1,
sal_Int32 nMargin); float fY1, float fX2, float fY2);
void addDrawLine(Color aStrokeColor, sal_Int32 nStrokeWidth, float fX1, float fY1, float fX2, void addDrawLine(Color aStrokeColor, sal_Int32 nStrokeWidth, float fX1, float fY1, float fX2,
float fY2); float fY2);
}; };
......
...@@ -124,10 +124,8 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom ...@@ -124,10 +124,8 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
{ {
auto const& rCircleDrawCommand auto const& rCircleDrawCommand
= static_cast<CircleDrawCommand const&>(*pDrawCommand); = static_cast<CircleDrawCommand const&>(*pDrawCommand);
Point aRectPoint(nX + 1 + rCircleDrawCommand.mnMargin, Point aRectPoint(nX + 1, nY + 1);
nY + 1 + rCircleDrawCommand.mnMargin); Size aRectSize(nWidth - 1, nHeight - 1);
Size aRectSize(nWidth - 1 - 2 * rCircleDrawCommand.mnMargin,
nHeight - 1 - 2 * rCircleDrawCommand.mnMargin);
tools::Rectangle aRectangle(aRectPoint, aRectSize); tools::Rectangle aRectangle(aRectPoint, aRectSize);
tools::Polygon aPolygon(aRectangle.Center(), aRectangle.GetWidth() >> 1, tools::Polygon aPolygon(aRectangle.Center(), aRectangle.GetWidth() >> 1,
...@@ -143,11 +141,9 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom ...@@ -143,11 +141,9 @@ void munchDrawCommands(std::vector<std::shared_ptr<DrawCommand>> const& rDrawCom
case DrawCommandType::LINE: case DrawCommandType::LINE:
{ {
auto const& rLineDrawCommand = static_cast<LineDrawCommand const&>(*pDrawCommand); auto const& rLineDrawCommand = static_cast<LineDrawCommand const&>(*pDrawCommand);
Point aRectPoint(nX + 1 + rLineDrawCommand.mnMargin, Point aRectPoint(nX + 1, nY + 1);
nY + 1 + rLineDrawCommand.mnMargin);
Size aRectSize(nWidth - 1 - 2 * rLineDrawCommand.mnMargin, Size aRectSize(nWidth - 1, nHeight - 1);
nHeight - 1 - 2 * rLineDrawCommand.mnMargin);
rGraphics.SetFillColor(); rGraphics.SetFillColor();
rGraphics.SetLineColor(rLineDrawCommand.maStrokeColor); rGraphics.SetLineColor(rLineDrawCommand.maStrokeColor);
......
...@@ -89,28 +89,36 @@ WidgetDefinitionState::WidgetDefinitionState(OString const& sEnabled, OString co ...@@ -89,28 +89,36 @@ WidgetDefinitionState::WidgetDefinitionState(OString const& sEnabled, OString co
} }
void WidgetDefinitionState::addDrawRectangle(Color aStrokeColor, sal_Int32 nStrokeWidth, void WidgetDefinitionState::addDrawRectangle(Color aStrokeColor, sal_Int32 nStrokeWidth,
Color aFillColor, sal_Int32 nRx, sal_Int32 nRy, Color aFillColor, float fX1, float fY1, float fX2,
sal_Int32 nMargin) float fY2, sal_Int32 nRx, sal_Int32 nRy)
{ {
std::shared_ptr<DrawCommand> pCommand(std::make_shared<RectangleDrawCommand>()); std::shared_ptr<DrawCommand> pCommand(std::make_shared<RectangleDrawCommand>());
pCommand->maStrokeColor = aStrokeColor; pCommand->maStrokeColor = aStrokeColor;
pCommand->maFillColor = aFillColor; pCommand->maFillColor = aFillColor;
pCommand->mnStrokeWidth = nStrokeWidth; pCommand->mnStrokeWidth = nStrokeWidth;
pCommand->mnMargin = nMargin;
RectangleDrawCommand& rRectCommand = static_cast<RectangleDrawCommand&>(*pCommand); RectangleDrawCommand& rRectCommand = static_cast<RectangleDrawCommand&>(*pCommand);
rRectCommand.mnRx = nRx; rRectCommand.mnRx = nRx;
rRectCommand.mnRy = nRy; rRectCommand.mnRy = nRy;
rRectCommand.mfX1 = fX1;
rRectCommand.mfY1 = fY1;
rRectCommand.mfX2 = fX2;
rRectCommand.mfY2 = fY2;
mpDrawCommands.push_back(std::move(pCommand)); mpDrawCommands.push_back(std::move(pCommand));
} }
void WidgetDefinitionState::addDrawCircle(Color aStrokeColor, sal_Int32 nStrokeWidth, void WidgetDefinitionState::addDrawCircle(Color aStrokeColor, sal_Int32 nStrokeWidth,
Color aFillColor, sal_Int32 nMargin) Color aFillColor, float fX1, float fY1, float fX2,
float fY2)
{ {
std::shared_ptr<DrawCommand> pCommand(std::make_shared<CircleDrawCommand>()); std::shared_ptr<DrawCommand> pCommand(std::make_shared<CircleDrawCommand>());
pCommand->maStrokeColor = aStrokeColor; pCommand->maStrokeColor = aStrokeColor;
pCommand->maFillColor = aFillColor; pCommand->maFillColor = aFillColor;
pCommand->mnStrokeWidth = nStrokeWidth; pCommand->mnStrokeWidth = nStrokeWidth;
pCommand->mnMargin = nMargin; CircleDrawCommand& rCircleCommand = static_cast<CircleDrawCommand&>(*pCommand);
rCircleCommand.mfX1 = fX1;
rCircleCommand.mfY1 = fY1;
rCircleCommand.mfX2 = fX2;
rCircleCommand.mfY2 = fY2;
mpDrawCommands.push_back(std::move(pCommand)); mpDrawCommands.push_back(std::move(pCommand));
} }
......
...@@ -185,12 +185,20 @@ void WidgetDefinitionReader::readDrawingDefinition(tools::XmlWalker& rWalker, ...@@ -185,12 +185,20 @@ void WidgetDefinitionReader::readDrawingDefinition(tools::XmlWalker& rWalker,
if (!sRy.isEmpty()) if (!sRy.isEmpty())
nRy = sRy.toInt32(); nRy = sRy.toInt32();
sal_Int32 nMargin = 0; OString sX1 = rWalker.attribute("x1");
OString sMargin = rWalker.attribute("margin"); float fX1 = sX1.isEmpty() ? 0.0 : sX1.toFloat();
if (!sMargin.isEmpty())
nMargin = sMargin.toInt32(); OString sY1 = rWalker.attribute("y1");
float fY1 = sY1.isEmpty() ? 0.0 : sY1.toFloat();
OString sX2 = rWalker.attribute("x2");
float fX2 = sX2.isEmpty() ? 1.0 : sX2.toFloat();
OString sY2 = rWalker.attribute("y2");
float fY2 = sY2.isEmpty() ? 1.0 : sY2.toFloat();
rpState->addDrawRectangle(aStrokeColor, nStrokeWidth, aFillColor, nRx, nRy, nMargin); rpState->addDrawRectangle(aStrokeColor, nStrokeWidth, aFillColor, fX1, fY1, fX2, fY2,
nRx, nRy);
} }
else if (rWalker.name() == "circ") else if (rWalker.name() == "circ")
{ {
...@@ -203,12 +211,19 @@ void WidgetDefinitionReader::readDrawingDefinition(tools::XmlWalker& rWalker, ...@@ -203,12 +211,19 @@ void WidgetDefinitionReader::readDrawingDefinition(tools::XmlWalker& rWalker,
if (!sStrokeWidth.isEmpty()) if (!sStrokeWidth.isEmpty())
nStrokeWidth = sStrokeWidth.toInt32(); nStrokeWidth = sStrokeWidth.toInt32();
sal_Int32 nMargin = 0; OString sX1 = rWalker.attribute("x1");
OString sMargin = rWalker.attribute("margin"); float fX1 = sX1.isEmpty() ? 0.0 : sX1.toFloat();
if (!sMargin.isEmpty())
nMargin = sMargin.toInt32(); OString sY1 = rWalker.attribute("y1");
float fY1 = sY1.isEmpty() ? 0.0 : sY1.toFloat();
OString sX2 = rWalker.attribute("x2");
float fX2 = sX2.isEmpty() ? 1.0 : sX2.toFloat();
OString sY2 = rWalker.attribute("y2");
float fY2 = sY2.isEmpty() ? 1.0 : sY2.toFloat();
rpState->addDrawCircle(aStrokeColor, nStrokeWidth, aFillColor, nMargin); rpState->addDrawCircle(aStrokeColor, nStrokeWidth, aFillColor, fX1, fY1, fX2, fY2);
} }
else if (rWalker.name() == "line") else if (rWalker.name() == "line")
{ {
......
...@@ -57,11 +57,10 @@ ...@@ -57,11 +57,10 @@
<pushbutton> <pushbutton>
<part value="Entire"> <part value="Entire">
<state enabled="any" focused="any" pressed="any" rollover="any" default="any" selected="any" button-value="any"> <state enabled="any" focused="any" pressed="any" rollover="any" default="any" selected="any" button-value="any">
<rect stroke="#007AFF" fill="#FFFFFF" stroke-width="1" rx="5" ry="5" margin="0"/> <rect stroke="#007AFF" fill="#FFFFFF" stroke-width="1" rx="7" ry="7" />
</state> </state>
<state enabled="true" focused="any" pressed="any" rollover="true" default="any" selected="any" button-value="any"> <state enabled="true" focused="any" pressed="any" rollover="true" default="any" selected="any" button-value="any">
<rect stroke="#007AFF" fill="#007AFF" stroke-width="1" rx="5" ry="5" margin="0"/> <rect stroke="#007AFF" fill="#007AFF" stroke-width="1" rx="7" ry="7" />
</state> </state>
</part> </part>
</pushbutton> </pushbutton>
...@@ -69,11 +68,11 @@ ...@@ -69,11 +68,11 @@
<radiobutton> <radiobutton>
<part value="Entire"> <part value="Entire">
<state enabled="any" focused="any" pressed="any" rollover="any" default="any" selected="any" button-value="false"> <state enabled="any" focused="any" pressed="any" rollover="any" default="any" selected="any" button-value="false">
<circ stroke="#007AFF" fill="#FFFFFF" stroke-width="1" margin="0"/> <circ stroke="#007AFF" fill="#FFFFFF" stroke-width="1" />
</state> </state>
<state enabled="any" focused="any" pressed="any" rollover="any" default="any" selected="any" button-value="true"> <state enabled="any" focused="any" pressed="any" rollover="any" default="any" selected="any" button-value="true">
<circ stroke="#007AFF" fill="#FFFFFF" stroke-width="1" margin="0"/> <circ stroke="#007AFF" fill="#FFFFFF" stroke-width="1" />
<circ stroke="#007AFF" fill="#007AFF" stroke-width="1" margin="3"/> <circ stroke="#007AFF" fill="#007AFF" stroke-width="1" x1="0.1" y1="0.1" x2="0.9" y2="0.9"/>
</state> </state>
</part> </part>
</radiobutton> </radiobutton>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment