diff options
author | László Németh <nemeth@numbertext.org> | 2021-04-21 15:42:37 +0200 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2021-05-05 13:42:30 +0200 |
commit | b9b2c6a98fec798fc0ec76ec3cd407724f19dcac (patch) | |
tree | 678caec0be0e575015e8718aa337c23cf88007eb | |
parent | 92cba30d5ce45e4f4a9516a80c9fe9915add6905 (diff) |
tdf#141933 add preset dash styles with round cap
New OOXML-compatible preset styles weren't recognized
on the UI, including the Drawing Object Properties
toolbar and Line Style settings, if the preset styles
use round cap, e.g. line styles with dot-like dots (i.e.
not tiny squares as dots).
As a workaround for interoperability and access to
the line styles with dot-like dots, add "Rounded"
version for every OOXML-compatible preset styles with
round cap. This allows to apply dot-like dotted lines
to new shapes, too.
Background: round cap modifies the DotLen and DashLen
values of the LineDash struct during the OOXML import,
using ~zero values to get dot-like dots. For the details,
see commit 3f3b50015e4fd9efc3459612a70409fca49cf390
"tdf#134053 tweak dash and space length for ooxml" and
commit 24d770799660d3ec94ee7add435645794426042b
"tdf#134128 Use Gdiplus::DashCapRound for round dash or dot".
Follow of commit 183c06fc02a50fb117bb6162e4d6e56cdd34fad1
"tdf#139301 fix OOXML-compatible preset dash styles".
Change-Id: I4f3173579964b2c00618ada475b012c85320f758
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114459
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
-rw-r--r-- | extras/source/palettes/standard.sod | 10 | ||||
-rw-r--r-- | sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx | bin | 0 -> 23784 bytes | |||
-rw-r--r-- | sw/qa/uitest/writer_tests7/tdf139301.py | 34 |
3 files changed, 41 insertions, 3 deletions
diff --git a/extras/source/palettes/standard.sod b/extras/source/palettes/standard.sod index 3ac90cb0604a..7b68ea06cf9c 100644 --- a/extras/source/palettes/standard.sod +++ b/extras/source/palettes/standard.sod @@ -2,15 +2,25 @@ <office:dash-table xmlns:office="http://openoffice.org/2000/office" xmlns:style="http://openoffice.org/2000/style" xmlns:text="http://openoffice.org/2000/text" xmlns:table="http://openoffice.org/2000/table" xmlns:draw="http://openoffice.org/2000/drawing" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="http://openoffice.org/2000/meta" xmlns:number="http://openoffice.org/2000/datastyle" xmlns:svg="http://www.w3.org/2000/svg" xmlns:chart="http://openoffice.org/2000/chart" xmlns:dr3d="http://openoffice.org/2000/dr3d" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="http://openoffice.org/2000/form" xmlns:script="http://openoffice.org/2000/script"> <draw:stroke-dash draw:name="Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="100%" draw:distance="100%"/> + <draw:stroke-dash draw:name="Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="1%" draw:distance="199%"/> <draw:stroke-dash draw:name="Long Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="100%" draw:distance="300%"/> + <draw:stroke-dash draw:name="Long Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="1%" draw:distance="399%"/> <draw:stroke-dash draw:name="Dash" draw:style="rect" draw:dots1="1" draw:dots1-length="300%" draw:distance="100%"/> + <draw:stroke-dash draw:name="Dash (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="201%" draw:distance="199%"/> <draw:stroke-dash draw:name="Long Dash" draw:style="rect" draw:dots1="1" draw:dots1-length="400%" draw:distance="300%"/> + <draw:stroke-dash draw:name="Long Dash (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="301%" draw:distance="399%"/> <draw:stroke-dash draw:name="Double Dash" draw:style="rect" draw:dots1="1" draw:dots1-length="800%" draw:distance="300%"/> + <draw:stroke-dash draw:name="Double Dash (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="701%" draw:distance="399%"/> <draw:stroke-dash draw:name="Dash Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="300%" draw:dots2="1" draw:dots2-length="100%" draw:distance="100%"/> + <draw:stroke-dash draw:name="Dash Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="201%" draw:dots2="1" draw:dots2-length="1%" draw:distance="199%"/> <draw:stroke-dash draw:name="Long Dash Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="400%" draw:dots2="1" draw:dots2-length="100%" draw:distance="300%"/> + <draw:stroke-dash draw:name="Long Dash Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="301%" draw:dots2="1" draw:dots2-length="1%" draw:distance="399%"/> <draw:stroke-dash draw:name="Double Dash Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="800%" draw:dots2="1" draw:dots2-length="100%" draw:distance="300%"/> + <draw:stroke-dash draw:name="Double Dash Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="701%" draw:dots2="1" draw:dots2-length="1%" draw:distance="399%"/> <draw:stroke-dash draw:name="Dash Dot Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="300%" draw:dots2="2" draw:dots2-length="100%" draw:distance="100%"/> + <draw:stroke-dash draw:name="Dash Dot Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="201%" draw:dots2="2" draw:dots2-length="1%" draw:distance="199%"/> <draw:stroke-dash draw:name="Double Dash Dot Dot" draw:style="rect" draw:dots1="1" draw:dots1-length="800%" draw:dots2="2" draw:dots2-length="100%" draw:distance="300%"/> + <draw:stroke-dash draw:name="Double Dash Dot Dot (Rounded)" draw:style="round" draw:dots1="1" draw:dots1-length="701%" draw:dots2="2" draw:dots2-length="1%" draw:distance="399%"/> <draw:stroke-dash draw:name="Ultrafine Dotted (var)" draw:style="rect" draw:dots1="1" draw:distance="50%"/> <draw:stroke-dash draw:name="Fine Dotted" draw:style="rect" draw:dots1="1" draw:distance="0.1799inch"/> diff --git a/sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx b/sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx Binary files differnew file mode 100644 index 000000000000..52f9aaa5589f --- /dev/null +++ b/sw/qa/uitest/data/tdf127166_prstDash_round_cap.docx diff --git a/sw/qa/uitest/writer_tests7/tdf139301.py b/sw/qa/uitest/writer_tests7/tdf139301.py index 62a80b29998f..064018889031 100644 --- a/sw/qa/uitest/writer_tests7/tdf139301.py +++ b/sw/qa/uitest/writer_tests7/tdf139301.py @@ -9,12 +9,40 @@ from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file class tdf139301(UITestCase): + styles = ('Long Dash', 'Long Dash Dot', 'Long Dot', 'Double Dash', 'Double Dash Dot', 'Double Dash Dot Dot', 'Dash', 'Dash Dot', 'Dash Dot Dot', 'Dot') + def test_tdf139301(self): writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf127166_prstDash_Word97.docx")) - styles = ('Long Dash', 'Long Dash Dot', 'Long Dot', 'Double Dash', 'Double Dash Dot', 'Double Dash Dot Dot', 'Dash', 'Dash Dot', 'Dash Dot Dot', 'Dot') + for i in range(len(self.styles)): + # select next line shape + writer_doc.getCurrentController().select(writer_doc.getDrawPage()[i]) + + # wait for available line style setting + self.ui_test.wait_until_child_is_available('metricfield') + + # line setting dialog window + self.ui_test.execute_dialog_through_command(".uno:FormatLine") + xFormatLineDlg = self.xUITest.getTopFocusWindow() + # get line style combo box + xLineStyle = xFormatLineDlg.getChild("LB_LINE_STYLE") + + # check preset line style + style = get_state_as_dict(xLineStyle)['SelectEntryText'] + + xOKBtn = xFormatLineDlg.getChild("ok") + self.ui_test.close_dialog_through_button(xOKBtn) + + self.assertEqual(style, self.styles[i]) + + self.ui_test.close_doc() + + def test_round_cap(self): + writer_doc = self.ui_test.load_file(get_url_for_data_file("tdf127166_prstDash_round_cap.docx")) + + style_name_extension = ' (Rounded)' - for i in range(len(styles)): + for i in range(len(self.styles)): # select next line shape writer_doc.getCurrentController().select(writer_doc.getDrawPage()[i]) @@ -33,7 +61,7 @@ class tdf139301(UITestCase): xOKBtn = xFormatLineDlg.getChild("ok") self.ui_test.close_dialog_through_button(xOKBtn) - self.assertEqual(style, styles[i]) + self.assertEqual(style, self.styles[i] + style_name_extension) self.ui_test.close_doc() |