Example #1
0
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;
}