mirror of https://github.com/aseprite/aseprite.git
				
				
				
			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…
	
		Reference in New Issue