#pragma once #include #include "../../CanvasComponents/CanvasComponent.hpp" #include class DrawingProgramLayerListItem; class DrawingProgramLayerManager; struct DrawingProgramComponentUndoData { WorldUndoManager::UndoObjectID undoID; std::unique_ptr copyData; }; class DrawingProgramLayer { public: void draw(SkCanvas* canvas, const DrawData& drawData) const; void set_component_list_callbacks(DrawingProgramLayerListItem& layerListItem, DrawingProgramLayerManager& layerMan); void get_flattened_component_list(std::vector& objList) const; void set_to_erase(); void scale_up(const WorldScalar& scaleUpAmount); CanvasComponentContainer::NetListOwnerPtr components; void load_file(cereal::PortableBinaryInputArchive& a, VersionNumber version, DrawingProgramLayerManager& layerMan); void save_file(cereal::PortableBinaryOutputArchive& a) const; void get_used_resources(std::unordered_set& resourceSet) const; private: std::function eraseCallback; };