mirror of https://github.com/axmolengine/axmol.git
104 lines
2.0 KiB
C++
104 lines
2.0 KiB
C++
#include "TextureAtlasData.h"
|
|
|
|
DRAGONBONES_NAMESPACE_BEGIN
|
|
|
|
void TextureAtlasData::_onClear()
|
|
{
|
|
for (const auto& pair : textures)
|
|
{
|
|
pair.second->returnToPool();
|
|
}
|
|
|
|
autoSearch = false;
|
|
format = TextureFormat::DEFAULT;
|
|
width = 0;
|
|
height = 0;
|
|
scale = 1.0f;
|
|
name = "";
|
|
imagePath.clear();
|
|
textures.clear();
|
|
}
|
|
|
|
void TextureAtlasData::copyFrom(const TextureAtlasData& value)
|
|
{
|
|
autoSearch = value.autoSearch;
|
|
format = value.format;
|
|
width = value.width;
|
|
height = value.height;
|
|
scale = value.scale;
|
|
name = value.name;
|
|
imagePath = value.imagePath;
|
|
|
|
for (const auto& pair : textures)
|
|
{
|
|
pair.second->returnToPool();
|
|
}
|
|
|
|
textures.clear();
|
|
|
|
for (const auto& pair : value.textures)
|
|
{
|
|
const auto texture = createTexture();
|
|
texture->copyFrom(*(pair.second));
|
|
textures[pair.first] = texture;
|
|
}
|
|
}
|
|
|
|
void TextureAtlasData::addTexture(TextureData* value)
|
|
{
|
|
if (textures.find(value->name) != textures.cend())
|
|
{
|
|
DRAGONBONES_ASSERT(false, "Same texture: " + value->name);
|
|
return;
|
|
}
|
|
|
|
textures[value->name] = value;
|
|
value->parent = this;
|
|
}
|
|
|
|
Rectangle* TextureData::createRectangle()
|
|
{
|
|
return new Rectangle();
|
|
}
|
|
|
|
TextureData::~TextureData() {}
|
|
|
|
void TextureData::_onClear()
|
|
{
|
|
if (frame != nullptr)
|
|
{
|
|
delete frame;
|
|
}
|
|
|
|
rotated = false;
|
|
name = "";
|
|
region.clear();
|
|
parent = nullptr;
|
|
frame = nullptr;
|
|
}
|
|
|
|
void TextureData::copyFrom(const TextureData& value)
|
|
{
|
|
rotated = value.rotated;
|
|
name = value.name;
|
|
region = value.region; // Copy.
|
|
parent = value.parent;
|
|
|
|
if (frame == nullptr && value.frame != nullptr)
|
|
{
|
|
frame = TextureData::createRectangle();
|
|
}
|
|
else if (frame != nullptr && value.frame == nullptr)
|
|
{
|
|
delete frame;
|
|
frame = nullptr;
|
|
}
|
|
|
|
if (frame != nullptr && value.frame != nullptr)
|
|
{
|
|
*frame = *(value.frame); // Copy.
|
|
}
|
|
}
|
|
|
|
DRAGONBONES_NAMESPACE_END
|