QRegion KstViewPicture::clipRegion() { if (_clipMask.isNull()) { _myClipMask = QRegion(); QBitmap bm1(_geom.bottomRight().x() + 1, _geom.bottomRight().y() + 1, true); if (!bm1.isNull()) { KstPainter p; p.setMakingMask(true); p.begin(&bm1); p.setViewXForm(true); KstBorderedViewObject::paintSelf(p, QRegion()); p.flush(); p.end(); _clipMask = QRegion(bm1); } QBitmap bm2(_geom.bottomRight().x() + 1, _geom.bottomRight().y() + 1, true); if (!bm2.isNull()) { KstPainter p; p.setMakingMask(true); p.begin(&bm2); p.setViewXForm(true); paintSelf(p, QRegion()); p.flush(); p.end(); _myClipMask = QRegion(bm2); } } return _myClipMask | _clipMask; }
QRegion KstViewLabel::clipRegion() { if (_clipMask.isNull()) { if (_transparent) { const QRect cr(contentsRect()); // slow but preserves antialiasing... QBitmap bm = _backBuffer.buffer().createHeuristicMask(false); _clipMask = QRegion(bm); _clipMask.translate(cr.topLeft().x(), cr.topLeft().y()); QBitmap bm1(_geom.bottomRight().x() + 1, _geom.bottomRight().y() + 1, true); if (!bm1.isNull()) { KstPainter p; p.setMakingMask(true); p.begin(&bm1); p.setViewXForm(true); KstBorderedViewObject::paintSelf(p, QRegion()); paint(p, QRegion()); p.flush(); p.end(); _clipMask |= QRegion(bm1); } } else { _clipMask = KstBorderedViewObject::clipRegion(); } } return _clipMask; }