BRect AGGTextRenderer::RenderString(const char* string, uint32 length, const BPoint* offsets, const BRect& clippingFrame, bool dryRun, BPoint* nextCharPos, FontCacheReference* cacheReference) { //printf("RenderString(\"%s\", length: %ld, dry: %d)\n", string, length, dryRun); Transformable transform(fEmbeddedTransformation); transform *= fViewTransformation; fCurves.approximation_scale(transform.scale()); // use a transformation behind the curves // (only if glyph->data_type == agg::glyph_data_outline) // in the pipeline for the rasterizer FontCacheEntry::TransformedOutline transformedOutline(fCurves, transform); FontCacheEntry::TransformedContourOutline transformedContourOutline(fContour, transform); // for when we bypass the transformation pipeline BPoint transformOffset(0.0, 0.0); transform.Transform(&transformOffset); IntRect clippingIntFrame(clippingFrame); StringRenderer renderer(clippingIntFrame, dryRun, gSubpixelAntialiasing && fAntialias, transformedOutline, transformedContourOutline, transform, transformOffset, nextCharPos, *this); GlyphLayoutEngine::LayoutGlyphs(renderer, fFont, string, length, NULL, fFont.Spacing(), offsets, cacheReference); return transform.TransformBounds(renderer.Bounds()); }
BRect AGGTextRenderer::RenderString(const char* string, uint32 length, const BPoint& baseLine, const BRect& clippingFrame, bool dryRun, BPoint* nextCharPos, const escapement_delta* delta, FontCacheReference* cacheReference) { //printf("RenderString(\"%s\", length: %ld, dry: %d)\n", string, length, dryRun); Transformable transform(fEmbeddedTransformation); transform.TranslateBy(baseLine); fCurves.approximation_scale(transform.scale()); // use a transformation behind the curves // (only if glyph->data_type == agg::glyph_data_outline) // in the pipeline for the rasterizer FontCacheEntry::TransformedOutline transformedOutline(fCurves, transform); FontCacheEntry::TransformedContourOutline transformedContourOutline(fContour, transform); // for when we bypass the transformation pipeline BPoint transformOffset(0.0, 0.0); transform.Transform(&transformOffset); StringRenderer renderer(clippingFrame, dryRun, transformedOutline, transformedContourOutline, transform, transformOffset, nextCharPos, *this); GlyphLayoutEngine::LayoutGlyphs(renderer, fFont, string, length, delta, fKerning, B_BITMAP_SPACING, NULL, cacheReference); return transform.TransformBounds(renderer.Bounds()); }