Пример #1
0
/* Функция построения информационного объекта анимации.
 * АРГУМЕНТЫ:
 *   - указатель на "себя" - сам объект анимации:
 *       vg4UNIT *Unit;
 *   - указатель на контекст анимации:
 *       vg4UNIT_INFO *Ani;
 * ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: Нет.
 */
static VOID InfoUnitRender( vg4UNIT_INFO *Unit, vg4ANIM *Ani )
{
  INT x, y;
  static CHAR Buf[1000];

  SetBkMode(Ani->hDC, TRANSPARENT);
  SetTextColor(Ani->hDC, RGB(255, 255, 155));
  TextOut(Ani->hDC, 10, 10, Buf, sprintf(Buf, "FPS: %.3f", Ani->FPS));

  TextOut(Ani->hDC, 10, 30, Buf,
    sprintf(Buf, "x:% i y:% i dx:% i dy:% i w:% i",
    Ani->MsX, Ani->MsY, Ani->MsDeltaX, Ani->MsDeltaY,
    Ani->MsWheel));

  x = sprintf(Buf, "jx:% f jy:% f jz:% f jr:% f ju:% f POV: %i",
    Ani->JX, Ani->JY, Ani->JZ, Ani->JR, Ani->JU, Ani->JPOV);
  for (y = 0; y < 32; y++)
    x += sprintf(Buf + x, "%s", Ani->JButs[y] ? "#" : "_");

  TextOut(Ani->hDC, 10, 50, Buf, x);

  x = (Ani->W - Unit->And.W) + Ani->JX * Unit->Amp * sin(Ani->Time * 0.30 + Unit->Shift);
  y = (Ani->H - Unit->And.H) + Ani->JY * Unit->Amp * cos(Ani->Time * 0.30 + Unit->Shift);
  ImageDraw(&Unit->And, Ani->hDC, x, y, SRCAND);
  ImageDraw(&Unit->Xor, Ani->hDC, x, y, SRCINVERT);
} /* End of 'InfoUnitRender' function */
Пример #2
0
static void LabelElementDraw(
    void *clientData, void *elementRecord, Tk_Window tkwin,
    Drawable d, Ttk_Box b, Ttk_State state)
{
    LabelElement *l = elementRecord;
    Tk_Anchor anchor = TK_ANCHOR_CENTER;

    LabelSetup(l, tkwin, state);

    /*
     * Adjust overall parcel based on -anchor:
     */
    Tk_GetAnchorFromObj(NULL, l->text.anchorObj, &anchor);
    b = Ttk_AnchorBox(b, l->totalWidth, l->totalHeight, anchor);

    /*
     * Draw text and/or image parts based on -compound:
     */
    switch (l->compound)
    {
	case TTK_COMPOUND_NONE:
	    /* Can't happen */
	    break;
	case TTK_COMPOUND_TEXT:
	    TextDraw(&l->text,tkwin,d,b);
	    break;
	case TTK_COMPOUND_IMAGE:
	    ImageDraw(&l->image,tkwin,d,b,state);
	    break;
	case TTK_COMPOUND_CENTER:
	{
	    Ttk_Box pb = Ttk_AnchorBox(
		b, l->image.width, l->image.height, TK_ANCHOR_CENTER);
	    ImageDraw(&l->image, tkwin, d, pb, state);
	    pb = Ttk_AnchorBox(
		b, l->text.width, l->text.height, TK_ANCHOR_CENTER);
	    TextDraw(&l->text, tkwin, d, pb);
	    break;
	}
	case TTK_COMPOUND_TOP:
	    DrawCompound(l, b, tkwin, d, state, TTK_SIDE_TOP, TTK_SIDE_BOTTOM);
	    break;
	case TTK_COMPOUND_BOTTOM:
	    DrawCompound(l, b, tkwin, d, state, TTK_SIDE_BOTTOM, TTK_SIDE_TOP);
	    break;
	case TTK_COMPOUND_LEFT:
	    DrawCompound(l, b, tkwin, d, state, TTK_SIDE_LEFT, TTK_SIDE_RIGHT);
	    break;
	case TTK_COMPOUND_RIGHT:
	    DrawCompound(l, b, tkwin, d, state, TTK_SIDE_RIGHT, TTK_SIDE_LEFT);
	    break;
    }

    LabelCleanup(l);
}
Пример #3
0
/*
 * DrawCompound --
 * 	Helper routine for LabelElementDraw;
 * 	Handles layout for -compound {left,right,top,bottom}
 */
static void DrawCompound(
    LabelElement *l, Ttk_Box b, Tk_Window tkwin, Drawable d, Ttk_State state,
    int imageSide, int textSide)
{
    Ttk_Box imageBox =
	Ttk_PlaceBox(&b, l->image.width, l->image.height, imageSide, 0);
    Ttk_Box textBox =
	Ttk_PlaceBox(&b, l->text.width, l->text.height, textSide, 0);
    ImageDraw(&l->image,tkwin,d,imageBox,state);
    TextDraw(&l->text,tkwin,d,textBox);
}
Пример #4
0
static void ImageElementDraw(
    void *clientData, void *elementRecord, Tk_Window tkwin,
    Drawable d, Ttk_Box b, Ttk_State state)
{
    ImageElement *image = elementRecord;

    if (ImageSetup(image, tkwin, state)) {
	ImageDraw(image, tkwin, d, b, state);
	ImageCleanup(image);
    }
}
Пример #5
0
void CreditsDraw(SDL_Surface* screen)
{
    ImageDraw(screen, &c_background);
    TextDraw(&t, screen, "Programmed by: Nenad Palinkasevic... level over 9000.");
    ButtonDraw(&back, screen);
}