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;
}
}