diff --git a/src/servers/app/server/Painter/Painter.cpp b/src/servers/app/server/Painter/Painter.cpp index 3a60ca7f50..39b0b2836c 100644 --- a/src/servers/app/server/Painter/Painter.cpp +++ b/src/servers/app/server/Painter/Painter.cpp @@ -555,23 +555,38 @@ Painter::FillArc(BPoint center, float xRadius, float yRadius, // DrawString void -Painter::DrawString(const char* utf8String, BPoint baseLine) const +Painter::DrawString(const char* utf8String, const escapement_delta* delta) +{ + // TODO: to be moved elsewhere + DrawString(utf8String, fPenLocation, delta); +} + +// DrawString +void +Painter::DrawString(const char* utf8String, BPoint baseLine, + const escapement_delta* delta) { fPatternHandler->SetPattern(B_SOLID_HIGH); - _Transform(&baseLine); - Transformable transform; // TODO: convert BFont::Shear(), which is in degrees 45°...135° to whatever AGG is using // transform.ShearBy(B_ORIGIN, fFont.Shear(), 0.0); transform.RotateBy(B_ORIGIN, -fFont.Rotation()); - transform.ScaleBy(B_ORIGIN, fScale, fScale); transform.TranslateBy(baseLine); + transform.ScaleBy(B_ORIGIN, fScale, fScale); + transform.TranslateBy(fOrigin); fTextRenderer->RenderString(utf8String, fFontRendererSolid, fFontRendererBin, - transform); + transform, + &fPenLocation); + // pen location is not transformed in quite the same way, + // or transformations would add up + transform.Reset(); + transform.RotateBy(B_ORIGIN, -fFont.Rotation()); + transform.TranslateBy(baseLine); + transform.Transform(&fPenLocation); } // #pragma mark - diff --git a/src/servers/app/server/Painter/Painter.h b/src/servers/app/server/Painter/Painter.h index 8aec7de40a..ed9b844463 100644 --- a/src/servers/app/server/Painter/Painter.h +++ b/src/servers/app/server/Painter/Painter.h @@ -132,7 +132,11 @@ class Painter { // strings void DrawString( const char* utf8String, - BPoint baseLine) const; + const escapement_delta* delta = NULL); + + void DrawString( const char* utf8String, + BPoint baseLine, + const escapement_delta* delta = NULL); // bitmaps void DrawBitmap( const BBitmap* bitmap, @@ -157,13 +161,6 @@ class Painter { void DrawChar( char aChar, BPoint location); - void DrawString( const char* string, - const escapement_delta* delta = NULL); - - void DrawString( const char* string, - BPoint location, - const escapement_delta* delta = NULL); - void DrawString( const char* string, int32 length, const escapement_delta* delta = NULL);