Merge branch 'main' into beta

This commit is contained in:
David Capello 2022-03-02 21:31:31 -03:00
commit 18ba8f184b
7 changed files with 53 additions and 41 deletions

View File

@ -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
@ -61,27 +61,6 @@ rgba_to_graya_func get_gray_func(gen::ToGrayAlgorithm toGray) {
return nullptr;
}
class ConversionItem : public ListItem {
public:
ConversionItem(const doc::PixelFormat pixelFormat)
: m_pixelFormat(pixelFormat) {
switch (pixelFormat) {
case IMAGE_RGB:
setText("-> RGB");
break;
case IMAGE_GRAYSCALE:
setText("-> Grayscale");
break;
case IMAGE_INDEXED:
setText("-> Indexed");
break;
}
}
doc::PixelFormat pixelFormat() const { return m_pixelFormat; }
private:
doc::PixelFormat m_pixelFormat;
};
class ConvertThread : public render::TaskDelegate {
public:
ConvertThread(const doc::ImageRef& dstImage,
@ -186,6 +165,29 @@ private:
base::thread m_thread;
};
#ifdef ENABLE_UI
class ConversionItem : public ListItem {
public:
ConversionItem(const doc::PixelFormat pixelFormat)
: m_pixelFormat(pixelFormat) {
switch (pixelFormat) {
case IMAGE_RGB:
setText("-> RGB");
break;
case IMAGE_GRAYSCALE:
setText("-> Grayscale");
break;
case IMAGE_INDEXED:
setText("-> Indexed");
break;
}
}
doc::PixelFormat pixelFormat() const { return m_pixelFormat; }
private:
doc::PixelFormat m_pixelFormat;
};
class ColorModeWindow : public app::gen::ColorMode {
public:
ColorModeWindow(Editor* editor)
@ -467,6 +469,8 @@ private:
bool m_imageJustCreated;
};
#endif // ENABLE_UI
} // anonymous namespace
class ChangePixelFormatCommand : public Command {

View File

@ -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;

View File

@ -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()),
@ -342,7 +341,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()) {
@ -490,12 +489,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()) {
}
@ -609,7 +608,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();
@ -653,7 +652,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()),
@ -846,7 +845,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) {
}
@ -963,7 +962,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())
{
@ -1086,7 +1085,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()) {
}
@ -1118,7 +1117,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());

View File

@ -153,7 +153,7 @@ public:
opaque = false;
}
else {
color = get_current_palette()->getEntry(color);
color = loop->getPalette()->getEntry(color);
opaque = (rgba_geta(color) == 255);
}
break;

View File

@ -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
@ -136,9 +136,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;

View File

@ -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
@ -32,6 +32,7 @@ namespace doc {
class Image;
class Layer;
class Mask;
class Palette;
class Remap;
class RgbMap;
class Slice;
@ -138,6 +139,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;

View File

@ -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
@ -293,6 +293,7 @@ public:
bool isTilemapMode() override { return m_tilesMode; };
bool isManualTilesetMode() const override { return m_tilesetMode == TilesetMode::Manual; }
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 =