[aseprite] 62/250: Flatten layers command no longer converts result to background when it shouldn't. (fix #806)
Tobias Hansen
thansen at moszumanska.debian.org
Sun Dec 20 15:27:12 UTC 2015
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 3eb01db8e1341c3d82d4be08e5d8001636886ce0
Author: Aravin <aravin at mentis.ca>
Date: Mon Sep 21 13:19:39 2015 -0400
Flatten layers command no longer converts result to background when it shouldn't. (fix #806)
---
src/app/cmd/flatten_layers.cpp | 42 +++++++++++++++++++-----------------------
1 file changed, 19 insertions(+), 23 deletions(-)
diff --git a/src/app/cmd/flatten_layers.cpp b/src/app/cmd/flatten_layers.cpp
index ee3e5aa..6f3aed0 100644
--- a/src/app/cmd/flatten_layers.cpp
+++ b/src/app/cmd/flatten_layers.cpp
@@ -12,6 +12,7 @@
#include "app/cmd/flatten_layers.h"
#include "app/cmd/add_layer.h"
+#include "app/cmd/set_layer_name.h"
#include "app/cmd/configure_background.h"
#include "app/cmd/copy_rect.h"
#include "app/cmd/remove_layer.h"
@@ -43,21 +44,24 @@ void FlattenLayers::onExecute()
sprite->width(),
sprite->height()));
- // If there aren't a background layer we must to create the background.
- LayerImage* background = sprite->backgroundLayer();
- bool created = false;
- if (!background) {
- background = new LayerImage(sprite);
- executeAndAdd(new cmd::AddLayer(sprite->folder(), background, nullptr));
- executeAndAdd(new cmd::ConfigureBackground(background));
- created = true;
+ LayerImage* flatLayer; // The layer onto which everything will be flattened.
+ color_t bgcolor; // The background color to use for flatLayer.
+
+ flatLayer = sprite->backgroundLayer();
+ if (flatLayer && flatLayer->isVisible())
+ {
+ // There exists a visible background layer, so we will flatten onto that.
+ bgcolor = doc->bgColor(flatLayer);
}
-
- color_t bgcolor;
- if (created || !background->isVisible())
- bgcolor = doc->bgColor(background); // Use color bar background color
else
+ {
+ // Create a new transparent layer to flatten everything onto.
+ flatLayer = new LayerImage(sprite);
+ ASSERT(flatLayer->isVisible());
+ executeAndAdd(new cmd::AddLayer(sprite->folder(), flatLayer, nullptr));
+ executeAndAdd(new cmd::SetLayerName(flatLayer, "Flattened"));
bgcolor = sprite->transparentColor();
+ }
render::Render render;
render.setBgType(render::BgType::NONE);
@@ -71,7 +75,7 @@ void FlattenLayers::onExecute()
// TODO Keep cel links when possible
ImageRef cel_image;
- Cel* cel = background->cel(frame);
+ Cel* cel = flatLayer->cel(frame);
if (cel) {
if (cel->links())
executeAndAdd(new cmd::UnlinkCel(cel));
@@ -85,22 +89,14 @@ void FlattenLayers::onExecute()
else {
cel_image.reset(Image::createCopy(image.get()));
cel = new Cel(frame, cel_image);
- background->addCel(cel);
+ flatLayer->addCel(cel);
}
}
- // Show background if it's hidden
- if (!background->isVisible()) {
- LayerFlags newFlags = LayerFlags(
- int(background->flags()) | int(LayerFlags::Visible));
-
- executeAndAdd(new cmd::SetLayerFlags(background, newFlags));
- }
-
// Delete old layers.
LayerList layers = sprite->folder()->getLayersList();
for (Layer* layer : layers)
- if (layer != background)
+ if (layer != flatLayer)
executeAndAdd(new cmd::RemoveLayer(layer));
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list