From 70da0bae8b4f11bf4d2fcf12c2f1aa770fe1d4d1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 1 Dec 2012 21:37:21 +0300 Subject: Add batch drawing to shortcuts windows. --- src/gui/widgets/shortcutcontainer.cpp | 41 ++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'src/gui/widgets/shortcutcontainer.cpp') diff --git a/src/gui/widgets/shortcutcontainer.cpp b/src/gui/widgets/shortcutcontainer.cpp index ba3ad3325..245ec90b5 100644 --- a/src/gui/widgets/shortcutcontainer.cpp +++ b/src/gui/widgets/shortcutcontainer.cpp @@ -23,6 +23,7 @@ #include "gui/widgets/shortcutcontainer.h" #include "configuration.h" +#include "graphicsvertexes.h" #include "resources/image.h" @@ -42,7 +43,9 @@ ShortcutContainer::ShortcutContainer() : mCursorPosX(0), mCursorPosY(0), mGridWidth(1), - mGridHeight(1) + mGridHeight(1), + mVertexes(new ImageCollection), + mRedraw(true) { } @@ -59,6 +62,7 @@ void ShortcutContainer::widgetResized(const gcn::Event &event A_UNUSED) ++mGridHeight; setHeight(mGridHeight * mBoxHeight); + mRedraw = true; } int ShortcutContainer::getIndexFromGrid(const int pointX, @@ -77,3 +81,38 @@ int ShortcutContainer::getIndexFromGrid(const int pointX, return index; } + +void ShortcutContainer::drawBackground(Graphics *g) +{ + if (mBackgroundImg) + { + if (openGLMode != 2) + { + if (mRedraw) + { + mRedraw = false; + mVertexes->clear(); + for (unsigned i = 0; i < mMaxItems; i ++) + { + g->calcTile(mVertexes, mBackgroundImg, + (i % mGridWidth) * mBoxWidth, + (i / mGridWidth) * mBoxHeight); + } + } + g->drawTile(mVertexes); + } + else + { + for (unsigned i = 0; i < mMaxItems; i ++) + { + g->drawImage(mBackgroundImg, (i % mGridWidth) * mBoxWidth, + (i / mGridWidth) * mBoxHeight); + } + } + } +} + +void ShortcutContainer::widgetMoved(const gcn::Event& event) +{ + mRedraw = true; +} -- cgit v1.2.3-70-g09d2