mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-03 21:46:20 +00:00
Fix ink tests when ENABLE_UI=0
It looks like we cannot trust in the get_current_palette() content when we are running scripts without UI. So it's preferable if we get the palette directly from the sprite. We should completely remove the get_current_palette() function. Tests can be found in https://github.com/aseprite/tests/blob/main/scripts/inks.lua
This commit is contained in:
parent
4b3b1f31e0
commit
31ce326d5b
@ -1,4 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -119,6 +120,9 @@ void load_default_palette()
|
||||
set_current_palette(nullptr, true);
|
||||
}
|
||||
|
||||
// TODO This palette isn't synced with the current sprite palette when
|
||||
// ENABLE_UI=0 and we are running scripts, we should remove this
|
||||
// function and use the active Site palette.
|
||||
Palette* get_current_palette()
|
||||
{
|
||||
return ase_current_palette;
|
||||
|
@ -1,12 +1,11 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
// the End-User License Agreement for Aseprite.
|
||||
|
||||
#include "app/color_utils.h"
|
||||
#include "app/modules/palettes.h"
|
||||
#include "app/util/wrap_point.h"
|
||||
#include "app/util/wrap_value.h"
|
||||
#include "base/clamp.h"
|
||||
@ -198,7 +197,7 @@ template<>
|
||||
class LockAlphaInkProcessing<IndexedTraits> : public DoubleInkProcessing<LockAlphaInkProcessing<IndexedTraits>, IndexedTraits> {
|
||||
public:
|
||||
LockAlphaInkProcessing(ToolLoop* loop)
|
||||
: m_palette(get_current_palette())
|
||||
: m_palette(loop->getPalette())
|
||||
, m_rgbmap(loop->getRgbMap())
|
||||
, m_opacity(loop->getOpacity())
|
||||
, m_maskIndex(loop->getLayer()->isBackground() ? -1: loop->sprite()->transparentColor()) {
|
||||
@ -270,7 +269,7 @@ template<>
|
||||
class TransparentInkProcessing<IndexedTraits> : public DoubleInkProcessing<TransparentInkProcessing<IndexedTraits>, IndexedTraits> {
|
||||
public:
|
||||
TransparentInkProcessing(ToolLoop* loop) :
|
||||
m_palette(get_current_palette()),
|
||||
m_palette(loop->getPalette()),
|
||||
m_rgbmap(loop->getRgbMap()),
|
||||
m_opacity(loop->getOpacity()),
|
||||
m_maskIndex(loop->getLayer()->isBackground() ? -1: loop->sprite()->transparentColor()),
|
||||
@ -345,7 +344,7 @@ template<>
|
||||
class MergeInkProcessing<IndexedTraits> : public DoubleInkProcessing<MergeInkProcessing<IndexedTraits>, IndexedTraits> {
|
||||
public:
|
||||
MergeInkProcessing(ToolLoop* loop) :
|
||||
m_palette(get_current_palette()),
|
||||
m_palette(loop->getPalette()),
|
||||
m_rgbmap(loop->getRgbMap()),
|
||||
m_opacity(loop->getOpacity()),
|
||||
m_maskIndex(loop->getLayer()->isBackground() ? -1: loop->sprite()->transparentColor()) {
|
||||
@ -496,12 +495,12 @@ template<>
|
||||
class BlurInkProcessing<IndexedTraits> : public DoubleInkProcessing<BlurInkProcessing<IndexedTraits>, IndexedTraits> {
|
||||
public:
|
||||
BlurInkProcessing(ToolLoop* loop) :
|
||||
m_palette(get_current_palette()),
|
||||
m_palette(loop->getPalette()),
|
||||
m_rgbmap(loop->getRgbMap()),
|
||||
m_opacity(loop->getOpacity()),
|
||||
m_tiledMode(loop->getTiledMode()),
|
||||
m_srcImage(loop->getSrcImage()),
|
||||
m_area(get_current_palette(),
|
||||
m_area(loop->getPalette(),
|
||||
loop->getLayer()->isBackground() ? -1: loop->sprite()->transparentColor()) {
|
||||
}
|
||||
|
||||
@ -616,7 +615,7 @@ template<>
|
||||
class ReplaceInkProcessing<IndexedTraits> : public DoubleInkProcessing<ReplaceInkProcessing<IndexedTraits>, IndexedTraits> {
|
||||
public:
|
||||
ReplaceInkProcessing(ToolLoop* loop) {
|
||||
m_palette = get_current_palette();
|
||||
m_palette = loop->getPalette();
|
||||
m_rgbmap = loop->getRgbMap();
|
||||
m_color1 = loop->getPrimaryColor();
|
||||
m_color2 = loop->getSecondaryColor();
|
||||
@ -655,7 +654,7 @@ template<typename ImageTraits>
|
||||
class JumbleInkProcessing : public DoubleInkProcessing<JumbleInkProcessing<ImageTraits>, ImageTraits> {
|
||||
public:
|
||||
JumbleInkProcessing(ToolLoop* loop) :
|
||||
m_palette(get_current_palette()),
|
||||
m_palette(loop->getPalette()),
|
||||
m_rgbmap(loop->getRgbMap()),
|
||||
m_speed(loop->getSpeed() / 4),
|
||||
m_opacity(loop->getOpacity()),
|
||||
@ -851,7 +850,7 @@ public:
|
||||
using pixel_t = IndexedTraits::pixel_t;
|
||||
|
||||
PixelShadingInkHelper(ToolLoop* loop) :
|
||||
m_palette(get_current_palette()),
|
||||
m_palette(loop->getPalette()),
|
||||
m_remap(loop->getShadingRemap()),
|
||||
m_left(loop->getMouseButton() == ToolLoop::Left) {
|
||||
}
|
||||
@ -968,7 +967,7 @@ public:
|
||||
GradientInkProcessing(ToolLoop* loop)
|
||||
: GradientRenderer(loop)
|
||||
, m_opacity(loop->getOpacity())
|
||||
, m_palette(get_current_palette())
|
||||
, m_palette(loop->getPalette())
|
||||
, m_rgbmap(loop->getRgbMap())
|
||||
, m_maskIndex(loop->getLayer()->isBackground() ? -1: loop->sprite()->transparentColor())
|
||||
{
|
||||
@ -1101,7 +1100,7 @@ template<>
|
||||
class XorInkProcessing<IndexedTraits> : public DoubleInkProcessing<XorInkProcessing<IndexedTraits>, IndexedTraits> {
|
||||
public:
|
||||
XorInkProcessing(ToolLoop* loop) :
|
||||
m_palette(get_current_palette()),
|
||||
m_palette(loop->getPalette()),
|
||||
m_rgbmap(loop->getRgbMap()),
|
||||
m_color(m_palette->getEntry(loop->getPrimaryColor())) {
|
||||
}
|
||||
@ -1138,7 +1137,7 @@ public:
|
||||
BrushInkProcessingBase(ToolLoop* loop) {
|
||||
m_fgColor = loop->getPrimaryColor();
|
||||
m_bgColor = loop->getSecondaryColor();
|
||||
m_palette = get_current_palette();
|
||||
m_palette = loop->getPalette();
|
||||
m_brush = loop->getBrush();
|
||||
m_brushImage = (m_brush->patternImage() ? m_brush->patternImage():
|
||||
m_brush->image());
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2018-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2018-2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -143,7 +143,7 @@ public:
|
||||
else if (color == loop->sprite()->transparentColor())
|
||||
opaque = false;
|
||||
else {
|
||||
color = get_current_palette()->getEntry(color);
|
||||
color = loop->getPalette()->getEntry(color);
|
||||
opaque = (rgba_geta(color) == 255);
|
||||
}
|
||||
break;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2017 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -117,9 +117,9 @@ public:
|
||||
int maskIndex = (loop->getLayer()->isBackground() ? -1: loop->sprite()->transparentColor());
|
||||
// Convert index to RGBA
|
||||
if (a == maskIndex) a = 0;
|
||||
else a = get_current_palette()->getEntry(a);
|
||||
else a = loop->getPalette()->getEntry(a);
|
||||
if (b == maskIndex) b = 0;
|
||||
else b = get_current_palette()->getEntry(b);
|
||||
else b = loop->getPalette()->getEntry(b);
|
||||
// Same as in RGBA gradient
|
||||
if (rgba_geta(a) == 0) a = b;
|
||||
else if (rgba_geta(b) == 0) b = a;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2020 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2017 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -29,6 +29,7 @@ namespace doc {
|
||||
class Image;
|
||||
class Layer;
|
||||
class Mask;
|
||||
class Palette;
|
||||
class Remap;
|
||||
class RgbMap;
|
||||
class Slice;
|
||||
@ -120,6 +121,9 @@ namespace app {
|
||||
// image, used by "overlap" tools like jumble or spray.
|
||||
virtual void copyValidDstToSrcImage(const gfx::Region& rgn) = 0;
|
||||
|
||||
// Returns the current Palette.
|
||||
virtual Palette* getPalette() = 0;
|
||||
|
||||
// Returns the RGB map used to convert RGB values to palette index.
|
||||
virtual RgbMap* getRgbMap() = 0;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Aseprite
|
||||
// Copyright (C) 2019-2021 Igara Studio S.A.
|
||||
// Copyright (C) 2019-2022 Igara Studio S.A.
|
||||
// Copyright (C) 2001-2018 David Capello
|
||||
//
|
||||
// This program is distributed under the terms of
|
||||
@ -248,6 +248,7 @@ public:
|
||||
Sprite* sprite() override { return m_sprite; }
|
||||
Layer* getLayer() override { return m_layer; }
|
||||
frame_t getFrame() override { return m_frame; }
|
||||
Palette* getPalette() override { return m_sprite->palette(m_frame); }
|
||||
RgbMap* getRgbMap() override {
|
||||
if (!m_rgbMap) {
|
||||
Sprite::RgbMapFor forLayer =
|
||||
|
Loading…
Reference in New Issue
Block a user