void W_LABEL::display(int xOffset, int yOffset) { iV_SetTextColour(fontColour); QByteArray text = aText.toUtf8(); int fx; if (style & WLAB_ALIGNCENTRE) { int fw = iV_GetTextWidth(text.constData(), FontID); fx = xOffset + x() + (width() - fw) / 2; } else if (style & WLAB_ALIGNRIGHT) { int fw = iV_GetTextWidth(text.constData(), FontID); fx = xOffset + x() + width() - fw; } else { fx = xOffset + x(); } int fy; if ((style & WLAB_ALIGNTOPLEFT) != 0) // Align top { fy = yOffset + y() - iV_GetTextAboveBase(FontID); } else if ((style & WLAB_ALIGNBOTTOMLEFT) != 0) // Align bottom { fy = yOffset + y() - iV_GetTextAboveBase(FontID) + (height() - iV_GetTextLineSize(FontID)); } else { fy = yOffset + y() - iV_GetTextAboveBase(FontID) + (height() - iV_GetTextLineSize(FontID)) / 2; } iV_DrawText(text.constData(), fx, fy, FontID); }
/* label display function */ void labelDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours) { SDWORD fx,fy, fw; W_LABEL *psLabel; enum iV_fonts FontID; psLabel = (W_LABEL *)psWidget; FontID = psLabel->FontID; iV_SetFont(FontID); iV_SetTextColour(pColours[WCOL_TEXT]); if (psLabel->style & WLAB_ALIGNCENTRE) { fw = iV_GetTextWidth(psLabel->aText); fx = xOffset + psLabel->x + (psLabel->width - fw) / 2; } else if (psLabel->style & WLAB_ALIGNRIGHT) { fw = iV_GetTextWidth(psLabel->aText); fx = xOffset + psLabel->x + psLabel->width - fw; } else { fx = xOffset + psLabel->x; } fy = yOffset + psLabel->y + (psLabel->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); iV_DrawText(psLabel->aText,fx,fy); }
/* label display function */ void labelDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, UDWORD *pColours) { SDWORD fx,fy, fw; W_LABEL *psLabel; // PROP_FONT *psFont; int FontID; psLabel = (W_LABEL *)psWidget; // psFont = psLabel->psFont; FontID = psLabel->FontID; iV_SetFont(FontID); // fontSetCacheColour(*(pColours + WCOL_TEXT)); iV_SetTextColour((UWORD)*(pColours + WCOL_TEXT)); if (psLabel->style & WLAB_ALIGNCENTRE) { fw = iV_GetTextWidth(psLabel->aText); fx = xOffset + psLabel->x + (psLabel->width - fw) / 2; } else if (psLabel->style & WLAB_ALIGNRIGHT) { fw = iV_GetTextWidth(psLabel->aText); fx = xOffset + psLabel->x + psLabel->width - fw; } else { fx = xOffset + psLabel->x; } fy = yOffset + psLabel->y + (psLabel->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); // fy = yOffset + psLabel->y + (psLabel->height - // psFont->height + psFont->baseLine) / 2; iV_DrawText(psLabel->aText,fx,fy); // fontPrint(fx,fy, psLabel->aText); }
// //////////////////////////////////////////////////////////////////////////// // show a text option. void displayTextOption(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, WZ_DECL_UNUSED PIELIGHT *pColours) { SDWORD fx,fy, fw; W_BUTTON *psBut; bool hilight = false; bool greyOut = psWidget->UserData; // if option is unavailable. psBut = (W_BUTTON *)psWidget; iV_SetFont(psBut->FontID); if(widgGetMouseOver(psWScreen) == psBut->id) // if mouse is over text then hilight. { hilight = true; } fw = iV_GetTextWidth(psBut->pText); fy = yOffset + psWidget->y + (psWidget->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); if (psWidget->style & WBUT_TXTCENTRE) //check for centering, calculate offset. { fx = xOffset + psWidget->x + ((psWidget->width - fw) / 2); } else { fx = xOffset + psWidget->x; } if(greyOut) // unavailable { iV_SetTextColour(WZCOL_TEXT_DARK); } else // available { if(hilight) // hilight { iV_SetTextColour(WZCOL_TEXT_BRIGHT); } else // dont highlight { iV_SetTextColour(WZCOL_TEXT_MEDIUM); } } iV_DrawText( psBut->pText, fx, fy); return; }
void W_BUTTON::display(int xOffset, int yOffset) { int x0 = x() + xOffset; int y0 = y() + yOffset; int x1 = x0 + width(); int y1 = y0 + height(); bool haveText = !pText.isEmpty(); bool isDown = (state & (WBUT_DOWN | WBUT_LOCK | WBUT_CLICKLOCK)) != 0; bool isDisabled = (state & WBUT_DISABLE) != 0; bool isHighlight = (state & WBUT_HIGHLIGHT) != 0; // Display the button. if (!images.normal.isNull()) { iV_DrawImage(images.normal, x0, y0); if (isDown && !images.down.isNull()) { iV_DrawImage(images.down, x0, y0); } if (isDisabled && !images.disabled.isNull()) { iV_DrawImage(images.disabled, x0, y0); } if (isHighlight && !images.highlighted.isNull()) { iV_DrawImage(images.highlighted, x0, y0); } } else { iV_ShadowBox(x0, y0, x1, y1, 0, WZCOL_FORM_LIGHT, isDisabled ? WZCOL_FORM_LIGHT : WZCOL_FORM_DARK, WZCOL_FORM_BACKGROUND); if (isHighlight) { iV_Box(x0 + 2, y0 + 2, x1 - 3, y1 - 3, WZCOL_FORM_HILITE); } } if (haveText) { int fw = iV_GetTextWidth(pText.toUtf8().c_str(), FontID); int fx = x0 + (width() - fw) / 2; int fy = y0 + (height() - iV_GetTextLineSize(FontID)) / 2 - iV_GetTextAboveBase(FontID); if (isDisabled) { iV_SetTextColour(WZCOL_FORM_LIGHT); iV_DrawText(pText.toUtf8().c_str(), fx + 1, fy + 1, FontID); iV_SetTextColour(WZCOL_FORM_DISABLE); } else { iV_SetTextColour(WZCOL_FORM_TEXT); } iV_DrawText(pText.toUtf8().c_str(), fx, fy, FontID); } if (isDisabled && !images.normal.isNull() && images.disabled.isNull()) { // disabled, render something over it! iV_TransBoxFill(x0, y0, x0 + width(), y0 + height()); } }
/* Display a button */ void buttonDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours) { W_BUTTON *psButton; SDWORD x0,y0,x1,y1, fx,fy,fw; int CurrFontID; ASSERT(psWidget != NULL && pColours != NULL, "Invalid pointers"); if (!psWidget || !pColours) { return; } psButton = (W_BUTTON *)psWidget; CurrFontID = psButton->FontID; x0=psButton->x + xOffset; y0=psButton->y + yOffset; x1=x0 + psButton->width; y1=y0 + psButton->height; if (psButton->state & (WBUTS_DOWN | WBUTS_LOCKED | WBUTS_CLICKLOCK)) { /* Display the button down */ pie_BoxFill(x0, y0, x1, y1, pColours[WCOL_BKGRND]); iV_Line(x0,y0, x1,y0, pColours[WCOL_DARK]); iV_Line(x0,y0, x0,y1, pColours[WCOL_DARK]); iV_Line(x0,y1, x1,y1, pColours[WCOL_LIGHT]); iV_Line(x1,y1, x1,y0, pColours[WCOL_LIGHT]); if (psButton->pText) { iV_SetFont(psButton->FontID); iV_SetTextColour(pColours[WCOL_TEXT]); fw = iV_GetTextWidth(psButton->pText); if(psButton->style & WBUT_NOCLICKMOVE) { fx = x0 + (psButton->width - fw) / 2 + 1; fy = y0 + 1 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); } else { fx = x0 + (psButton->width - fw) / 2; fy = y0 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); } iV_DrawText(psButton->pText,fx,fy); } if (psButton->state & WBUTS_HILITE) { /* Display the button hilite */ iV_Line(x0+3,y0+3, x1-2,y0+3, pColours[WCOL_HILITE]); iV_Line(x0+3,y0+3, x0+3,y1-2, pColours[WCOL_HILITE]); iV_Line(x0+3,y1-2, x1-2,y1-2, pColours[WCOL_HILITE]); iV_Line(x1-2,y1-2, x1-2,y0+3, pColours[WCOL_HILITE]); } } else if (psButton->state & WBUTS_GREY) { /* Display the disabled button */ pie_BoxFill(x0, y0, x1, y1, pColours[WCOL_BKGRND]); iV_Line(x0,y0, x1,y0, pColours[WCOL_LIGHT]); iV_Line(x0,y0, x0,y1, pColours[WCOL_LIGHT]); iV_Line(x0,y1, x1,y1, pColours[WCOL_DARK]); iV_Line(x1,y1, x1,y0, pColours[WCOL_DARK]); if (psButton->pText) { iV_SetFont(psButton->FontID); fw = iV_GetTextWidth(psButton->pText); fx = x0 + (psButton->width - fw) / 2; fy = y0 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); iV_SetTextColour(pColours[WCOL_LIGHT]); iV_DrawText(psButton->pText, fx+1, fy+1); iV_SetTextColour(pColours[WCOL_DISABLE]); iV_DrawText(psButton->pText, fx, fy); } if (psButton->state & WBUTS_HILITE) { /* Display the button hilite */ iV_Line(x0+2,y0+2, x1-3,y0+2, pColours[WCOL_HILITE]); iV_Line(x0+2,y0+2, x0+2,y1-3, pColours[WCOL_HILITE]); iV_Line(x0+2,y1-3, x1-3,y1-3, pColours[WCOL_HILITE]); iV_Line(x1-3,y1-3, x1-3,y0+2, pColours[WCOL_HILITE]); } } else { /* Display the button up */ pie_BoxFill(x0, y0, x1, y1, pColours[WCOL_BKGRND]); iV_Line(x0,y0, x1,y0, pColours[WCOL_LIGHT]); iV_Line(x0,y0, x0,y1, pColours[WCOL_LIGHT]); iV_Line(x0,y1, x1,y1, pColours[WCOL_DARK]); iV_Line(x1,y1, x1,y0, pColours[WCOL_DARK]); if (psButton->pText) { iV_SetFont(psButton->FontID); iV_SetTextColour(pColours[WCOL_TEXT]); fw = iV_GetTextWidth(psButton->pText); fx = x0 + (psButton->width - fw) / 2; fy = y0 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); iV_DrawText(psButton->pText, fx, fy); } if (psButton->state & WBUTS_HILITE) { /* Display the button hilite */ iV_Line(x0+2,y0+2, x1-3,y0+2, pColours[WCOL_HILITE]); iV_Line(x0+2,y0+2, x0+2,y1-3, pColours[WCOL_HILITE]); iV_Line(x0+2,y1-3, x1-3,y1-3, pColours[WCOL_HILITE]); iV_Line(x1-3,y1-3, x1-3,y0+2, pColours[WCOL_HILITE]); } } }
/* Display a button */ void buttonDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, UDWORD *pColours) { W_BUTTON *psButton; SDWORD x0,y0,x1,y1, fx,fy,fw; // PROP_FONT *psCurrFont; int CurrFontID; ASSERT((PTRVALID(psWidget, sizeof(W_BUTTON)), "buttonDisplay: Invalid widget pointer")); psButton = (W_BUTTON *)psWidget; // psCurrFont = psButton->psFont; CurrFontID = psButton->FontID; x0=psButton->x + xOffset; y0=psButton->y + yOffset; x1=x0 + psButton->width; y1=y0 + psButton->height; if (psButton->state & (WBUTS_DOWN | WBUTS_LOCKED | WBUTS_CLICKLOCK)) { /* Display the button down */ pie_BoxFillIndex(x0,y0,x1,y1,WCOL_BKGRND); iV_Line(x0,y0, x1,y0,*(pColours + WCOL_DARK)); iV_Line(x0,y0, x0,y1,*(pColours + WCOL_DARK)); iV_Line(x0,y1, x1,y1,*(pColours + WCOL_LIGHT)); iV_Line(x1,y1, x1,y0,*(pColours + WCOL_LIGHT)); if (psButton->pText) { iV_SetFont(psButton->FontID); iV_SetTextColour((UWORD)*(pColours + WCOL_TEXT)); fw = iV_GetTextWidth(psButton->pText); if(psButton->style & WBUT_NOCLICKMOVE) { fx = x0 + (psButton->width - fw) / 2 + 1; fy = y0 + 1 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); } else { fx = x0 + (psButton->width - fw) / 2; fy = y0 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); } iV_DrawText(psButton->pText,fx,fy); } if (psButton->state & WBUTS_HILITE) { /* Display the button hilite */ iV_Line(x0+3,y0+3, x1-2,y0+3,*(pColours + WCOL_HILITE)); iV_Line(x0+3,y0+3, x0+3,y1-2,*(pColours + WCOL_HILITE)); iV_Line(x0+3,y1-2, x1-2,y1-2,*(pColours + WCOL_HILITE)); iV_Line(x1-2,y1-2, x1-2,y0+3,*(pColours + WCOL_HILITE)); } } else if (psButton->state & WBUTS_GREY) { /* Display the disabled button */ pie_BoxFillIndex(x0,y0,x1,y1,WCOL_BKGRND); iV_Line(x0,y0, x1,y0,*(pColours + WCOL_LIGHT)); iV_Line(x0,y0, x0,y1,*(pColours + WCOL_LIGHT)); iV_Line(x0,y1, x1,y1,*(pColours + WCOL_DARK)); iV_Line(x1,y1, x1,y0,*(pColours + WCOL_DARK)); if (psButton->pText) { iV_SetFont(psButton->FontID); fw = iV_GetTextWidth(psButton->pText); fx = x0 + (psButton->width - fw) / 2; fy = y0 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); iV_SetTextColour((UWORD)*(pColours + WCOL_LIGHT)); iV_DrawText(psButton->pText,fx+1,fy+1); iV_SetTextColour((UWORD)*(pColours + WCOL_DISABLE)); iV_DrawText(psButton->pText,fx,fy); } if (psButton->state & WBUTS_HILITE) { /* Display the button hilite */ iV_Line(x0+2,y0+2, x1-3,y0+2,*(pColours + WCOL_HILITE)); iV_Line(x0+2,y0+2, x0+2,y1-3,*(pColours + WCOL_HILITE)); iV_Line(x0+2,y1-3, x1-3,y1-3,*(pColours + WCOL_HILITE)); iV_Line(x1-3,y1-3, x1-3,y0+2,*(pColours + WCOL_HILITE)); } } else { /* Display the button up */ pie_BoxFillIndex(x0,y0,x1,y1,WCOL_BKGRND); iV_Line(x0,y0, x1,y0,*(pColours + WCOL_LIGHT)); iV_Line(x0,y0, x0,y1,*(pColours + WCOL_LIGHT)); iV_Line(x0,y1, x1,y1,*(pColours + WCOL_DARK)); iV_Line(x1,y1, x1,y0,*(pColours + WCOL_DARK)); //if (0) if (psButton->pText) { iV_SetFont(psButton->FontID); iV_SetTextColour((UWORD)*(pColours + WCOL_TEXT)); fw = iV_GetTextWidth(psButton->pText); fx = x0 + (psButton->width - fw) / 2; fy = y0 + (psButton->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); iV_DrawText(psButton->pText,fx,fy); } if (psButton->state & WBUTS_HILITE) { /* Display the button hilite */ iV_Line(x0+2,y0+2, x1-3,y0+2,*(pColours + WCOL_HILITE)); iV_Line(x0+2,y0+2, x0+2,y1-3,*(pColours + WCOL_HILITE)); iV_Line(x0+2,y1-3, x1-3,y1-3,*(pColours + WCOL_HILITE)); iV_Line(x1-3,y1-3, x1-3,y0+2,*(pColours + WCOL_HILITE)); } } }
/* The edit box display function */ void editBoxDisplay(WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours) { W_EDITBOX *psEdBox; SDWORD x0,y0,x1,y1, fx,fy, cx,cy; enum iV_fonts CurrFontID; #if CURSOR_BLINK bool blink; #endif psEdBox = (W_EDITBOX *)psWidget; CurrFontID = psEdBox->FontID; x0=psEdBox->x + xOffset; y0=psEdBox->y + yOffset; x1=x0 + psEdBox->width; y1=y0 + psEdBox->height; if(psEdBox->pBoxDisplay) { psEdBox->pBoxDisplay((WIDGET *)psEdBox, xOffset, yOffset, pColours); } else { pie_BoxFill(x0, y0, x1, y1, pColours[WCOL_BKGRND]); iV_Line(x0,y0, x1,y0, pColours[WCOL_DARK]); iV_Line(x0,y0, x0,y1, pColours[WCOL_DARK]); iV_Line(x0,y1, x1,y1, pColours[WCOL_LIGHT]); iV_Line(x1,y1, x1,y0, pColours[WCOL_LIGHT]); } fx = x0 + WEDB_XGAP;// + (psEdBox->width - fw) / 2; iV_SetFont(CurrFontID); iV_SetTextColour(pColours[WCOL_TEXT]); fy = y0 + (psEdBox->height - iV_GetTextLineSize())/2 - iV_GetTextAboveBase(); /* If there is more text than will fit into the box, display the bit with the cursor in it */ QString tmp = psEdBox->aText; tmp.remove(0, psEdBox->printStart); // Erase anything there isn't room to display. tmp.remove(psEdBox->printChars, tmp.length()); // if(psEdBox->pFontDisplay) { // psEdBox->pFontDisplay(fx,fy, pPrint); // } else { iV_DrawText(tmp.toUtf8().constData(), fx, fy); // } // Display the cursor if editing #if CURSOR_BLINK blink = !(((wzGetTicks() - psEdBox->blinkOffset)/WEDB_BLINKRATE) % 2); if ((psEdBox->state & WEDBS_MASK) == WEDBS_INSERT && blink) #else if ((psEdBox->state & WEDBS_MASK) == WEDBS_INSERT) #endif { // insert mode QString tmp = psEdBox->aText; tmp.remove(psEdBox->insPos, tmp.length()); // Erase from the cursor on, to find where the cursor should be. tmp.remove(0, psEdBox->printStart); cx = x0 + WEDB_XGAP + iV_GetTextWidth(tmp.toUtf8().constData()); cx += iV_GetTextWidth("-"); cy = fy; iV_Line(cx, cy + iV_GetTextAboveBase(), cx, cy - iV_GetTextBelowBase(), pColours[WCOL_CURSOR]); } #if CURSOR_BLINK else if ((psEdBox->state & WEDBS_MASK) == WEDBS_OVER && blink) #else else if ((psEdBox->state & WEDBS_MASK) == WEDBS_OVER) #endif { // overwrite mode QString tmp = psEdBox->aText; tmp.remove(psEdBox->insPos, tmp.length()); // Erase from the cursor on, to find where the cursor should be. tmp.remove(0, psEdBox->printStart); cx = x0 + WEDB_XGAP + iV_GetTextWidth(tmp.toUtf8().constData()); cy = fy; iV_Line(cx, cy, cx + WEDB_CURSORSIZE, cy, pColours[WCOL_CURSOR]); } if(psEdBox->pBoxDisplay == NULL) { if (psEdBox->state & WEDBS_HILITE) { /* Display the button hilite */ iV_Line(x0-2,y0-2, x1+2,y0-2, pColours[WCOL_HILITE]); iV_Line(x0-2,y0-2, x0-2,y1+2, pColours[WCOL_HILITE]); iV_Line(x0-2,y1+2, x1+2,y1+2, pColours[WCOL_HILITE]); iV_Line(x1+2,y1+2, x1+2,y0-2, pColours[WCOL_HILITE]); } } }
void W_EDITBOX::display(int xOffset, int yOffset) { int x0 = x() + xOffset; int y0 = y() + yOffset; int x1 = x0 + width(); int y1 = y0 + height(); if (pBoxDisplay != nullptr) { pBoxDisplay(this, xOffset, yOffset); } else { iV_ShadowBox(x0, y0, x1, y1, 0, boxColourFirst, boxColourSecond, boxColourBackground); } int fx = x0 + WEDB_XGAP;// + (psEdBox->width - fw) / 2; iV_SetTextColour(WZCOL_FORM_TEXT); int fy = y0 + (height() - iV_GetTextLineSize(FontID)) / 2 - iV_GetTextAboveBase(FontID); /* If there is more text than will fit into the box, display the bit with the cursor in it */ QString tmp = aText; tmp.remove(0, printStart); // Erase anything there isn't room to display. tmp.remove(printChars, tmp.length()); iV_DrawText(tmp.toUtf8().constData(), fx, fy, FontID); // Display the cursor if editing #if CURSOR_BLINK bool blink = !(((wzGetTicks() - blinkOffset) / WEDB_BLINKRATE) % 2); if ((state & WEDBS_MASK) == WEDBS_INSERT && blink) #else if ((state & WEDBS_MASK) == WEDBS_INSERT) #endif { // insert mode QString tmp = aText; tmp.remove(insPos, tmp.length()); // Erase from the cursor on, to find where the cursor should be. tmp.remove(0, printStart); int cx = x0 + WEDB_XGAP + iV_GetTextWidth(tmp.toUtf8().constData(), FontID); cx += iV_GetTextWidth("-", FontID); int cy = fy; iV_Line(cx, cy + iV_GetTextAboveBase(FontID), cx, cy - iV_GetTextBelowBase(FontID), WZCOL_FORM_CURSOR); } #if CURSOR_BLINK else if ((state & WEDBS_MASK) == WEDBS_OVER && blink) #else else if ((state & WEDBS_MASK) == WEDBS_OVER) #endif { // overwrite mode QString tmp = aText; tmp.remove(insPos, tmp.length()); // Erase from the cursor on, to find where the cursor should be. tmp.remove(0, printStart); int cx = x0 + WEDB_XGAP + iV_GetTextWidth(tmp.toUtf8().constData(), FontID); int cy = fy; iV_Line(cx, cy, cx + WEDB_CURSORSIZE, cy, WZCOL_FORM_CURSOR); } if (pBoxDisplay == nullptr) { if ((state & WEDBS_HILITE) != 0) { /* Display the button hilite */ iV_Box(x0 - 2, y0 - 2, x1 + 2, y1 + 2, WZCOL_FORM_HILITE); } } }
/* Update and possibly display the tip */ void tipDisplay() { SDWORD newMX, newMY; SDWORD currTime; SDWORD fw, topGap; switch (tipState) { case TIP_WAIT: /* See if the tip has to be shown */ newMX = mouseX(); newMY = mouseY(); currTime = wzGetTicks(); if (newMX == mx && newMY == my && (currTime - startTime > TIP_PAUSE)) { /* Activate the tip */ tipState = TIP_ACTIVE; /* Calculate the size of the tip box */ topGap = TIP_VGAP; iV_SetFont(FontID); lineHeight = iV_GetTextLineSize(); fw = 0; for (int n = 0; n < pTip.size(); ++n) { fw = std::max<int>(fw, iV_GetTextWidth(pTip[n].toUtf8().constData())); } tw = fw + TIP_HGAP * 2; th = topGap * 2 + lineHeight * pTip.size() + iV_GetTextBelowBase(); /* Position the tip box */ tx = clip(wx + ww / 2, 0, screenWidth - tw - 1); ty = std::max(wy + wh + TIP_VGAP, 0); if (ty + th >= (int)screenHeight) { /* Position the tip above the button */ ty = wy - th - TIP_VGAP; } /* Position the text */ fx = tx + TIP_HGAP; fy = ty + (th - lineHeight * pTip.size()) / 2 - iV_GetTextAboveBase(); /* Note the time */ startTime = wzGetTicks(); } else if (newMX != mx || newMY != my || mousePressed(MOUSE_LMB)) { mx = newMX; my = newMY; startTime = currTime; } break; case TIP_ACTIVE: /* Draw the tool tip */ pie_BoxFill(tx, ty, tx + tw, ty + th, WZCOL_FORM_TIP_BACKGROUND); iV_Line(tx + 1, ty + th - 2, tx + 1, ty + 1, WZCOL_FORM_DARK); iV_Line(tx + 2, ty + 1, tx + tw - 2, ty + 1, WZCOL_FORM_DARK); iV_Line(tx, ty + th, tx + tw, ty + th, WZCOL_FORM_DARK); iV_Line(tx + tw, ty + th - 1, tx + tw, ty, WZCOL_FORM_DARK); iV_Box(tx, ty, tx + tw - 1, ty + th - 1, WZCOL_FORM_LIGHT); iV_SetFont(FontID); iV_SetTextColour(TipColour); for (int n = 0; n < pTip.size(); ++n) { iV_DrawText(pTip[n].toUtf8().constData(), fx, fy + lineHeight * n); } break; default: break; } }