Regard Painter's transformation when rendering text.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user