[Libreoffice-commits] core.git: 2 commits - vcl/source vcl/uiconfig

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Mar 11 22:09:31 UTC 2019


 vcl/source/gdi/FileDefinitionWidgetDraw.cxx   |   74 +++++++++++---------------
 vcl/uiconfig/theme_definitions/definition.xml |    2 
 2 files changed, 35 insertions(+), 41 deletions(-)

New commits:
commit 212a40aaf7ec3316d5209b688f5f79821f99fbdc
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Mar 11 17:08:18 2019 +0100
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon Mar 11 23:09:18 2019 +0100

    widget theme: change the tab item height to (min) 32 px
    
    Change-Id: I1919300071a06242fe832880b46c944989daa4b6
    Reviewed-on: https://gerrit.libreoffice.org/69057
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 213547cc2d3a..64ef751c7476 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -776,10 +776,12 @@ bool FileDefinitionWidgetDraw::getNativeControlRegion(
             if (!pPart)
                 return false;
 
-            rNativeBoundingRegion = tools::Rectangle(
-                rBoundingControlRegion.TopLeft(),
-                Size(rBoundingControlRegion.GetWidth() + pPart->mnMarginWidth,
-                     rBoundingControlRegion.GetHeight() + pPart->mnMarginHeight));
+            long nWidth = std::max(rBoundingControlRegion.GetWidth() + pPart->mnMarginWidth,
+                                   long(pPart->mnWidth));
+            long nHeight = std::max(rBoundingControlRegion.GetHeight() + pPart->mnMarginHeight,
+                                    long(pPart->mnHeight));
+
+            rNativeBoundingRegion = tools::Rectangle(aLocation, Size(nWidth, nHeight));
             rNativeContentRegion = rNativeBoundingRegion;
             return true;
         }
diff --git a/vcl/uiconfig/theme_definitions/definition.xml b/vcl/uiconfig/theme_definitions/definition.xml
index e91953109554..5a4be114ea97 100644
--- a/vcl/uiconfig/theme_definitions/definition.xml
+++ b/vcl/uiconfig/theme_definitions/definition.xml
@@ -320,7 +320,7 @@
     </progress>
 
     <tabitem>
-        <part value="Entire" margin-width="20" margin-height="6">
+        <part value="Entire" margin-width="8" height="32">
             <state selected="false" extra="first">
                 <external source="tabitem-first.svgx" />
             </state>
commit 897f6f6252f38e93764aa0e72135768ab1ec3679
Author:     Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
AuthorDate: Mon Mar 11 16:52:37 2019 +0100
Commit:     Tomaž Vajngerl <quikee at gmail.com>
CommitDate: Mon Mar 11 23:09:08 2019 +0100

    better adjustment algorithm for dynamic sized widgets
    
    A algorithm that gives better results for dynamically sized
    widgets is to increase proportionally only the points in shapes
    that are over the half of the widget width (or height, when
    adjusting the other dimension). This preserves the margins and
    doesn't distort the shape of the paths, which is especially
    visible when the source needs to be largely resized in one
    dimension only.
    
    Change-Id: I2cceb249063387c0f7400ef8d75adb5899aa8c23
    Reviewed-on: https://gerrit.libreoffice.org/69056
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>

diff --git a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
index 3c0ad43c99b7..213547cc2d3a 100644
--- a/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
+++ b/vcl/source/gdi/FileDefinitionWidgetDraw.cxx
@@ -165,24 +165,18 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
 
                 basegfx::B2DRange aInputRectangle(rRectangle.maRectangle);
 
