⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paraboliczoomstate.cpp

📁 thes is veer good (ksmoutTool)
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            bitBlt(m_buffer.get(), 0, m_minH, &m_snapshot, (dw - m_w) / 2, 0, m_w, dy);            if (m_dock->m_showBorders) {                if (m_dock->m_isAutohide) {                    int minH = m_dock->m_smallIconSize + m_itemSpacing;                    bitBlt(m_buffer.get(), 0, 0, m_sideBorder.get(), 0, 0, 1, minH);                    bitBlt(m_buffer.get(), m_w - 1, 0, m_sideBorder.get(), 0, 0, 1, minH);                } else {                    bitBlt(m_buffer.get(), 0, 0, m_sideBorder.get(), 0, 0, 1, m_minH);                    bitBlt(m_buffer.get(), m_w - 1, 0, m_sideBorder.get(), 0, 0, 1, m_minH);                }            }            // draw the items            for (i = 0; i <= no_items - 1; i++) {                DockItem* item = m_dock->m_items[i];                int x_item = m_itemsCenter[i] - item->getWidth(m_itemsSize[i]) / 2;                if ((int)i == m_clickedLauncherIndex) { // launcher clicked acknowlegement                    Launcher* l = dynamic_cast<Launcher*>(item);                    l->drawAcknowledgement(*m_buffer, x_item, m_itemSpacing/2 , m_itemsSize[i]);                } else {                    item->draw(*m_buffer, x_item, m_itemSpacing/2, m_itemsSize[i]);                }            }        }    } else if (m_dock->m_position == BOTTOM) {        if (m_isMinimised) { // Minimised case            // draw the background            int dx = (m_w - m_minW) / 2;            int dy = m_h - m_minH;            bitBlt(m_buffer.get(), dx, dy, m_background.get(), (dw - m_minW) / 2, 0, m_minW, m_minH);            bitBlt(m_buffer.get(), 0, 0, m_originalBackground.get(), (dw - m_w) / 2, 0, m_w, dy);            bitBlt(m_buffer.get(), 0, dy, m_originalBackground.get(), (dw - m_w) / 2, dy, dx, m_minH);            bitBlt(m_buffer.get(), m_w - dx, dy, m_originalBackground.get(), (dw + m_minW) / 2, dy, dx, m_minH);            if (m_dock->m_showBorders) {                bitBlt(m_buffer.get(), dx, dy, m_sideBorder.get(), 0, 0, 1, m_minH);                bitBlt(m_buffer.get(), dx + m_minW - 1, dy, m_sideBorder.get(), 0, 0, 1, m_minH);            }            // draw the items            for (i = 0; i < no_items; i++) {                DockItem* item = m_dock->m_items[i];                int x_item = m_itemsCenterMin[i] - item->getMinWidth() / 2;                int dy = m_h - m_itemSpacing / 2 - item->getMinHeight();                item->draw(*m_buffer, x_item, dy, m_dock->m_smallIconSize);            }        } else { // Zoomed case            // draw the background            int dy = m_h - m_minH;            bitBlt(m_buffer.get(), 0, dy, m_background.get(), (dw - m_w) / 2, 0, m_w, m_minH);            bitBlt(m_buffer.get(), 0, 0, &m_snapshot, (dw - m_w) / 2, 0, m_w, dy);            if (m_dock->m_showBorders) {                if (m_dock->m_isAutohide) {                    int minH = m_dock->m_smallIconSize + m_itemSpacing;                    bitBlt(m_buffer.get(), 0, m_h - minH, m_sideBorder.get(), 0, 0, 1, minH);                    bitBlt(m_buffer.get(), m_w - 1, m_h - minH, m_sideBorder.get(), 0, 0, 1, minH);                } else {                    bitBlt(m_buffer.get(), 0, dy, m_sideBorder.get(), 0, 0, 1, m_minH);                    bitBlt(m_buffer.get(), m_w - 1, dy, m_sideBorder.get(), 0, 0, 1, m_minH);                }            }            // draw the items            for (i = 0; i <= no_items - 1; i++) {                DockItem* item = m_dock->m_items[i];                int x_item = m_itemsCenter[i] - item->getWidth(m_itemsSize[i]) / 2;                int dy = m_h - m_itemSpacing / 2 - item->getHeight(m_itemsSize[i]);                if ((int)i == m_clickedLauncherIndex) { // launcher clicked acknowlegement                    Launcher* l = dynamic_cast<Launcher*>(item);                    l->drawAcknowledgement(*m_buffer, x_item, dy, m_itemsSize[i]);                } else {                    item->draw(*m_buffer, x_item, dy, m_itemsSize[i]);                }            }        }    } else if (m_dock->m_position == LEFT) {        if (m_isMinimised) { // Minimised case            // draw the background            int dy = (m_h - m_minH) / 2;            int dx = m_w - m_minW;            bitBlt(m_buffer.get(), 0, dy, m_background.get(), 0, (dh - m_minH) / 2, m_minW, m_minH);            bitBlt(m_buffer.get(), m_minW, 0, m_originalBackground.get(), m_minW, (dh - m_h) / 2, dx, m_h);            bitBlt(m_buffer.get(), 0, 0, m_originalBackground.get(), 0, (dh - m_h) / 2, m_minW, dy);            bitBlt(m_buffer.get(), 0, m_h - dy, m_originalBackground.get(), 0, (dh + m_minH) / 2, m_minW, dy);            if (m_dock->m_showBorders) {                bitBlt(m_buffer.get(), 0, dy, m_sideBorder.get(), 0, 0, m_minW, 1);                bitBlt(m_buffer.get(), 0, dy + m_minH - 1, m_sideBorder.get(), 0, 0, m_minW, 1);            }            // draw the items            for (i = 0; i < no_items; i++) {                DockItem* item = m_dock->m_items[i];                int y_item = m_itemsCenterMin[i] - item->getMinHeight() / 2;                item->draw(*m_buffer, m_itemSpacing / 2, y_item, m_dock->m_smallIconSize);            }        } else { // Zoomed case            // draw the background            int dx = m_w - m_minW;            bitBlt(m_buffer.get(), 0, 0, m_background.get(), 0, (dh - m_h) / 2, m_minW, m_h);            bitBlt(m_buffer.get(), m_minW, 0, &m_snapshot, 0, (dh - m_h) / 2, dx, m_h);            if (m_dock->m_showBorders) {                if (m_dock->m_isAutohide) {                    int minW = m_dock->m_smallIconSize + m_itemSpacing;                    bitBlt(m_buffer.get(), 0, 0, m_sideBorder.get(), 0, 0, minW, 1);                    bitBlt(m_buffer.get(), 0, m_h - 1, m_sideBorder.get(), 0, 0, minW, 1);                } else {                    bitBlt(m_buffer.get(), 0, 0, m_sideBorder.get(), 0, 0, m_minW, 1);                    bitBlt(m_buffer.get(), 0, m_h - 1, m_sideBorder.get(), 0, 0, m_minW, 1);                }            }            // draw the items            for (i = 0; i <= no_items - 1; i++) {                DockItem* item = m_dock->m_items[i];                int y_item = m_itemsCenter[i] - item->getHeight(m_itemsSize[i]) / 2;                if ((int)i == m_clickedLauncherIndex) { // launcher clicked acknowlegement                    Launcher* l = dynamic_cast<Launcher*>(item);                    l->drawAcknowledgement(*m_buffer, m_itemSpacing / 2, y_item, m_itemsSize[i]);                } else {                    item->draw(*m_buffer, m_itemSpacing / 2, y_item, m_itemsSize[i]);                }            }        }    } else if (m_dock->m_position == RIGHT) {        if (m_isMinimised) { // Minimised case            // draw the background            int dy = (m_h - m_minH) / 2;            int dx = m_w - m_minW;            bitBlt(m_buffer.get(), dx, dy, m_background.get(), 0, (dh - m_minH) / 2, m_minW, m_minH);            bitBlt(m_buffer.get(), 0, 0, m_originalBackground.get(), 0, (dh - m_h) / 2, dx, m_h);            bitBlt(m_buffer.get(), dx, 0, m_originalBackground.get(), dx, (dh - m_h) / 2, m_minW, dy);            bitBlt(m_buffer.get(), dx, m_h - dy, m_originalBackground.get(), dx, (dh + m_minH) / 2, m_minW, dy);            if (m_dock->m_showBorders) {                bitBlt(m_buffer.get(), dx, dy, m_sideBorder.get(), 0, 0, m_minW, 1);                bitBlt(m_buffer.get(), dx, dy + m_minH - 1, m_sideBorder.get(), 0, 0, m_minW, 1);            }            // draw the items            for (i = 0; i < no_items; i++) {                DockItem* item = m_dock->m_items[i];                int y_item = m_itemsCenterMin[i] - item->getMinHeight() / 2;                int dx = m_w - m_itemSpacing / 2 - item->getMinWidth();                item->draw(*m_buffer, dx, y_item, m_dock->m_smallIconSize);            }        } else { // Zoomed case            // draw the background            int dx = m_w - m_minW;            bitBlt(m_buffer.get(), dx, 0, m_background.get(), 0, (dh - m_h) / 2, m_minW, m_h);            bitBlt(m_buffer.get(), 0, 0, &m_snapshot, 0, (dh - m_h) / 2, dx, m_h);            if (m_dock->m_showBorders) {                if (m_dock->m_isAutohide) {                                        int minW = m_dock->m_smallIconSize + m_itemSpacing;                    bitBlt(m_buffer.get(), m_w - minW, 0, m_sideBorder.get(), 0, 0, minW, 1);                    bitBlt(m_buffer.get(), m_w - minW, m_h - 1, m_sideBorder.get(), 0, 0, minW, 1);                } else {                    bitBlt(m_buffer.get(), dx, 0, m_sideBorder.get(), 0, 0, m_minW, 1);                    bitBlt(m_buffer.get(), dx, m_h - 1, m_sideBorder.get(), 0, 0, m_minW, 1);                }            }            // draw the items            for (i = 0; i <= no_items - 1; i++) {                DockItem* item = m_dock->m_items[i];                int y_item = m_itemsCenter[i] - item->getHeight(m_itemsSize[i]) / 2;                int dx = m_w - m_itemSpacing / 2 - item->getWidth(m_itemsSize[i]);                if ((int)i == m_clickedLauncherIndex) { // launcher clicked acknowlegement                    Launcher* l = dynamic_cast<Launcher*>(item);                    l->drawAcknowledgement(*m_buffer, dx, y_item, m_itemsSize[i]);                } else {                    item->draw(*m_buffer, dx, y_item, m_itemsSize[i]);                }            }        }    }        if (m_isMinimised) {        if (!m_maskOn) { // set mask            setMaskOn(true);        }    } else {        if (m_maskOn) { // clear mask            setMaskOn(false);        }    }    bitBlt(m_dock, 0, 0, m_buffer.get(), 0, 0, (m_w < dw) ? m_w : dw, (m_h < dh) ? m_h : dh);}/** * Mouse pressed event handler */void ParabolicZoomState::mousePressEvent(QMouseEvent* e) {        if (m_inAnimation)        return;    // find the m_dock item's index    int i = findItemIndex(e->x(), e->y());    if (i < 0 || i >= m_dock->m_items.size())        return;    if (e->button() == Qt::LeftButton) {        m_dock->m_items[i]->mousePressEvent(e);        // launcher acknowledgement        Launcher l;        if (typeid(*m_dock->m_items[i]) == typeid(l)) {            m_clickedLauncherIndex = i;            QTimer::singleShot(500, this, SLOT(stopLauncherAcknowledgement()));            m_dock->repaint();            Launcher* launcher = dynamic_cast<Launcher*>(m_dock->m_items[i]);            if (launcher->getCommand().compare("SHOW_DESKTOP") == 0) { // Show Desktop button                updateAfterShowingDesktop();            }        }            } else if (e->button() == Qt::RightButton) {        m_dock->m_items[i]->mousePressEvent(e);    }}/** * Mouse moved event handler */void ParabolicZoomState::mouseMoveEvent(QMouseEvent* e) {    if (m_inAnimation)        return;    if (!m_isMinimised || enableZoom(e->x(), e->y())) {        // zoom items            setItemsPosition(e->x(), e->y());            // show tooltip                if (m_dock->m_showTooltip) {            // find the m_dock item's index            int i = findItemIndex(e->x(), e->y());            if (i < 0 || i >= m_dock->m_items.size()) {                m_dock->m_tooltip.hide();            } else {                showTooltip(i);            }        }    }}/** * Enter event handler */void ParabolicZoomState::enterEvent(QEvent* e) {    QPoint pos = QCursor::pos();    int dw = QApplication::desktop()->width();    int dh = QApplication::desktop()->height();    int x = 0;    int y = 0;        switch(m_dock->m_position) {    case TOP:        x = (dw - m_minW) / 2;        break;    case BOTTOM:        x = (dw - m_minW) / 2;        y = dh - m_minH;        break;    case LEFT:        y = (dh - m_minH) / 2;        break;    case RIGHT:        x = dw - m_minW;        y = (dh - m_minH) / 2;        break;    default:        break;    }    QRect rect(x, y, m_minW, m_minH);    if (!rect.contains(pos)) // not a real enter event        return;        m_justEntered = true;}/** * Leave event handler */void ParabolicZoomState::leaveEvent(QEvent* e) {    QPoint pos = QCursor::pos();    if (m_dock->frameGeometry().contains(pos)) // we have not really left the dock yet        return;    m_justLeft = true;    m_inAnimation = true;    for (int i = 0; i < m_dock->m_items.size(); i++) {        m_itemsStartSize[i] = m_itemsSize[i];        m_itemsEndSize[i] = m_dock->m_smallIconSize;        m_itemsStartCenter[i] = m_itemsCenter[i];        m_itemsEndCenter[i] = m_itemsCenterMin[i];    }    if (!m_timer->isActive()) {        m_animationCurrentStep = 0;        m_timer->start(32 - m_dock->m_PzZoomSpeed);    }}/** * Update a specific item* @TODO: fix and use the effient method (at the moment it does not work properly when the dock is vertical or in zoomed mode) */void ParabolicZoomState::updateItem(int itemIndex) {    /*    int x = 0;    int y = 0;    DockItem* item = m_dock->m_items[itemIndex];    int w = item->getWidth(m_itemsSize[itemIndex]);    int h = item->getHeight(m_itemsSize[itemIndex]);        int dw = QApplication::desktop()->width();    int dh = QApplication::desktop()->height();    if (m_dock->m_position == TOP) {        y = m_itemSpacing/2;        if (m_isMinimised) { // Minimised case            x = m_itemsCenterMin[itemIndex] - item->getMinWidth() / 2;            bitBlt(m_buffer.get(), x, y, m_background.get(), x + (dw - m_w) / 2, y, w, h);            } else { // Zoomed case            x = m_itemsCenter[itemIndex] - item->getWidth(m_itemsSize[itemIndex]) / 2;        }    } else if (m_dock->m_position == BOTTOM) {        if (m_isMinimised) { // Minimised case            x = m_itemsCenterMin[itemIndex] - item->getMinWidth() / 2;            y = m_h - m_itemSpacing / 2 - item->getMinHeight();            bitBlt(m_buffer.get(), x, y, m_background.get(), x + (dw - m_w) / 2, y - m_h + m_minH, w, h);                     } else { // Zoomed case            x = m_itemsCenter[itemIndex] - w / 2;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -