1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/*!
@file
@author Albert Semenov
@date 09/2010
*/
#include "Precompiled.h"
#include "TextureBrowseCell.h"
namespace tools
{
void TextureBrowseCell::getCellDimension(MyGUI::Widget* _sender, MyGUI::IntCoord& _coord, bool _drop)
{
_coord.set(0, 0, 180, 180);
}
TextureBrowseCell::TextureBrowseCell(MyGUI::Widget* _parent) :
wraps::BaseCellView<std::string>("TextureBrowseCell.layout", _parent)
{
assignWidget(mTextureName, "TextureName");
assignWidget(mSelector, "Selector");
assignWidget(mBack, "Back");
assignWidget(mParentBack, "ParentBack");
assignWidget(mImage, "Image");
}
void TextureBrowseCell::update(const MyGUI::IBDrawItemInfo& _info, std::string _data)
{
if (_info.update)
{
mTextureName->setCaption(_data);
const MyGUI::IntSize& textureSize = MyGUI::texture_utility::getTextureSize(_data);
if (textureSize.width != 0 && textureSize.height != 0)
{
mBack->setVisible(true);
mImage->setImageTexture(_data);
const MyGUI::IntSize& targetSize = mParentBack->getSize();
float k1 = (float)targetSize.width / textureSize.width;
float k2 = (float)targetSize.height / textureSize.height;
float k = std::min( k1, k2);
MyGUI::IntSize size = MyGUI::IntSize((int)(k * (float)textureSize.width), (int)(k * (float)textureSize.height));
MyGUI::IntSize parentSize = mBack->getParent()->getSize();
mBack->setCoord((parentSize.width - size.width) / 2, (parentSize.height - size.height) / 2, size.width, size.height);
}
else
{
mBack->setVisible(false);
}
}
if (_info.select)
mSelector->setAlpha(1);
else
mSelector->setAlpha(0);
}
}
|