//----------------------------------------------------------------------------- void CDrawContext::drawString (UTF8StringPtr string, const CPoint& point, bool antialias) { if (string == 0 || currentState.font == 0) return; IFontPainter* painter = currentState.font->getFontPainter (); if (painter) { painter->drawString (this, getDrawString (string), point, antialias); clearDrawString (); } }
//----------------------------------------------------------------------------- CCoord CDrawContext::getStringWidth (UTF8StringPtr string) { CCoord result = -1; if (currentState.font == 0 || string == 0) return result; IFontPainter* painter = currentState.font->getFontPainter (); if (painter) { result = painter->getStringWidth (this, getDrawString (string), true); clearDrawString (); } return result; }
void XAP_UnixDialog_FontChooser::updatePreview(void) { // if we don't have anything yet, just ignore this request if (!m_gc) return; // if a font has been set since this dialog was launched, draw things with it if (m_doneFirstFont) { const UT_UCSChar * entryString = getDrawString (); if (!entryString) return; event_previewExposed(entryString); } else event_previewClear(); }
//----------------------------------------------------------------------------- void CDrawContext::drawString (UTF8StringPtr _string, const CRect& _rect, const CHoriTxtAlign hAlign, bool antialias) { if (!_string || currentState.font == 0) return; IFontPainter* painter = currentState.font->getFontPainter (); if (painter == 0) return; const CString& string = getDrawString (_string); CRect rect (_rect); double capHeight = -1; IPlatformFont* platformFont = currentState.font->getPlatformFont (); if (platformFont) capHeight = platformFont->getCapHeight (); if (capHeight > 0.) rect.bottom -= (rect.height ()/2 - capHeight / 2); else rect.bottom -= (rect.height ()/2 - currentState.font->getSize () / 2) + 1; if (hAlign != kLeftText) { CCoord stringWidth = painter->getStringWidth (this, string, antialias); if (hAlign == kRightText) rect.left = rect.right - stringWidth; else rect.left = (CCoord)(rect.left + (rect.getWidth () / 2.f) - (stringWidth / 2.f)); } CRect oldClip; getClipRect (oldClip); CRect newClip (_rect); newClip.bound (oldClip); setClipRect (newClip); painter->drawString (this, string, CPoint (rect.left, rect.bottom), antialias); setClipRect (oldClip); clearDrawString (); }
//----------------------------------------------------------------------------- void CDrawContext::drawString (UTF8StringPtr string, const CRect& rect, const CHoriTxtAlign hAlign, bool antialias) { drawString (getDrawString (string).getPlatformString (), rect, hAlign, antialias); clearDrawString (); }
//----------------------------------------------------------------------------- void CDrawContext::drawString (UTF8StringPtr string, const CPoint& point, bool antialias) { drawString (getDrawString (string).getPlatformString (), point, antialias); clearDrawString (); }
//----------------------------------------------------------------------------- CCoord CDrawContext::getStringWidth (UTF8StringPtr string) { return getStringWidth (getDrawString (string).getPlatformString ()); }