From f80bf2dfb4de682a56abe79b7b0e5e0459804b30 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Mon, 16 May 2005 21:53:10 +0000 Subject: Made button, checkbox and radiobutton count their instances and only load their resources once. Other widgets will follow later. --- src/gui/checkbox.cpp | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'src/gui/checkbox.cpp') diff --git a/src/gui/checkbox.cpp b/src/gui/checkbox.cpp index 68966376..ab867b0f 100644 --- a/src/gui/checkbox.cpp +++ b/src/gui/checkbox.cpp @@ -25,18 +25,45 @@ #include "../resources/resourcemanager.h" #include "../graphics.h" +int CheckBox::instances = 0; +Image *CheckBox::checkBoxNormal; +Image *CheckBox::checkBoxChecked; +Image *CheckBox::checkBoxDisabled; +Image *CheckBox::checkBoxDisabledChecked; + CheckBox::CheckBox(const std::string& caption, bool marked): gcn::CheckBox(caption, marked) { ResourceManager *resman = ResourceManager::getInstance(); - Image *checkBox = resman->getImage("graphics/gui/checkbox.png"); - checkBoxNormal = checkBox->getSubImage(0, 0, 9, 10); - checkBoxChecked = checkBox->getSubImage(9, 0, 9, 10); - checkBoxDisabled = checkBox->getSubImage(18, 0, 9, 10); - checkBoxDisabledChecked = checkBox->getSubImage(27, 0, 9, 10); + + if (instances == 0) + { + Image *checkBox = resman->getImage("graphics/gui/checkbox.png"); + checkBoxNormal = checkBox->getSubImage(0, 0, 9, 10); + checkBoxChecked = checkBox->getSubImage(9, 0, 9, 10); + checkBoxDisabled = checkBox->getSubImage(18, 0, 9, 10); + checkBoxDisabledChecked = checkBox->getSubImage(27, 0, 9, 10); + checkBox->decRef(); + } + + instances++; +} + +CheckBox::~CheckBox() +{ + instances--; + + if (instances == 0) + { + delete checkBoxNormal; + delete checkBoxChecked; + delete checkBoxDisabled; + delete checkBoxDisabledChecked; + } } -void CheckBox::drawBox(gcn::Graphics* graphics) { +void CheckBox::drawBox(gcn::Graphics* graphics) +{ Image *box = NULL; int x, y; -- cgit v1.2.3-70-g09d2