+                double fDeltaX = aTargetSurface.getWidth() - aSVGRect.getWidth();
+                double fDeltaY = aTargetSurface.getHeight() - aSVGRect.getHeight();
+
                 basegfx::B2DRange aFinalRectangle(
-                    aTargetSurface.getMinX() + aInputRectangle.getMinX(),
-                    aTargetSurface.getMinY() + aInputRectangle.getMinY(),
-                    aTargetSurface.getMaxX() - (aSVGRect.getMaxX() - aInputRectangle.getMaxX()),
-                    aTargetSurface.getMaxY() - (aSVGRect.getMaxY() - aInputRectangle.getMaxY()));
-
-                aInputRectangle.transform(basegfx::utils::createTranslateB2DHomMatrix(
-                    -aInputRectangle.getMinX(), -aInputRectangle.getMinY()));
-                aInputRectangle.transform(basegfx::utils::createScaleB2DHomMatrix(
-                    aFinalRectangle.getWidth() / aInputRectangle.getWidth(),
-                    aFinalRectangle.getHeight() / aInputRectangle.getHeight()));
-                aInputRectangle.transform(basegfx::utils::createTranslateB2DHomMatrix(
-                    aFinalRectangle.getMinX() - 0.5,
-                    aFinalRectangle.getMinY()
-                        - 0.5)); // compensate 0.5 for different interpretation of where the center of a pixel is
+                    aInputRectangle.getMinX(), aInputRectangle.getMinY(),
+                    aInputRectangle.getMaxX() + fDeltaX, aInputRectangle.getMaxY() + fDeltaY);
+
+                aFinalRectangle.transform(basegfx::utils::createTranslateB2DHomMatrix(
+                    aTargetSurface.getMinX() - 0.5, aTargetSurface.getMinY() - 0.5));
 
                 basegfx::B2DPolygon aB2DPolygon = basegfx::utils::createPolygonFromRect(
-                    aInputRectangle, rRectangle.mnRx / aFinalRectangle.getWidth() * 2.0,
+                    aFinalRectangle, rRectangle.mnRx / aFinalRectangle.getWidth() * 2.0,
                     rRectangle.mnRy / aFinalRectangle.getHeight() * 2.0);
 
                 if (rRectangle.mpFillColor)
@@ -208,29 +202,27 @@ void drawFromDrawCommands(gfx::DrawRoot const& rDrawRoot, SalGraphics& rGraphics
             {
                 auto const& rPath = static_cast<gfx::DrawPath const&>(*pDrawBase);
 
-                basegfx::B2DRange aPolyPolygonRange(rPath.maPolyPolygon.getB2DRange());
-                basegfx::B2DPolyPolygon aPolyPolygon(rPath.maPolyPolygon);
-
-                basegfx::B2DRange aFinalRectangle(
-                    aTargetSurface.getMinX() + aPolyPolygonRange.getMinX(),
-                    aTargetSurface.getMinY() + aPolyPolygonRange.getMinY(),
-                    aTargetSurface.getMaxX() - (aSVGRect.getMaxX() - aPolyPolygonRange.getMaxX()),
-                    aTargetSurface.getMaxY() - (aSVGRect.getMaxY() - aPolyPolygonRange.getMaxY()));
-
-                aPolyPolygon.transform(basegfx::utils::createTranslateB2DHomMatrix(
-                    -aPolyPolygonRange.getMinX(), -aPolyPolygonRange.getMinY()));
-
-                double fScaleX = 1.0;
-                double fScaleY = 1.0;
-                if (aPolyPolygonRange.getWidth() > 0.0)
-                    fScaleX = aFinalRectangle.getWidth() / aPolyPolygonRange.getWidth();
-                if (aPolyPolygonRange.getHeight() > 0.0)
-                    fScaleY = aFinalRectangle.getHeight() / aPolyPolygonRange.getHeight();
-
-                aPolyPolygon.transform(basegfx::utils::createScaleB2DHomMatrix(fScaleX, fScaleY));
+                double fDeltaX = aTargetSurface.getWidth() - aSVGRect.getWidth();
+                double fDeltaY = aTargetSurface.getHeight() - aSVGRect.getHeight();
 
+                basegfx::B2DPolyPolygon aPolyPolygon(rPath.maPolyPolygon);
+                for (auto& rPolygon : aPolyPolygon)
+                {
+                    for (size_t i = 0; i < rPolygon.count(); ++i)
+                    {
+                        auto& rPoint = rPolygon.getB2DPoint(i);
+                        double x = rPoint.getX();
+                        double y = rPoint.getY();
+
+                        if (x > aSVGRect.getCenterX())
+                            x = x + fDeltaX;
+                        if (y > aSVGRect.getCenterY())
+                            y = y + fDeltaY;
+                        rPolygon.setB2DPoint(i, basegfx::B2DPoint(x, y));
+                    }
+                }
                 aPolyPolygon.transform(basegfx::utils::createTranslateB2DHomMatrix(
-                    aFinalRectangle.getMinX() - 0.5, aFinalRectangle.getMinY() - 0.5));
+                    aTargetSurface.getMinX() - 0.5, aTargetSurface.getMinY() - 0.5));
 
                 if (rPath.mpFillColor)
                 {


More information about the Libreoffice-commits mailing list