void UBGraphicsTriangle::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) { mCloseSvgItem->setVisible(mShowButtons); mVFlipSvgItem->setVisible(mShowButtons); mHFlipSvgItem->setVisible(mShowButtons); mRotateSvgItem->setVisible(mShowButtons); if (resize1Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill)) setCursor(resizeCursor1()); else if (resize2Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill)) setCursor(resizeCursor2()); else if (closeButtonRect().contains(event->pos())) setCursor(closeCursor()); else if (hFlipRect().contains(event->pos()) || vFlipRect().contains(event->pos())) setCursor(flipCursor()); else if (rotateRect().contains(event->pos())) setCursor(rotateCursor()); else setCursor(moveCursor()); event->accept(); } else if (UBDrawingController::drawingController()->isDrawingTool()) { event->accept(); } }
void UBGraphicsTriangle::mousePressEvent(QGraphicsSceneMouseEvent *event) { lastRect = rect().toRect(); lastPos = sceneTransform().inverted().map(event->screenPos()); if (resize1Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill)) { mResizing1 = true; event->accept(); } else if (resize2Polygon().containsPoint(event->pos().toPoint(), Qt::OddEvenFill)) { mResizing2 = true; event->accept(); } else if(rotateRect().contains(event->pos())) { mRotating = true; event->accept(); } else { QGraphicsItem::mousePressEvent(event); } mShowButtons = false; mCloseSvgItem->setVisible(false); mHFlipSvgItem->setVisible(false); mVFlipSvgItem->setVisible(false); mRotateSvgItem->setVisible(mRotating); update(); }
void CRtfWord::calcBRect() { PAGEINFO PageInfo; Handle hCPAGE = CPAGE_GetHandlePage(CPAGE_GetCurrentPage()); if (!hCPAGE) throw Exception("[CRtfWord::calcBRect] CPAGE_GetHandlePage failed"); GetPageInfo(hCPAGE, &PageInfo); Rect tmp = charsBRect(); rotateRect(tmp, PageInfo.Angle, PageInfo.Width, PageInfo.Height); brect_ = tmp; }
void Screen::fillRect(u32 x, u32 y, u32 w, u32 h, u8 color) { if (x >= mWidth || y >= mHeight || !w || !h) return; if (x + w > mWidth) w = mWidth - x; if (y + h > mHeight) h = mHeight - y; rotateRect(x, y, w, h); adjustOffset(x, y); for (; h--;) { if (mScrollType == YWrap && y > mOffsetMax) y -= mOffsetMax + 1; (this->*fill)(x, y++, w, color); } }
void UBGraphicsTriangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { painter->setPen(Qt::NoPen); QPolygonF polygon; QLinearGradient gradient1(QPointF(A1.x(), 0), QPointF(A2.x(), 0)); gradient1.setColorAt(0, edgeFillColor()); gradient1.setColorAt(1, middleFillColor()); painter->setBrush(gradient1); polygon << A1 << A2 << B2 << B1; painter->drawPolygon(polygon); polygon.clear(); QLinearGradient gradient2(QPointF(0, B1.y()), QPointF(0, B2.y())); gradient2.setColorAt(0, edgeFillColor()); gradient2.setColorAt(1, middleFillColor()); painter->setBrush(gradient2); polygon << B1 << B2 << C2 << C1; painter->drawPolygon(polygon); polygon.clear(); QLinearGradient gradient3(CC, C2); gradient3.setColorAt(0, edgeFillColor()); gradient3.setColorAt(1, middleFillColor()); painter->setBrush(gradient3); polygon << C1 << C2 << A2 << A1; painter->drawPolygon(polygon); polygon.clear(); painter->setBrush(Qt::NoBrush); painter->setPen(drawColor()); polygon << A1 << B1 << C1; painter->drawPolygon(polygon); polygon.clear(); polygon << A2 << B2 << C2; painter->drawPolygon(polygon); paintGraduations(painter); mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom()); QTransform antiScaleTransform; antiScaleTransform.scale(mAntiScaleRatio, mAntiScaleRatio); mCloseSvgItem->setTransform(antiScaleTransform); mHFlipSvgItem->setTransform(antiScaleTransform); mVFlipSvgItem->setTransform(antiScaleTransform); mRotateSvgItem->setTransform(antiScaleTransform); mCloseSvgItem->setPos(closeButtonRect().topLeft()); mHFlipSvgItem->setPos(hFlipRect().topLeft()); mVFlipSvgItem->setPos(vFlipRect().topLeft()); mRotateSvgItem->setPos(rotateRect().topLeft()); if (mShowButtons || mResizing1 || mResizing2) { painter->setBrush(QColor(0, 0, 0)); if (mShowButtons || mResizing1) painter->drawPolygon(resize1Polygon()); if (mShowButtons || mResizing2) painter->drawPolygon(resize2Polygon()); } }
void Screen::drawGlyph(u32 x, u32 y, u8 fc, u8 bc, u16 code, bool dw) { if (x >= mWidth || y >= mHeight) return; s32 w = (dw ? FW(2) : FW(1)), h = FH(1); if (x + w > mWidth) w = mWidth - x; if (y + h > mHeight) h = mHeight - y; Font::Glyph *glyph = (Font::Glyph *)Font::instance()->getGlyph(code); if (!glyph) { fillRect(x, y, w, h, bc); return; } s32 top = glyph->top; if (top < 0) top = 0; s32 left = glyph->left; if ((s32)x + left < 0) left = -x; s32 width = glyph->width; if (width > w - left) width = w - left; if ((s32)x + left + width > (s32)mWidth) width = mWidth - ((s32)x + left); if (width < 0) width = 0; s32 height = glyph->height; if (height > h - top) height = h - top; if (y + top + height > mHeight) height = mHeight - (y + top); if (height < 0) height = 0; if (top) fillRect(x, y, w, top, bc); if (left > 0) fillRect(x, y + top, left, height, bc); s32 right = width + left; if (w > right) fillRect((s32)x + right, y + top, w - right, height, bc); s32 bot = top + height; if (h > bot) fillRect(x, y + bot, w, h - bot, bc); x += left; y += top; if (x >= mWidth || y >= mHeight || !width || !height) return; u32 nwidth = width, nheight = height; rotateRect(x, y, nwidth, nheight); u8 *pixmap = glyph->pixmap; u32 wdiff = glyph->width - width, hdiff = glyph->height - height; if (wdiff) { if (mRotateType == Rotate180) pixmap += wdiff; else if (mRotateType == Rotate270) pixmap += wdiff * glyph->pitch; } if (hdiff) { if (mRotateType == Rotate90) pixmap += hdiff; else if (mRotateType == Rotate180) pixmap += hdiff * glyph->pitch; } adjustOffset(x, y); for (; nheight--; y++, pixmap += glyph->pitch) { if ((mScrollType == YWrap) && y > mOffsetMax) y -= mOffsetMax + 1; (this->*draw)(x, y, nwidth, fc, bc, pixmap); } }