From 3617e1a37f7f77eb4d57ca455fca9507f1a15872 Mon Sep 17 00:00:00 2001 From: László Németh Date: Thu, 24 Oct 2013 17:22:15 +0200 Subject: librelogo: more invisible settings (on UI, hatching), see ChangeLog Change-Id: Icb0d195ba82b023d370847242b4e3b5546fa0320 --- librelogo/source/ChangeLog | 13 +++++++++ librelogo/source/LibreLogo/LibreLogo.py | 48 ++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 12 deletions(-) (limited to 'librelogo') diff --git a/librelogo/source/ChangeLog b/librelogo/source/ChangeLog index 6453e71e14ec..0e1ed446c288 100644 --- a/librelogo/source/ChangeLog +++ b/librelogo/source/ChangeLog @@ -1,3 +1,16 @@ +2013-10-24 László Németh: + * synchronize Writer/Draw when saving cropped SVG to avoid program halt, + huge sleeps (the workaround) have been removed + * support hatching with 'INVISIBLE' filling color + * support PENUP in UI (Line Style "-none-") + * support INVISIBLE filling color in UI (Area Style/Filling "None") + * using 'INVISIBLE' line and filling colors set -none-/None in + Drawing Object Properties toolbar + * fix blinking LABEL (now the temporary text shape is invisible) + * support PENCAP settings (values: NONE, ROUND, SQUARE) + * fix black (not refreshed) invisible filling color (LO 4.1 problem) + reported by Levente Kovács in http://bug.openscope.org/browse/OOO-838 + 2013-08-29 László Németh: * fix bad selection of invisible turtle after HIDETURTLE CLEARSCREEN * fix SVG cropping in LibreOffice 4.1 diff --git a/librelogo/source/LibreLogo/LibreLogo.py b/librelogo/source/LibreLogo/LibreLogo.py index ac0fb2ad513a..9ad56222f6b1 100644 --- a/librelogo/source/LibreLogo/LibreLogo.py +++ b/librelogo/source/LibreLogo/LibreLogo.py @@ -112,6 +112,8 @@ from com.sun.star.drawing.LineJoint import NONE as __Joint_NONE__ from com.sun.star.drawing.LineJoint import BEVEL as __BEVEL__ from com.sun.star.drawing.LineJoint import MITER as __MITER__ from com.sun.star.drawing.LineJoint import ROUND as __ROUNDED__ +from com.sun.star.drawing.FillStyle import NONE as __FillStyle_NONE__ +from com.sun.star.drawing.LineStyle import NONE as __LineStyle_NONE__ from com.sun.star.drawing.LineStyle import SOLID as __LineStyle_SOLID__ from com.sun.star.drawing.LineStyle import DASH as __LineStyle_DASHED__ from com.sun.star.drawing.DashStyle import RECT as __DashStyle_RECT__ @@ -463,10 +465,18 @@ def __initialize__(): shape.FillColor, transparence = __splitcolor__(_.areacolor) shape.LineColor, shape.LineTransparence = __splitcolor__(_.pencolor) elif shape.Visible: - _.areacolor = shape.FillColor + (int(255.0 * shape.FillTransparence/100) << 24) - _.pencolor = shape.LineColor + (int(255.0 * shape.LineTransparence/100) << 24) + if shape.FillStyle == __FillStyle_NONE__: + _.areacolor = 0xffffffff + else: + _.areacolor = shape.FillColor + (int(255.0 * shape.FillTransparence/100) << 24) if shape.LineWidth != round((1 + _.pen * 2) * __PT_TO_TWIP__ / __MM10_TO_TWIP__) and shape.LineWidth != round(__LINEWIDTH__ / __MM10_TO_TWIP__): _.pensize = shape.LineWidth * __MM10_TO_TWIP__ + if shape.LineStyle == __LineStyle_NONE__: # - none - + __pen__(0) + else: + if shape.LineStyle == __LineStyle_SOLID__: + __pen__(1) + _.pencolor = shape.LineColor + (int(255.0 * shape.LineTransparence/100) << 24) shape.LineJoint = __ROUNDED__ shape.Shadow = True shape.FillColor, transparence = __splitcolor__(_.areacolor) @@ -886,6 +896,8 @@ def __go__(shapename, n, dot = False, preciseAngle = -1): shape.PolyPolygon = tuple([tuple( list(shape.PolyPolygon[-1]) + [last2])]) shape.LineWidth = _.pensize / __MM10_TO_TWIP__ shape.LineColor, shape.LineTransparence = __splitcolor__(_.pencolor) + if shape.LineTransparence == 100: + shape.LineStyle = 0 __visible__(shape, True) shape.Name = __ACTUAL__ _.shapecache[__ACTUAL__] = shape @@ -909,15 +921,21 @@ def __fillit__(filled = True): shape.LineStyle, shape.LineDash = __linestyle__(_.linestyle) shape.LineJoint = _.linejoint shape.LineCap = _.linecap + shape.LineWidth = _.pensize / __MM10_TO_TWIP__ + shape.LineColor, shape.LineTransparence = __splitcolor__(_.pencolor) + shape.FillColor, shape.FillTransparence = __splitcolor__(_.areacolor) if _.hatch: - shape.FillBackground = True + shape.FillBackground = True if shape.FillTransparence != 100 else False shape.FillHatch = _.hatch shape.FillStyle = 3 else: shape.FillStyle = int(filled) - shape.LineWidth = _.pensize / __MM10_TO_TWIP__ - shape.LineColor, shape.LineTransparence = __splitcolor__(_.pencolor) - shape.FillColor, shape.FillTransparence = __splitcolor__(_.areacolor) + if shape.LineTransparence == 100: + shape.LineStyle = 0 + if shape.FillTransparence == 100: + shape.FillTransparence = 0 # for hatching and better modifications on UI + if not _.hatch: + shape.FillStyle = 0 shape.setString(oldshape.getString()) oldshape.Name = "" shape.Name = __ACTUAL__ @@ -949,12 +967,6 @@ def point(): def __boxshape__(shapetype, l): turtle = __getshape__(__TURTLE__) shape = __draw__(shapetype + "Shape") - if _.hatch: - shape.FillBackground = True - shape.FillHatch = _.hatch - shape.FillStyle = 3 - else: - shape.FillStyle = 1 pos = turtle.getPosition() pos.X = pos.X - (l[0] * __PT_TO_TWIP__ / __MM10_TO_TWIP__ / 2) + turtle.BoundRect.Width / 2.0 pos.Y = pos.Y - (l[1] * __PT_TO_TWIP__ / __MM10_TO_TWIP__ / 2) + turtle.BoundRect.Height / 2.0 @@ -966,6 +978,18 @@ def __boxshape__(shapetype, l): shape.LineCap = _.linecap shape.LineColor, shape.LineTransparence = __splitcolor__(_.pencolor) shape.FillColor, shape.FillTransparence = __splitcolor__(_.areacolor) + if _.hatch: + shape.FillBackground = True if shape.FillTransparence != 100 else False + shape.FillHatch = _.hatch + shape.FillStyle = 3 + else: + shape.FillStyle = 1 + if shape.LineTransparence == 100: + shape.LineStyle = 0 + if shape.FillTransparence == 100: + shape.FillTransparence = 0 # for hatching and better modifications on UI + if not _.hatch: + shape.FillStyle = 0 shape.RotateAngle = turtle.RotateAngle if shapetype == "Rectangle" and len(l) > 2: shape.CornerRadius = (l[2] * __PT_TO_TWIP__) / __MM10_TO_TWIP__ -- cgit