axmol/extensions/fairygui/PackageItem.cpp

76 lines
2.0 KiB
C++

#include "PackageItem.h"
#include "GRoot.h"
#include "UIPackage.h"
#include "display/BitmapFont.h"
#include "utils/ByteBuffer.h"
NS_FGUI_BEGIN
PackageItem::PackageItem() : owner(nullptr),
objectType(ObjectType::COMPONENT),
width(0),
height(0),
rawData(nullptr),
texture(nullptr),
spriteFrame(nullptr),
scale9Grid(nullptr),
scaleByTile(false),
tileGridIndice(0),
animation(nullptr),
repeatDelay(0),
swing(false),
extensionCreator(nullptr),
translated(false),
bitmapFont(nullptr),
branches(nullptr),
highResolution(nullptr)
{
}
PackageItem::~PackageItem()
{
AX_SAFE_DELETE(scale9Grid);
AX_SAFE_DELETE(rawData);
if (bitmapFont) //bitmapfont will be released by fontatlas
bitmapFont->releaseAtlas();
bitmapFont = nullptr;
AX_SAFE_RELEASE(animation);
AX_SAFE_RELEASE(texture);
AX_SAFE_RELEASE(spriteFrame);
AX_SAFE_DELETE(branches);
AX_SAFE_DELETE(highResolution);
}
void PackageItem::load()
{
owner->getItemAsset(this);
}
PackageItem* PackageItem::getBranch()
{
if (branches != nullptr && owner->_branchIndex != -1)
{
std::string itemId = (*branches)[owner->_branchIndex];
if (!itemId.empty())
return owner->getItem(itemId);
}
return this;
}
PackageItem* PackageItem::getHighResolution()
{
if (highResolution != nullptr && GRoot::contentScaleLevel > 0)
{
std::string itemId = (*highResolution)[GRoot::contentScaleLevel - 1];
if (!itemId.empty())
return owner->getItem(itemId);
}
return this;
}
NS_FGUI_END