Add support to create palettes for Indexed images (fix #751)

This commit is contained in:
David Capello 2015-08-20 12:37:58 -03:00
parent dd6c028477
commit 0d5ba77ba4
5 changed files with 9 additions and 11 deletions

View File

@ -55,10 +55,9 @@ public:
private: private:
void onJob() override { void onJob() override {
render::create_palette_from_rgb(m_sprite, render::create_palette_from_sprite(
0, m_sprite->lastFrame(), m_sprite, 0, m_sprite->lastFrame(),
m_withAlpha, m_palette, m_withAlpha, m_palette, this);
this);
} }
bool onPaletteOptimizerContinue() override { bool onPaletteOptimizerContinue() override {
@ -83,9 +82,7 @@ ColorQuantizationCommand::ColorQuantizationCommand()
bool ColorQuantizationCommand::onEnabled(Context* context) bool ColorQuantizationCommand::onEnabled(Context* context)
{ {
ContextWriter writer(context); return context->checkFlags(ContextFlags::ActiveDocumentIsWritable);
Sprite* sprite(writer.sprite());
return (sprite && sprite->pixelFormat() == IMAGE_RGB);
} }
void ColorQuantizationCommand::onExecute(Context* context) void ColorQuantizationCommand::onExecute(Context* context)

View File

@ -739,7 +739,7 @@ void fop_post_load(FileOp* fop)
sprite->getPalettes().size() <= 1 && sprite->getPalettes().size() <= 1 &&
sprite->palette(frame_t(0))->isBlack()) { sprite->palette(frame_t(0))->isBlack()) {
base::SharedPtr<Palette> palette( base::SharedPtr<Palette> palette(
render::create_palette_from_rgb( render::create_palette_from_sprite(
sprite, frame_t(0), sprite->lastFrame(), true, sprite, frame_t(0), sprite->lastFrame(), true,
nullptr, nullptr)); nullptr, nullptr));

View File

@ -369,7 +369,8 @@ void ColorBar::onFocusPaletteView()
void ColorBar::onBeforeExecuteCommand(CommandExecutionEvent& ev) void ColorBar::onBeforeExecuteCommand(CommandExecutionEvent& ev)
{ {
if (ev.command()->id() == CommandId::SetPalette || if (ev.command()->id() == CommandId::SetPalette ||
ev.command()->id() == CommandId::LoadPalette) ev.command()->id() == CommandId::LoadPalette ||
ev.command()->id() == CommandId::ColorQuantization)
showRemap(); showRemap();
} }

View File

@ -33,7 +33,7 @@ namespace render {
using namespace doc; using namespace doc;
using namespace gfx; using namespace gfx;
Palette* create_palette_from_rgb( Palette* create_palette_from_sprite(
const Sprite* sprite, const Sprite* sprite,
frame_t fromFrame, frame_t fromFrame,
frame_t toFrame, frame_t toFrame,

View File

@ -44,7 +44,7 @@ namespace render {
}; };
// Creates a new palette suitable to quantize the given RGB sprite to Indexed color. // Creates a new palette suitable to quantize the given RGB sprite to Indexed color.
Palette* create_palette_from_rgb( Palette* create_palette_from_sprite(
const Sprite* sprite, const Sprite* sprite,
frame_t fromFrame, frame_t fromFrame,
frame_t toFrame, frame_t toFrame,