www.pudn.com > screensaver.rar > Label.c


#include "Label.h" 
#include "graphics.h" 
#include "genlib.h" 
#include "extgraph.h" 
#include "commonlib.h" 
 
static void Label_OnRedraw(label_h lbl); 
 
label_h GenLabel(double left, double top, double width, double height, string text,  
				 int align, string bgcolor, string fgcolor, double bgdentisy) 
{ 
	label_h objLabel; 
 
	objLabel = New(label_h); 
 
	objLabel->win.left = left; 
	objLabel->win.top = top; 
	objLabel->win.width = width; 
	objLabel->win.height = height; 
	objLabel->win.text = text; 
	objLabel->win.onClick = NULL; 
	objLabel->win.onMouseMove = NULL; 
	objLabel->win.onMouseDown = NULL; 
	objLabel->win.onMouseUp = NULL; 
	objLabel->win.onMouseExit = NULL; 
	objLabel->win.onRedraw = Label_OnRedraw; 
	objLabel->align = align; 
	objLabel->bgcolor = bgcolor; 
	objLabel->bgdentisy = bgdentisy; 
	objLabel->fgcolor = fgcolor; 
 
	return objLabel; 
} 
 
static void Label_OnRedraw(label_h lbl) 
{ 
	double dblTextLen; 
	double dblY; 
	string strNewText; 
 
	StartFilledRegion(lbl->bgdentisy); 
	SetPenColor(lbl->bgcolor); 
	DrawBoxEx(lbl->win.left, lbl->win.top, lbl->win.width, lbl->win.height); 
	EndFilledRegion(); 
 
	SetPenColor(lbl->fgcolor); 
	strNewText = GetTextSummary(lbl->win.text, lbl->win.width); 
	dblTextLen = TextStringWidth(strNewText); 
 
	dblY = lbl->win.top + (lbl->win.height - GetFontHeight()) / 2; 
 
	switch(lbl->align) 
	{ 
	case ALIGN_LEFT: 
		MovePen(lbl->win.left, dblY); 
		DrawTextString(strNewText); 
		break; 
	case ALIGN_CENTER: 
		MovePen(lbl->win.left + (lbl->win.width - dblTextLen) / 2, dblY); 
		DrawTextString(strNewText); 
		break; 
	case ALIGN_RIGHT: 
		MovePen(lbl->win.left + lbl->win.height - dblTextLen, dblY); 
		DrawTextString(strNewText); 
		break; 
	} 
}