mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-01 19:13:43 +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 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)
|
||||
|
@ -56,8 +56,7 @@ ExpandCelCanvas::ExpandCelCanvas(Document* document, Sprite* sprite, Layer* laye
|
||||
if (m_cel == NULL) {
|
||||
// Create the image
|
||||
m_celImage = image_new(m_sprite->getImgType(), m_sprite->getWidth(), m_sprite->getHeight());
|
||||
image_clear(m_celImage,
|
||||
m_celImage->mask_color);
|
||||
image_clear(m_celImage, sprite->getTransparentColor());
|
||||
|
||||
// create the cel
|
||||
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,
|
||||
x1-m_cel->getX(),
|
||||
y1-m_cel->getY(), x2-x1, y2-y1,
|
||||
m_celImage->mask_color);
|
||||
m_sprite->getTransparentColor());
|
||||
|
||||
m_dstImage = image_new_copy(m_srcImage);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user