[Libreoffice-commits] core.git: Branch 'feature/calc-cell-borders' - drawinglayer/source
Kohei Yoshida
kohei.yoshida at collabora.com
Mon Jan 20 15:38:20 PST 2014
drawinglayer/source/processor2d/vclpixelprocessor2d.cxx | 81 +++++++++++++---
1 file changed, 66 insertions(+), 15 deletions(-)
New commits:
commit 6c4fc2b657a4c3e677c58604c6420ebeb73cdb9e
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date: Mon Jan 20 18:37:08 2014 -0500
fdo#73487: Center thick border lines around cell grid.
This reduces the amount of gap at line joins. Plus it generally looks better
this way.
Change-Id: Ifd21cd0bc1f61f8a875b1bad9cfb33564c18b9ae
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 61145f5..fc9a19c 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -317,22 +317,38 @@ namespace drawinglayer
basegfx::B2DRange aRange = aTarget.getB2DRange();
double fH = aRange.getHeight();
- if (fH <= 1.0 || bDouble)
+ if (bDouble)
+ {
+ // Double line
+ drawHairLine(
+ mpOutputDevice, aRange.getMinX(), aRange.getMinY()-1.0, aRange.getMaxX(), aRange.getMinY()-1.0,
+ aLineColor);
+
+ drawHairLine(
+ mpOutputDevice, aRange.getMinX(), aRange.getMinY()+1.0, aRange.getMaxX(), aRange.getMinY()+1.0,
+ aLineColor);
+
+ return true;
+ }
+
+ if (fH <= 1.0)
{
// Draw it as a line.
drawHairLine(
mpOutputDevice, aRange.getMinX(), aRange.getMinY(), aRange.getMaxX(), aRange.getMinY(),
aLineColor);
- if (bDouble)
- {
- drawHairLine(
- mpOutputDevice, aRange.getMinX(), aRange.getMinY()+2.0, aRange.getMaxX(), aRange.getMinY()+2.0,
- aLineColor);
- }
-
return true;
}
+
+ double fOffset = rtl::math::round(fH/2.0, 0, rtl_math_RoundingMode_Down);
+ if (fOffset != 0.0)
+ {
+ // Move it up a bit to align it vertically centered.
+ basegfx::B2DHomMatrix aMat;
+ aMat.set(1, 2, -fOffset);
+ aTarget.transform(aMat);
+ }
}
else
{
@@ -344,21 +360,38 @@ namespace drawinglayer
basegfx::B2DRange aRange = aTarget.getB2DRange();
double fW = aRange.getWidth();
- if (fW <= 1.0 || bDouble)
+ if (bDouble)
+ {
+ // Draw it as a line.
+ drawHairLine(
+ mpOutputDevice, aRange.getMinX()-1.0, aRange.getMinY(), aRange.getMinX()-1.0, aRange.getMaxY(),
+ aLineColor);
+
+ drawHairLine(
+ mpOutputDevice, aRange.getMinX()+1.0, aRange.getMinY(), aRange.getMinX()+1.0, aRange.getMaxY(),
+ aLineColor);
+
+ return true;
+ }
+
+ if (fW <= 1.0)
{
// Draw it as a line.
drawHairLine(
mpOutputDevice, aRange.getMinX(), aRange.getMinY(), aRange.getMinX(), aRange.getMaxY(),
aLineColor);
- if (bDouble)
- {
- drawHairLine(
- mpOutputDevice, aRange.getMinX()+2.0, aRange.getMinY(), aRange.getMinX()+2.0, aRange.getMaxY(),
- aLineColor);
- }
return true;
}
+
+ double fOffset = rtl::math::round(fW/2.0, 0, rtl_math_RoundingMode_Down);
+ if (fOffset != 0.0)
+ {
+ // Move it to the left a bit to center it horizontally.
+ basegfx::B2DHomMatrix aMat;
+ aMat.set(0, 2, -fOffset);
+ aTarget.transform(aMat);
+ }
}
mpOutputDevice->SetFillColor(Color(aLineColor));
@@ -463,6 +496,15 @@ namespace drawinglayer
if (i >= n)
i = 0;
}
+
+ double fOffset = rtl::math::round(nThick/2.0, 0, rtl_math_RoundingMode_Down);
+ if (fOffset != 0.0)
+ {
+ // Move it up a bit to align it vertically centered.
+ basegfx::B2DHomMatrix aMat;
+ aMat.set(1, 2, -fOffset);
+ aTarget.transform(aMat);
+ }
}
else
{
@@ -535,6 +577,15 @@ namespace drawinglayer
if (i >= n)
i = 0;
}
+
+ double fOffset = rtl::math::round(nThick/2.0, 0, rtl_math_RoundingMode_Down);
+ if (fOffset != 0.0)
+ {
+ // Move it to the left a bit to center it horizontally.
+ basegfx::B2DHomMatrix aMat;
+ aMat.set(0, 2, -fOffset);
+ aTarget.transform(aMat);
+ }
}
mpOutputDevice->SetFillColor(Color(aLineColor));
More information about the Libreoffice-commits
mailing list