48 lines
942 B
C
48 lines
942 B
C
|
#ifndef LAYERSDIFF_H
|
||
|
#define LAYERSDIFF_H
|
||
|
|
||
|
#include "definition_global.h"
|
||
|
|
||
|
#include "DefinitionDiff.h"
|
||
|
|
||
|
namespace paysages {
|
||
|
namespace definition {
|
||
|
|
||
|
class DEFINITIONSHARED_EXPORT LayersDiff : public DefinitionDiff {
|
||
|
public:
|
||
|
typedef enum { LAYER_ADDED, LAYER_REMOVED } LayersDiffOp;
|
||
|
|
||
|
public:
|
||
|
LayersDiff(const Layers *layers, LayersDiffOp op, int layer1);
|
||
|
virtual ~LayersDiff();
|
||
|
|
||
|
inline LayersDiffOp getOp() const {
|
||
|
return op;
|
||
|
}
|
||
|
inline int getLayer1() const {
|
||
|
return layer1;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Save a layer state into the diff.
|
||
|
*/
|
||
|
void saveLayer(const DefinitionNode &src);
|
||
|
|
||
|
/**
|
||
|
* Restore the saved layer into a node.
|
||
|
*/
|
||
|
void restoreSavedLayer(DefinitionNode *dest) const;
|
||
|
|
||
|
private:
|
||
|
// Operation to apply
|
||
|
LayersDiffOp op;
|
||
|
// Position of first layer changed
|
||
|
int layer1;
|
||
|
// Serialized layer data
|
||
|
PackStream *saved;
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif // LAYERSDIFF_H
|