void CCommandLineDisplay::Output (const CString &sOutput, CG32bitPixel rgbColor) // Output // // Output the given string { int i; if (m_pFonts == NULL || m_pFonts->Console.GetAverageWidth() == 0) return; if (rgbColor.IsNull()) rgbColor = TEXT_COLOR; if (sOutput.IsBlank()) { AppendOutput(NULL_STR, rgbColor); return; } int cxCol = m_pFonts->Console.GetAverageWidth(); int iCols = Max(1, (RectWidth(m_rcRect) - (LEFT_SPACING + RIGHT_SPACING)) / cxCol); // Split into lines TArray<CString> Lines; m_pFonts->Console.BreakText(sOutput, (RectWidth(m_rcRect) - (LEFT_SPACING + RIGHT_SPACING)), &Lines); // Split the string into parts for (i = 0; i < Lines.GetCount(); i++) AppendOutput(Lines[i], rgbColor); }
void CGSelectorArea::PaintModifier (CG32bitImage &Dest, int x, int y, const CString &sText, CG32bitPixel rgbColor, CG32bitPixel rgbBackColor, int *rety) // PaintModifier // // Paints a modifier block. { int cx = m_VI.GetFont(fontSmall).MeasureText(sText); if (!rgbBackColor.IsNull()) Dest.Fill(x - cx - 8, y, cx + 8, m_VI.GetFont(fontSmall).GetHeight(), rgbBackColor); m_VI.GetFont(fontSmall).DrawText(Dest, x - cx - 4, y, rgbColor, sText); if (rety) *rety = y + m_VI.GetFont(fontSmall).GetHeight() + 1; }
void CGButtonArea::Paint (CG32bitImage &Dest, const RECT &rcRect) // Paint // // Handle paint { int i; // Paint the background CG32bitPixel rgbBackColor = ((m_bMouseOver && !m_bDisabled) ? m_rgbBackColorHover : (m_bDisabled ? CG32bitPixel(m_rgbBackColor, 0xC0) : m_rgbBackColor)); if (!rgbBackColor.IsNull()) { if (m_iBorderRadius > 0) { CGDraw::RoundedRect(Dest, rcRect.left, rcRect.top, RectWidth(rcRect), RectHeight(rcRect), m_iBorderRadius, rgbBackColor); CGDraw::RoundedRectOutline(Dest, rcRect.left, rcRect.top, RectWidth(rcRect), RectHeight(rcRect), m_iBorderRadius, 1, m_rgbBorderColor); } else Dest.Fill(rcRect.left, rcRect.top, RectWidth(rcRect), RectHeight(rcRect), rgbBackColor); } // Paint the label int xPaint = rcRect.left + m_rcPadding.left; int yPaint = rcRect.top + m_rcPadding.top; if (m_pLabelFont) { // If we're disabled, paint gray if (m_bDisabled) Dest.DrawText(xPaint, yPaint, *m_pLabelFont, RGB_DISABLED_TEXT, m_sLabel); // If we have a prefix accelerator, draw that else if (!m_sAccelerator.IsBlank()) { // Measure the size of the accelerator int cyAccel; int cxAccel = m_pLabelFont->MeasureText(m_sAccelerator, &cyAccel); // We draw a rounded-rect box int cxBox = cxAccel + (2 * ACCEL_INNER_PADDING); int cyBox = cyAccel + 1; CGDraw::RoundedRect(Dest, xPaint, yPaint, cxBox, cyBox, ACCEL_BORDER_RADIUS, m_rgbAccelColor); // Draw the text Dest.DrawText(xPaint + ACCEL_INNER_PADDING, yPaint, *m_pLabelFont, CG32bitPixel(0, 0, 0), m_sAccelerator); // Now draw the rest of the label Dest.DrawText(xPaint + cxBox + (2 * ACCEL_INNER_PADDING), yPaint, *m_pLabelFont, m_rgbLabelColor, m_sLabel); } // If we have an accelerator, paint in pieces else if (m_iAccelerator != -1) { char *pPos = m_sLabel.GetASCIIZPointer(); int x = xPaint; if (m_iAccelerator > 0) Dest.DrawText(x, yPaint, *m_pLabelFont, m_rgbLabelColor, CString(pPos, m_iAccelerator, true), 0, &x); Dest.DrawText(x, yPaint, *m_pLabelFont, m_rgbAccelColor, CString(pPos + m_iAccelerator, 1, true), 0, &x); Dest.DrawText(x, yPaint, *m_pLabelFont, m_rgbLabelColor, CString(pPos + m_iAccelerator + 1, m_sLabel.GetLength() - m_iAccelerator - 1, true)); } else Dest.DrawText(xPaint, yPaint, *m_pLabelFont, m_rgbLabelColor, m_sLabel); yPaint += m_pLabelFont->GetHeight(); } // Paint the description if (m_pDescFont) { for (i = 0; i < m_Lines.GetCount(); i++) { Dest.DrawText(xPaint, yPaint, *m_pDescFont, m_rgbDescColor, m_Lines[i]); yPaint += m_pDescFont->GetHeight(); } } }