Fix Quantize command call (sprite was locked).

This commit is contained in:
David Capello 2010-12-12 12:11:44 -03:00
parent b600706e37
commit 47a265745c
5 changed files with 30 additions and 27 deletions

View File

@ -706,6 +706,9 @@ static bool sort_by_criteria(Palette* palette, int from, int to, JList selected_
static void quantize_command(JWidget widget)
{
Palette* palette = NULL;
{
const CurrentSpriteReader& sprite(UIContext::instance());
if (sprite == NULL) {
@ -718,12 +721,11 @@ static void quantize_command(JWidget widget)
return;
}
Palette* palette = new Palette(0, 256);
{
SpriteWriter sprite_writer(sprite);
sprite_quantize_ex(sprite_writer, palette);
set_new_palette(palette, "Quantize Palette");
palette = new Palette(0, 256);
sprite_quantize_ex(sprite, palette);
}
set_new_palette(palette, "Quantize Palette");
delete palette;
}
@ -922,8 +924,8 @@ static void update_current_sprite_palette(const char* operationName)
sprite->setPalette(newPalette, false);
}
}
catch (...) {
// Ignore
catch (ase_exception& e) {
e.show();
}
}

View File

@ -29,14 +29,14 @@
#include "raster/sprite.h"
#include "raster/stock.h"
static ImageRef* images_ref_get_from_layer(Sprite* sprite, Layer* layer, int target, bool write);
static ImageRef* images_ref_get_from_layer(Layer* layer, int target, bool write);
ImageRef* images_ref_get_from_sprite(Sprite* sprite, int target, bool write)
ImageRef* images_ref_get_from_sprite(const Sprite* sprite, int target, bool write)
{
Layer* layer = target & TARGET_ALL_LAYERS ? sprite->getFolder():
sprite->getCurrentLayer();
return images_ref_get_from_layer(sprite, layer, target, write);
return images_ref_get_from_layer(layer, target, write);
}
void images_ref_free(ImageRef* image_ref)
@ -49,7 +49,7 @@ void images_ref_free(ImageRef* image_ref)
}
}
static ImageRef* images_ref_get_from_layer(Sprite* sprite, Layer* layer, int target, bool write)
static ImageRef* images_ref_get_from_layer(Layer* layer, int target, bool write)
{
#define ADD_IMAGES(images) \
{ \
@ -70,7 +70,7 @@ static ImageRef* images_ref_get_from_layer(Sprite* sprite, Layer* layer, int tar
{ \
ImageRef* image_ref = jnew(ImageRef, 1); \
\
image_ref->image = layer->getSprite()->getStock()->getImage(cel->image); \
image_ref->image = sprite->getStock()->getImage(cel->image); \
image_ref->layer = layer; \
image_ref->cel = cel; \
image_ref->next = NULL; \
@ -78,6 +78,7 @@ static ImageRef* images_ref_get_from_layer(Sprite* sprite, Layer* layer, int tar
ADD_IMAGES(image_ref); \
}
const Sprite* sprite = layer->getSprite();
ImageRef* first_image = NULL;
ImageRef* last_image = NULL;
int frame = sprite->getCurrentFrame();
@ -112,7 +113,7 @@ static ImageRef* images_ref_get_from_layer(Sprite* sprite, Layer* layer, int tar
LayerIterator end = static_cast<LayerFolder*>(layer)->get_layer_end();
for (; it != end; ++it) {
sub_images = images_ref_get_from_layer(sprite, *it, target, write);
sub_images = images_ref_get_from_layer(*it, target, write);
if (sub_images != NULL)
ADD_IMAGES(sub_images);
}

View File

@ -32,7 +32,7 @@ struct ImageRef
ImageRef* next;
};
ImageRef* images_ref_get_from_sprite(Sprite* sprite, int target, bool write);
ImageRef* images_ref_get_from_sprite(const Sprite* sprite, int target, bool write);
void images_ref_free(ImageRef* image_ref);
#endif

View File

@ -43,7 +43,7 @@ void sprite_quantize(Sprite *sprite)
delete palette;
}
void sprite_quantize_ex(Sprite *sprite, Palette *palette)
void sprite_quantize_ex(const Sprite *sprite, Palette *palette)
{
Image* flat_image;
Image** image_array;

View File

@ -24,7 +24,7 @@ class Sprite;
class Stock;
void sprite_quantize(Sprite* sprite);
void sprite_quantize_ex(Sprite* sprite, Palette* palette);
void sprite_quantize_ex(const Sprite* sprite, Palette* palette);
#endif