mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-14 04:19:12 +00:00
Merge branch 'main' into beta
This commit is contained in:
commit
18ba8f184b
@ -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 {
|
||||
|
@ -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()),
|
||||
@ -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());
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 =
|
||||
|
Loading…
x
Reference in New Issue
Block a user