void XYChartCore::paintAxis(QPainter* painter) { const qreal minKey = xAxis()->minimumValue(); const qreal maxKey = xAxis()->maximumValue(); const qreal minValue = yAxis()->minimumValue(); const qreal maxValue = yAxis()->maximumValue(); const QPointF origo = translatePoint(QPointF(0.0, 0.0)); const QPointF p1 = translatePoint(QPointF(minKey, 0.0)); const QPointF p2 = translatePoint(QPointF(maxKey, 0.0)); const QPointF p3 = translatePoint(QPointF(0.0, minValue)); const QPointF p4 = translatePoint(QPointF(0.0, maxValue)); if (origo != p1) painter->drawLine(origo, p1); if (origo != p2) painter->drawLine(origo, p2); if (origo != p3) painter->drawLine(origo, p3); if (origo != p4) painter->drawLine(origo, p4); }
LRESULT WebPopupMenuProxyWin::onMouseMove(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, bool& handled) { handled = true; IntPoint mousePoint(MAKEPOINTS(lParam)); if (scrollbar()) { IntRect scrollBarRect = scrollbar()->frameRect(); if (scrollbarCapturingMouse() || scrollBarRect.contains(mousePoint)) { // Put the point into coordinates relative to the scroll bar mousePoint.move(-scrollBarRect.x(), -scrollBarRect.y()); PlatformMouseEvent event(hWnd, message, wParam, MAKELPARAM(mousePoint.x(), mousePoint.y())); scrollbar()->mouseMoved(event); return 0; } } BOOL shouldHotTrack = FALSE; ::SystemParametersInfo(SPI_GETHOTTRACKING, 0, &shouldHotTrack, 0); RECT bounds; ::GetClientRect(m_popup, &bounds); if (!::PtInRect(&bounds, mousePoint) && !(wParam & MK_LBUTTON)) { // When the mouse is not inside the popup menu and the left button isn't down, just // repost the message to the web view. // Translate the coordinate. translatePoint(lParam, m_popup, m_webView->window()); ::PostMessage(m_popup, WM_HOST_WINDOW_MOUSEMOVE, wParam, lParam); return 0; } if ((shouldHotTrack || wParam & MK_LBUTTON) && ::PtInRect(&bounds, mousePoint)) setFocusedIndex(listIndexAtPoint(mousePoint), true); return 0; }
void WebPopupMenuProxyWin::showPopupMenu(const IntRect& rect, TextDirection, double, const Vector<WebPopupItem>& items, const PlatformPopupMenuData& data, int32_t selectedIndex) { m_items = items; m_data = data; m_newSelectedIndex = selectedIndex; calculatePositionAndSize(rect); if (clientRect().isEmpty()) return; HWND hostWindow = m_webView->window(); if (!m_scrollbar && visibleItems() < m_items.size()) { m_scrollbar = Scrollbar::createNativeScrollbar(this, VerticalScrollbar, SmallScrollbar); m_scrollbar->styleChanged(); } if (!m_popup) { registerWindowClass(); DWORD exStyle = WS_EX_LTRREADING; m_popup = ::CreateWindowEx(exStyle, kWebKit2WebPopupMenuProxyWindowClassName, TEXT("PopupMenu"), WS_POPUP | WS_BORDER, m_windowRect.x(), m_windowRect.y(), m_windowRect.width(), m_windowRect.height(), hostWindow, 0, instanceHandle(), this); if (!m_popup) return; } BOOL shouldAnimate = FALSE; ::SystemParametersInfo(SPI_GETCOMBOBOXANIMATION, 0, &shouldAnimate, 0); if (shouldAnimate) { RECT viewRect = {0}; ::GetWindowRect(hostWindow, &viewRect); if (!::IsRectEmpty(&viewRect)) { // Popups should slide into view away from the <select> box // NOTE: This may have to change for Vista DWORD slideDirection = (m_windowRect.y() < viewRect.top + rect.location().y()) ? AW_VER_NEGATIVE : AW_VER_POSITIVE; ::AnimateWindow(m_popup, defaultAnimationDuration, AW_SLIDE | slideDirection); } } else ::ShowWindow(m_popup, SW_SHOWNOACTIVATE); int index = selectedIndex; if (index >= 0) setFocusedIndex(index); m_showPopup = true; // Protect the popup menu in case its owner is destroyed while we're running the message pump. RefPtr<WebPopupMenuProxyWin> protect(this); ::SetCapture(hostWindow); MSG msg; HWND activeWindow; while (::GetMessage(&msg, 0, 0, 0)) { switch (msg.message) { case WM_HOST_WINDOW_MOUSEMOVE: case WM_HOST_WINDOW_CHAR: if (msg.hwnd == m_popup) { // This message should be sent to the host window. msg.hwnd = hostWindow; msg.message -= WM_HOST_WINDOW_FIRST; } break; // Steal mouse messages. case WM_NCMOUSEMOVE: case WM_NCLBUTTONDOWN: case WM_NCLBUTTONUP: case WM_NCLBUTTONDBLCLK: case WM_NCRBUTTONDOWN: case WM_NCRBUTTONUP: case WM_NCRBUTTONDBLCLK: case WM_NCMBUTTONDOWN: case WM_NCMBUTTONUP: case WM_NCMBUTTONDBLCLK: case WM_MOUSEWHEEL: msg.hwnd = m_popup; break; // These mouse messages use client coordinates so we need to convert them. case WM_MOUSEMOVE: case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_LBUTTONDBLCLK: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_RBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_MBUTTONDBLCLK: { // Translate the coordinate. translatePoint(msg.lParam, msg.hwnd, m_popup); msg.hwnd = m_popup; break; } // Steal all keyboard messages. case WM_KEYDOWN: case WM_KEYUP: case WM_CHAR: case WM_DEADCHAR: case WM_SYSKEYUP: case WM_SYSCHAR: case WM_SYSDEADCHAR: msg.hwnd = m_popup; break; } ::TranslateMessage(&msg); ::DispatchMessage(&msg); if (!m_showPopup) break; activeWindow = ::GetActiveWindow(); if (activeWindow != hostWindow && !::IsChild(activeWindow, hostWindow)) break; if (::GetCapture() != hostWindow) break; } if (::GetCapture() == hostWindow) ::ReleaseCapture(); m_showPopup = false; ::ShowWindow(m_popup, SW_HIDE); if (!m_client) return; m_client->valueChangedForPopupMenu(this, m_newSelectedIndex); // <https://bugs.webkit.org/show_bug.cgi?id=57904> In order to properly call the onClick() // handler on a <select> element, we need to fake a mouse up event in the main window. // The main window already received the mouse down, which showed this popup, but upon // selection of an item the mouse up gets eaten by the popup menu. So we take the mouse down // event, change the message type to a mouse up event, and post that in the message queue. // Thus, we are virtually clicking at the // same location where the mouse down event occurred. This allows the hit test to select // the correct element, and thereby call the onClick() JS handler. if (!m_client->currentlyProcessedMouseDownEvent()) return; const MSG* initiatingWinEvent = m_client->currentlyProcessedMouseDownEvent()->nativeEvent(); MSG fakeEvent = *initiatingWinEvent; fakeEvent.message = WM_LBUTTONUP; ::PostMessage(fakeEvent.hwnd, fakeEvent.message, fakeEvent.wParam, fakeEvent.lParam); }
foreach(qreal label, m_yAxisLabels) { const qreal y = translatePoint(QPointF(0.0, label)).y(); painter->drawLine(m_lowerLeftCorner.x(), y, m_lowerLeftCorner.x() + m_graphWidth, y); }
foreach(qreal label, m_xAxisLabels) { const qreal x = translatePoint(QPointF(label, 0.0)).x(); painter->drawLine(x, m_lowerLeftCorner.y(), x, m_lowerLeftCorner.y() - m_graphHeight); }
Point *findPointFromRoot(double root, Ray ray) { Point *result = (Point *) malloc(sizeof(Point)); Vector distanceToRoot = scaleVector(ray.direction, root); *result = translatePoint(ray.point, distanceToRoot); return result; }
void CCardLabel::paintEvent(QPaintEvent *ev) { QRectF titleRect(translatePoint(5, 2), translatePoint(155, 25)); QRectF imgRect(translatePoint(5, 24), translatePoint(155, 144)); QRectF blackRect(translatePoint(6, 24 + 40), translatePoint(156, 24 + 80)); QRectF setRect(translatePoint(155 - 2 - 32, 144 + 8), translatePoint(155 - 2, 144 + 8 + 32)); QRectF delayRect(translatePoint(155 - 40, 24), translatePoint(155, 24 + 40)); QRectF attackRect(translatePoint(5 + 2, 215 - 20), translatePoint(5 + 2 + 20, 215)); QRectF healthRect(translatePoint(155 - 2 - 20, 215 - 20), translatePoint(155 - 2, 215)); QRectF ownedRect(translatePoint(155 - 60 - 2, 144 - 28), translatePoint(155 - 2, 144)); QPointF upgradePos(translatePoint(50, 193)); QPointF uniquePos(translatePoint(5 + 2, 144 - 28 - 2)); QPointF skillPos(translatePoint(5 + 2, 144 + 8)); // Update lock button geo before parent paint if (mLockButton) { mLockButton->setGeometry(QRect(imgRect.x() + 2, imgRect.y() + 2, 24, 24)); } // Regular label painting (background image) QLabel::paintEvent(ev); if (mCard.isValid()) { const CGlobalConfig &cfg = CGlobalConfig::getCfg(); QPainter painter(this); // Paint upgrade symbol QString cardName = mCard.getName(); if (mCard.getUpgradeLevel() != EUpgradeNotAvailable) { if (cardName.endsWith(QChar('*'))) { cardName.replace("*", ""); } switch(mCard.getUpgradeLevel()) { case EUpgradeLevel1: painter.drawPixmap(upgradePos, QPixmap(cfg.getResourcePicturePath() + "UpgradeIcon1.png")); break; case EUpgradeLevel2: painter.drawPixmap(upgradePos, QPixmap(cfg.getResourcePicturePath() + "UpgradeIcon2.png")); break; default: break; } } // Paint title QPen inPen(Qt::white); painter.setPen(inPen); painter.drawText(titleRect.adjusted(titleRect.height() + 2, -1, 0, -1), Qt::AlignLeft | Qt::AlignVCenter, cardName); painter.setRenderHint(QPainter::SmoothPixmapTransform, true); if (!mTitleIcon.isNull()) { painter.drawPixmap(titleRect.topLeft(), mTitleIcon.scaled(titleRect.height() + 1, titleRect.height() + 1, Qt::KeepAspectRatio, Qt::SmoothTransformation)); } // Paint unique symbol if (mCard.isUnique()) { painter.drawPixmap(uniquePos, QPixmap(":/img/unique.png")); //painter.drawText(dx + 2, dySkill - 15, 100, 12, Qt::AlignLeft | Qt::AlignVCenter, "Unique"); } // Paint skill symbols const TSkillList &skills = mCard.getSkills(); int curIdx = 0; for (TSkillList::const_iterator i = skills.begin(); i != skills.end(); ++i, ++curIdx) { const CSkill& curSkill = mCards.getSkillForId(i->getId()); if (curSkill.isValid()) { QPixmap skillPixmap; if (!skillPixmap.load(cfg.getResourcePicturePath() + curSkill.getPicture() + ".png")) { skillPixmap.load(cfg.getCustomPicturePath() + curSkill.getPicture() + ".png"); } painter.drawPixmap(skillPos, skillPixmap); skillPos += QPointF(16 + 2, 0); //painter.drawText(dx, 80 + i*10, 100, 10, Qt::AlignLeft | Qt::AlignVCenter, curSkill.makeSignature(skills.at(i))); } } // Paint set symbol if (mCard.getSet() != EUnknownSet) { QPixmap setPixmap; if (!setPixmap.load(cfg.getResourcePicturePath() + mCards.getPictureForCardSet(mCard.getSet()))) { setPixmap.load(cfg.getCustomPicturePath() + mCards.getPictureForCardSet(mCard.getSet())); } painter.drawPixmap(setRect, setPixmap, QRectF(0, 0, 24, 24)); } // Paint delay symbol if (mCard.getDelay() > -1) { painter.drawPixmap(delayRect, QPixmap(cfg.getResourcePicturePath() + "ClockIcon.png"), QRectF(0, 0, 32, 32)); painter.drawText(delayRect, Qt::AlignCenter, QString("%1").arg(mCard.getDelay())); } // Paint attack symbol if (mCard.hasAttack()) { painter.drawPixmap(attackRect, QPixmap(cfg.getResourcePicturePath() + "AttackIcon.png"), QRectF(0, 0, 20, 20)); painter.drawText(attackRect.translated(attackRect.width() + 1, 0), Qt::AlignLeft | Qt::AlignVCenter, QString("%1").arg(mCard.getAttack())); } // Paint health symbol if (mCard.hasHealth()) { painter.drawPixmap(healthRect, QPixmap(cfg.getResourcePicturePath() + "HealthIcon.png"), QRectF(0, 0, 20, 20)); painter.drawText(healthRect.adjusted(-2 * healthRect.width() - 1, 0, -healthRect.width() - 1, 0), Qt::AlignRight | Qt::AlignVCenter, QString("%1").arg(mCard.getHealth())); } if (!mIsVirtual) { // Display owned status SCardStatus status = mCards.getCardStatus(mCard); { painter.setPen(Qt::green); QString ownageStr("x0"); if (status.numOwned > 0) { ownageStr = QString("x%1").arg(status.numOwned); } painter.drawText(ownedRect, Qt::AlignRight | Qt::AlignVCenter, ownageStr); } if (cfg.isCardShadingEnabled() && status.numOwned <= 0) { painter.setPen(Qt::NoPen); painter.setBrush(Qt::black); painter.setOpacity(0.6); painter.drawRoundedRect(rect(), 2.0, 2.0); } if (cfg.isBlackLabellingEnabled() && status.isBlack) { // Display black list status painter.setPen(Qt::white); painter.setOpacity(0.6); painter.fillRect(blackRect, QBrush(Qt::black)); painter.setOpacity(1.0); painter.drawText(blackRect, Qt::AlignCenter, "Blacklisted"); } else if (cfg.isWhiteLabellingEnabled() && status.isWhite) { // Display white list status painter.setPen(Qt::black); painter.setOpacity(0.6); painter.fillRect(blackRect, QBrush(Qt::white)); painter.setOpacity(1.0); painter.drawText(blackRect, Qt::AlignCenter, "Whitelisted"); } } } }
inline cv::Point3f transformPoint(const cv::Point3f& point, const cv::Mat& Rt) { return translatePoint(rotatePoint(point, Rt), Rt); }