2024-05-08 22:43:27 +04:00

63 lines
1.4 KiB
C++

#ifndef Merge_hpp
#define Merge_hpp
#include "Lottie/Private/Model/ShapeItems/ShapeItem.hpp"
#include "Lottie/Private/Parsing/JsonParsing.hpp"
namespace lottie {
enum class MergeMode: int {
None = 0,
Merge = 1,
Add = 2,
Subtract = 3,
Intersect = 4,
Exclude = 5
};
/// An item that define an ellipse shape
class Merge: public ShapeItem {
public:
explicit Merge(json11::Json::object const &json) noexcept(false) :
ShapeItem(json),
mode(MergeMode::None) {
auto modeRawValue = getInt(json, "mm");
switch (modeRawValue) {
case 0:
mode = MergeMode::None;
break;
case 1:
mode = MergeMode::Merge;
break;
case 2:
mode = MergeMode::Add;
break;
case 3:
mode = MergeMode::Subtract;
break;
case 4:
mode = MergeMode::Intersect;
break;
case 5:
mode = MergeMode::Exclude;
break;
default:
throw LottieParsingException();
}
}
virtual void toJson(json11::Json::object &json) const override {
ShapeItem::toJson(json);
json.insert(std::make_pair("mm", (int)mode));
}
public:
/// The mode of the merge path
MergeMode mode;
};
}
#endif /* Merge_hpp */