diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llui/lliconctrl.cpp |
Print done when done.
Diffstat (limited to 'indra/llui/lliconctrl.cpp')
-rw-r--r-- | indra/llui/lliconctrl.cpp | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp new file mode 100644 index 0000000000..006334fa4e --- /dev/null +++ b/indra/llui/lliconctrl.cpp @@ -0,0 +1,139 @@ +/** + * @file lliconctrl.cpp + * @brief LLIconCtrl base class + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" + +#include "lliconctrl.h" + +// Linden library includes + +// Project includes +#include "llcontrol.h" +#include "llui.h" +#include "lluictrlfactory.h" + +const F32 RESOLUTION_BUMP = 1.f; + +LLIconCtrl::LLIconCtrl(const LLString& name, const LLRect &rect, const LLUUID &image_id) +: LLUICtrl(name, + rect, + FALSE, // mouse opaque + NULL, NULL, + FOLLOWS_LEFT | FOLLOWS_TOP), + mColor( LLColor4::white ), + mImageName("") +{ + setImage( image_id ); + setTabStop(FALSE); +} + +LLIconCtrl::LLIconCtrl(const LLString& name, const LLRect &rect, const LLString &image_name) +: LLUICtrl(name, + rect, + FALSE, // mouse opaque + NULL, NULL, + FOLLOWS_LEFT | FOLLOWS_TOP), + mColor( LLColor4::white ), + mImageName(image_name) +{ + LLUUID image_id; + image_id.set(LLUI::sAssetsGroup->getString( image_name )); + setImage( image_id ); + setTabStop(FALSE); +} + + +LLIconCtrl::~LLIconCtrl() +{ + mImagep = NULL; +} + + +void LLIconCtrl::setImage(const LLUUID &image_id) +{ + mImageID = image_id; + mImagep = LLUI::sImageProvider->getUIImageByID(image_id); +} + + +void LLIconCtrl::draw() +{ + if( getVisible() ) + { + // Border + BOOL has_image = !mImageID.isNull(); + + if( has_image ) + { + if( mImagep.notNull() ) + { + gl_draw_scaled_image(0, 0, + mRect.getWidth(), mRect.getHeight(), + mImagep, + mColor ); + } + } + + LLUICtrl::draw(); + } +} + +// virtual +void LLIconCtrl::setValue(const LLSD& value ) +{ + setImage(value.asUUID()); +} + +// virtual +LLSD LLIconCtrl::getValue() const +{ + LLSD ret = getImage(); + return ret; +} + +// virtual +LLXMLNodePtr LLIconCtrl::getXML(bool save_children) const +{ + LLXMLNodePtr node = LLUICtrl::getXML(); + + if (mImageName != "") + { + node->createChild("image_name", TRUE)->setStringValue(mImageName); + } + + node->createChild("color", TRUE)->setFloatValue(4, mColor.mV); + + return node; +} + +LLView* LLIconCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory) +{ + LLString name("icon"); + node->getAttributeString("name", name); + + LLRect rect; + createRect(node, rect, parent, LLRect()); + + LLUUID image_id; + if (node->hasAttribute("image_name")) + { + LLString image_name; + node->getAttributeString("image_name", image_name); + image_id.set(LLUI::sAssetsGroup->getString( image_name )); + } + + LLColor4 color(LLColor4::white); + LLUICtrlFactory::getAttributeColor(node,"color", color); + + LLIconCtrl* icon = new LLIconCtrl(name, rect, image_id); + icon->setColor(color); + + icon->initFromXML(node, parent); + + return icon; +} |