more correct implementation, forgot header again

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12173 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus 2005-03-30 22:24:40 +00:00
parent 4c6f8b572e
commit 15b391f607
2 changed files with 18 additions and 6 deletions

View File

@ -165,24 +165,24 @@ class Painter {
const pattern& p = B_SOLID_HIGH) const; const pattern& p = B_SOLID_HIGH) const;
// strings // strings
void DrawChar( char aChar); BRect DrawChar( char aChar);
void DrawChar( char aChar, BRect DrawChar( char aChar,
BPoint baseLine); BPoint baseLine);
void DrawString( const char* utf8String, BRect DrawString( const char* utf8String,
uint32 length, uint32 length,
const escapement_delta* delta = NULL); const escapement_delta* delta = NULL);
void DrawString( const char* utf8String, BRect DrawString( const char* utf8String,
uint32 length, uint32 length,
BPoint baseLine, BPoint baseLine,
const escapement_delta* delta = NULL); const escapement_delta* delta = NULL);
void DrawString( const char* utf8String, BRect DrawString( const char* utf8String,
const escapement_delta* delta = NULL); const escapement_delta* delta = NULL);
void DrawString( const char* utf8String, BRect DrawString( const char* utf8String,
BPoint baseLine, BPoint baseLine,
const escapement_delta* delta = NULL); const escapement_delta* delta = NULL);
@ -224,6 +224,7 @@ class Painter {
void _Transform(float* width) const; void _Transform(float* width) const;
float _Transform(const float& width) const; float _Transform(const float& width) const;
void _Transform(BRect* rect) const; void _Transform(BRect* rect) const;
BRect _Transform(const BRect& rect) const;
void _RebuildClipping(); void _RebuildClipping();

View File

@ -787,6 +787,8 @@ Painter::DrawString(const char* utf8String, uint32 length,
transform.TranslateBy(baseLine); transform.TranslateBy(baseLine);
transform.Transform(&fPenLocation); transform.Transform(&fPenLocation);
} }
if (bounds.IsValid() && fClippingRegion)
bounds = bounds & _Transform(fClippingRegion->Frame());
return bounds; return bounds;
} }
@ -1000,6 +1002,15 @@ Painter::_Transform(BRect* rect) const
rect->bottom--; rect->bottom--;
} }
// _Transform
BRect
Painter::_Transform(const BRect& rect) const
{
BRect ret = rect;
_Transform(&ret);
return ret;
}
// _RebuildClipping // _RebuildClipping
void void
Painter::_RebuildClipping() Painter::_RebuildClipping()