std::unique_ptr<IObject> deserializeAnimatedTextBoxSkin(Deserializer& deserializer) { DESERIALIZE(std::shared_ptr<IRelativeBox>, box); DESERIALIZE(std::shared_ptr<EditableLabel>, label); DESERIALIZE(std::shared_ptr<TextBoxCursor>, cursor); DESERIALIZE(std::shared_ptr<IRelativeGeometry>, geometry); DESERIALIZE_OPT(Time, shiftPeriod, 0); std::unique_ptr<AnimatedTextBoxSkin> result(new AnimatedTextBoxSkin(box, label, cursor, geometry)); result->setShiftPeriod(shiftPeriod); deserializeAnimatedObjectElements(deserializer, result.get()); return std::move(result); }
std::unique_ptr<IObject> deserializeCanvasLayout(Deserializer& deserializer) { typedef std::map<int, std::shared_ptr<IObject>> Objects; DESERIALIZE(std::shared_ptr<IRelativeBox>, box); DESERIALIZE(std::shared_ptr<IRelativeOffset>, position); DESERIALIZE_OPT(Adjustment::Enum, adjustment, Adjustment::None); std::unique_ptr<CanvasLayout> result(new CanvasLayout(box, position)); if (deserializer.hasMember("objects")) { DESERIALIZE(Objects, objects); result->insertObjects(objects); } else { DESERIALIZE(std::vector<std::shared_ptr<IObject>>, list); result->addObjects(list); } result->setAdjustment(adjustment); return std::move(result); }