mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-02 22:13:32 +00:00
Fix some problems with sprites with non-zero transparent color.
+ color_utils::color_for_layer() must return the sprite's transparent color when the "Mask" is specified. + New cels in ExpandCelCanvas must be created with the sprite's transparent color.
This commit is contained in:
parent
0839b10569
commit
8d37636f1a
@ -135,9 +135,17 @@ int color_utils::color_for_image(const Color& color, int imgtype)
|
|||||||
|
|
||||||
int color_utils::color_for_layer(const Color& color, Layer* layer)
|
int color_utils::color_for_layer(const Color& color, Layer* layer)
|
||||||
{
|
{
|
||||||
int imgtype = layer->getSprite()->getImgType();
|
int pixel_color;
|
||||||
|
|
||||||
return fixup_color_for_layer(layer, color_for_image(color, imgtype));
|
if (color.getType() == Color::MaskType) {
|
||||||
|
pixel_color = layer->getSprite()->getTransparentColor();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int imgtype = layer->getSprite()->getImgType();
|
||||||
|
pixel_color = color_for_image(color, imgtype);
|
||||||
|
}
|
||||||
|
|
||||||
|
return fixup_color_for_layer(layer, pixel_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
int color_utils::fixup_color_for_layer(Layer *layer, int color)
|
int color_utils::fixup_color_for_layer(Layer *layer, int color)
|
||||||
|
@ -56,8 +56,7 @@ ExpandCelCanvas::ExpandCelCanvas(Document* document, Sprite* sprite, Layer* laye
|
|||||||
if (m_cel == NULL) {
|
if (m_cel == NULL) {
|
||||||
// Create the image
|
// Create the image
|
||||||
m_celImage = image_new(m_sprite->getImgType(), m_sprite->getWidth(), m_sprite->getHeight());
|
m_celImage = image_new(m_sprite->getImgType(), m_sprite->getWidth(), m_sprite->getHeight());
|
||||||
image_clear(m_celImage,
|
image_clear(m_celImage, sprite->getTransparentColor());
|
||||||
m_celImage->mask_color);
|
|
||||||
|
|
||||||
// create the cel
|
// create the cel
|
||||||
m_cel = new Cel(m_sprite->getCurrentFrame(), 0);
|
m_cel = new Cel(m_sprite->getCurrentFrame(), 0);
|
||||||
@ -89,7 +88,7 @@ ExpandCelCanvas::ExpandCelCanvas(Document* document, Sprite* sprite, Layer* laye
|
|||||||
m_srcImage = image_crop(m_celImage,
|
m_srcImage = image_crop(m_celImage,
|
||||||
x1-m_cel->getX(),
|
x1-m_cel->getX(),
|
||||||
y1-m_cel->getY(), x2-x1, y2-y1,
|
y1-m_cel->getY(), x2-x1, y2-y1,
|
||||||
m_celImage->mask_color);
|
m_sprite->getTransparentColor());
|
||||||
|
|
||||||
m_dstImage = image_new_copy(m_srcImage);
|
m_dstImage = image_new_copy(m_srcImage);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user