Use hairlines judiciously to draw very thin patterned strokes correctly.
This prevents some dashed or dotted lines from being skipped when printing or in print preview. Change-Id: I9d0a8ae743241d17d65935f4bf0d122e4313bff8
This commit is contained in:
@@ -251,7 +251,6 @@ namespace drawinglayer
|
|||||||
const double fExt = getWidth(rViewInformation); // Extend a lot: it'll be clipped after
|
const double fExt = getWidth(rViewInformation); // Extend a lot: it'll be clipped after
|
||||||
const basegfx::B2DPoint aTmpStart(getStart() - (fExt * aVector));
|
const basegfx::B2DPoint aTmpStart(getStart() - (fExt * aVector));
|
||||||
const basegfx::B2DPoint aTmpEnd(getEnd() + (fExt * aVector));
|
const basegfx::B2DPoint aTmpEnd(getEnd() + (fExt * aVector));
|
||||||
xRetval.realloc(1);
|
|
||||||
|
|
||||||
// Get which is the line to show
|
// Get which is the line to show
|
||||||
bool bIsSolidline = isSolidLine();
|
bool bIsSolidline = isSolidLine();
|
||||||
@@ -273,6 +272,7 @@ namespace drawinglayer
|
|||||||
aPolygon.append( getStart() );
|
aPolygon.append( getStart() );
|
||||||
aPolygon.append( getEnd() );
|
aPolygon.append( getEnd() );
|
||||||
|
|
||||||
|
xRetval.realloc(1);
|
||||||
xRetval[0] = Primitive2DReference(new PolygonHairlinePrimitive2D(
|
xRetval[0] = Primitive2DReference(new PolygonHairlinePrimitive2D(
|
||||||
aPolygon,
|
aPolygon,
|
||||||
aColor));
|
aColor));
|
||||||
@@ -308,8 +308,28 @@ namespace drawinglayer
|
|||||||
aDashed.setB2DPolygon( i, aClipped.getB2DPolygon( 0 ) );
|
aDashed.setB2DPolygon( i, aClipped.getB2DPolygon( 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
xRetval[0] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
|
sal_uInt32 n = aDashed.count();
|
||||||
basegfx::B2DPolyPolygon( aDashed ), aColor));
|
xRetval.realloc(n);
|
||||||
|
for (sal_uInt32 i = 0; i < n; ++i)
|
||||||
|
{
|
||||||
|
basegfx::B2DPolygon aDash = aDashed.getB2DPolygon(i);
|
||||||
|
if (bIsHairline)
|
||||||
|
{
|
||||||
|
// Convert a rectanglar polygon into a line.
|
||||||
|
basegfx::B2DPolygon aDash2;
|
||||||
|
basegfx::B2DRange aRange = aDash.getB2DRange();
|
||||||
|
basegfx::B2DPoint aPt(aRange.getMinX(), aRange.getMinY());
|
||||||
|
aDash2.append(basegfx::B2DPoint(aRange.getMinX(), aRange.getMinY()));
|
||||||
|
aDash2.append(basegfx::B2DPoint(aRange.getMaxX(), aRange.getMinY()));
|
||||||
|
xRetval[i] = Primitive2DReference(
|
||||||
|
new PolygonHairlinePrimitive2D(aDash2, aColor));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xRetval[i] = Primitive2DReference(
|
||||||
|
new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aDash), aColor));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user