2015-11-20 00:07:31 +00:00
|
|
|
#include "LayersDiff.h"
|
|
|
|
|
|
|
|
#include "PackStream.h"
|
|
|
|
#include "Layers.h"
|
|
|
|
#include "Logs.h"
|
|
|
|
|
|
|
|
LayersDiff::LayersDiff(const Layers *layers, LayersDiffOp op, int layer1)
|
|
|
|
: DefinitionDiff(layers), op(op), layer1(layer1), saved(NULL) {
|
|
|
|
}
|
|
|
|
|
2015-12-13 19:32:26 +00:00
|
|
|
LayersDiff::LayersDiff(const LayersDiff *other, LayersDiff::LayersDiffOp op, int layer1)
|
|
|
|
: DefinitionDiff(other), op(op), layer1(layer1), saved(NULL) {
|
|
|
|
}
|
|
|
|
|
2015-11-20 00:07:31 +00:00
|
|
|
LayersDiff::~LayersDiff() {
|
|
|
|
if (saved) {
|
|
|
|
delete saved;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void LayersDiff::saveLayer(const DefinitionNode &src) {
|
|
|
|
if (saved) {
|
|
|
|
delete saved;
|
|
|
|
}
|
|
|
|
saved = new PackStream();
|
|
|
|
saved->write(src.getName());
|
|
|
|
src.save(saved);
|
|
|
|
}
|
|
|
|
|
|
|
|
void LayersDiff::restoreSavedLayer(DefinitionNode *dest) const {
|
|
|
|
if (saved) {
|
|
|
|
PackStream reader(saved);
|
|
|
|
dest->setName(reader.readString());
|
|
|
|
dest->load(&reader);
|
|
|
|
}
|
|
|
|
}
|
2015-12-13 19:32:26 +00:00
|
|
|
|
|
|
|
DefinitionDiff *LayersDiff::newReversed() const {
|
|
|
|
LayersDiff *result;
|
|
|
|
if (op == LAYER_ADDED) {
|
|
|
|
result = new LayersDiff(this, LAYER_REMOVED, layer1);
|
|
|
|
} else {
|
|
|
|
result = new LayersDiff(this, LAYER_ADDED, layer1);
|
|
|
|
}
|
|
|
|
if (saved) {
|
|
|
|
result->saved = new PackStream();
|
|
|
|
result->saved->writeFromBuffer(saved);
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|