TDemoWindow::TDemoWindow(const TRect& bounds, const char *aTitle, short aNumber) : TWindowInit(&TDemoWindow::initFrame), TWindow(bounds, aTitle, aNumber) { TRect r = getClipRect(); r.grow(-1, -1); options |= ofTileable; insert(new TInterior(r)); }
void RenderForeignObject::paint(PaintInfo& paintInfo, int parentX, int parentY) { if (paintInfo.context->paintingDisabled()) return; paintInfo.context->save(); paintInfo.context->concatCTM(AffineTransform().translate(parentX, parentY)); paintInfo.context->concatCTM(localTransform()); paintInfo.context->concatCTM(translationForAttributes()); paintInfo.context->clip(getClipRect(parentX, parentY)); float opacity = style()->opacity(); if (opacity < 1.0f) // FIXME: Possible optimization by clipping to bbox here, once relativeBBox is implemented & clip, mask and filter support added. paintInfo.context->beginTransparencyLayer(opacity); PaintInfo pi(paintInfo); pi.rect = absoluteTransform().inverse().mapRect(paintInfo.rect); RenderBlock::paint(pi, 0, 0); if (opacity < 1.0f) paintInfo.context->endTransparencyLayer(); paintInfo.context->restore(); }
TDemoWindow::TDemoWindow( const TRect& bounds, const char *aTitle, short aNumber) : TWindow( bounds, aTitle, aNumber), TWindowInit( &TDemoWindow::initFrame ) { TRect r = getClipRect(); // get exposed area r.grow(-1, -1); // make interior fit inside window frame insert( new TInterior(r) ); // add interior to window }
void TGroup::draw() { if (buffer == 0) { getBuffer(); if (buffer != 0) { lockFlag++; redraw(); lockFlag--; } } if (buffer != 0) writeBuf(0, 0, size.x, size.y, buffer); else { clip = getClipRect(); redraw(); clip = getExtent(); } }
//----------------------------------------------------------------------------- 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::fillRectWithBitmap (CBitmap* bitmap, const CRect& srcRect, const CRect& dstRect, float alpha) { if (srcRect.isEmpty () || dstRect.isEmpty ()) return; CRect bitmapPartRect; CCoord left; CCoord top; CPoint sourceOffset (srcRect.left, srcRect.top); CRect currentClip = getClipRect (currentClip); for (top = dstRect.top; top < dstRect.bottom; top += srcRect.getHeight ()) { bitmapPartRect.top = top; bitmapPartRect.bottom = top + srcRect.getHeight (); if (bitmapPartRect.bottom > dstRect.bottom) bitmapPartRect.bottom = dstRect.bottom; // The following should never be true, I guess if (bitmapPartRect.getHeight () > srcRect.getHeight ()) bitmapPartRect.setHeight (srcRect.getHeight ()); for (left = dstRect.left; left < dstRect.right; left += srcRect.getWidth ()) { bitmapPartRect.left = left; bitmapPartRect.right = left + srcRect.getWidth (); if (bitmapPartRect.right > dstRect.right) bitmapPartRect.right = dstRect.right; // The following should never be true, I guess if (bitmapPartRect.getWidth () > srcRect.getWidth ()) bitmapPartRect.setWidth (srcRect.getWidth ()); if (currentClip.rectOverlap (bitmapPartRect)) drawBitmap (bitmap, bitmapPartRect, sourceOffset, alpha); } } }