diff --git a/src/DrawData.hpp b/src/DrawData.hpp index a9b85c8..0242a0b 100644 --- a/src/DrawData.hpp +++ b/src/DrawData.hpp @@ -12,7 +12,7 @@ struct DrawData { DrawCamera cam; ResourceManager* rMan; MainProgram* main; - bool onlyRenderLayerBeingEdited = false; + bool isSVGRender = false; bool dontUseDrawProgCache = false; bool clampDrawBetween = true; bool drawGrids = true; diff --git a/src/DrawingProgram/Layers/DrawingProgramLayerListItem.cpp b/src/DrawingProgram/Layers/DrawingProgramLayerListItem.cpp index 869530c..dd530ae 100644 --- a/src/DrawingProgram/Layers/DrawingProgramLayerListItem.cpp +++ b/src/DrawingProgram/Layers/DrawingProgramLayerListItem.cpp @@ -193,15 +193,20 @@ void DrawingProgramLayerListItem::get_used_resources(std::unordered_setvisible) { - SkPaint layerPaint; - layerPaint.setAlphaf(displayData->alpha); - layerPaint.setBlendMode(serialized_blend_mode_to_sk_blend_mode(displayData->blendMode)); - canvas->saveLayer(nullptr, &layerPaint); + if(!drawData.isSVGRender) { + SkPaint layerPaint; + layerPaint.setAlphaf(displayData->alpha); + layerPaint.setBlendMode(serialized_blend_mode_to_sk_blend_mode(displayData->blendMode)); + canvas->saveLayer(nullptr, &layerPaint); + } + if(folderData) folderData->draw(canvas, drawData); else layerData->draw(canvas, drawData); - canvas->restore(); + + if(!drawData.isSVGRender) + canvas->restore(); } } diff --git a/src/DrawingProgram/Layers/DrawingProgramLayerManager.cpp b/src/DrawingProgram/Layers/DrawingProgramLayerManager.cpp index 2d931d0..c96b048 100644 --- a/src/DrawingProgram/Layers/DrawingProgramLayerManager.cpp +++ b/src/DrawingProgram/Layers/DrawingProgramLayerManager.cpp @@ -61,14 +61,8 @@ CanvasComponentContainer::ObjInfoIterator DrawingProgramLayerManager::get_edited } void DrawingProgramLayerManager::draw(SkCanvas* canvas, const DrawData& drawData) { - if(layerTreeRoot) { - if(drawData.onlyRenderLayerBeingEdited) { - if(is_a_layer_being_edited()) - editingLayer.lock()->get_layer().draw(canvas, drawData); - } - else - layerTreeRoot->draw(canvas, drawData); - } + if(layerTreeRoot) + layerTreeRoot->draw(canvas, drawData); } std::vector DrawingProgramLayerManager::get_flattened_component_list() const { diff --git a/src/DrawingProgram/Tools/ScreenshotTool.cpp b/src/DrawingProgram/Tools/ScreenshotTool.cpp index 35a88fe..0fab74f 100644 --- a/src/DrawingProgram/Tools/ScreenshotTool.cpp +++ b/src/DrawingProgram/Tools/ScreenshotTool.cpp @@ -64,7 +64,7 @@ void ScreenshotTool::gui_toolbox() { if(controls.selectedType != SCREENSHOT_SVG) t.gui.checkbox_field("Display Grid", "Display Grid", &controls.displayGrid); else - t.gui.text_label("Note: Screenshot will only capture\nlayer currently being edited"); + t.gui.text_label("Note: Screenshot will ignore blend\nmodes and layer alpha"); if(controls.selectedType != 0) t.gui.checkbox_field("Transparent Background", "Transparent Background", &controls.transparentBackground); if(controls.imageSize.x() != oldImgSize.x()) { @@ -275,10 +275,10 @@ void ScreenshotTool::take_screenshot_svg(SkCanvas* canvas, bool transparentBackg drawP.world.main.transparentBackground = transparentBackground; drawP.world.drawData.drawGrids = false; drawP.world.drawData.dontUseDrawProgCache = true; - drawP.world.drawData.onlyRenderLayerBeingEdited = true; + drawP.world.drawData.isSVGRender = true; drawP.world.main.draw(canvas); - drawP.world.drawData.onlyRenderLayerBeingEdited = false; + drawP.world.drawData.isSVGRender = false; drawP.world.main.takingScreenshot = false; drawP.world.main.transparentBackground = false; drawP.world.drawData.drawGrids = oldDrawGrids;