Regard Painter's transformation when rendering text.

This commit is contained in:
Stephan Aßmus
2014-02-06 11:10:03 +01:00
parent 750958b857
commit b4671bebcf
3 changed files with 11 additions and 4 deletions
@@ -34,7 +34,8 @@ AGGTextRenderer::AGGTextRenderer(renderer_subpix_type& subpixRenderer,
scanline_unpacked_type& scanline,
scanline_unpacked_subpix_type& subpixScanline,
rasterizer_subpix_type& subpixRasterizer,
scanline_unpacked_masked_type*& maskedScanline)
scanline_unpacked_masked_type*& maskedScanline,
agg::trans_affine& viewTransformation)
:
fPathAdaptor(),
fGray8Adaptor(),
@@ -59,7 +60,8 @@ AGGTextRenderer::AGGTextRenderer(renderer_subpix_type& subpixRenderer,
fHinted(true),
fAntialias(true),
fKerning(true),
fEmbeddedTransformation()
fEmbeddedTransformation(),
fViewTransformation(viewTransformation)
{
fCurves.approximation_scale(2.0);
fContour.auto_detect_orientation(false);
@@ -339,6 +341,7 @@ AGGTextRenderer::RenderString(const char* string, uint32 length,
Transformable transform(fEmbeddedTransformation);
transform.TranslateBy(baseLine);
transform *= fViewTransformation;
fCurves.approximation_scale(transform.scale());
@@ -375,6 +378,7 @@ AGGTextRenderer::RenderString(const char* string, uint32 length,
//printf("RenderString(\"%s\", length: %ld, dry: %d)\n", string, length, dryRun);
Transformable transform(fEmbeddedTransformation);
transform *= fViewTransformation;
fCurves.approximation_scale(transform.scale());
@@ -31,7 +31,8 @@ public:
subpixScanline,
rasterizer_subpix_type& subpixRasterizer,
scanline_unpacked_masked_type*&
maskedScanline);
maskedScanline,
agg::trans_affine& viewTransformation);
virtual ~AGGTextRenderer();
void SetFont(const ServerFont &font);
@@ -99,6 +100,7 @@ private:
bool fKerning;
Transformable fEmbeddedTransformation;
// rotated or sheared font?
agg::trans_affine& fViewTransformation;
};
#endif // AGG_TEXT_RENDERER_H
+2 -1
View File
@@ -201,7 +201,8 @@ Painter::Painter()
fPatternHandler(),
fTextRenderer(fSubpixRenderer, fRenderer, fRendererBin, fUnpackedScanline,
fSubpixUnpackedScanline, fSubpixRasterizer, fMaskedUnpackedScanline)
fSubpixUnpackedScanline, fSubpixRasterizer, fMaskedUnpackedScanline,
fTransform)
{
fPixelFormat.SetDrawingMode(fDrawingMode, fAlphaSrcMode, fAlphaFncMode,
false);