Exemple #1
0
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
//		¥ CalcTextRect
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// Returns the rectangle occupied by a text string in the current settings
void CBLCanvas::CalcTextRect(
	SInt16			inX,
	SInt16			inY,
	const CCString	&inStr,
	Rect			&outRect)
{
	UWorldSaver		safe(mWorld);
	
	::TextFace(mTextFace);
	::TextFont(mFontId);
	::TextSize(mTextSize);

	SInt16			width=::TextWidth(inStr.mString,0,inStr.GetLength());
	FontInfo		fontInfo;
	
	::GetFontInfo(&fontInfo);		// could cache this?
	
	outRect.left=inX;
	outRect.right=outRect.left+width;
	outRect.top=inY-fontInfo.ascent;
	outRect.bottom=inY+fontInfo.descent;
}
Exemple #2
0
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
//		¥ DrawText
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
// Draws the text in the current face, font, size, col etc
void CBLCanvas::DrawText(
	SInt16			inX,
	SInt16			inY,
	const CCString	&inStr)
{
	UWorldSaver		safe(mWorld);
	
	::RGBForeColour(&mForeColour);
	::RGBBackColour(&mBackColour);
	::TextFace(mTextFace);
	::TextFont(mFontId);
	::TextSize(mTextSize);
	::MoveTo(inX,inY);
	::DrawText(inStr.mString,0,inStr.GetLength());
	
	// Inval the rect
	if (mInvalCanvasAsDraw)
	{
		Rect	rect;
		// figure the text rectangle
		CalcTextRect(inX,inY,inStr,rect);
		InvalCanvasRect(rect);
	}
}