You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.9 KiB
89 lines
1.9 KiB
#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
|
|
|