summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-1.xml74
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-2.xml66
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-3.xml66
-rw-r--r--chart2/qa/extras/xshape/data/reference/tdf90839-4.xml64
-rw-r--r--editeng/source/editeng/editeng.cxx25
-rw-r--r--editeng/source/editeng/impedit.cxx131
-rw-r--r--editeng/source/editeng/impedit.hxx78
-rw-r--r--editeng/source/editeng/impedit2.cxx573
-rw-r--r--editeng/source/editeng/impedit3.cxx223
-rw-r--r--editeng/source/editeng/impedit4.cxx4
-rw-r--r--editeng/source/outliner/outlin2.cxx5
-rw-r--r--include/editeng/editeng.hxx2
-rw-r--r--include/editeng/outliner.hxx2
-rw-r--r--sc/qa/uitest/chart/chartLegend.py4
-rw-r--r--sc/qa/unit/filters-test.cxx2
-rw-r--r--sd/qa/uitest/impress_tests/tdf91762.py8
-rw-r--r--sd/qa/unit/data/xml/n593612_0.xml4
-rw-r--r--sd/qa/unit/data/xml/n758621_1.xml4
-rw-r--r--sd/qa/unit/layout-tests.cxx107
-rw-r--r--sd/qa/unit/tiledrendering/LOKitSearchTest.cxx4
-rw-r--r--svx/source/svdraw/svdotext.cxx2
-rw-r--r--svx/source/svdraw/svdotextdecomposition.cxx4
-rw-r--r--test/source/sheet/xsheetannotationshapesupplier.cxx2
23 files changed, 923 insertions, 531 deletions
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml
index 2af62c344940..3586969602c1 100644
--- a/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-1.xml
@@ -175,15 +175,15 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="8394" positionY="4386" sizeX="9180" sizeY="8065" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="8395" positionY="4386" sizeX="9178" sizeY="8066" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="8394" positionY="4386" sizeX="9180" sizeY="8065" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="8395" positionY="4386" sizeX="9178" sizeY="8066" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="8394" positionY="4386" sizeX="9180" sizeY="8065" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShape positionX="8395" positionY="4386" sizeX="9178" sizeY="8066" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
<XShapes>
- <XShape positionX="16434" positionY="9300" sizeX="1140" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShape positionX="16433" positionY="9300" sizeX="1140" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
<XShapes>
- <XShape positionX="16434" positionY="9300" sizeX="1140" sizeY="849" type="com.sun.star.drawing.TextShape" text="Yellow&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="16433" positionY="9300" sizeX="1140" sizeY="850" type="com.sun.star.drawing.TextShape" text="Yellow&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -192,21 +192,21 @@
<LineStart/>
<LineEnd/>
<Transformation>
- <Line1 column1="1141.000000" column2="0.000000" column3="16434.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="9300.000000"/>
+ <Line1 column1="1141.000000" column2="0.000000" column3="16433.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="9300.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="1141.000000" column2="0.000000" column3="16434.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="9300.000000"/>
+ <Line1 column1="1141.000000" column2="0.000000" column3="16433.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="9300.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="10197" positionY="11602" sizeX="928" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShape positionX="10198" positionY="11602" sizeX="928" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
<XShapes>
- <XShape positionX="10197" positionY="11602" sizeX="928" sizeY="849" type="com.sun.star.drawing.TextShape" text="Black&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="10198" positionY="11602" sizeX="928" sizeY="850" type="com.sun.star.drawing.TextShape" text="Black&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -215,21 +215,21 @@
<LineStart/>
<LineEnd/>
<Transformation>
- <Line1 column1="929.000000" column2="0.000000" column3="10197.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="11602.000000"/>
+ <Line1 column1="929.000000" column2="0.000000" column3="10198.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="11602.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="929.000000" column2="0.000000" column3="10197.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="11602.000000"/>
+ <Line1 column1="929.000000" column2="0.000000" column3="10198.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="11602.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="8394" positionY="7893" sizeX="1060" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShape positionX="8395" positionY="7893" sizeX="1060" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
<XShapes>
- <XShape positionX="8394" positionY="7893" sizeX="1060" sizeY="849" type="com.sun.star.drawing.TextShape" text="Green&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="8395" positionY="7893" sizeX="1060" sizeY="850" type="com.sun.star.drawing.TextShape" text="Green&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -238,21 +238,21 @@
<LineStart/>
<LineEnd/>
<Transformation>
- <Line1 column1="1061.000000" column2="0.000000" column3="8394.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="7893.000000"/>
+ <Line1 column1="1061.000000" column2="0.000000" column3="8395.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="7893.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="1061.000000" column2="0.000000" column3="8394.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="7893.000000"/>
+ <Line1 column1="1061.000000" column2="0.000000" column3="8395.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="7893.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="10043" positionY="5033" sizeX="716" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShape positionX="10043" positionY="5033" sizeX="716" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
<XShapes>
- <XShape positionX="10043" positionY="5033" sizeX="716" sizeY="849" type="com.sun.star.drawing.TextShape" text="Red&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="10043" positionY="5033" sizeX="716" sizeY="850" type="com.sun.star.drawing.TextShape" text="Red&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -262,20 +262,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="717.000000" column2="0.000000" column3="10043.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="5033.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="5033.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="717.000000" column2="0.000000" column3="10043.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="5033.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="5033.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="14035" positionY="4386" sizeX="1034" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShape positionX="14034" positionY="4386" sizeX="1034" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
<XShapes>
- <XShape positionX="14035" positionY="4386" sizeX="1034" sizeY="849" type="com.sun.star.drawing.TextShape" text="White&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="14034" positionY="4386" sizeX="1034" sizeY="850" type="com.sun.star.drawing.TextShape" text="White&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="3889" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -284,36 +284,36 @@
<LineStart/>
<LineEnd/>
<Transformation>
- <Line1 column1="1035.000000" column2="0.000000" column3="14035.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="4386.000000"/>
+ <Line1 column1="1035.000000" column2="0.000000" column3="14034.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="4386.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="1035.000000" column2="0.000000" column3="14035.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="4386.000000"/>
+ <Line1 column1="1035.000000" column2="0.000000" column3="14034.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="4386.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="9181.000000" column2="0.000000" column3="8394.000000"/>
- <Line2 column1="0.000000" column2="8066.000000" column3="4386.000000"/>
+ <Line1 column1="9179.000000" column2="0.000000" column3="8395.000000"/>
+ <Line2 column1="0.000000" column2="8067.000000" column3="4386.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="9181.000000" column2="0.000000" column3="8394.000000"/>
- <Line2 column1="0.000000" column2="8066.000000" column3="4386.000000"/>
+ <Line1 column1="9179.000000" column2="0.000000" column3="8395.000000"/>
+ <Line2 column1="0.000000" column2="8067.000000" column3="4386.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
- <Line1 column1="9181.000000" column2="0.000000" column3="8394.000000"/>
- <Line2 column1="0.000000" column2="8066.000000" column3="4386.000000"/>
+ <Line1 column1="9179.000000" column2="0.000000" column3="8395.000000"/>
+ <Line2 column1="0.000000" column2="8067.000000" column3="4386.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml
index d7e5c4a364f9..a2719aaf69f5 100644
--- a/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-2.xml
@@ -14,7 +14,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
<XShapes>
<XShape positionX="8207" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
@@ -30,7 +30,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -40,11 +40,11 @@
<LineEnd/>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape">
<XShapes>
<XShape positionX="8207" positionY="3819" sizeX="9721" sizeY="9723" type="com.sun.star.drawing.GroupShape">
<XShapes>
@@ -175,15 +175,15 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
<XShapes>
- <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
<XShapes>
- <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="849" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="850" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -193,20 +193,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6115.000000" column2="0.000000" column3="17907.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="9977.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="9977.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6115.000000" column2="0.000000" column3="17907.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="9977.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="9977.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
<XShapes>
- <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="849" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="850" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -216,20 +216,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6221.000000" column2="0.000000" column3="3974.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="12784.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="12784.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6221.000000" column2="0.000000" column3="3974.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="12784.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="12784.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
<XShapes>
- <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="849" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="850" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -239,20 +239,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6168.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="7819.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="7819.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6168.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="7819.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="7819.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="3813" positionY="3994" sizeX="6035" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShape positionX="3813" positionY="3993" sizeX="6035" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
<XShapes>
- <XShape positionX="3813" positionY="3994" sizeX="6035" sizeY="849" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3813" positionY="3993" sizeX="6035" sizeY="850" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -262,20 +262,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6036.000000" column2="0.000000" column3="3813.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3994.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3993.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6036.000000" column2="0.000000" column3="3813.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3994.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3993.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="14780" positionY="3124" sizeX="6140" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShape positionX="14780" positionY="3123" sizeX="6140" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
<XShapes>
- <XShape positionX="14780" positionY="3124" sizeX="6140" sizeY="849" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8832" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="14780" positionY="3123" sizeX="6140" sizeY="850" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8832" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -285,50 +285,50 @@
<LineEnd/>
<Transformation>
<Line1 column1="6141.000000" column2="0.000000" column3="14780.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6141.000000" column2="0.000000" column3="14780.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
-</XShapes> \ No newline at end of file
+</XShapes>
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml
index 77a1ac06f80a..3c4cc8a5b51d 100644
--- a/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-3.xml
@@ -14,7 +14,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
<XShapes>
<XShape positionX="8207" positionY="3821" sizeX="9721" sizeY="9721" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
@@ -30,7 +30,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -40,11 +40,11 @@
<LineEnd/>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape">
<XShapes>
<XShape positionX="8207" positionY="3819" sizeX="9721" sizeY="9723" type="com.sun.star.drawing.GroupShape">
<XShapes>
@@ -175,15 +175,15 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="1910" positionY="3124" sizeX="22111" sizeY="10509" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShape positionX="1910" positionY="3123" sizeX="22111" sizeY="10511" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
<XShapes>
- <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
<XShapes>
- <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="849" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="17907" positionY="9977" sizeX="6114" sizeY="850" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="7129" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -193,20 +193,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6115.000000" column2="0.000000" column3="17907.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="9977.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="9977.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6115.000000" column2="0.000000" column3="17907.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="9977.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="9977.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
<XShapes>
- <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="849" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3974" positionY="12784" sizeX="6220" sizeY="850" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -216,20 +216,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6221.000000" column2="0.000000" column3="3974.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="12784.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="12784.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6221.000000" column2="0.000000" column3="3974.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="12784.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="12784.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
<XShapes>
- <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="849" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1910" positionY="7819" sizeX="6167" sizeY="850" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -239,20 +239,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6168.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="7819.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="7819.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6168.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="7819.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="7819.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="3813" positionY="3994" sizeX="6035" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShape positionX="3813" positionY="3993" sizeX="6035" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
<XShapes>
- <XShape positionX="3813" positionY="3994" sizeX="6035" sizeY="849" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3813" positionY="3993" sizeX="6035" sizeY="850" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -262,20 +262,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6036.000000" column2="0.000000" column3="3813.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3994.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3993.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6036.000000" column2="0.000000" column3="3813.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3994.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3993.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="14780" positionY="3124" sizeX="6140" sizeY="849" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShape positionX="14780" positionY="3123" sizeX="6140" sizeY="850" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
<XShapes>
- <XShape positionX="14780" positionY="3124" sizeX="6140" sizeY="849" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="14780" positionY="3123" sizeX="6140" sizeY="850" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -285,50 +285,50 @@
<LineEnd/>
<Transformation>
<Line1 column1="6141.000000" column2="0.000000" column3="14780.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6141.000000" column2="0.000000" column3="14780.000000"/>
- <Line2 column1="0.000000" column2="850.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="851.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="22112.000000" column2="0.000000" column3="1910.000000"/>
- <Line2 column1="0.000000" column2="10510.000000" column3="3124.000000"/>
+ <Line2 column1="0.000000" column2="10512.000000" column3="3123.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
-</XShapes> \ No newline at end of file
+</XShapes>
diff --git a/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml b/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml
index 6b182821f1c9..c8327f6e3e95 100644
--- a/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml
+++ b/chart2/qa/extras/xshape/data/reference/tdf90839-4.xml
@@ -14,7 +14,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1737" positionY="2768" sizeX="21967" sizeY="11230" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
+ <XShape positionX="1737" positionY="2767" sizeX="21967" sizeY="11232" type="com.sun.star.drawing.GroupShape" name="CID/D=0">
<XShapes>
<XShape positionX="8034" positionY="3894" sizeX="9575" sizeY="9575" type="com.sun.star.drawing.RectangleShape" name="MarkHandles" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
@@ -30,7 +30,7 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1737" positionY="2768" sizeX="21967" sizeY="11230" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1737" positionY="2767" sizeX="21967" sizeY="11232" type="com.sun.star.drawing.RectangleShape" name="PlotAreaIncludingAxes" fontHeight="12.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -40,11 +40,11 @@
<LineEnd/>
<Transformation>
<Line1 column1="21968.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="11231.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="11233.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1737" positionY="2768" sizeX="21967" sizeY="11230" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1737" positionY="2767" sizeX="21967" sizeY="11232" type="com.sun.star.drawing.GroupShape">
<XShapes>
<XShape positionX="8034" positionY="3892" sizeX="9575" sizeY="9577" type="com.sun.star.drawing.GroupShape">
<XShapes>
@@ -175,15 +175,15 @@
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1737" positionY="2768" sizeX="21967" sizeY="11230" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1737" positionY="2767" sizeX="21967" sizeY="11232" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="1737" positionY="2768" sizeX="21967" sizeY="11230" type="com.sun.star.drawing.GroupShape">
+ <XShape positionX="1737" positionY="2767" sizeX="21967" sizeY="11232" type="com.sun.star.drawing.GroupShape">
<XShapes>
- <XShape positionX="1737" positionY="2768" sizeX="21967" sizeY="11230" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
+ <XShape positionX="1737" positionY="2767" sizeX="21967" sizeY="11232" type="com.sun.star.drawing.GroupShape" name="CID/D=0:CS=0:CT=0:Series=0:DataLabels=">
<XShapes>
- <XShape positionX="17590" positionY="9958" sizeX="6114" sizeY="1273" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
+ <XShape positionX="17590" positionY="9958" sizeX="6114" sizeY="1274" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0">
<XShapes>
- <XShape positionX="17590" positionY="9958" sizeX="6114" sizeY="1273" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;120&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="17590" positionY="9958" sizeX="6114" sizeY="1274" type="com.sun.star.drawing.TextShape" text="Yellow - The color of sun and honey&#10;120&#10;33%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -193,20 +193,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6115.000000" column2="0.000000" column3="17590.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="9958.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="9958.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6115.000000" column2="0.000000" column3="17590.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="9958.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="9958.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="3770" positionY="12725" sizeX="6220" sizeY="1273" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
+ <XShape positionX="3770" positionY="12725" sizeX="6220" sizeY="1274" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=1">
<XShapes>
- <XShape positionX="3770" positionY="12725" sizeX="6220" sizeY="1273" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;100&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3770" positionY="12725" sizeX="6220" sizeY="1274" type="com.sun.star.drawing.TextShape" text="Black - The color of night and coffee&#10;100&#10;28%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="TOP" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -216,20 +216,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6221.000000" column2="0.000000" column3="3770.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="12725.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="12725.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6221.000000" column2="0.000000" column3="3770.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="12725.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="12725.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="1737" positionY="7614" sizeX="6167" sizeY="1273" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
+ <XShape positionX="1737" positionY="7614" sizeX="6167" sizeY="1274" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=2">
<XShapes>
- <XShape positionX="1737" positionY="7614" sizeX="6167" sizeY="1273" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;20&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1737" positionY="7614" sizeX="6167" sizeY="1274" type="com.sun.star.drawing.TextShape" text="Green - The color of grass and hope&#10;20&#10;6%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="CENTER" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -239,20 +239,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6168.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="7614.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="7614.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6168.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="7614.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="7614.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="3614" positionY="3626" sizeX="6035" sizeY="1273" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
+ <XShape positionX="3614" positionY="3625" sizeX="6035" sizeY="1274" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=3">
<XShapes>
- <XShape positionX="3614" positionY="3626" sizeX="6035" sizeY="1273" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;70&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3614" positionY="3625" sizeX="6035" sizeY="1274" type="com.sun.star.drawing.TextShape" text="Red - The color of rose and passion&#10;70&#10;19%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="RIGHT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="6977" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -262,20 +262,20 @@
<LineEnd/>
<Transformation>
<Line1 column1="6036.000000" column2="0.000000" column3="3614.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="3626.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="3625.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6036.000000" column2="0.000000" column3="3614.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="3626.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="3625.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
- <XShape positionX="14509" positionY="2768" sizeX="6140" sizeY="1273" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
+ <XShape positionX="14509" positionY="2767" sizeX="6140" sizeY="1274" type="com.sun.star.drawing.GroupShape" name="CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=4">
<XShapes>
- <XShape positionX="14509" positionY="2768" sizeX="6140" sizeY="1273" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;50&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8664" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="14509" positionY="2767" sizeX="6140" sizeY="1274" type="com.sun.star.drawing.TextShape" text="White - The color of milk and purity&#10;50&#10;14%" fontHeight="12.000000" fontColor="595959" textAutoGrowHeight="true" textAutoGrowWidth="true" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="BOTTOM" textLeftDistance="0" textRightDistance="0" textUpperDistance="0" textLowerDistance="0" textMaximumFrameHeight="0" textMaximumFrameWidth="8664" textMinimumFrameHeight="1" textMinimumFrameWidth="1" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -285,49 +285,49 @@
<LineEnd/>
<Transformation>
<Line1 column1="6141.000000" column2="0.000000" column3="14509.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="6141.000000" column2="0.000000" column3="14509.000000"/>
- <Line2 column1="0.000000" column2="1274.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="1275.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="21968.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="11231.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="11233.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="21968.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="11231.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="11233.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="21968.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="11231.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="11233.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="21968.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="11231.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="11233.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
</XShapes>
<Transformation>
<Line1 column1="21968.000000" column2="0.000000" column3="1737.000000"/>
- <Line2 column1="0.000000" column2="11231.000000" column3="2768.000000"/>
+ <Line2 column1="0.000000" column2="11233.000000" column3="2767.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index cb1244f2e30f..b90ad3127fee 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -564,6 +564,11 @@ void EditEngine::SetMaxAutoPaperSize( const Size& rSz )
pImpEditEngine->SetMaxAutoPaperSize( rSz );
}
+void EditEngine::SetMinColumnWrapHeight(tools::Long nVal)
+{
+ pImpEditEngine->SetMinColumnWrapHeight(nVal);
+}
+
OUString EditEngine::GetText( LineEnd eEnd ) const
{
return pImpEditEngine->GetEditDoc().GetText( eEnd );
@@ -2022,28 +2027,12 @@ bool EditEngine::IsTextPos( const Point& rPaperPos, sal_uInt16 nBorder )
if ( !pImpEditEngine->IsFormatted() )
pImpEditEngine->FormatDoc();
- bool bTextPos = false;
// take unrotated positions for calculation here
Point aDocPos = GetDocPos( rPaperPos );
if ( ( aDocPos.Y() > 0 ) && ( aDocPos.Y() < static_cast<tools::Long>(pImpEditEngine->GetTextHeight()) ) )
- {
- EditPaM aPaM = pImpEditEngine->GetPaM( aDocPos, false );
- if ( aPaM.GetNode() )
- {
- const ParaPortion& rParaPortion = pImpEditEngine->FindParaPortion( aPaM.GetNode() );
-
- sal_Int32 nLine = rParaPortion.GetLineNumber( aPaM.GetIndex() );
- const EditLine& rLine = rParaPortion.GetLines()[nLine];
- Range aLineXPosStartEnd = pImpEditEngine->GetLineXPosStartEnd( &rParaPortion, &rLine );
- if ( ( aDocPos.X() >= aLineXPosStartEnd.Min() - nBorder ) &&
- ( aDocPos.X() <= aLineXPosStartEnd.Max() + nBorder ) )
- {
- bTextPos = true;
- }
- }
- }
- return bTextPos;
+ return pImpEditEngine->IsTextPos(aDocPos, nBorder);
+ return false;
}
void EditEngine::SetEditTextObjectPool( SfxItemPool* pPool )
diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx
index 653072083f66..9fb5ce8d8897 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -521,107 +521,116 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion,
bool bStartHandleVisible = false;
bool bEndHandleVisible = false;
- for ( sal_Int32 nPara = nStartPara; nPara <= nEndPara; nPara++ )
- {
- ParaPortion* pTmpPortion = pEditEngine->GetParaPortions().SafeGetObject( nPara );
- if (!pTmpPortion)
+ auto DrawHighlight = [&, nStartLine = sal_Int32(0), nEndLine = sal_Int32(0)](
+ const ImpEditEngine::LineAreaInfo& rInfo) mutable {
+ if (!rInfo.pLine) // Begin of ParaPortion
{
- SAL_WARN( "editeng", "Portion in Selection not found!" );
- continue;
- }
-
- DBG_ASSERT( !pTmpPortion->IsInvalid(), "Portion in Selection not formatted!" );
-
- if ( !pTmpPortion->IsVisible() || pTmpPortion->IsInvalid() )
- continue;
-
- tools::Long nParaStart = pEditEngine->GetParaPortions().GetYOffset( pTmpPortion );
- if ( ( nParaStart + pTmpPortion->GetHeight() ) < GetVisDocTop() )
- continue;
- if ( nParaStart > GetVisDocBottom() )
- break;
-
- sal_uInt16 nStartLine = 0;
- sal_uInt16 nEndLine = pTmpPortion->GetLines().Count() -1;
- if ( nPara == nStartPara )
- nStartLine = pTmpPortion->GetLines().FindLine( aTmpSel.Min().GetIndex(), false );
- if ( nPara == nEndPara )
- nEndLine = pTmpPortion->GetLines().FindLine( aTmpSel.Max().GetIndex(), true );
+ if (rInfo.nPortion < nStartPara)
+ return ImpEditEngine::CallbackResult::SkipThisPortion;
+ if (rInfo.nPortion > nEndPara)
+ return ImpEditEngine::CallbackResult::Stop;
+ DBG_ASSERT(!rInfo.rPortion.IsInvalid(), "Portion in Selection not formatted!");
+ if (rInfo.rPortion.IsInvalid())
+ return ImpEditEngine::CallbackResult::SkipThisPortion;
+
+ if (rInfo.nPortion == nStartPara)
+ nStartLine = rInfo.rPortion.GetLines().FindLine(aTmpSel.Min().GetIndex(), false);
+ else
+ nStartLine = 0;
- for ( sal_uInt16 nLine = nStartLine; nLine <= nEndLine; nLine++ )
+ if (rInfo.nPortion == nEndPara)
+ nEndLine = rInfo.rPortion.GetLines().FindLine(aTmpSel.Max().GetIndex(), true);
+ else
+ nEndLine = rInfo.rPortion.GetLines().Count() - 1;
+ }
+ else // This is a correct ParaPortion
{
- const EditLine& rLine = pTmpPortion->GetLines()[nLine];
+ if (rInfo.nLine < nStartLine)
+ return ImpEditEngine::CallbackResult::Continue;
+ if (rInfo.nLine > nEndLine)
+ return ImpEditEngine::CallbackResult::SkipThisPortion;
bool bPartOfLine = false;
- sal_Int32 nStartIndex = rLine.GetStart();
- sal_Int32 nEndIndex = rLine.GetEnd();
- if ( ( nPara == nStartPara ) && ( nLine == nStartLine ) && ( nStartIndex != aTmpSel.Min().GetIndex() ) )
+ sal_Int32 nStartIndex = rInfo.pLine->GetStart();
+ sal_Int32 nEndIndex = rInfo.pLine->GetEnd();
+ if ((rInfo.nPortion == nStartPara) && (rInfo.nLine == nStartLine)
+ && (nStartIndex != aTmpSel.Min().GetIndex()))
{
nStartIndex = aTmpSel.Min().GetIndex();
bPartOfLine = true;
}
- if ( ( nPara == nEndPara ) && ( nLine == nEndLine ) && ( nEndIndex != aTmpSel.Max().GetIndex() ) )
+ if ((rInfo.nPortion == nEndPara) && (rInfo.nLine == nEndLine)
+ && (nEndIndex != aTmpSel.Max().GetIndex()))
{
nEndIndex = aTmpSel.Max().GetIndex();
bPartOfLine = true;
}
// Can happen if at the beginning of a wrapped line.
- if ( nEndIndex < nStartIndex )
+ if (nEndIndex < nStartIndex)
nEndIndex = nStartIndex;
- tools::Rectangle aTmpRect( pEditEngine->pImpEditEngine->GetEditCursor( pTmpPortion, nStartIndex ) );
- Point aTopLeft( aTmpRect.TopLeft() );
- Point aBottomRight( aTmpRect.BottomRight() );
-
- aTopLeft.AdjustY(nParaStart );
- aBottomRight.AdjustY(nParaStart );
+ tools::Rectangle aTmpRect(pEditEngine->pImpEditEngine->GetEditCursor(
+ &rInfo.rPortion, rInfo.pLine, nStartIndex, GetCursorFlags::NONE));
+ aTmpRect.Move(0, pEditEngine->pImpEditEngine->getTopDirectionAware(rInfo.aArea));
// Only paint if in the visible range ...
- if ( aTopLeft.Y() > GetVisDocBottom() )
- break;
+ if (aTmpRect.Top() > GetVisDocBottom())
+ return ImpEditEngine::CallbackResult::Continue;
- if ( aBottomRight.Y() < GetVisDocTop() )
- continue;
+ if (aTmpRect.Bottom() < GetVisDocTop())
+ return ImpEditEngine::CallbackResult::Continue;
- if ( ( nPara == nStartPara ) && ( nLine == nStartLine ) )
+ if ((rInfo.nPortion == nStartPara) && (rInfo.nLine == nStartLine))
bStartHandleVisible = true;
- if ( ( nPara == nEndPara ) && ( nLine == nEndLine ) )
+ if ((rInfo.nPortion == nEndPara) && (rInfo.nLine == nEndLine))
bEndHandleVisible = true;
// Now that we have Bidi, the first/last index doesn't have to be the 'most outside' position
- if ( !bPartOfLine )
+ if (!bPartOfLine)
{
- Range aLineXPosStartEnd = pEditEngine->GetLineXPosStartEnd(pTmpPortion, &rLine);
- aTopLeft.setX( aLineXPosStartEnd.Min() );
- aBottomRight.setX( aLineXPosStartEnd.Max() );
- ImplDrawHighlightRect(rTarget, aTopLeft, aBottomRight, pPolyPoly.get());
+ Range aLineXPosStartEnd
+ = pEditEngine->GetLineXPosStartEnd(&rInfo.rPortion, rInfo.pLine);
+ aTmpRect.SetLeft(aLineXPosStartEnd.Min());
+ aTmpRect.SetRight(aLineXPosStartEnd.Max());
+ aTmpRect.Move(pEditEngine->pImpEditEngine->getLeftDirectionAware(rInfo.aArea), 0);
+ ImplDrawHighlightRect(rTarget, aTmpRect.TopLeft(), aTmpRect.BottomRight(),
+ pPolyPoly.get());
}
else
{
sal_Int32 nTmpStartIndex = nStartIndex;
sal_Int32 nWritingDirStart, nTmpEndIndex;
+ const sal_Int32 nLeftOffset
+ = pEditEngine->pImpEditEngine->getLeftDirectionAware(rInfo.aArea);
- while ( nTmpStartIndex < nEndIndex )
+ while (nTmpStartIndex < nEndIndex)
{
- pEditEngine->pImpEditEngine->GetRightToLeft( nPara, nTmpStartIndex+1, &nWritingDirStart, &nTmpEndIndex );
- if ( nTmpEndIndex > nEndIndex )
+ pEditEngine->pImpEditEngine->GetRightToLeft(rInfo.nPortion, nTmpStartIndex + 1,
+ &nWritingDirStart, &nTmpEndIndex);
+ if (nTmpEndIndex > nEndIndex)
nTmpEndIndex = nEndIndex;
- DBG_ASSERT( nTmpEndIndex > nTmpStartIndex, "DrawSelectionXOR, Start >= End?" );
+ DBG_ASSERT(nTmpEndIndex > nTmpStartIndex, "DrawSelectionXOR, Start >= End?");
- tools::Long nX1 = pEditEngine->GetXPos(pTmpPortion, &rLine, nTmpStartIndex, true);
- tools::Long nX2 = pEditEngine->GetXPos(pTmpPortion, &rLine, nTmpEndIndex);
+ tools::Long nX1
+ = pEditEngine->GetXPos(&rInfo.rPortion, rInfo.pLine, nTmpStartIndex, true);
+ tools::Long nX2
+ = pEditEngine->GetXPos(&rInfo.rPortion, rInfo.pLine, nTmpEndIndex);
- Point aPt1( std::min( nX1, nX2 ), aTopLeft.Y() );
- Point aPt2( std::max( nX1, nX2 ), aBottomRight.Y() );
+ aTmpRect.SetLeft(std::min(nX1, nX2));
+ aTmpRect.SetRight(std::max(nX1, nX2));
+ aTmpRect.Move(nLeftOffset, 0);
- ImplDrawHighlightRect(rTarget, aPt1, aPt2, pPolyPoly.get());
+ ImplDrawHighlightRect(rTarget, aTmpRect.TopLeft(), aTmpRect.BottomRight(),
+ pPolyPoly.get());
nTmpStartIndex = nTmpEndIndex;
}
}
}
- }
+ return ImpEditEngine::CallbackResult::Continue;
+ };
+ pEditEngine->pImpEditEngine->IterateLineAreas(DrawHighlight, ImpEditEngine::IterFlag::none);
if (comphelper::LibreOfficeKit::isActive() && mpViewShell && pOutWin)
lokSelectionCallback(pPolyPoly, bStartHandleVisible, bEndHandleVisible);
@@ -1808,6 +1817,8 @@ const SvxFieldItem* ImpEditView::GetField( const Point& rPos, sal_Int32* pPara,
Point aDocPos( GetDocPos( rPos ) );
EditPaM aPaM = pEditEngine->GetPaM(aDocPos, false);
+ if (!aPaM)
+ return nullptr;
if ( aPaM.GetIndex() == aPaM.GetNode()->Len() )
{
@@ -1846,6 +1857,8 @@ bool ImpEditView::IsBulletArea( const Point& rPos, sal_Int32* pPara )
Point aDocPos( GetDocPos( rPos ) );
EditPaM aPaM = pEditEngine->GetPaM(aDocPos, false);
+ if (!aPaM)
+ return false;
if ( aPaM.GetIndex() == 0 )
{
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 394165930379..4a39269507ff 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -54,8 +54,10 @@
#include <o3tl/deleter.hxx>
#include <o3tl/typed_flags_set.hxx>
+#include <functional>
#include <optional>
#include <memory>
+#include <tuple>
#include <vector>
class EditView;
@@ -489,6 +491,7 @@ private:
Size aPaperSize; // Layout
Size aMinAutoPaperSize; // Layout ?
Size aMaxAutoPaperSize; // Layout ?
+ tools::Long mnMinColumnWrapHeight = 0; // Corresponds to graphic object height
EditDoc aEditDoc; // Document content
// Engine Specific data ...
@@ -548,8 +551,8 @@ private:
// For Formatting / Update...
std::vector<std::unique_ptr<DeletedNodeInfo> > aDeletedNodes;
tools::Rectangle aInvalidRect;
- sal_uInt32 nCurTextHeight;
- sal_uInt32 nCurTextHeightNTP; // without trailing empty paragraphs
+ tools::Long nCurTextHeight;
+ tools::Long nCurTextHeightNTP; // without trailing empty paragraphs
sal_uInt16 nOnePixelInRef;
IdleFormattter aIdleFormatter;
@@ -616,8 +619,9 @@ private:
std::unique_ptr<EditTextObject> GetEmptyTextObject();
+ std::tuple<const ParaPortion*, const EditLine*, tools::Long> GetPortionAndLine(Point aDocPos);
EditPaM GetPaM( Point aDocPos, bool bSmart = true );
- EditPaM GetPaM( ParaPortion* pPortion, Point aPos, bool bSmart );
+ bool IsTextPos(const Point& rDocPos, sal_uInt16 nBorder);
tools::Long GetXPos(const ParaPortion* pParaPortion, const EditLine* pLine, sal_Int32 nIndex, bool bPreferPortionStart = false) const;
tools::Long GetPortionXOffset(const ParaPortion* pParaPortion, const EditLine* pLine, sal_Int32 nTextPortion) const;
sal_Int32 GetChar(const ParaPortion* pParaPortion, const EditLine* pLine, tools::Long nX, bool bSmart = true);
@@ -764,22 +768,11 @@ private:
void SetValidPaperSize( const Size& rSz );
- tools::Long getXDirectionAware(const Point& pt) const;
- tools::Long getYDirectionAware(const Point& pt) const;
- tools::Long getWidthDirectionAware(const Size& sz) const;
- tools::Long getHeightDirectionAware(const Size& sz) const;
- void adjustXDirectionAware(Point& pt, tools::Long x) const;
- void adjustYDirectionAware(Point& pt, tools::Long y) const;
- void setXDirectionAware(Point& pt, tools::Long x) const;
- void setYDirectionAware(Point& pt, tools::Long y) const;
- bool isYOverflowDirectionAware(const Point& pt, const tools::Rectangle& rectMax) const;
- bool isXOverflowDirectionAware(const Point& pt, const tools::Rectangle& rectMax) const;
-
css::uno::Reference < css::i18n::XBreakIterator > const & ImplGetBreakIterator() const;
css::uno::Reference < css::i18n::XExtendedInputSequenceChecker > const & ImplGetInputSequenceChecker() const;
- void ImplUpdateOverflowingParaNum( sal_uInt32 );
- void ImplUpdateOverflowingLineNum( sal_uInt32, sal_uInt32, sal_uInt32 );
+ void ImplUpdateOverflowingParaNum(tools::Long);
+ void ImplUpdateOverflowingLineNum(tools::Long, sal_uInt32, tools::Long);
void CreateSpellInfo( bool bMultipleDocs );
/// Obtains a view shell ID from the active EditView.
@@ -793,6 +786,8 @@ private:
const ParaPortionList& GetParaPortions() const { return aParaPortionList; }
ParaPortionList& GetParaPortions() { return aParaPortionList; }
+ tools::Long Calc1ColumnTextHeight(tools::Long* pHeightNTP);
+
protected:
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
@@ -845,6 +840,8 @@ public:
const Size& GetMaxAutoPaperSize() const { return aMaxAutoPaperSize; }
void SetMaxAutoPaperSize( const Size& rSz ) { aMaxAutoPaperSize = rSz; }
+ void SetMinColumnWrapHeight(tools::Long nVal) { mnMinColumnWrapHeight = nVal; }
+
void FormatDoc();
void FormatFullDoc();
void UpdateViews( EditView* pCurView = nullptr );
@@ -899,7 +896,7 @@ public:
EditSelection MoveParagraphs( Range aParagraphs, sal_Int32 nNewPos, EditView* pCurView );
- sal_uInt32 CalcTextHeight( sal_uInt32* pHeightNTP );
+ tools::Long CalcTextHeight( tools::Long* pHeightNTP );
sal_uInt32 GetTextHeight() const;
sal_uInt32 GetTextHeightNTP() const;
sal_uInt32 CalcTextWidth( bool bIgnoreExtraSpace);
@@ -931,7 +928,8 @@ public:
}
tools::Rectangle PaMtoEditCursor( EditPaM aPaM, GetCursorFlags nFlags = GetCursorFlags::NONE );
- tools::Rectangle GetEditCursor( ParaPortion* pPortion, sal_Int32 nIndex, GetCursorFlags nFlags = GetCursorFlags::NONE );
+ tools::Rectangle GetEditCursor(const ParaPortion* pPortion, const EditLine* pLine,
+ sal_Int32 nIndex, GetCursorFlags nFlags);
bool IsModified() const { return aEditDoc.IsModified(); }
void SetModifyFlag( bool b ) { aEditDoc.SetModified( b ); }
@@ -1131,6 +1129,50 @@ public:
void Dispose();
void SetLOKSpecialPaperSize(const Size& rSize) { aLOKSpecialPaperSize = rSize; }
const Size& GetLOKSpecialPaperSize() const { return aLOKSpecialPaperSize; }
+
+ enum class CallbackResult
+ {
+ Continue,
+ SkipThisPortion, // Do not call callback until next portion
+ Stop, // Stop iteration
+ };
+ struct LineAreaInfo
+ {
+ sal_Int32 nColumn; // Column number; when overflowing, equal to total number of columns
+ ParaPortion& rPortion; // Current ParaPortion
+ sal_Int32 nPortion;
+ EditLine* pLine; // Current line, or nullptr for paragraph start
+ sal_Int32 nLine;
+ tools::Rectangle aArea; // The area for the line (or for rPortion's first line offset)
+ tools::Long nHeightNeededToNotWrap;
+ };
+ using IterateLinesAreasFunc = std::function<CallbackResult(const LineAreaInfo&)>;
+ enum IterFlag // bitmask
+ {
+ none = 0,
+ inclILS = 1, // rArea includes interline space
+ };
+
+ void IterateLineAreas(const IterateLinesAreasFunc& f, IterFlag eOptions);
+
+ tools::Long GetColumnWidth(const Size& rPaperSize) const;
+ Point MoveToNextLine(Point& rMovePos, tools::Long nLineHeight, sal_Int32& nColumn,
+ Point aOrigin, tools::Long* pnHeightNeededToNotWrap = nullptr) const;
+
+ tools::Long getXDirectionAware(const Point& pt) const;
+ tools::Long getYDirectionAware(const Point& pt) const;
+ tools::Long getWidthDirectionAware(const Size& sz) const;
+ tools::Long getHeightDirectionAware(const Size& sz) const;
+ void adjustXDirectionAware(Point& pt, tools::Long x) const;
+ void adjustYDirectionAware(Point& pt, tools::Long y) const;
+ void setXDirectionAware(Point& pt, tools::Long x) const;
+ void setYDirectionAware(Point& pt, tools::Long y) const;
+ tools::Long getYOverflowDirectionAware(const Point& pt, const tools::Rectangle& rectMax) const;
+ bool isXOverflowDirectionAware(const Point& pt, const tools::Rectangle& rectMax) const;
+ tools::Long getLeftDirectionAware(const tools::Rectangle& rect) const;
+ tools::Long getRightDirectionAware(const tools::Rectangle& rect) const;
+ tools::Long getTopDirectionAware(const tools::Rectangle& rect) const;
+ tools::Long getBottomDirectionAware(const tools::Rectangle& rect) const;
};
inline EPaM ImpEditEngine::CreateEPaM( const EditPaM& rPaM )
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index dae90e5e435a..ec3ef06aa4bc 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -59,12 +59,14 @@
#include <svl/asiancfg.hxx>
#include <i18nutil/unicode.hxx>
#include <tools/diagnose_ex.h>
+#include <comphelper/flagguard.hxx>
#include <comphelper/lok.hxx>
#include <comphelper/processfactory.hxx>
#include <unotools/configmgr.hxx>
#include <unicode/ubidi.h>
#include <algorithm>
+#include <limits>
#include <memory>
#include <string_view>
#include <fstream>
@@ -538,22 +540,47 @@ bool ImpEditEngine::Command( const CommandEvent& rCEvt, EditView* pView )
if ( !IsFormatted() )
FormatDoc();
- ParaPortion* pParaPortion = GetParaPortions().SafeGetObject( GetEditDoc().GetPos( aPaM.GetNode() ) );
+ sal_Int32 nPortionPos = GetEditDoc().GetPos(aPaM.GetNode());
+ ParaPortion* pParaPortion = GetParaPortions().SafeGetObject(nPortionPos);
if (pParaPortion)
{
- sal_Int32 nLine = pParaPortion->GetLines().FindLine( aPaM.GetIndex(), true );
- const EditLine& rLine = pParaPortion->GetLines()[nLine];
- std::unique_ptr<tools::Rectangle[]> aRects(new tools::Rectangle[ mpIMEInfos->nLen ]);
- for (sal_Int32 i = 0; i < mpIMEInfos->nLen; ++i)
- {
- sal_Int32 nInputPos = mpIMEInfos->aPos.GetIndex() + i;
- if ( nInputPos > rLine.GetEnd() )
- nInputPos = rLine.GetEnd();
- tools::Rectangle aR2 = GetEditCursor( pParaPortion, nInputPos );
- aRects[ i ] = pView->GetImpEditView()->GetWindowPos( aR2 );
- }
+ const sal_Int32 nMinPos = mpIMEInfos->aPos.GetIndex();
+ const sal_Int32 nMaxPos = nMinPos + mpIMEInfos->nLen - 1;
+ std::vector<tools::Rectangle> aRects(mpIMEInfos->nLen);
+
+ auto CollectCharPositions = [&](const LineAreaInfo& rInfo) {
+ if (!rInfo.pLine) // Start of ParaPortion
+ {
+ if (rInfo.nPortion < nPortionPos)
+ return CallbackResult::SkipThisPortion;
+ if (rInfo.nPortion > nPortionPos)
+ return CallbackResult::Stop;
+ assert(&rInfo.rPortion == pParaPortion);
+ }
+ else // This is the needed ParaPortion
+ {
+ if (rInfo.pLine->GetStart() > nMaxPos)
+ return CallbackResult::Stop;
+ if (rInfo.pLine->GetEnd() < nMinPos)
+ return CallbackResult::Continue;
+ for (sal_Int32 n = nMinPos; n <= nMaxPos; ++n)
+ {
+ if (rInfo.pLine->IsIn(n))
+ {
+ tools::Rectangle aR = GetEditCursor(pParaPortion, rInfo.pLine, n,
+ GetCursorFlags::NONE);
+ aR.Move(getLeftDirectionAware(rInfo.aArea),
+ getTopDirectionAware(rInfo.aArea));
+ aRects[n - nMinPos] = pView->GetImpEditView()->GetWindowPos(aR);
+ }
+ }
+ }
+ return CallbackResult::Continue;
+ };
+ IterateLineAreas(CollectCharPositions, IterFlag::none);
+
if (vcl::Window* pWindow = pView->GetWindow())
- pWindow->SetCompositionCharRect( aRects.get(), mpIMEInfos->nLen );
+ pWindow->SetCompositionCharRect(aRects.data(), aRects.size());
}
}
}
@@ -3001,71 +3028,242 @@ EditPaM ImpEditEngine::InsertLineBreak(const EditSelection& aCurSel)
// Helper functions
+tools::Rectangle ImpEditEngine::GetEditCursor(const ParaPortion* pPortion, const EditLine* pLine,
+ sal_Int32 nIndex, GetCursorFlags nFlags)
+{
+ assert(pPortion && pLine);
+ // nIndex might be not in the line
+ // Search within the line...
+ tools::Long nX;
+
+ if ((nIndex == pLine->GetStart()) && (nFlags & GetCursorFlags::StartOfLine))
+ {
+ Range aXRange = GetLineXPosStartEnd(pPortion, pLine);
+ nX = !IsRightToLeft(GetEditDoc().GetPos(pPortion->GetNode())) ? aXRange.Min()
+ : aXRange.Max();
+ }
+ else if ((nIndex == pLine->GetEnd()) && (nFlags & GetCursorFlags::EndOfLine))
+ {
+ Range aXRange = GetLineXPosStartEnd(pPortion, pLine);
+ nX = !IsRightToLeft(GetEditDoc().GetPos(pPortion->GetNode())) ? aXRange.Max()
+ : aXRange.Min();
+ }
+ else
+ {
+ nX = GetXPos(pPortion, pLine, nIndex, bool(nFlags & GetCursorFlags::PreferPortionStart));
+ }
+
+ tools::Rectangle aEditCursor;
+ aEditCursor.SetLeft(nX);
+ aEditCursor.SetRight(nX);
+
+ aEditCursor.SetBottom(pLine->GetHeight() - 1);
+ if (nFlags & GetCursorFlags::TextOnly)
+ aEditCursor.SetTop(aEditCursor.Bottom() - pLine->GetTxtHeight() + 1);
+ else
+ aEditCursor.SetTop(aEditCursor.Bottom()
+ - std::min(pLine->GetTxtHeight(), pLine->GetHeight()) + 1);
+ return aEditCursor;
+}
+
tools::Rectangle ImpEditEngine::PaMtoEditCursor( EditPaM aPaM, GetCursorFlags nFlags )
{
OSL_ENSURE( GetUpdateMode(), "Must not be reached when Update=FALSE: PaMtoEditCursor" );
tools::Rectangle aEditCursor;
- tools::Long nY = 0;
- for ( sal_Int32 nPortion = 0; nPortion < GetParaPortions().Count(); nPortion++ )
- {
- ParaPortion& rPortion = GetParaPortions()[nPortion];
- ContentNode* pNode = rPortion.GetNode();
- OSL_ENSURE( pNode, "Invalid Node in Portion!" );
- if ( pNode != aPaM.GetNode() )
+ const sal_Int32 nIndex = aPaM.GetIndex();
+ const ParaPortion* pPortion = nullptr;
+ const EditLine* pLastLine = nullptr;
+ tools::Rectangle aLineArea;
+
+ auto FindPortionLineAndArea
+ = [&, bEOL(bool(nFlags & GetCursorFlags::EndOfLine))](const LineAreaInfo& rInfo) {
+ if (!rInfo.pLine) // start of ParaPortion
{
- nY += rPortion.GetHeight();
+ ContentNode* pNode = rInfo.rPortion.GetNode();
+ OSL_ENSURE(pNode, "Invalid Node in Portion!");
+ if (pNode != aPaM.GetNode())
+ return CallbackResult::SkipThisPortion;
+ pPortion = &rInfo.rPortion;
}
- else
+ else // guaranteed that this is the correct ParaPortion
{
- aEditCursor = GetEditCursor( &rPortion, aPaM.GetIndex(), nFlags );
- aEditCursor.AdjustTop(nY );
- aEditCursor.AdjustBottom(nY );
- return aEditCursor;
+ pLastLine = rInfo.pLine;
+ aLineArea = rInfo.aArea;
+ if ((rInfo.pLine->GetStart() == nIndex) || (rInfo.pLine->IsIn(nIndex, bEOL)))
+ return CallbackResult::Stop;
}
+ return CallbackResult::Continue;
+ };
+ IterateLineAreas(FindPortionLineAndArea, IterFlag::none);
+
+ if (pLastLine)
+ {
+ aEditCursor = GetEditCursor(pPortion, pLastLine, nIndex, nFlags);
+ aEditCursor.Move(getLeftDirectionAware(aLineArea), getTopDirectionAware(aLineArea));
}
- OSL_FAIL( "Portion not found!" );
+ else
+ OSL_FAIL("Line not found!");
+
return aEditCursor;
}
+void ImpEditEngine::IterateLineAreas(const IterateLinesAreasFunc& f, IterFlag eOptions)
+{
+ const Point aOrigin(0, 0);
+ Point aLineStart(aOrigin);
+ const tools::Long nVertLineSpacing = CalcVertLineSpacing(aLineStart);
+ const tools::Long nColumnWidth = GetColumnWidth(aPaperSize);
+ sal_Int32 nColumn = 0;
+ for (sal_Int32 n = 0, nPortions = GetParaPortions().Count(); n < nPortions; ++n)
+ {
+ ParaPortion& rPortion = GetParaPortions()[n];
+ bool bSkipThis = true;
+ if (rPortion.IsVisible())
+ {
+ // when typing idle formatting, asynchronous Paint. Invisible Portions may be invalid.
+ if (rPortion.IsInvalid())
+ return;
+
+ LineAreaInfo aInfo{
+ nColumn, // nColumn
+ rPortion, // rPortion
+ n, // nPortion
+ nullptr, // pLine
+ 0, // nLine
+ { aLineStart, Size{ nColumnWidth, rPortion.GetFirstLineOffset() } }, // aArea
+ 0 // nHeightNeededToNotWrap
+ };
+ auto eResult = f(aInfo);
+ if (eResult == CallbackResult::Stop)
+ return;
+ bSkipThis = eResult == CallbackResult::SkipThisPortion;
+
+ sal_uInt16 nSBL = 0;
+ if (!aStatus.IsOutliner())
+ {
+ const SvxLineSpacingItem& rLSItem
+ = rPortion.GetNode()->GetContentAttribs().GetItem(EE_PARA_SBL);
+ nSBL = (rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Fix)
+ ? GetYValue(rLSItem.GetInterLineSpace())
+ : 0;
+ }
+
+ adjustYDirectionAware(aLineStart, rPortion.GetFirstLineOffset());
+ for (sal_Int32 nLine = 0, nLines = rPortion.GetLines().Count(); nLine < nLines; nLine++)
+ {
+ EditLine& rLine = rPortion.GetLines()[nLine];
+ tools::Long nLineHeight = rLine.GetHeight();
+ if (nLine != nLines - 1)
+ nLineHeight += nVertLineSpacing;
+ MoveToNextLine(aLineStart, nLineHeight, nColumn, aOrigin,
+ &aInfo.nHeightNeededToNotWrap);
+ const bool bInclILS = eOptions & IterFlag::inclILS;
+ if (bInclILS && (nLine != nLines - 1) && !aStatus.IsOutliner())
+ {
+ adjustYDirectionAware(aLineStart, nSBL);
+ nLineHeight += nSBL;
+ }
+
+ if (!bSkipThis)
+ {
+ Point aOtherCorner(aLineStart);
+ adjustXDirectionAware(aOtherCorner, nColumnWidth);
+ adjustYDirectionAware(aOtherCorner, -nLineHeight);
+
+ // Calls to f() for each line
+ aInfo.nColumn = nColumn;
+ aInfo.pLine = &rLine;
+ aInfo.nLine = nLine;
+ aInfo.aArea = tools::Rectangle::Justify(aLineStart, aOtherCorner);
+ eResult = f(aInfo);
+ if (eResult == CallbackResult::Stop)
+ return;
+ bSkipThis = eResult == CallbackResult::SkipThisPortion;
+ }
+
+ if (!bInclILS && (nLine != nLines - 1) && !aStatus.IsOutliner())
+ adjustYDirectionAware(aLineStart, nSBL);
+ }
+ if (!aStatus.IsOutliner())
+ {
+ const SvxULSpaceItem& rULItem
+ = rPortion.GetNode()->GetContentAttribs().GetItem(EE_PARA_ULSPACE);
+ tools::Long nUL = GetYValue(rULItem.GetLower());
+ adjustYDirectionAware(aLineStart, nUL);
+ }
+ }
+ // Invisible ParaPortion has no height (see ParaPortion::GetHeight), don't handle it
+ }
+}
+
+std::tuple<const ParaPortion*, const EditLine*, tools::Long>
+ImpEditEngine::GetPortionAndLine(Point aDocPos)
+{
+ // First find the column from the point
+ sal_Int32 nClickColumn = 0;
+ for (tools::Long nColumnStart = 0, nColumnWidth = GetColumnWidth(aPaperSize);;
+ nColumnStart += mnColumnSpacing + nColumnWidth, ++nClickColumn)
+ {
+ if (aDocPos.X() <= nColumnStart + nColumnWidth + mnColumnSpacing / 2)
+ break;
+ if (nClickColumn >= mnColumns - 1)
+ break;
+ }
+
+ const ParaPortion* pLastPortion = nullptr;
+ const EditLine* pLastLine = nullptr;
+ tools::Long nLineStartX = 0;
+
+ auto FindLastMatchingPortionAndLine = [&](const LineAreaInfo& rInfo) {
+ if (rInfo.pLine) // Only handle lines, not ParaPortion starts
+ {
+ if (rInfo.nColumn > nClickColumn)
+ return CallbackResult::Stop;
+ pLastPortion = &rInfo.rPortion; // Candidate paragraph
+ pLastLine = rInfo.pLine; // Last visible line not later than click position
+ nLineStartX = getLeftDirectionAware(rInfo.aArea);
+ if (rInfo.nColumn == nClickColumn && getBottomDirectionAware(rInfo.aArea) > aDocPos.Y())
+ return CallbackResult::Stop; // Found it
+ }
+ return CallbackResult::Continue;
+ };
+ IterateLineAreas(FindLastMatchingPortionAndLine, IterFlag::inclILS);
+
+ return { pLastPortion, pLastLine, nLineStartX };
+}
+
EditPaM ImpEditEngine::GetPaM( Point aDocPos, bool bSmart )
{
OSL_ENSURE( GetUpdateMode(), "Must not be reached when Update=FALSE: GetPaM" );
- tools::Long nY = 0;
- EditPaM aPaM;
- sal_Int32 nPortion;
- for ( nPortion = 0; nPortion < GetParaPortions().Count(); nPortion++ )
+ if (const auto& [pPortion, pLine, nLineStartX] = GetPortionAndLine(aDocPos); pPortion)
{
- ParaPortion* pPortion = &GetParaPortions()[nPortion];
- const tools::Long nTmpHeight = pPortion->GetHeight(); // should also be correct for !bVisible!
- nY += nTmpHeight;
- if ( nY > aDocPos.Y() )
- {
- nY -= nTmpHeight;
- aDocPos.AdjustY( -nY );
- // Skip invisible Portions:
- while ( pPortion && !pPortion->IsVisible() )
- {
- nPortion++;
- pPortion = GetParaPortions().SafeGetObject( nPortion );
- }
- SAL_WARN_IF(!pPortion, "editeng", "worrying lack of any visible paragraph");
- if (!pPortion)
- return aPaM;
- return GetPaM(pPortion, aDocPos, bSmart);
+ sal_Int32 nCurIndex
+ = GetChar(pPortion, pLine, aDocPos.X() - nLineStartX, bSmart);
+ EditPaM aPaM(pPortion->GetNode(), nCurIndex);
+ if (nCurIndex && (nCurIndex == pLine->GetEnd())
+ && (pLine != &pPortion->GetLines()[pPortion->GetLines().Count() - 1]))
+ {
+ aPaM = CursorLeft(aPaM);
}
+
+ return aPaM;
}
- // Then search for the last visible:
- nPortion = GetParaPortions().Count()-1;
- while ( nPortion && !GetParaPortions()[nPortion].IsVisible() )
- nPortion--;
+ return {};
+}
- OSL_ENSURE( GetParaPortions()[nPortion].IsVisible(), "No visible paragraph found: GetPaM" );
- aPaM.SetNode( GetParaPortions()[nPortion].GetNode() );
- aPaM.SetIndex( GetParaPortions()[nPortion].GetNode()->Len() );
- return aPaM;
+bool ImpEditEngine::IsTextPos(const Point& rDocPos, sal_uInt16 nBorder)
+{
+ if (const auto& [pPortion, pLine, nLineStartX] = GetPortionAndLine(rDocPos); pPortion)
+ {
+ Range aLineXPosStartEnd = GetLineXPosStartEnd(pPortion, pLine);
+ if ((rDocPos.X() >= nLineStartX + aLineXPosStartEnd.Min() - nBorder)
+ && (rDocPos.X() <= nLineStartX + aLineXPosStartEnd.Max() + nBorder))
+ return true;
+ }
+ return false;
}
sal_uInt32 ImpEditEngine::GetTextHeight() const
@@ -3209,28 +3407,114 @@ sal_uInt32 ImpEditEngine::GetTextHeightNTP() const
return nCurTextHeightNTP;
}
-sal_uInt32 ImpEditEngine::CalcTextHeight( sal_uInt32* pHeightNTP )
+tools::Long ImpEditEngine::Calc1ColumnTextHeight(tools::Long* pHeightNTP)
{
- OSL_ENSURE( GetUpdateMode(), "Should not be used when Update=FALSE: CalcTextHeight" );
- sal_uInt32 nY = 0;
- sal_uInt32 nPH;
- sal_uInt32 nEmptyHeight = 0;
- for ( sal_Int32 nPortion = 0; nPortion < GetParaPortions().Count(); nPortion++ ) {
- ParaPortion& rPortion = GetParaPortions()[nPortion];
- nPH = rPortion.GetHeight();
- nY += nPH;
- if( pHeightNTP ) {
- if ( rPortion.IsEmpty() )
- nEmptyHeight += nPH;
- else
- nEmptyHeight = 0;
+ tools::Long nHeight = 0;
+ // Pretend that we have ~infinite height to get total height
+ comphelper::ValueRestorationGuard aGuard(nCurTextHeight,
+ std::numeric_limits<tools::Long>::max());
+
+ auto FindLastLineBottom = [&](const LineAreaInfo& rInfo) {
+ if (rInfo.pLine)
+ {
+ nHeight = getBottomDirectionAware(rInfo.aArea) + 1;
+ if (pHeightNTP && !rInfo.rPortion.IsEmpty())
+ *pHeightNTP = nHeight;
}
- }
+ return CallbackResult::Continue;
+ };
+ IterateLineAreas(FindLastLineBottom, IterFlag::none);
+ return nHeight;
+}
- if ( pHeightNTP )
- *pHeightNTP = nY - nEmptyHeight;
+tools::Long ImpEditEngine::CalcTextHeight(tools::Long* pHeightNTP)
+{
+ OSL_ENSURE( GetUpdateMode(), "Should not be used when Update=FALSE: CalcTextHeight" );
- return nY;
+ if (mnColumns <= 1)
+ return Calc1ColumnTextHeight(pHeightNTP); // All text fits into a single column - done!
+
+ // The final column height can be smaller than total height divided by number of columns (taking
+ // into account first line offset and interline spacing, that aren't considered in positioning
+ // after the wrap). The wrap should only happen after the minimal height is exceeded.
+ tools::Long nTentativeColHeight = mnMinColumnWrapHeight;
+ tools::Long nWantedIncrease = 0;
+ tools::Long nCurrentTextHeight;
+
+ // This does the necessary column balancing for the case when the text does not fit min height.
+ // When the height of column (taken from nCurTextHeight) is too small, the last column will
+ // overflow, so the resulting height of the text will exceed the set column height. Increasing
+ // the column height step by step by the minimal value that allows one of columns to accomodate
+ // one line more, we finally get to the point where all the text fits. At each iteration, the
+ // height is only increased, so it's impossible to have infinite layout loops. The found value
+ // is the global minimum.
+ //
+ // E.g., given the following four line heights:
+ // Line 1: 10;
+ // Line 2: 12;
+ // Line 3: 10;
+ // Line 4: 10;
+ // number of columns 3, and the minimal paper height of 5, the iterations would be:
+ // * Tentative column height is set to 5
+ // <ITERATION 1>
+ // * Line 1 is attempted to go to column 0. Overflow is 5 => moved to column 1.
+ // * Line 2 is attempted to go to column 1 after Line 1; overflow is 17 => moved to column 2.
+ // * Line 3 is attempted to go to column 2 after Line 2; overflow is 17, stays in max column 2.
+ // * Line 4 goes to column 2 after Line 3.
+ // * Final iteration columns are: {empty}, {Line 1}, {Line 2, Line 3, Line 4}
+ // * Total text height is max({0, 10, 32}) == 32 > Tentative column height 5 => NEXT ITERATION
+ // * Minimal height increase that allows at least one column to accomodate one more line is
+ // min({5, 17, 17}) = 5.
+ // * Tentative column height is set to 5 + 5 = 10.
+ // <ITERATION 2>
+ // * Line 1 goes to column 0, no overflow.
+ // * Line 2 is attempted to go to column 0 after Line 1; overflow is 12 => moved to column 1.
+ // * Line 3 is attempted to go to column 1 after Line 2; overflow is 12 => moved to column 2.
+ // * Line 4 is attempted to go to column 2 after Line 3; overflow is 10, stays in max column 2.
+ // * Final iteration columns are: {Line 1}, {Line 2}, {Line 3, Line 4}
+ // * Total text height is max({10, 12, 20}) == 20 > Tentative column height 10 => NEXT ITERATION
+ // * Minimal height increase that allows at least one column to accomodate one more line is
+ // min({12, 12, 10}) = 10.
+ // * Tentative column height is set to 10 + 10 == 20.
+ // <ITERATION 3>
+ // * Line 1 goes to column 0, no overflow.
+ // * Line 2 is attempted to go to column 0 after Line 1; overflow is 2 => moved to column 1.
+ // * Line 3 is attempted to go to column 1 after Line 2; overflow is 2 => moved to column 2.
+ // * Line 4 is attempted to go to column 2 after Line 3; no overflow.
+ // * Final iteration columns are: {Line 1}, {Line 2}, {Line 3, Line 4}
+ // * Total text height is max({10, 12, 20}) == 20 == Tentative column height 20 => END.
+ do
+ {
+ nTentativeColHeight += nWantedIncrease;
+ nWantedIncrease = std::numeric_limits<tools::Long>::max();
+ nCurrentTextHeight = 0;
+ auto GetHeightAndWantedIncrease = [&, minHeight = tools::Long(0), lastCol = sal_Int32(0)](
+ const LineAreaInfo& rInfo) mutable {
+ if (rInfo.pLine)
+ {
+ if (lastCol != rInfo.nColumn)
+ {
+ minHeight = std::max(nCurrentTextHeight,
+ minHeight); // total height can't be less than previous columns
+ nWantedIncrease = std::min(rInfo.nHeightNeededToNotWrap, nWantedIncrease);
+ }
+ lastCol = rInfo.nColumn;
+ nCurrentTextHeight = std::max(getBottomDirectionAware(rInfo.aArea) + 1, minHeight);
+ if (pHeightNTP)
+ {
+ if (rInfo.rPortion.IsEmpty())
+
+ *pHeightNTP = std::max(*pHeightNTP, minHeight);
+ else
+ *pHeightNTP = nCurrentTextHeight;
+ }
+ }
+ return CallbackResult::Continue;
+ };
+ comphelper::ValueRestorationGuard aGuard(nCurTextHeight, nTentativeColHeight);
+ IterateLineAreas(GetHeightAndWantedIncrease, IterFlag::none);
+ } while (nCurrentTextHeight > nTentativeColHeight && nWantedIncrease > 0);
+ return nCurrentTextHeight;
}
sal_Int32 ImpEditEngine::GetLineCount( sal_Int32 nParagraph ) const
@@ -3654,62 +3938,6 @@ Range ImpEditEngine::GetInvalidYOffsets( ParaPortion* pPortion )
return aRange;
}
-EditPaM ImpEditEngine::GetPaM( ParaPortion* pPortion, Point aDocPos, bool bSmart )
-{
- OSL_ENSURE( pPortion->IsVisible(), "Why GetPaM() for an invisible paragraph?" );
- OSL_ENSURE( IsFormatted(), "GetPaM: Not formatted" );
-
- sal_Int32 nCurIndex = 0;
- EditPaM aPaM;
- aPaM.SetNode( pPortion->GetNode() );
-
- const SvxLineSpacingItem& rLSItem = pPortion->GetNode()->GetContentAttribs().GetItem( EE_PARA_SBL );
- sal_uInt16 nSBL = ( rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Fix )
- ? GetYValue( rLSItem.GetInterLineSpace() ) : 0;
-
- tools::Long nY = pPortion->GetFirstLineOffset();
-
- OSL_ENSURE( pPortion->GetLines().Count(), "Empty ParaPortion in GetPaM!" );
-
- const EditLine* pLine = nullptr;
- for ( sal_Int32 nLine = 0; nLine < pPortion->GetLines().Count(); nLine++ )
- {
- const EditLine& rTmpLine = pPortion->GetLines()[nLine];
- nY += rTmpLine.GetHeight();
- if ( !aStatus.IsOutliner() )
- nY += nSBL;
- if ( nY > aDocPos.Y() )
- {
- pLine = &rTmpLine;
- break; // correct Y-position is not of interest
- }
-
- nCurIndex = nCurIndex + rTmpLine.GetLen();
- }
-
- if ( !pLine ) // may happen only in the range of SA!
- {
-#if OSL_DEBUG_LEVEL > 0
- const SvxULSpaceItem& rULSpace = pPortion->GetNode()->GetContentAttribs().GetItem( EE_PARA_ULSPACE );
- OSL_ENSURE( nY+GetYValue( rULSpace.GetLower() ) >= aDocPos.Y() , "Index in no line, GetPaM ?" );
-#endif
- aPaM.SetIndex( pPortion->GetNode()->Len() );
- return aPaM;
- }
-
- // If no line found, only just X-Position => Index
- nCurIndex = GetChar( pPortion, pLine, aDocPos.X(), bSmart );
- aPaM.SetIndex( nCurIndex );
-
- if ( nCurIndex && ( nCurIndex == pLine->GetEnd() ) &&
- ( pLine != &pPortion->GetLines()[pPortion->GetLines().Count()-1] ) )
- {
- aPaM = CursorLeft( aPaM );
- }
-
- return aPaM;
-}
-
sal_Int32 ImpEditEngine::GetChar(
const ParaPortion* pParaPortion, const EditLine* pLine, tools::Long nXPos, bool bSmart)
{
@@ -4173,91 +4401,6 @@ void ImpEditEngine::CalcHeight( ParaPortion* pPortion )
}
}
-tools::Rectangle ImpEditEngine::GetEditCursor( ParaPortion* pPortion, sal_Int32 nIndex, GetCursorFlags nFlags )
-{
- OSL_ENSURE( pPortion->IsVisible(), "Why GetEditCursor() for an invisible paragraph?" );
- OSL_ENSURE( IsFormatted() || GetTextRanger(), "GetEditCursor: Not formatted" );
-
- /*
- GetCursorFlags::EndOfLine: If after the last character of a wrapped line, remaining
- at the end of the line, not the beginning of the next one.
- Purpose: - END => really after the last character
- - Selection...
- */
-
- tools::Long nY = pPortion->GetFirstLineOffset();
-
- const SvxLineSpacingItem& rLSItem = pPortion->GetNode()->GetContentAttribs().GetItem( EE_PARA_SBL );
- sal_uInt16 nSBL = ( rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Fix )
- ? GetYValue( rLSItem.GetInterLineSpace() ) : 0;
-
- sal_Int32 nCurIndex = 0;
- sal_Int32 nLineCount = pPortion->GetLines().Count();
- OSL_ENSURE( nLineCount, "Empty ParaPortion in GetEditCursor!" );
- if (nLineCount == 0)
- return tools::Rectangle();
- const EditLine* pLine = nullptr;
- bool bEOL( nFlags & GetCursorFlags::EndOfLine );
- for (sal_Int32 nLine = 0; nLine < nLineCount; ++nLine)
- {
- const EditLine& rTmpLine = pPortion->GetLines()[nLine];
- if ( ( rTmpLine.GetStart() == nIndex ) || ( rTmpLine.IsIn( nIndex, bEOL ) ) )
- {
- pLine = &rTmpLine;
- break;
- }
-
- nCurIndex = nCurIndex + rTmpLine.GetLen();
- nY += rTmpLine.GetHeight();
- if ( !aStatus.IsOutliner() )
- nY += nSBL;
- }
- if ( !pLine )
- {
- // Cursor at the End of the paragraph.
- OSL_ENSURE( nIndex == nCurIndex, "Index dead wrong in GetEditCursor!" );
-
- pLine = &pPortion->GetLines()[nLineCount-1];
- nY -= pLine->GetHeight();
- if ( !aStatus.IsOutliner() )
- nY -= nSBL;
- }
-
- tools::Rectangle aEditCursor;
-
- aEditCursor.SetTop( nY );
- nY += pLine->GetHeight();
- aEditCursor.SetBottom( nY-1 );
-
- // Search within the line...
- tools::Long nX;
-
- if ( ( nIndex == pLine->GetStart() ) && ( nFlags & GetCursorFlags::StartOfLine ) )
- {
- Range aXRange = GetLineXPosStartEnd( pPortion, pLine );
- nX = !IsRightToLeft( GetEditDoc().GetPos( pPortion->GetNode() ) ) ? aXRange.Min() : aXRange.Max();
- }
- else if ( ( nIndex == pLine->GetEnd() ) && ( nFlags & GetCursorFlags::EndOfLine ) )
- {
- Range aXRange = GetLineXPosStartEnd( pPortion, pLine );
- nX = !IsRightToLeft( GetEditDoc().GetPos( pPortion->GetNode() ) ) ? aXRange.Max() : aXRange.Min();
- }
- else
- {
- nX = GetXPos( pPortion, pLine, nIndex, bool( nFlags & GetCursorFlags::PreferPortionStart ) );
- }
-
- aEditCursor.SetLeft(nX);
- aEditCursor.SetRight(nX);
-
- if ( nFlags & GetCursorFlags::TextOnly )
- aEditCursor.SetTop( aEditCursor.Bottom() - pLine->GetTxtHeight() + 1 );
- else
- aEditCursor.SetTop( aEditCursor.Bottom() - std::min( pLine->GetTxtHeight(), pLine->GetHeight() ) + 1 );
-
- return aEditCursor;
-}
-
void ImpEditEngine::SetValidPaperSize( const Size& rNewSz )
{
aPaperSize = rNewSz;
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 6a14cda16f92..c33db07b2a6b 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -70,6 +70,7 @@
#include <osl/diagnose.h>
#include <comphelper/string.hxx>
#include <memory>
+#include <set>
#include <vcl/outdev/ScopedStates.hxx>
@@ -375,8 +376,8 @@ void ImpEditEngine::FormatDoc()
// Here already, so that not always in CreateLines...
bool bMapChanged = ImpCheckRefMapMode();
+ std::set<sal_Int32> aRepaintParas;
- aInvalidRect = tools::Rectangle(); // make empty
for ( sal_Int32 nPara = 0; nPara < GetParaPortions().Count(); nPara++ )
{
ParaPortion& rParaPortion = GetParaPortions()[nPara];
@@ -410,46 +411,21 @@ void ImpEditEngine::FormatDoc()
rParaPortion.SetMustRepaint( false );
}
- // InvalidRect set only once...
- if ( aInvalidRect.IsEmpty() )
- {
- // For Paperwidth 0 (AutoPageSize) it would otherwise be Empty()...
- tools::Long nWidth = std::max(tools::Long(1), getWidthDirectionAware(aPaperSize));
- Range aInvRange( GetInvalidYOffsets( &rParaPortion ) );
- aInvalidRect = tools::Rectangle( Point( 0, nY+aInvRange.Min() ),
- Size( nWidth, aInvRange.Len() ) );
- }
- else
- {
- aInvalidRect.SetBottom( nY + rParaPortion.GetHeight() );
- }
- }
- else if ( bGrow )
- {
- aInvalidRect.SetBottom( nY + rParaPortion.GetHeight() );
+ aRepaintParas.insert(nPara);
}
nY += rParaPortion.GetHeight();
}
+ aInvalidRect = tools::Rectangle(); // make empty
+
// One can also get into the formatting through UpdateMode ON=>OFF=>ON...
// enable optimization first after Vobis delivery...
{
- sal_uInt32 nNewHeightNTP;
- sal_uInt32 nNewHeight = CalcTextHeight( &nNewHeightNTP );
+ tools::Long nNewHeightNTP;
+ tools::Long nNewHeight = CalcTextHeight(&nNewHeightNTP);
tools::Long nDiff = nNewHeight - nCurTextHeight;
if ( nDiff )
aStatus.GetStatusWord() |= !IsVertical() ? EditStatusFlags::TextHeightChanged : EditStatusFlags::TEXTWIDTHCHANGED;
- if ( nNewHeight < nCurTextHeight )
- {
- aInvalidRect.SetBottom( static_cast<tools::Long>(std::max( nNewHeight, nCurTextHeight )) );
- if ( aInvalidRect.IsEmpty() )
- {
- aInvalidRect.SetTop( 0 );
- // Left and Right are not evaluated, are however set due to IsEmpty.
- aInvalidRect.SetLeft( 0 );
- aInvalidRect.SetRight(getWidthDirectionAware(aPaperSize));
- }
- }
nCurTextHeight = nNewHeight;
nCurTextHeightNTP = nNewHeightNTP;
@@ -473,6 +449,20 @@ void ImpEditEngine::FormatDoc()
}
}
}
+
+ if (nDiff)
+ aInvalidRect.Union(tools::Rectangle::Justify(
+ { 0, nNewHeight }, { getWidthDirectionAware(aPaperSize), nCurTextHeight }));
+
+ if (!aRepaintParas.empty())
+ {
+ auto CombineRepaintParasAreas = [&](const LineAreaInfo& rInfo) {
+ if (aRepaintParas.count(rInfo.nPortion))
+ aInvalidRect.Union(rInfo.aArea);
+ return CallbackResult::Continue;
+ };
+ IterateLineAreas(CombineRepaintParasAreas, IterFlag::inclILS);
+ }
}
bIsFormatting = false;
@@ -566,10 +556,10 @@ void ImpEditEngine::CheckPageOverflow()
{
SAL_INFO("editeng.chaining", "[CONTROL_STATUS] AutoPageSize is " << (( aStatus.GetControlWord() & EEControlBits::AUTOPAGESIZE ) ? "ON" : "OFF") );
- sal_uInt32 nBoxHeight = GetMaxAutoPaperSize().Height();
+ tools::Long nBoxHeight = GetMaxAutoPaperSize().Height();
SAL_INFO("editeng.chaining", "[OVERFLOW-CHECK] Current MaxAutoPaperHeight is " << nBoxHeight);
- sal_uInt32 nTxtHeight = CalcTextHeight(nullptr);
+ tools::Long nTxtHeight = CalcTextHeight(nullptr);
SAL_INFO("editeng.chaining", "[OVERFLOW-CHECK] Current Text Height is " << nTxtHeight);
sal_uInt32 nParaCount = GetParaPortions().Count();
@@ -598,6 +588,13 @@ static sal_Int32 ImplCalculateFontIndependentLineSpacing( const sal_Int32 nFontH
return ( nFontHeight * 12 ) / 10; // + 20%
}
+tools::Long ImpEditEngine::GetColumnWidth(const Size& rPaperSize) const
+{
+ assert(mnColumns >= 1);
+ tools::Long nWidth = IsVertical() ? rPaperSize.Height() : rPaperSize.Width();
+ return (nWidth - mnColumnSpacing * (mnColumns - 1)) / mnColumns;
+}
+
bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
{
ParaPortion& rParaPortion = GetParaPortions()[nPara];
@@ -785,11 +782,8 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
}
}
- tools::Long nMaxLineWidth;
- if ( !IsVertical() )
- nMaxLineWidth = aStatus.AutoPageWidth() ? aMaxAutoPaperSize.Width() : aPaperSize.Width();
- else
- nMaxLineWidth = aStatus.AutoPageHeight() ? aMaxAutoPaperSize.Height() : aPaperSize.Height();
+ const bool bAutoSize = IsVertical() ? aStatus.AutoPageHeight() : aStatus.AutoPageWidth();
+ tools::Long nMaxLineWidth = GetColumnWidth(bAutoSize ? aMaxAutoPaperSize : aPaperSize);
nMaxLineWidth -= GetXValue( rLRItem.GetRight() );
nMaxLineWidth -= nStartX;
@@ -797,7 +791,7 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
// If PaperSize == long_max, one cannot take away any negative
// first line indent. (Overflow)
if ( ( nMaxLineWidth < 0 ) && ( nStartX < 0 ) )
- nMaxLineWidth = getWidthDirectionAware(aPaperSize) - GetXValue(rLRItem.GetRight());
+ nMaxLineWidth = GetColumnWidth(aPaperSize) - GetXValue(rLRItem.GetRight());
// If still less than 0, it may be just the right edge.
if ( nMaxLineWidth <= 0 )
@@ -824,7 +818,7 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
{
GetTextRanger()->SetVertical( IsVertical() );
- tools::Long nTextY = nStartPosY + GetEditCursor( &rParaPortion, pLine->GetStart() ).Top();
+ tools::Long nTextY = nStartPosY + GetEditCursor( &rParaPortion, pLine, pLine->GetStart(), GetCursorFlags::NONE ).Top();
if ( !bSameLineAgain )
{
SeekCursor( pNode, nTmpPos+1, aTmpFont );
@@ -1468,7 +1462,7 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
// has to be used for the Alignment. If it does not fit or if it
// will change the paper width, it will be formatted again for
// Justification! = LEFT anyway.
- tools::Long nMaxLineWidthFix = getWidthDirectionAware(aPaperSize)
+ tools::Long nMaxLineWidthFix = GetColumnWidth(aPaperSize)
- GetXValue( rLRItem.GetRight() ) - nStartX;
if ( aTextSize.Width() < nMaxLineWidthFix )
nMaxLineWidth = nMaxLineWidthFix;
@@ -1725,7 +1719,7 @@ void ImpEditEngine::CreateAndInsertEmptyLine( ParaPortion* pParaPortion )
{
sal_Int32 nPara = GetParaPortions().GetPos( pParaPortion );
SvxAdjust eJustification = GetJustification( nPara );
- tools::Long nMaxLineWidth = getWidthDirectionAware(aPaperSize);
+ tools::Long nMaxLineWidth = GetColumnWidth(aPaperSize);
nMaxLineWidth -= GetXValue( rLRItem.GetRight() );
if ( nMaxLineWidth < 0 )
nMaxLineWidth = 1;
@@ -3020,15 +3014,17 @@ void ImpEditEngine::setYDirectionAware(Point& pt, tools::Long y) const
pt.setX(y);
}
-bool ImpEditEngine::isYOverflowDirectionAware(const Point& pt, const tools::Rectangle& rectMax) const
+tools::Long ImpEditEngine::getYOverflowDirectionAware(const Point& pt,
+ const tools::Rectangle& rectMax) const
{
+ tools::Long nRes;
if (!IsVertical())
- return pt.Y() >= rectMax.Bottom();
-
- if (IsTopToBottom())
- return pt.X() <= rectMax.Left();
+ nRes = pt.Y() - rectMax.Bottom();
+ else if (IsTopToBottom())
+ nRes = rectMax.Left() - pt.X();
else
- return pt.X() >= rectMax.Right();
+ nRes = pt.X() - rectMax.Right();
+ return std::max(nRes, tools::Long(0));
}
bool ImpEditEngine::isXOverflowDirectionAware(const Point& pt, const tools::Rectangle& rectMax) const
@@ -3042,6 +3038,95 @@ bool ImpEditEngine::isXOverflowDirectionAware(const Point& pt, const tools::Rect
return pt.Y() < rectMax.Top();
}
+tools::Long ImpEditEngine::getLeftDirectionAware(const tools::Rectangle& rect) const
+{
+ if (!IsVertical())
+ return rect.Left();
+
+ if (IsTopToBottom())
+ return rect.Top();
+ else
+ return rect.Bottom();
+}
+
+tools::Long ImpEditEngine::getRightDirectionAware(const tools::Rectangle& rect) const
+{
+ if (!IsVertical())
+ return rect.Right();
+
+ if (IsTopToBottom())
+ return rect.Bottom();
+ else
+ return rect.Top();
+}
+
+tools::Long ImpEditEngine::getTopDirectionAware(const tools::Rectangle& rect) const
+{
+ if (!IsVertical())
+ return rect.Top();
+
+ if (IsTopToBottom())
+ return rect.Right();
+ else
+ return rect.Left();
+}
+
+tools::Long ImpEditEngine::getBottomDirectionAware(const tools::Rectangle& rect) const
+{
+ if (!IsVertical())
+ return rect.Bottom();
+
+ if (IsTopToBottom())
+ return rect.Left();
+ else
+ return rect.Right();
+}
+
+// Returns the resulting shift for the point; allows to apply the same shift to other points
+Point ImpEditEngine::MoveToNextLine(
+ Point& rMovePos, // [in, out] Point that will move to the next line
+ tools::Long nLineHeight, // [in] Y-direction move distance (direction-aware)
+ sal_Int32& rColumn, // [in, out] current column number
+ Point aOrigin, // [in] Origin point to calculate limits and initial Y position in a new column
+ tools::Long* pnHeightNeededToNotWrap // On column wrap, returns how much more height is needed
+) const
+{
+ const Point aOld = rMovePos;
+
+ // Move the point by the requested distance in Y direction
+ adjustYDirectionAware(rMovePos, nLineHeight);
+ // Check if the resulting position has moved beyond the limits, and more columns left.
+ // The limits are defined by a rectangle starting from aOrigin with width of aPaperSize
+ // and height of nCurTextHeight
+ Size aActPaperSize(aPaperSize);
+ if (IsVertical())
+ aActPaperSize.setWidth(nCurTextHeight);
+ else
+ aActPaperSize.setHeight(nCurTextHeight);
+ tools::Long nNeeded = getYOverflowDirectionAware(rMovePos, { aOrigin, aActPaperSize });
+ if (pnHeightNeededToNotWrap)
+ *pnHeightNeededToNotWrap = nNeeded;
+ if (nNeeded && rColumn < mnColumns)
+ {
+ ++rColumn;
+ // If we didn't fit into the last column, indicate that only by setting the column number
+ // to the total number of columns; do not adjust
+ if (rColumn < mnColumns)
+ {
+ // Set Y position of the point to that of aOrigin
+ setYDirectionAware(rMovePos, getYDirectionAware(aOrigin));
+ // Move the point by the requested distance in Y direction
+ adjustYDirectionAware(rMovePos, nLineHeight);
+ // Move the point by the column+spacing distance in X direction
+ adjustXDirectionAware(rMovePos, GetColumnWidth(aPaperSize) + mnColumnSpacing);
+ }
+ }
+
+ return rMovePos - aOld;
+}
+
+// TODO: use IterateLineAreas in ImpEditEngine::Paint, to avoid algorithm duplication
+
void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Point aStartPos, bool bStripOnly, Degree10 nOrientation )
{
if ( !GetUpdateMode() && !bStripOnly )
@@ -3077,6 +3162,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
const tools::Long nVertLineSpacing = CalcVertLineSpacing(aStartPos);
+ sal_Int32 nColumn = 0;
// Over all the paragraphs...
@@ -3109,8 +3195,6 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
adjustYDirectionAware(aStartPos, rPortion.GetFirstLineOffset());
- const Point aParaStart( aStartPos );
-
const SvxLineSpacingItem& rLSItem = rPortion.GetNode()->GetContentAttribs().GetItem( EE_PARA_SBL );
sal_uInt16 nSBL = ( rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Fix )
? GetYValue( rLSItem.GetInterLineSpace() ) : 0;
@@ -3121,12 +3205,13 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
const EditLine* const pLine = &rPortion.GetLines()[nLine];
assert( pLine && "NULL-Pointer in the line iterator in UpdateViews" );
sal_Int32 nIndex = pLine->GetStart();
+ tools::Long nLineHeight = pLine->GetHeight();
+ if (nLine != nLastLine)
+ nLineHeight += nVertLineSpacing;
+ MoveToNextLine(aStartPos, nLineHeight, nColumn, aOrigin);
aTmpPos = aStartPos;
adjustXDirectionAware(aTmpPos, pLine->GetStartPosX());
- adjustYDirectionAware(aTmpPos, pLine->GetMaxAscent());
- adjustYDirectionAware(aStartPos, pLine->GetHeight());
- if (nLine != nLastLine)
- adjustYDirectionAware(aStartPos, nVertLineSpacing);
+ adjustYDirectionAware(aTmpPos, pLine->GetMaxAscent() - nLineHeight);
if ( ( !IsVertical() && ( aStartPos.Y() > aClipRect.Top() ) )
|| ( IsVertical() && IsTopToBottom() && aStartPos.X() < aClipRect.Right() )
@@ -3140,7 +3225,9 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
// does, too. No change for not-layouting (painting).
if(0 == nLine) // && !bStripOnly)
{
- GetEditEnginePtr()->PaintingFirstLine(n, aParaStart, aOrigin, nOrientation, rOutDev);
+ Point aLineStart(aStartPos);
+ adjustYDirectionAware(aLineStart, -nLineHeight);
+ GetEditEnginePtr()->PaintingFirstLine(n, aLineStart, aOrigin, nOrientation, rOutDev);
// Remember whether a bullet was painted.
const SfxBoolItem& rBulletState = pEditEngine->GetParaAttrib(n, EE_PARA_BULLETSTATE);
@@ -3159,7 +3246,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
const TextPortion& rTextPortion = rPortion.GetTextPortions()[nPortion];
const tools::Long nPortionXOffset = GetPortionXOffset( &rPortion, pLine, nPortion );
- setXDirectionAware(aTmpPos, getXDirectionAware(aParaStart));
+ setXDirectionAware(aTmpPos, getXDirectionAware(aStartPos));
adjustXDirectionAware(aTmpPos, nPortionXOffset);
if (isXOverflowDirectionAware(aTmpPos, aClipRect))
break; // No further output in line necessary
@@ -3326,8 +3413,8 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
// what will lead to a compressed look with multiple lines
const sal_uInt16 nMaxAscent(pLine->GetMaxAscent());
- adjustYDirectionAware(aStartPos, nMaxAscent);
- adjustYDirectionAware(aTmpPos, nMaxAscent);
+ aTmpPos += MoveToNextLine(aStartPos, nMaxAscent,
+ nColumn, aOrigin);
}
std::vector< sal_Int32 >::iterator curIt = itSubLines;
++itSubLines;
@@ -3739,7 +3826,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
}
// no more visible actions?
- if (isYOverflowDirectionAware(aStartPos, aClipRect))
+ if (getYOverflowDirectionAware(aStartPos, aClipRect))
break;
}
@@ -3780,7 +3867,7 @@ void ImpEditEngine::Paint( OutputDevice& rOutDev, tools::Rectangle aClipRect, Po
pPDFExtOutDevData->EndStructureElement();
// no more visible actions?
- if (isYOverflowDirectionAware(aStartPos, aClipRect))
+ if (getYOverflowDirectionAware(aStartPos, aClipRect))
break;
}
}
@@ -3958,7 +4045,7 @@ EditSelection ImpEditEngine::MoveParagraphs( Range aOldPositions, sal_Int32 nNew
{
aInvalidRect = tools::Rectangle(); // make empty
aInvalidRect.SetLeft( 0 );
- aInvalidRect.SetRight( aPaperSize.Width() );
+ aInvalidRect.SetRight(GetColumnWidth(aPaperSize));
aInvalidRect.SetTop( GetParaPortions().GetYOffset( pUpperPortion ) );
aInvalidRect.SetBottom( GetParaPortions().GetYOffset( pLowerPortion ) + pLowerPortion->GetHeight() );
@@ -4551,10 +4638,10 @@ void ImpEditEngine::ImplExpandCompressedPortions( EditLine* pLine, ParaPortion*
}
}
-void ImpEditEngine::ImplUpdateOverflowingParaNum(sal_uInt32 nPaperHeight)
+void ImpEditEngine::ImplUpdateOverflowingParaNum(tools::Long nPaperHeight)
{
- sal_uInt32 nY = 0;
- sal_uInt32 nPH;
+ tools::Long nY = 0;
+ tools::Long nPH;
for ( sal_Int32 nPara = 0; nPara < GetParaPortions().Count(); nPara++ ) {
ParaPortion& rPara = GetParaPortions()[nPara];
@@ -4570,12 +4657,12 @@ void ImpEditEngine::ImplUpdateOverflowingParaNum(sal_uInt32 nPaperHeight)
}
}
-void ImpEditEngine::ImplUpdateOverflowingLineNum(sal_uInt32 nPaperHeight,
+void ImpEditEngine::ImplUpdateOverflowingLineNum(tools::Long nPaperHeight,
sal_uInt32 nOverflowingPara,
- sal_uInt32 nHeightBeforeOverflowingPara)
+ tools::Long nHeightBeforeOverflowingPara)
{
- sal_uInt32 nY = nHeightBeforeOverflowingPara;
- sal_uInt32 nLH;
+ tools::Long nY = nHeightBeforeOverflowingPara;
+ tools::Long nLH;
ParaPortion& rPara = GetParaPortions()[nOverflowingPara];
diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx
index 059d0bc7a523..ee199b663855 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -1094,7 +1094,7 @@ std::unique_ptr<EditTextObject> ImpEditEngine::CreateTextObject( EditSelection a
// sleeper set up when Olli paragraphs not hacked!
if ( bAllowBigObjects && bOnlyFullParagraphs && IsFormatted() && GetUpdateMode() && ( nTextPortions >= nBigObjectStart ) )
{
- XParaPortionList* pXList = new XParaPortionList( GetRefDevice(), aPaperSize.Width(), nStretchX, nStretchY );
+ XParaPortionList* pXList = new XParaPortionList( GetRefDevice(), GetColumnWidth(aPaperSize), nStretchX, nStretchY );
pTxtObj->mpImpl->SetPortionInfo(std::unique_ptr<XParaPortionList>(pXList));
for ( nNode = nStartNode; nNode <= nEndNode; nNode++ )
{
@@ -1177,7 +1177,7 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject
bool bUsePortionInfo = false;
XParaPortionList* pPortionInfo = rTextObject.mpImpl->GetPortionInfo();
- if ( pPortionInfo && ( static_cast<tools::Long>(pPortionInfo->GetPaperWidth()) == aPaperSize.Width() )
+ if ( pPortionInfo && ( static_cast<tools::Long>(pPortionInfo->GetPaperWidth()) == GetColumnWidth(aPaperSize) )
&& ( pPortionInfo->GetRefMapMode() == GetRefDevice()->GetMapMode() )
&& ( pPortionInfo->GetStretchX() == nStretchX )
&& ( pPortionInfo->GetStretchY() == nStretchY ) )
diff --git a/editeng/source/outliner/outlin2.cxx b/editeng/source/outliner/outlin2.cxx
index a0ea00d555f6..789d5d54e061 100644
--- a/editeng/source/outliner/outlin2.cxx
+++ b/editeng/source/outliner/outlin2.cxx
@@ -223,6 +223,11 @@ void Outliner::SetMaxAutoPaperSize( const Size& rSz )
pEditEngine->SetMaxAutoPaperSize( rSz );
}
+void Outliner::SetMinColumnWrapHeight(tools::Long nVal)
+{
+ pEditEngine->SetMinColumnWrapHeight(nVal);
+}
+
bool Outliner::IsExpanded( Paragraph const * pPara ) const
{
return pParaList->HasVisibleChildren( pPara );
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 73a89992f62b..53543cf178d2 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -272,6 +272,8 @@ public:
const Size& GetMaxAutoPaperSize() const;
void SetMaxAutoPaperSize( const Size& rSz );
+ void SetMinColumnWrapHeight(tools::Long nVal);
+
OUString GetText( LineEnd eEnd = LINEEND_LF ) const;
OUString GetText( const ESelection& rSelection ) const;
sal_uInt32 GetTextLen() const;
diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx
index 34de51fc904c..309334acc809 100644
--- a/include/editeng/outliner.hxx
+++ b/include/editeng/outliner.hxx
@@ -789,6 +789,8 @@ public:
const Size& GetMaxAutoPaperSize() const;
void SetMaxAutoPaperSize( const Size& rSz );
+ void SetMinColumnWrapHeight(tools::Long nVal);
+
void SetDefTab( sal_uInt16 nTab );
bool IsFlatMode() const;
diff --git a/sc/qa/uitest/chart/chartLegend.py b/sc/qa/uitest/chart/chartLegend.py
index 2d6ec4dbe886..0e7727b6b854 100644
--- a/sc/qa/uitest/chart/chartLegend.py
+++ b/sc/qa/uitest/chart/chartLegend.py
@@ -94,7 +94,7 @@ class chartLegend(UITestCase):
with guarded.execute_dialog_through_action(self, xLegends, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
self.assertEqual("4.61", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
- self.assertEqual("1.54", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+ self.assertEqual("1.53", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "UP"}))
xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "LEFT"}))
@@ -102,6 +102,6 @@ class chartLegend(UITestCase):
# Check the position has changed after moving the label using the arrows keys
with guarded.execute_dialog_through_action(self, xLegends, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
self.assertEqual("4.51", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
- self.assertEqual("1.44", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+ self.assertEqual("1.43", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/unit/filters-test.cxx b/sc/qa/unit/filters-test.cxx
index 1a888725154c..f81a8a62d3d1 100644
--- a/sc/qa/unit/filters-test.cxx
+++ b/sc/qa/unit/filters-test.cxx
@@ -518,7 +518,7 @@ void ScFiltersTest::testCommentSize()
const tools::Rectangle& rNewRect = pCaption->GetLogicRect();
CPPUNIT_ASSERT_EQUAL(rOldRect.getWidth(), rNewRect.getWidth());
- CPPUNIT_ASSERT_EQUAL(tools::Long(1605), rNewRect.getHeight());
+ CPPUNIT_ASSERT_EQUAL(tools::Long(1606), rNewRect.getHeight());
rDoc.GetUndoManager()->Undo();
diff --git a/sd/qa/uitest/impress_tests/tdf91762.py b/sd/qa/uitest/impress_tests/tdf91762.py
index 92a23de6b101..8492e3425373 100644
--- a/sd/qa/uitest/impress_tests/tdf91762.py
+++ b/sd/qa/uitest/impress_tests/tdf91762.py
@@ -26,9 +26,9 @@ class tdf91762(UITestCase):
self.ui_test.close_dialog_through_button(xOkBtn)
document = self.ui_test.get_component()
- self.assertEqual(1929, document.DrawPages[0].getByIndex(1).BoundRect.Height)
+ self.assertEqual(1931, document.DrawPages[0].getByIndex(1).BoundRect.Height)
self.assertEqual(25198, document.DrawPages[0].getByIndex(1).Size.Width)
- self.assertEqual(1923, document.DrawPages[0].getByIndex(1).Size.Height)
+ self.assertEqual(1925, document.DrawPages[0].getByIndex(1).Size.Height)
self.assertEqual(1400, document.DrawPages[0].getByIndex(1).Position.X)
self.assertEqual(3685, document.DrawPages[0].getByIndex(1).Position.Y)
@@ -40,8 +40,8 @@ class tdf91762(UITestCase):
xEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"}))
# tdf#138011: Without the fix in place, this test would have failed with
- # AssertionError: 5494 != 3559
- self.assertEqual(5494, document.DrawPages[0].getByIndex(1).BoundRect.Height)
+ # AssertionError: 5496 != 3559
+ self.assertEqual(5496, document.DrawPages[0].getByIndex(1).BoundRect.Height)
self.ui_test.close_doc()
diff --git a/sd/qa/unit/data/xml/n593612_0.xml b/sd/qa/unit/data/xml/n593612_0.xml
index 7c93f494e3ca..51fb75eba050 100644
--- a/sd/qa/unit/data/xml/n593612_0.xml
+++ b/sd/qa/unit/data/xml/n593612_0.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<XShapes>
- <XShape positionX="11429" positionY="1324" sizeX="2259" sizeY="15209" type="com.sun.star.drawing.CustomShape" name="Rectangle 52" text="&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;" fontHeight="24.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="254" textRightDistance="254" textUpperDistance="127" textLowerDistance="127" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="3c8c93" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="11429" positionY="1324" sizeX="2259" sizeY="15210" type="com.sun.star.drawing.CustomShape" name="Rectangle 52" text="&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;&#10;" fontHeight="24.000000" fontColor="ffffffff" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="CENTER" textVerticalAdjust="TOP" textLeftDistance="254" textRightDistance="254" textUpperDistance="127" textLowerDistance="127" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="SOLID" fillColor="3c8c93" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -10,7 +10,7 @@
<LineEnd/>
<Transformation>
<Line1 column1="2260.000000" column2="0.000000" column3="11429.000000"/>
- <Line2 column1="0.000000" column2="15210.000000" column3="1324.000000"/>
+ <Line2 column1="0.000000" column2="15211.000000" column3="1324.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
<CustomShapeGeometry>
diff --git a/sd/qa/unit/data/xml/n758621_1.xml b/sd/qa/unit/data/xml/n758621_1.xml
index 556c18673065..92de100a09f1 100644
--- a/sd/qa/unit/data/xml/n758621_1.xml
+++ b/sd/qa/unit/data/xml/n758621_1.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<XShapes>
- <XShape positionX="1485" positionY="610" sizeX="18411" sizeY="1954" type="com.sun.star.presentation.TitleTextShape" fontHeight="40.000000" fontColor="ff0000" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1645" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="1485" positionY="609" sizeX="18411" sizeY="1955" type="com.sun.star.presentation.TitleTextShape" fontHeight="40.000000" fontColor="ff0000" textAutoGrowHeight="true" textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" textUpperDistance="130" textLowerDistance="130" textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="1645" textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" textAnimationStartInside="false" textAnimationStopInside="false" textWritingMode="LR_TB" fillStyle="NONE" fillColor="ffffff" fillTransparence="0" fillTransparenceGradientName="">
<FillTransparenceGradient style="LINEAR" startColor="000000" endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillGradient style="LINEAR" startColor="000000" endColor="ffffff" angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" stepCount="0"/>
<FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -10,7 +10,7 @@
<LineEnd/>
<Transformation>
<Line1 column1="18412.000000" column2="0.000000" column3="1485.000000"/>
- <Line2 column1="0.000000" column2="1955.000000" column3="610.000000"/>
+ <Line2 column1="0.000000" column2="1956.000000" column3="609.000000"/>
<Line3 column1="0.000000" column2="0.000000" column3="1.000000"/>
</Transformation>
</XShape>
diff --git a/sd/qa/unit/layout-tests.cxx b/sd/qa/unit/layout-tests.cxx
index 1d10ab0a2a1e..8a2853693505 100644
--- a/sd/qa/unit/layout-tests.cxx
+++ b/sd/qa/unit/layout-tests.cxx
@@ -14,12 +14,14 @@ public:
void testTdf104722();
void testTdf136949();
void testTdf128212();
+ void testColumnsLayout();
CPPUNIT_TEST_SUITE(SdLayoutTest);
CPPUNIT_TEST(testTdf104722);
CPPUNIT_TEST(testTdf136949);
CPPUNIT_TEST(testTdf128212);
+ CPPUNIT_TEST(testColumnsLayout);
CPPUNIT_TEST_SUITE_END();
};
@@ -77,10 +79,111 @@ void SdLayoutTest::testTdf128212()
CPPUNIT_ASSERT(pXmlDoc);
// Without the fix in place, this test would have failed with
- // - Expected: 7797
+ // - Expected: 7798
// - Actual : 12068
assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/textarray", "x", "4525");
- assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/textarray", "y", "7797");
+ assertXPath(pXmlDoc, "/metafile/push[1]/push[1]/textarray", "y", "7798");
+
+ xDocShRef->DoClose();
+}
+
+void SdLayoutTest::testColumnsLayout()
+{
+ // This tests a 2-column text box's layout
+
+ const OUString sText[] = {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat mi quis "
+ "pretium semper. Proin luctus orci ac neque venenatis, quis commodo dolor posuere. "
+ "Curabitur dignissim sapien quis cursus egestas. Donec blandit auctor arcu, nec "
+ "pellentesque eros molestie eget. In consectetur aliquam hendrerit. Sed cursus mauris "
+ "vitae ligula pellentesque, non pellentesque urna aliquet. Fusce placerat mauris enim, "
+ "nec rutrum purus semper vel. Praesent tincidunt neque eu pellentesque pharetra. Fusce "
+ "pellentesque est orci.",
+ "Integer sodales tincidunt tristique. Sed a metus posuere, adipiscing nunc et, viverra "
+ "odio. Donec auctor molestie sem, sit amet tristique lectus hendrerit sed. Cras sodales "
+ "nisl sed orci mattis iaculis. Nunc eget dolor accumsan, pharetra risus a, vestibulum "
+ "mauris. Nunc vulputate lobortis mollis. Vivamus nec tellus faucibus, tempor magna nec, "
+ "facilisis felis. Donec commodo enim a vehicula pellentesque. Nullam vehicula vestibulum "
+ "est vel ultricies.",
+ "Aliquam velit massa, laoreet vel leo nec, volutpat facilisis eros. Donec consequat arcu "
+ "ut diam tempor luctus. Cum sociis natoque penatibus et magnis dis parturient montes, "
+ "nascetur ridiculus mus. Praesent vitae lacus vel leo sodales pharetra a a nibh. "
+ "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; "
+ "Nam luctus tempus nibh, fringilla dictum augue consectetur eget. Curabitur at ante sit "
+ "amet tortor pharetra molestie eu nec ante. Mauris tincidunt, nibh eu sollicitudin "
+ "molestie, dolor sapien congue tortor, a pulvinar sapien turpis sed ante. Donec nec est "
+ "elementum, euismod nulla in, mollis nunc."
+ };
+
+ // sentence#, index, length, x, y
+ const std::tuple<int, int, int, int, int> strings[] = {
+ // Column 1
+ { 0, 0, 40, 3750, 3193 },
+ { 0, 40, 41, 3750, 3587 },
+ { 0, 81, 39, 3750, 3981 },
+ { 0, 120, 33, 3750, 4375 },
+ { 0, 153, 35, 3750, 4769 },
+ { 0, 188, 34, 3750, 5163 },
+ { 0, 222, 38, 3750, 5557 },
+ { 0, 260, 35, 3750, 5951 },
+ { 0, 295, 37, 3750, 6345 },
+ { 0, 332, 31, 3750, 6739 },
+ { 0, 363, 33, 3750, 7133 },
+ { 0, 396, 39, 3750, 7527 },
+ { 0, 435, 37, 3750, 7921 },
+ { 0, 472, 32, 3750, 8315 },
+ { 0, 504, 22, 3750, 8709 },
+ { 1, 0, 43, 3750, 9103 },
+ { 1, 43, 35, 3750, 9497 },
+ { 1, 78, 36, 3750, 9891 },
+ { 1, 114, 41, 3750, 10285 },
+ { 1, 155, 39, 3750, 10679 },
+ { 1, 194, 35, 3750, 11073 },
+ { 1, 229, 37, 3750, 11467 },
+ { 1, 266, 40, 3750, 11861 },
+ { 1, 306, 39, 3750, 12255 },
+ { 1, 345, 38, 3750, 12649 },
+ { 1, 383, 39, 3750, 13043 },
+ { 1, 422, 29, 3750, 13437 },
+ { 2, 0, 42, 3750, 13831 },
+ { 2, 42, 41, 3750, 14225 },
+ { 2, 83, 39, 3750, 14619 },
+ { 2, 122, 32, 3750, 15013 },
+ { 2, 154, 38, 3750, 15407 },
+ { 2, 192, 34, 3750, 15801 },
+ { 2, 226, 38, 3750, 16195 },
+ // Column 2
+ { 2, 264, 42, 10725, 3193 },
+ { 2, 306, 39, 10725, 3587 },
+ { 2, 345, 37, 10725, 3981 },
+ { 2, 382, 37, 10725, 4375 },
+ { 2, 419, 42, 10725, 4769 },
+ { 2, 461, 36, 10725, 5163 },
+ { 2, 497, 36, 10725, 5557 },
+ { 2, 533, 40, 10725, 5951 },
+ { 2, 573, 35, 10725, 6345 },
+ { 2, 608, 30, 10725, 6739 },
+ };
+
+ sd::DrawDocShellRef xDocShRef
+ = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/odg/two_columns.odg"), ODG);
+
+ std::shared_ptr<GDIMetaFile> xMetaFile = xDocShRef->GetPreviewMetaFile();
+ MetafileXmlDump dumper;
+
+ xmlDocUniquePtr pXmlDoc = XmlTestTools::dumpAndParse(dumper, *xMetaFile);
+ CPPUNIT_ASSERT(pXmlDoc);
+
+ for (size_t i = 0; i < SAL_N_ELEMENTS(strings); ++i)
+ {
+ const auto & [ sentence, index, length, x, y ] = strings[i];
+ OString sXPath = "/metafile/push[1]/push[1]/textarray[" + OString::number(i + 1) + "]";
+ assertXPathContent(pXmlDoc, sXPath + "/text", sText[sentence]);
+ assertXPath(pXmlDoc, sXPath, "index", OUString::number(index));
+ assertXPath(pXmlDoc, sXPath, "length", OUString::number(length));
+ assertXPath(pXmlDoc, sXPath, "x", OUString::number(x));
+ assertXPath(pXmlDoc, sXPath, "y", OUString::number(y));
+ }
xDocShRef->DoClose();
}
diff --git a/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx b/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
index 762faaac1b56..7232d59cc29d 100644
--- a/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
+++ b/sd/qa/unit/tiledrendering/LOKitSearchTest.cxx
@@ -664,7 +664,7 @@ void LOKitSearchTest::testSearchIn2MixedObjects()
CPPUNIT_ASSERT_EQUAL(size_t(1), mpCallbackRecorder->m_aSearchResultSelection.size());
CPPUNIT_ASSERT_EQUAL(size_t(1), mpCallbackRecorder->m_aSearchResultPart.size());
- CPPUNIT_ASSERT_EQUAL(OString("3546, 3174, 738, 402"),
+ CPPUNIT_ASSERT_EQUAL(OString("3546, 3173, 738, 401"),
mpCallbackRecorder->m_aSearchResultSelection[0]);
// Search next
@@ -690,7 +690,7 @@ void LOKitSearchTest::testSearchIn2MixedObjects()
CPPUNIT_ASSERT_EQUAL(size_t(1), mpCallbackRecorder->m_aSearchResultSelection.size());
CPPUNIT_ASSERT_EQUAL(size_t(1), mpCallbackRecorder->m_aSearchResultPart.size());
- CPPUNIT_ASSERT_EQUAL(OString("3546, 3174, 738, 402"),
+ CPPUNIT_ASSERT_EQUAL(OString("3546, 3173, 738, 401"),
mpCallbackRecorder->m_aSearchResultSelection[0]);
}
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 27b514dc4ea9..52708ba56971 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -732,11 +732,13 @@ void SdrTextObj::TakeTextRect( SdrOutliner& rOutliner, tools::Rectangle& rTextRe
if(SDRTEXTHORZADJUST_BLOCK == eHAdj && !IsVerticalWriting())
{
rOutliner.SetMinAutoPaperSize(Size(nAnkWdt, 0));
+ rOutliner.SetMinColumnWrapHeight(nAnkHgt);
}
if(SDRTEXTVERTADJUST_BLOCK == eVAdj && IsVerticalWriting())
{
rOutliner.SetMinAutoPaperSize(Size(0, nAnkHgt));
+ rOutliner.SetMinColumnWrapHeight(nAnkWdt);
}
}
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 14911dfd89be..c2d5cd2301c8 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -770,11 +770,13 @@ void SdrTextObj::impDecomposeAutoFitTextPrimitive(
if(SDRTEXTHORZADJUST_BLOCK == eHAdj && !bVerticalWriting)
{
rOutliner.SetMinAutoPaperSize(Size(nAnchorTextWidth, 0));
+ rOutliner.SetMinColumnWrapHeight(nAnchorTextHeight);
}
if(SDRTEXTVERTADJUST_BLOCK == eVAdj && bVerticalWriting)
{
rOutliner.SetMinAutoPaperSize(Size(0, nAnchorTextHeight));
+ rOutliner.SetMinColumnWrapHeight(nAnchorTextWidth);
}
rOutliner.SetPaperSize(aNullSize);
@@ -983,10 +985,12 @@ void SdrTextObj::impDecomposeBlockTextPrimitive(
if(bHorizontalIsBlock)
{
rOutliner.SetMinAutoPaperSize(Size(nAnchorTextWidth, 0));
+ rOutliner.SetMinColumnWrapHeight(nAnchorTextHeight);
}
else if(bVerticalIsBlock)
{
rOutliner.SetMinAutoPaperSize(Size(0, nAnchorTextHeight));
+ rOutliner.SetMinColumnWrapHeight(nAnchorTextWidth);
}
if((rSdrBlockTextPrimitive.getWordWrap() || IsTextFrame()) && !rSdrBlockTextPrimitive.getUnlimitedPage())
diff --git a/test/source/sheet/xsheetannotationshapesupplier.cxx b/test/source/sheet/xsheetannotationshapesupplier.cxx
index dac446b72b52..fe392fc83494 100644
--- a/test/source/sheet/xsheetannotationshapesupplier.cxx
+++ b/test/source/sheet/xsheetannotationshapesupplier.cxx
@@ -33,7 +33,7 @@ void XSheetAnnotationShapeSupplier::testGetAnnotationShape()
CPPUNIT_ASSERT_EQUAL_MESSAGE("getAnnotationShape() wrong width",
sal_Int32(11275), xShape->getSize().Width);
CPPUNIT_ASSERT_EQUAL_MESSAGE("getAnnotationShape() wrong height",
- sal_Int32(1386), xShape->getSize().Height);
+ sal_Int32(1387), xShape->getSize().Height);
}
}