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

📄 scrollarea.cpp

📁 Linux系统下的《红色警戒》游戏
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            drawUpButton(graphics);            drawDownButton(graphics);            drawVBar(graphics);            drawVMarker(graphics);        }              if (mHBarVisible)        {            drawLeftButton(graphics);            drawRightButton(graphics);            drawHBar(graphics);            drawHMarker(graphics);        }              if (mHBarVisible && mVBarVisible)        {            graphics->setColor(getBaseColor());            graphics->fillRectangle(Rectangle(getWidth() - mScrollbarWidth,                                              getHeight() - mScrollbarWidth,                                              mScrollbarWidth,                                              mScrollbarWidth));        }        if (mContent)        {            Rectangle contdim = mContent->getDimension();                    graphics->pushClipArea(getContentDimension());            if (mContent->getBorderSize() > 0)            {                Rectangle rec = mContent->getDimension();                rec.x -= mContent->getBorderSize();                rec.y -= mContent->getBorderSize();                rec.width += 2 * mContent->getBorderSize();                rec.height += 2 * mContent->getBorderSize();                                    graphics->pushClipArea(rec);                mContent->drawBorder(graphics);                graphics->popClipArea();            }                            graphics->pushClipArea(contdim);            mContent->draw(graphics);            graphics->popClipArea();            graphics->popClipArea();        }    }    void ScrollArea::drawBorder(Graphics* graphics)    {        Color faceColor = getBaseColor();        Color highlightColor, shadowColor;        int alpha = getBaseColor().a;        int width = getWidth() + getBorderSize() * 2 - 1;        int height = getHeight() + getBorderSize() * 2 - 1;        highlightColor = faceColor + 0x303030;        highlightColor.a = alpha;        shadowColor = faceColor - 0x303030;        shadowColor.a = alpha;                unsigned int i;        for (i = 0; i < getBorderSize(); ++i)        {            graphics->setColor(shadowColor);            graphics->drawLine(i,i, width - i, i);            graphics->drawLine(i,i + 1, i, height - i - 1);            graphics->setColor(highlightColor);            graphics->drawLine(width - i,i + 1, width - i, height - i);             graphics->drawLine(i,height - i, width - i - 1, height - i);         }    }        void ScrollArea::drawHBar(Graphics* graphics)    {        Rectangle dim = getHorizontalBarDimension();        graphics->pushClipArea(dim);        int alpha = getBaseColor().a;        Color trackColor = getBaseColor() - 0x101010;        trackColor.a = alpha;        Color shadowColor = getBaseColor() - 0x303030;        shadowColor.a = alpha;                graphics->setColor(trackColor);        graphics->fillRectangle(Rectangle(0, 0, dim.width, dim.height));        graphics->setColor(shadowColor);        graphics->drawLine(0, 0, dim.width, 0);        graphics->popClipArea();        }      void ScrollArea::drawVBar(Graphics* graphics)    {        Rectangle dim = getVerticalBarDimension();        graphics->pushClipArea(dim);        int alpha = getBaseColor().a;        Color trackColor = getBaseColor() - 0x101010;        trackColor.a = alpha;        Color shadowColor = getBaseColor() - 0x303030;        shadowColor.a = alpha;        graphics->setColor(trackColor);        graphics->fillRectangle(Rectangle(0, 0, dim.width, dim.height));            graphics->setColor(shadowColor);        graphics->drawLine(0, 0, 0, dim.height);                graphics->popClipArea();    }      void ScrollArea::drawUpButton(Graphics* graphics)    {        Rectangle dim = getUpButtonDimension();        graphics->pushClipArea(dim);            Color highlightColor;        Color shadowColor;        Color faceColor;        int offset;        int alpha = getBaseColor().a;                if (mUpButtonPressed)        {            faceColor = getBaseColor() - 0x303030;                  faceColor.a = alpha;            highlightColor = faceColor - 0x303030;            highlightColor.a = alpha;            shadowColor = getBaseColor();            shadowColor.a = alpha;            offset = 1;        }        else        {            faceColor = getBaseColor();            faceColor.a = alpha;            highlightColor = faceColor + 0x303030;            highlightColor.a = alpha;            shadowColor = faceColor - 0x303030;            shadowColor.a = alpha;            offset = 0;        }        graphics->setColor(faceColor);              graphics->fillRectangle(Rectangle(0, 0, dim.width, dim.height));        graphics->setColor(highlightColor);        graphics->drawLine(0, 0, dim.width - 1, 0);        graphics->drawLine(0, 1, 0, dim.height - 1);            graphics->setColor(shadowColor);        graphics->drawLine(dim.width - 1, 0, dim.width - 1, dim.height - 1);        graphics->drawLine(1, dim.height - 1, dim.width - 1, dim.height - 1);            graphics->setColor(getForegroundColor());            int i;        int w = dim.height / 2;        int h = w / 2 + 2;        for (i = 0; i < w / 2; ++i)        {            graphics->drawLine(w - i + offset,                               i + h + offset,                               w + i + offset,                               i + h + offset);        }            graphics->popClipArea();    }    void ScrollArea::drawDownButton(Graphics* graphics)    {            Rectangle dim = getDownButtonDimension();        graphics->pushClipArea(dim);        Color highlightColor;        Color shadowColor;        Color faceColor;        int offset;        int alpha = getBaseColor().a;                if (mDownButtonPressed)        {            faceColor = getBaseColor() - 0x303030;                  faceColor.a = alpha;            highlightColor = faceColor - 0x303030;            highlightColor.a = alpha;            shadowColor = getBaseColor();            shadowColor.a = alpha;            offset = 1;        }        else        {            faceColor = getBaseColor();            faceColor.a = alpha;            highlightColor = faceColor + 0x303030;            highlightColor.a = alpha;            shadowColor = faceColor - 0x303030;            shadowColor.a = alpha;            offset = 0;        }                graphics->setColor(faceColor);              graphics->fillRectangle(Rectangle(0, 0, dim.width, dim.height));        graphics->setColor(highlightColor);        graphics->drawLine(0, 0, dim.width - 1, 0);        graphics->drawLine(0, 1, 0, dim.height - 1);            graphics->setColor(shadowColor);        graphics->drawLine(dim.width - 1, 0, dim.width - 1, dim.height - 1);        graphics->drawLine(1, dim.height - 1, dim.width - 1, dim.height - 1);            graphics->setColor(getForegroundColor());            int i;        int w = dim.height / 2;        int h = w + 1;        for (i = 0; i < w / 2; ++i)        {            graphics->drawLine(w - i + offset,                               -i + h + offset,                               w + i + offset,                               -i + h + offset);              }            graphics->popClipArea();    }    void ScrollArea::drawLeftButton(Graphics* graphics)    {        Rectangle dim = getLeftButtonDimension();        graphics->pushClipArea(dim);        Color highlightColor;        Color shadowColor;        Color faceColor;        int offset;        int alpha = getBaseColor().a;                if (mLeftButtonPressed)        {            faceColor = getBaseColor() - 0x303030;                  faceColor.a = alpha;            highlightColor = faceColor - 0x303030;            highlightColor.a = alpha;            shadowColor = getBaseColor();            shadowColor.a = alpha;            offset = 1;        }        else        {            faceColor = getBaseColor();            faceColor.a = alpha;            highlightColor = faceColor + 0x303030;            highlightColor.a = alpha;            shadowColor = faceColor - 0x303030;            shadowColor.a = alpha;            offset = 0;        }            graphics->setColor(faceColor);              graphics->fillRectangle(Rectangle(0, 0, dim.width, dim.height));        graphics->setColor(highlightColor);        graphics->drawLine(0, 0, dim.width - 1, 0);        graphics->drawLine(0, 1, 0, dim.height - 1);            graphics->setColor(shadowColor);        graphics->drawLine(dim.width - 1, 0, dim.width - 1, dim.height - 1);        graphics->drawLine(1, dim.height - 1, dim.width - 1, dim.height - 1);            graphics->setColor(getForegroundColor());        int i;        int w = dim.width / 2;        int h = w - 2;        for (i = 0; i < w / 2; ++i)        {            graphics->drawLine(i + h + offset,                               w - i + offset,                               i + h + offset,                               w + i + offset);              }            graphics->popClipArea();    }    void ScrollArea::drawRightButton(Graphics* graphics)    {        Rectangle dim = getRightButtonDimension();        graphics->pushClipArea(dim);        Color highlightColor;        Color shadowColor;        Color faceColor;        int offset;        int alpha = getBaseColor().a;                if (mRightButtonPressed)        {            faceColor = getBaseColor() - 0x303030;                  faceColor.a = alpha;            highlightColor = faceColor - 0x303030;            highlightColor.a = alpha;            shadowColor = getBaseColor();            shadowColor.a = alpha;            offset = 1;        }        else        {            faceColor = getBaseColor();            faceColor.a = alpha;            highlightColor = faceColor + 0x303030;            highlightColor.a = alpha;            shadowColor = faceColor - 0x303030;            shadowColor.a = alpha;            offset = 0;        }            graphics->setColor(faceColor);              graphics->fillRectangle(Rectangle(0, 0, dim.width, dim.height));        graphics->setColor(highlightColor);        graphics->drawLine(0, 0, dim.width - 1, 0);        graphics->drawLine(0, 1, 0, dim.height - 1);            graphics->setColor(shadowColor);        graphics->drawLine(dim.width - 1, 0, dim.width - 1, dim.height - 1);        graphics->drawLine(1, dim.height - 1, dim.width - 1, dim.height - 1);            graphics->setColor(getForegroundColor());            int i;        int w = dim.width / 2;        int h = w + 1;        for (i = 0; i < w / 2; ++i)        {            graphics->drawLine(-i + h + offset,                               w - i + offset,                               -i + h + offset,                               w + i + offset);              }        graphics->popClipArea();     }    void ScrollArea::drawVMarker(Graphics* graphics)    {        Rectangle dim = getVerticalMarkerDimension();        graphics->pushClipArea(dim);        int alpha = getBaseColor().a;        Color faceColor = getBaseColor();        faceColor.a = alpha;        Color highlightColor = faceColor + 0x303030;        highlightColor.a = alpha;        Color shadowColor = faceColor - 0x303030;        shadowColor.a = alpha;                graphics->setColor(faceColor);        graphics->fillRectangle(Rectangle(1, 1, dim.width - 1, dim.height - 1));            graphics->setColor(highlightColor);        graphics->drawLine(0, 0, dim.width - 1, 0);        graphics->drawLine(0, 1, 0, dim.height - 1);            graphics->setColor(shadowColor);            graphics->drawLine(1, dim.height - 1, dim.width - 1, dim.height - 1);        graphics->drawLine(dim.width - 1, 0, dim.width - 1, dim.height - 1);        graphics->popClipArea();    }    void ScrollArea::drawHMarker(Graphics* graphics)    {        Rectangle dim = getHorizontalMarkerDimension();        graphics->pushClipArea(dim);                int alpha = getBaseColor().a;        Color faceColor = getBaseColor();        faceColor.a = alpha;        Color highlightColor = faceColor + 0x303030;        highlightColor.a = alpha;        Color shadowColor = faceColor - 0x303030;        shadowColor.a = alpha;        graphics->setColor(faceColor);              graphics->fillRectangle(Rectangle(1, 1, dim.width - 1, dim.height - 1));            graphics->setColor(highlightColor);        graphics->drawLine(0, 0, dim.width - 1, 0);        graphics->drawLine(0, 1, 0, dim.height - 1);            graphics->setColor(shadowColor);            graphics->drawLine(1, dim.height - 1, dim.width - 1, dim.height - 1);        graphics->drawLine(dim.width - 1, 0, dim.width - 1, dim.height - 1);        graphics->popClipArea();    }      void ScrollArea::logic()    {        checkPolicies();        setVerticalScrollAmount(getVerticalScrollAmount());        setHorizontalScrollAmount(getHorizontalScrollAmount());                if (mContent != NULL)        {            mContent->setPosition(-mHScroll + getContentDimension().x + mContent->getBorderSize(),                                  -mVScroll + getContentDimension().y + mContent->getBorderSize());            mContent->logic();        }        }    void ScrollArea::moveToTop(Widget* widget)    {        if (widget == mContent)        {

⌨️ 快捷键说明

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