Renamed frpos -> frame. Added operations to handle frames and cels.

This commit is contained in:
David Capello 2007-11-19 14:23:15 +00:00
parent 83444f1775
commit 2ea9551ce1
84 changed files with 994 additions and 855 deletions

View File

@ -25,7 +25,7 @@
/* general information */
#define PACKAGE "ase"
#define VERSION "0.6"
#define WEBSITE "http://www.allegrospriteeditor.com.ar/"
#define WEBSITE "http://www.aseprite.com/"
#define BUGREPORT "ase-help@lists.sourceforge.net"
#define COPYRIGHT "Copyright (C) 2001-2005, 2007 David A. Capello"

View File

@ -40,9 +40,11 @@
<!-- layer -->
<key command="layer_properties" shortcut="Shift+P" />
<key command="new_layer" shortcut="Shift+N" />
<!-- frame -->
<key command="new_frame" shortcut="N" />
<!-- cel -->
<key command="cel_properties" shortcut="Shift+Ctrl+P" />
<key command="new_cel" shortcut="Ctrl+Shift+N" />
<key command="new_cel" shortcut="Shift+Ctrl+N" />
<!-- mask -->
<key command="mask_all" shortcut="Ctrl+A" />
<key command="deselect_mask" shortcut="Ctrl+D" />
@ -143,14 +145,20 @@
<item command="flatten_layers" name="&Flatten" />
<item command="crop_layer" name="Cr&op" />
</menu>
<menu name="F&rame" id="frame_popup">
<item command="frame_properties" name="&Properties" />
<separator />
<item command="new_frame" name="&New" />
<item command="remove_frame" name="&Remove" />
</menu>
<menu name="&Cel" id="cel_popup">
<item command="cel_properties" name="&Properties" />
<item command="remove_cel" name="&Remove" />
<separator />
<item command="new_cel" name="&New" />
<item command="move_cel" name="&Move" />
<item command="copy_cel" name="&Copy" />
<item command="link_cel" name="&Link" />
<item command="remove_cel" name="&Remove" />
<separator />
<item command="crop_cel" name="Cr&op" />
</menu>

View File

@ -3,17 +3,17 @@
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Frame Properties") name="frame_properties">
<window text=_("Cel Properties") name="cel_properties">
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Frame position:") />
<label text=_("Frame:") />
<label text=_("X position:") />
<label text=_("Y position:") />
<label text=_("Opacity:") />
</box>
<box vertical homogeneous expansive>
<entry maxsize=32 name="frpos" />
<entry maxsize=32 name="frame" />
<entry maxsize=32 name="xpos" />
<entry maxsize=32 name="ypos" />
<slider min=0 max=255 name="opacity" />

View File

@ -7,11 +7,11 @@
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Frame position:") />
<label text=_("Frame duration (msecs):") />
<label text=_("Frame number:") />
<label text=_("Duration (milliseconds):") />
</box>
<box vertical homogeneous expansive>
<label text="" name="frpos" />
<label text="" name="frame" />
<entry maxsize=32 name="frlen" />
</box>
</box>

View File

@ -36,7 +36,7 @@
<listitem text=_("Transparent (mask color)") />
<listitem text=_("Black") />
<listitem text=_("White") />
<listitem text=_("Bright Pink") />
<listitem text=_("Magenta") />
<listitem text=_("Custom") />
</listbox>
</view>

View File

@ -51,7 +51,7 @@
</box>
</box>
</box>
<slider min="0" max="1" name="frpos" />
<slider min="0" max="1" name="frame" />
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />

View File

@ -1,4 +1,4 @@
# allegro-sprite-editor tips
# Allegro Sprite Editor tips
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 David A. Capello
**********************************************************************
@ -36,18 +36,30 @@ set the left or right color respectively.
You can modify the quantity of sprite's animation frames using the
"Sprite/Properties" menu or pressing <Ctrl+P>.
**********************************************************************
Move through the frames with the arrows keys
\split
Left = go to previous frame
Down = go to first frame
\next
Right = go to next frame
Up = go to last frame
\done
**********************************************************************
You can add new animation frames pressing <Ctrl+Shift+N> or using
"Frame/New" menu.
**********************************************************************
Do you want edit frames and layers? Use the film editor:
Do you want edit layers, frames and cels? Use the film editor:
\image filmedit.pcx
Go to "View/Film Editor" menu or press TAB when you are
Go to "Tools/Film Editor" menu or press TAB when you are
editing a sprite.
**********************************************************************
You can use the onionskin feature to edit animations (press <C> to see
the "Tools Setup" window):
You can use the onionskin feature to edit animations (press <C> key to
see the "Tools Setup" window):
\image onion.pcx

View File

@ -1,4 +1,4 @@
# allegro-sprite-editor tips
# Allegro Sprite Editor tips
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 David A. Capello
**********************************************************************
@ -40,11 +40,11 @@ el men
Puede agregar cuadros de animación presionando <Ctrl+Shift+N> o
utilizando el menú "Frame/Nuevo".
**********************************************************************
¿Quiere editar los cuadros y las capas? Use el "Editor de Película":
¿Quiere editar los capas, cuadros y cels? Use el "Film Editor":
\image filmedit.pcx
Vaya al menú "Ver/Editor de Película" o presione TAB cuando esté
Vaya al menú "Tools/Film Editor" o presione TAB cuando esté
editando un sprite.
**********************************************************************
Puede usar el papel cebolla (onionskin) para editar animaciones

View File

@ -27,6 +27,7 @@ ASE_SOURCES = \
src/commands/cmd_film_editor.c \
src/commands/cmd_flatten_layers.c \
src/commands/cmd_flip.c \
src/commands/cmd_frame_properties.c \
src/commands/cmd_invert_mask.c \
src/commands/cmd_layer_properties.c \
src/commands/cmd_link_cel.c \
@ -38,6 +39,7 @@ ASE_SOURCES = \
src/commands/cmd_move_cel.c \
src/commands/cmd_new_cel.c \
src/commands/cmd_new_file.c \
src/commands/cmd_new_frame.c \
src/commands/cmd_new_layer.c \
src/commands/cmd_new_layer_set.c \
src/commands/cmd_open_file.c \
@ -50,6 +52,7 @@ ASE_SOURCES = \
src/commands/cmd_redo.c \
src/commands/cmd_refresh.c \
src/commands/cmd_remove_cel.c \
src/commands/cmd_remove_frame.c \
src/commands/cmd_remove_layer.c \
src/commands/cmd_reselect_mask.c \
src/commands/cmd_run_script.c \
@ -70,8 +73,8 @@ ASE_SOURCES = \
src/commands/fx/cmd_replace_color.c \
src/console/console.c \
src/core/app.c \
src/core/config.c \
src/core/cfg.c \
src/core/config.c \
src/core/core.c \
src/core/dirs.c \
src/core/modules.c \
@ -102,14 +105,14 @@ ASE_SOURCES = \
src/file/bmp.c \
src/file/file.c \
src/file/fli.c \
src/file/gif.c \
src/file/gif/format.c \
src/file/gif/lzw.c \
src/file/ico.c \
src/file/jpeg.c \
src/file/pcx.c \
src/file/png_file.c \
src/file/tga.c \
src/file/gif.c \
src/file/gif/format.c \
src/file/gif/lzw.c \
src/intl/intl.c \
src/intl/msgids.c \
src/main.c \

View File

@ -59,7 +59,7 @@ void command_execute_about(const char *argument)
}
label3 = jlabel_new(COPYRIGHT);
label4 = jlabel_new("http://ase.sourceforge.net/");
label4 = jlabel_new(WEBSITE);
box2 = jbox_new(JI_HORIZONTAL);
box3 = jbox_new(JI_HORIZONTAL);
box4 = jbox_new(JI_HORIZONTAL);

View File

@ -39,7 +39,7 @@ bool command_enabled_cel_properties(const char *argument)
void command_execute_cel_properties(const char *argument)
{
JWidget window, entry_frpos, entry_xpos, entry_ypos, slider_opacity, button_ok;
JWidget window, entry_frame, entry_xpos, entry_ypos, slider_opacity, button_ok;
Sprite *sprite;
Layer *layer;
Cel *cel;
@ -56,44 +56,50 @@ void command_execute_cel_properties(const char *argument)
return;
/* get current cel */
cel = layer_get_cel(layer, sprite->frpos);
cel = layer_get_cel(layer, sprite->frame);
if (!cel)
return;
window = load_widget("frmprop.jid", "frame_properties");
window = load_widget("celprop.jid", "cel_properties");
if (!window)
return;
entry_frpos = jwidget_find_name(window, "frpos");
entry_frame = jwidget_find_name(window, "frame");
entry_xpos = jwidget_find_name(window, "xpos");
entry_ypos = jwidget_find_name(window, "ypos");
slider_opacity = jwidget_find_name(window, "opacity");
button_ok = jwidget_find_name(window, "ok");
sprintf(buf, "%d", cel->frpos); jwidget_set_text(entry_frpos, buf);
sprintf(buf, "%d", cel->x); jwidget_set_text(entry_xpos, buf);
sprintf(buf, "%d", cel->y); jwidget_set_text(entry_ypos, buf);
sprintf(buf, "%d", cel->frame+1);
jwidget_set_text(entry_frame, buf);
sprintf(buf, "%d", cel->x);
jwidget_set_text(entry_xpos, buf);
sprintf(buf, "%d", cel->y);
jwidget_set_text(entry_ypos, buf);
jslider_set_value(slider_opacity, cel->opacity);
while (TRUE) {
jwindow_open_fg(window);
if (jwindow_get_killer(window) == button_ok) {
int new_frpos, new_xpos, new_ypos;
int new_frame, new_xpos, new_ypos;
Cel *existent_cel;
new_frpos = strtol(jwidget_get_text(entry_frpos), NULL, 10);
new_frpos = MID(0, new_frpos, sprite->frames-1);
existent_cel = layer_get_cel(layer, new_frpos);
new_frame = strtol(jwidget_get_text(entry_frame), NULL, 10);
new_frame = MID(0, new_frame-1, sprite->frames-1);
existent_cel = layer_get_cel(layer, new_frame);
if (new_frpos != cel->frpos && existent_cel) {
if (new_frame != cel->frame && existent_cel) {
jalert(_("Error"
"<<You can't change frame position to %d."
"<<Already there is a cel in that position."
"||&OK"), new_frpos);
"<<You can't move the cel to frame %d."
"<<There is already a cel in that position."
"||&OK"), new_frame+1);
}
else {
/* WE MUST REMOVE THE FRAME BEFORE CALL frame_set_frpos() */
/* WE MUST REMOVE THE FRAME BEFORE CALL cel_set_frame() */
if (undo_is_enabled(sprite->undo)) {
undo_open(sprite->undo);
undo_remove_cel(sprite->undo, layer, cel);
@ -101,17 +107,17 @@ void command_execute_cel_properties(const char *argument)
layer_remove_cel(layer, cel);
/* change frame properties */
/* change cel properties */
new_xpos = strtol(jwidget_get_text(entry_xpos), NULL, 10);
new_ypos = strtol(jwidget_get_text(entry_ypos), NULL, 10);
cel_set_frpos(cel, new_frpos);
cel_set_frame(cel, new_frame);
cel_set_position(cel,
MID(-9999, new_xpos, 9999),
MID(-9999, new_ypos, 9999));
cel_set_opacity(cel, jslider_get_value(slider_opacity));
/* add again the same frame */
/* add again the same cel */
if (undo_is_enabled(sprite->undo)) {
undo_add_cel(sprite->undo, layer, cel);
undo_close(sprite->undo);
@ -120,8 +126,8 @@ void command_execute_cel_properties(const char *argument)
layer_add_cel(layer, cel);
/* set the sprite position, refresh and break the loop */
sprite_set_frpos(sprite, new_frpos);
GUI_Refresh(sprite);
sprite_set_frame(sprite, new_frame);
update_screen_for_sprite(sprite);
break;
}
}

View File

@ -41,5 +41,5 @@ void command_execute_clear(const char *argument)
ClearMask();
/* refresh the sprite */
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}

View File

@ -20,19 +20,19 @@
#ifndef USE_PRECOMPILED_HEADER
#include "jinete.h"
#include "jinete/base.h"
#include "core/app.h"
#include "modules/sprites.h"
#include "raster/sprite.h"
#include "dialogs/filmedit.h"
#include "util/celmove.h"
#endif
bool command_enabled_copy_cel(const char *argument)
{
return FALSE;
return is_movingcel();
}
void command_execute_copy_cel(const char *argument)
{
copy_cel();
}

View File

@ -60,5 +60,5 @@ void command_execute_deselect_mask(const char *argument)
mask_none(sprite->mask);
sprite_generate_mask_boundaries(sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}

View File

@ -44,7 +44,7 @@ bool command_enabled_duplicate_layer(const char *argument)
void command_execute_duplicate_layer(const char *argument)
{
if (DuplicateLayer() != NULL)
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}
static Layer *DuplicateLayer(void)

View File

@ -82,17 +82,17 @@ static void do_flip(int horz)
y2 = image->h-1;
}
else {
/* apply the frame offset */
/* apply the cel offset */
x1 = sprite->mask->x - x;
y1 = sprite->mask->y - y;
x2 = sprite->mask->x + sprite->mask->w - 1 - x;
y2 = sprite->mask->y + sprite->mask->h - 1 - y;
/* clip */
x1 = MID (0, x1, image->w-1);
y1 = MID (0, y1, image->h-1);
x2 = MID (0, x2, image->w-1);
y2 = MID (0, y2, image->h-1);
x1 = MID(0, x1, image->w-1);
y1 = MID(0, y1, image->h-1);
x2 = MID(0, x2, image->w-1);
y2 = MID(0, y2, image->h-1);
}
/* insert the undo operation */
@ -108,5 +108,5 @@ static void do_flip(int horz)
!horz? y2-y: y1+y,
image_getpixel (area, x, y));
image_free(area);
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}

View File

@ -77,6 +77,6 @@ void command_execute_invert_mask(const char *argument)
mask_free(mask);
sprite_generate_mask_boundaries(sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
}

View File

@ -114,7 +114,7 @@ void command_execute_layer_properties(const char *argument)
if (layer->gfxobj.type == GFXOBJ_LAYER_IMAGE)
layer_set_blend_mode(layer, jlistbox_get_selected_index(list_bm));
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
jwidget_free(window);

View File

@ -20,19 +20,19 @@
#ifndef USE_PRECOMPILED_HEADER
#include "jinete.h"
#include "jinete/base.h"
#include "core/app.h"
#include "modules/sprites.h"
#include "raster/sprite.h"
#include "dialogs/filmedit.h"
#include "util/celmove.h"
#endif
bool command_enabled_link_cel(const char *argument)
{
return FALSE;
return is_movingcel();
}
void command_execute_link_cel(const char *argument)
{
link_cel();
}

View File

@ -61,7 +61,7 @@ void command_execute_load_mask(const char *argument)
mask_free(mask);
sprite_generate_mask_boundaries(sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
jfree(filename);
}
}

View File

@ -45,5 +45,5 @@ void command_execute_mask_all(const char *argument)
mask_replace(sprite->mask, 0, 0, sprite->w, sprite->h);
sprite_generate_mask_boundaries(sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}

View File

@ -141,5 +141,5 @@ void command_execute_merge_down_layer(const char *argument)
layer_remove_layer((Layer *)src_layer->parent, src_layer);
layer_free(src_layer);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}

View File

@ -20,19 +20,19 @@
#ifndef USE_PRECOMPILED_HEADER
#include "jinete.h"
#include "jinete/base.h"
#include "core/app.h"
#include "modules/sprites.h"
#include "raster/sprite.h"
#include "dialogs/filmedit.h"
#include "util/celmove.h"
#endif
bool command_enabled_move_cel(const char *argument)
{
return FALSE;
return is_movingcel();
}
void command_execute_move_cel(const char *argument)
{
move_cel();
}

View File

@ -44,19 +44,15 @@ bool command_enabled_new_cel(const char *argument)
current_sprite->layer &&
current_sprite->layer->readable &&
current_sprite->layer->writable &&
layer_is_image(current_sprite->layer);
layer_is_image(current_sprite->layer) &&
!layer_get_cel(current_sprite->layer, current_sprite->frame);
}
void command_execute_new_cel(const char *argument)
{
int bg, image_index;
Cel *cel;
Image *image;
int frpos;
frpos = current_sprite->frpos;
while (layer_get_cel(current_sprite->layer, frpos))
frpos++;
Cel *cel;
/* create a new empty cel with a new clean image */
image = image_new(current_sprite->imgtype,
@ -76,23 +72,15 @@ void command_execute_new_cel(const char *argument)
image_index = stock_add_image(current_sprite->layer->stock, image);
undo_open(current_sprite->undo);
if (frpos >= current_sprite->frames) {
undo_set_frames(current_sprite->undo, current_sprite);
sprite_set_frames(current_sprite, frpos+1);
}
undo_int(current_sprite->undo, &current_sprite->gfxobj, &current_sprite->frpos);
sprite_set_frpos(current_sprite, frpos);
undo_add_image(current_sprite->undo,
current_sprite->layer->stock, image);
/* add the cel in the layer */
cel = cel_new(current_sprite->frpos, image_index);
cel = cel_new(current_sprite->frame, image_index);
undo_add_cel(current_sprite->undo, current_sprite->layer, cel);
layer_add_cel(current_sprite->layer, cel);
undo_close(current_sprite->undo);
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}

View File

@ -38,16 +38,20 @@ bool command_enabled_new_layer(const char *argument)
void command_execute_new_layer(const char *argument)
{
JWidget window;
JWidget window, name_widget;
Sprite *sprite = current_sprite; /* get current sprite */
char buf[512];
int w, h;
/* load the window widget */
window = load_widget("newlay.jid", "new_layer");
if (!window)
return;
jwidget_set_text(jwidget_find_name(window, "name"), GetUniqueLayerName());
name_widget = jwidget_find_name(window, "name");
jwidget_set_text(name_widget, GetUniqueLayerName());
jwidget_request_size(name_widget, &w, &h);
jwidget_set_static_size(name_widget, 128, h);
sprintf(buf, "%d", sprite->w);
jwidget_set_text(jwidget_find_name(window, "width"), buf);
@ -71,7 +75,7 @@ void command_execute_new_layer(const char *argument)
jalert(_("Error<<Not enough memory||&Close"));
return;
}
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
jwidget_free(window);

View File

@ -55,7 +55,7 @@ void command_execute_new_layer_set(const char *argument)
jalert(_("Error<<Not enough memory||&Close"));
return;
}
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
jwidget_free(window);

View File

@ -116,7 +116,7 @@ static void preview_sprite(int flags)
/* render the sprite in the bitmap */
image = render_sprite(sprite, 0, 0, sprite->w, sprite->h,
sprite->frpos, 0);
sprite->frame, 0);
if (image) {
image_to_allegro(image, bmp, 0, 0);
image_free(image);
@ -209,13 +209,13 @@ static void preview_sprite(int flags)
int c = readkey()>>8;
/* change frame */
if (editor_keys_toset_frpos(widget, c)) {
if (editor_keys_toset_frame(widget, c)) {
/* redraw */
redraw = TRUE;
/* render the sprite in the bitmap */
image = render_sprite(sprite, 0, 0, sprite->w, sprite->h,
sprite->frpos, 0);
sprite->frame, 0);
if (image) {
image_to_allegro(image, bmp, 0, 0);
image_free(image);

View File

@ -40,7 +40,7 @@ void command_execute_record_screen(const char *argument)
rec_screen_off();
else if (bitmap_color_depth(screen) == 8
|| jalert(_("Warning"
"<<The display isn't in a 8 bpp resolution, the recording."
"<<The display isn't in a 8 bpp resolution, the recording"
"<<process can be really slow. It's recommended to use a"
"<<8 bpp to make it faster."
"<<Do you want to continue anyway?"

View File

@ -36,5 +36,5 @@ void command_execute_redo(const char *argument)
{
undo_redo(current_sprite->undo);
sprite_generate_mask_boundaries(current_sprite);
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}

View File

@ -20,11 +20,19 @@
#ifndef USE_PRECOMPILED_HEADER
#include <allegro.h>
#include "jinete/system.h"
#include "core/app.h"
#endif
void command_execute_refresh(const char *argument)
{
jmouse_hide();
clear_to_color(screen, makecol(0, 0, 0));
jmouse_show();
app_refresh_screen();
}

View File

@ -31,15 +31,20 @@
bool command_enabled_remove_cel(const char *argument)
{
return current_sprite != NULL;
return
current_sprite &&
current_sprite->layer &&
current_sprite->layer->readable &&
current_sprite->layer->writable &&
layer_is_image(current_sprite->layer) &&
layer_get_cel(current_sprite->layer, current_sprite->frame);
}
void command_execute_remove_cel(const char *argument)
{
Sprite *sprite = current_sprite;
Cel *cel = layer_get_cel(sprite->layer, sprite->frpos);
if (cel) {
RemoveCel(sprite->layer, cel);
GUI_Refresh(sprite);
}
Cel *cel = layer_get_cel(current_sprite->layer,
current_sprite->frame);
RemoveCel(current_sprite->layer, cel);
update_screen_for_sprite(current_sprite);
}

View File

@ -35,5 +35,5 @@ bool command_enabled_remove_layer(const char *argument)
void command_execute_remove_layer(const char *argument)
{
RemoveLayer();
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}

View File

@ -55,5 +55,5 @@ void command_execute_reselect_mask(const char *argument)
mask_free(mask);
sprite_generate_mask_boundaries(sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}

View File

@ -110,7 +110,7 @@ void command_execute_sprite_properties(const char *argument)
sprite_set_frames(sprite, nframes);
/* update sprite in editors */
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
break;
}
else if (killer == speed) {
@ -122,47 +122,3 @@ void command_execute_sprite_properties(const char *argument)
jwidget_free(window);
}
/* if sprite_frpos < 0, set the frame length of all frames */
void dialogs_frame_length(int sprite_frpos)
{
JWidget window, frpos, frlen, ok;
char buf[64];
window = load_widget("frlen.jid", "frame_duration");
if (!window)
return;
if (!get_widgets(window,
"frpos", &frpos,
"frlen", &frlen,
"ok", &ok, NULL)) {
jwidget_free(window);
return;
}
if (sprite_frpos < 0)
strcpy(buf, "All");
else
sprintf(buf, "%d", sprite_frpos);
jwidget_set_text(frpos, buf);
sprintf(buf, "%d", sprite_get_frlen(current_sprite, current_sprite->frpos));
jwidget_set_text(frlen, buf);
jwindow_open_fg(window);
if (jwindow_get_killer(window) == ok) {
int num = strtol(jwidget_get_text(frlen), NULL, 10);
if (sprite_frpos < 0) {
if (jalert("Warning"
"<<Do you want change the frame-rate of all frames?"
"<<(this operation can\'t be undoed)"
"||&Yes||&No") == 1)
sprite_set_speed(current_sprite, num);
}
else
sprite_set_frlen(current_sprite, num, sprite_frpos);
}
jwidget_free(window);
}

View File

@ -36,5 +36,5 @@ void command_execute_undo(const char *argument)
{
undo_undo(current_sprite->undo);
sprite_generate_mask_boundaries(current_sprite);
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}

View File

@ -110,6 +110,13 @@ bool command_enabled_flatten_layers(const char *argument);
void command_execute_flatten_layers(const char *argument);
bool command_enabled_crop_layer(const char *argument);
void command_execute_crop_layer(const char *argument);
/* frame */
bool command_enabled_frame_properties(const char *argument);
void command_execute_frame_properties(const char *argument);
bool command_enabled_remove_frame(const char *argument);
void command_execute_remove_frame(const char *argument);
bool command_enabled_new_frame(const char *argument);
void command_execute_new_frame(const char *argument);
/* cel */
bool command_enabled_cel_properties(const char *argument);
void command_execute_cel_properties(const char *argument);
@ -187,6 +194,7 @@ void command_execute_select_file(const char *argument);
#define CMD_EXE_CHK(name) { #name, NULL, command_checked_##name, command_execute_##name, NULL }
static Command commands[] = {
/* file */
CMD_EXE(new_file),
CMD_EXE(open_file),
CMD_EXE_ENA(save_file),
@ -197,6 +205,7 @@ static Command commands[] = {
CMD_EXE_CHK(record_screen),
CMD_EXE(about),
CMD_EXE(exit),
/* edit */
CMD_EXE_ENA(undo),
CMD_EXE_ENA(redo),
CMD_EXE_ENA(cut),
@ -207,6 +216,7 @@ static Command commands[] = {
CMD_EXE_ENA(flip_vertical),
CMD_EXE_ENA(replace_color),
CMD_EXE_ENA(invert_color),
/* view */
CMD_EXE(refresh),
{ CMD_CONFIGURE_SCREEN, NULL, NULL, NULL, NULL },
CMD_EXE(advanced_mode),
@ -217,11 +227,13 @@ static Command commands[] = {
CMD_EXE_ENA2(preview_tiled, preview),
CMD_EXE_ENA2(preview_normal, preview),
CMD_EXE_ENA2(preview_fit_to_screen, preview),
/* sprite */
CMD_EXE_ENA(sprite_properties),
CMD_EXE_ENA(duplicate_sprite),
CMD_EXE_ENA(change_image_type),
CMD_EXE_ENA(crop_sprite),
CMD_EXE_ENA(autocrop_sprite),
/* layer */
CMD_EXE_ENA(layer_properties),
CMD_EXE_ENA(new_layer),
CMD_EXE_ENA(new_layer_set),
@ -230,6 +242,11 @@ static Command commands[] = {
CMD_EXE_ENA(merge_down_layer),
CMD_EXE_ENA(flatten_layers),
CMD_EXE_ENA(crop_layer),
/* frame */
CMD_EXE_ENA(frame_properties),
CMD_EXE_ENA(remove_frame),
CMD_EXE_ENA(new_frame),
/* cel */
CMD_EXE_ENA(cel_properties),
CMD_EXE_ENA(remove_cel),
CMD_EXE_ENA(new_cel),
@ -237,6 +254,7 @@ static Command commands[] = {
CMD_EXE_ENA(copy_cel),
CMD_EXE_ENA(link_cel),
CMD_EXE_ENA(crop_cel),
/* mask */
CMD_EXE_ENA(mask_all),
CMD_EXE_ENA(deselect_mask),
CMD_EXE_ENA(reselect_mask),
@ -244,6 +262,7 @@ static Command commands[] = {
CMD_EXE_ENA(mask_by_color),
CMD_EXE_ENA(load_mask),
CMD_EXE_ENA(save_mask),
/* tools */
CMD_EXE(configure_tools),
CMD_EXE_CHK(marker_tool),
CMD_EXE_CHK(dots_tool),
@ -265,6 +284,7 @@ static Command commands[] = {
CMD_EXE(run_script),
CMD_EXE(tips),
CMD_EXE(options),
/* internal */
CMD_EXE_ENA_CHK(select_file),
{ NULL, NULL, NULL, NULL, NULL }

View File

@ -69,6 +69,10 @@
#define CMD_MERGE_DOWN_LAYER "merge_down_layer"
#define CMD_FLATTEN_LAYERS "flatten_layers"
#define CMD_CROP_LAYER "crop_layer"
/* frame */
#define CMD_FRAME_PROPERTIES "frame_properties"
#define CMD_NEW_FRAME "new_frame"
#define CMD_REMOVE_FRAME "remove_frame"
/* cel */
#define CMD_CEL_PROPERTIES "cel_properties"
#define CMD_REMOVE_CEL "remove_cel"

View File

@ -46,8 +46,8 @@
static Curve *the_curve = NULL;
static JWidget check_preview, preview;
static bool hooked_msg_proc (JWidget widget, JMessage msg);
static void make_preview (void);
static bool hooked_msg_proc(JWidget widget, JMessage msg);
static void make_preview(void);
bool command_enabled_color_curve(const char *argument)
{
@ -65,79 +65,79 @@ void command_execute_color_curve(const char *argument)
if (!the_curve) {
/* default curve */
the_curve = curve_new (CURVE_LINEAR);
curve_add_point (the_curve, curve_point_new (0, 0));
curve_add_point (the_curve, curve_point_new (255, 255));
the_curve = curve_new(CURVE_LINEAR);
curve_add_point(the_curve, curve_point_new (0, 0));
curve_add_point(the_curve, curve_point_new (255, 255));
}
image = GetImage ();
image = GetImage();
if (!image)
return;
window = load_widget ("colcurv.jid", "color_curve");
window = load_widget("colcurv.jid", "color_curve");
if (!window)
return;
if (!get_widgets (window,
if (!get_widgets(window,
"preview", &check_preview,
"button_ok", &button_ok,
"curve", &view_curve,
"target", &box_target, NULL)) {
jwidget_free (window);
jwidget_free(window);
return;
}
effect = effect_new (sprite, "color_curve");
effect = effect_new(sprite, "color_curve");
if (!effect) {
console_printf (_("Error creating the effect applicator for this sprite\n"));
jwidget_free (window);
console_printf(_("Error creating the effect applicator for this sprite\n"));
jwidget_free(window);
return;
}
preview = preview_new (effect);
preview = preview_new(effect);
set_color_curve (the_curve);
set_color_curve(the_curve);
curve_editor = curve_editor_new (the_curve, 0, 0, 255, 255);
target_button = target_button_new (sprite->imgtype, TRUE);
curve_editor = curve_editor_new(the_curve, 0, 0, 255, 255);
target_button = target_button_new(sprite->imgtype, TRUE);
if (get_config_bool ("ColorCurve", "Preview", TRUE))
jwidget_select (check_preview);
if (get_config_bool("ColorCurve", "Preview", TRUE))
jwidget_select(check_preview);
jview_attach (view_curve, curve_editor);
jwidget_set_static_size (view_curve, 64, 64);
jview_attach(view_curve, curve_editor);
jwidget_set_static_size(view_curve, 128, 64);
jwidget_add_child (box_target, target_button);
jwidget_add_child (window, preview);
jwidget_add_child(box_target, target_button);
jwidget_add_child(window, preview);
jwidget_add_hook (window, JI_WIDGET, hooked_msg_proc, NULL);
jwidget_add_hook(window, JI_WIDGET, hooked_msg_proc, NULL);
/* default position */
jwindow_remap (window);
jwindow_center (window);
jwindow_remap(window);
jwindow_center(window);
/* first preview */
make_preview ();
make_preview();
/* load window configuration */
load_window_pos (window, "ColorCurve");
load_window_pos(window, "ColorCurve");
/* open the window */
jwindow_open_fg (window);
jwindow_open_fg(window);
if (jwindow_get_killer (window) == button_ok) {
effect_apply_to_target (effect);
if (jwindow_get_killer(window) == button_ok) {
effect_apply_to_target(effect);
}
effect_free (effect);
effect_free(effect);
/* update editors */
GUI_Refresh (sprite);
update_screen_for_sprite(sprite);
/* save window configuration */
save_window_pos (window, "ColorCurve");
save_window_pos(window, "ColorCurve");
jwidget_free (window);
jwidget_free(window);
}
static bool hooked_msg_proc (JWidget widget, JMessage msg)
@ -146,27 +146,27 @@ static bool hooked_msg_proc (JWidget widget, JMessage msg)
switch (msg->signal.num) {
case SIGNAL_CURVE_EDITOR_CHANGE:
set_color_curve (curve_editor_get_curve (msg->signal.from));
make_preview ();
set_color_curve(curve_editor_get_curve(msg->signal.from));
make_preview();
break;
case SIGNAL_TARGET_BUTTON_CHANGE:
effect_load_target (preview_get_effect (preview));
make_preview ();
effect_load_target(preview_get_effect(preview));
make_preview();
break;
case JI_SIGNAL_CHECK_CHANGE:
set_config_bool ("ColorCurve", "Preview",
jwidget_is_selected (msg->signal.from));
make_preview ();
set_config_bool("ColorCurve", "Preview",
jwidget_is_selected(msg->signal.from));
make_preview();
break;
}
}
return FALSE;
}
static void make_preview (void)
static void make_preview(void)
{
if (jwidget_is_selected (check_preview))
preview_restart (preview);
if (jwidget_is_selected(check_preview))
preview_restart(preview);
}

View File

@ -95,7 +95,7 @@ void command_execute_convolution_matrix(const char *argument)
if (!window)
return;
if (!get_widgets (window,
if (!get_widgets(window,
"preview", &check_preview,
"tiled", &check_tiled,
"button_ok", &button_ok,
@ -103,33 +103,33 @@ void command_execute_convolution_matrix(const char *argument)
"target", &box_target,
"reload", &reload,
"generate", &generate, NULL)) {
jwidget_free (window);
jwidget_free(window);
return;
}
effect = effect_new (sprite, "convolution_matrix");
effect = effect_new(sprite, "convolution_matrix");
if (!effect) {
console_printf (_("Error creating the effect applicator for this sprite\n"));
jwidget_free (window);
console_printf(_("Error creating the effect applicator for this sprite\n"));
jwidget_free(window);
return;
}
preview = preview_new (effect);
preview = preview_new(effect);
list_convmatr = listbox_generate_convmatg ();
target_button = target_button_new (sprite->imgtype, TRUE);
list_convmatr = listbox_generate_convmatg();
target_button = target_button_new(sprite->imgtype, TRUE);
if (get_config_bool ("ConvolutionMatrix", "Preview", TRUE))
jwidget_select (check_preview);
if (get_config_bool("ConvolutionMatrix", "Preview", TRUE))
jwidget_select(check_preview);
if (get_tiled_mode ())
jwidget_select (check_tiled);
if (get_tiled_mode())
jwidget_select(check_tiled);
jview_attach (view_convmatr, list_convmatr);
jwidget_set_static_size (view_convmatr, 64, 64);
jview_attach(view_convmatr, list_convmatr);
jwidget_set_static_size(view_convmatr, 128, 64);
jwidget_add_child (box_target, target_button);
jwidget_add_child (window, preview);
jwidget_add_child(box_target, target_button);
jwidget_add_child(window, preview);
HOOK (target_button, SIGNAL_TARGET_BUTTON_CHANGE, target_change_hook, 0);
HOOK (check_preview, JI_SIGNAL_CHECK_CHANGE, preview_change_hook, 0);
@ -160,7 +160,7 @@ void command_execute_convolution_matrix(const char *argument)
effect_free (effect);
/* update editors */
GUI_Refresh (sprite);
update_screen_for_sprite (sprite);
/* save window configuration */
save_window_pos (window, "ConvolutionMatrix");

View File

@ -139,7 +139,7 @@ void command_execute_despeckle(const char *argument)
effect_free (effect);
/* update editors */
GUI_Refresh (current_sprite);
update_screen_for_sprite (current_sprite);
/* save window configuration */
save_window_pos (window, "Median");

View File

@ -119,7 +119,7 @@ void command_execute_invert_color(const char *argument)
effect_free(effect);
/* update editors */
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
/* save window configuration */
save_window_pos(window, "InvertColor");

View File

@ -154,7 +154,7 @@ void command_execute_replace_color(const char *argument)
effect_free(effect);
/* update editors */
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
/* save window configuration */
save_window_pos(window, "ReplaceColor");

View File

@ -348,7 +348,7 @@ void app_refresh_screen(void)
/* update the color palette */
set_current_palette(current_sprite ?
sprite_get_palette(current_sprite,
current_sprite->frpos): NULL,
current_sprite->frame): NULL,
FALSE);
/* redraw the screen */

View File

@ -110,7 +110,7 @@ void canvas_resize (void)
if (jwindow_get_killer (window) == button_ok) {
/* update editors */
GUI_Refresh (sprite);
update_screen_for_sprite(sprite);
}
/* save window configuration */

View File

@ -47,7 +47,7 @@ static JWidget slider_R, slider_G, slider_B;
static JWidget slider_H, slider_S, slider_V;
static JWidget color_viewer;
static JWidget palette_editor;
static JWidget slider_frpos;
static JWidget slider_frame;
static void select_all_command (JWidget widget);
static void load_command (JWidget widget);
@ -58,7 +58,7 @@ static void quantize_command (JWidget widget);
static int sliderRGB_change_signal (JWidget widget, int user_data);
static int sliderHSV_change_signal (JWidget widget, int user_data);
static int slider_columns_change_signal (JWidget widget, int user_data);
static int slider_frpos_change_signal (JWidget widget, int user_data);
static int slider_frame_change_signal (JWidget widget, int user_data);
static int palette_editor_change_signal (JWidget widget, int user_data);
static void set_new_palette (RGB *palette);
@ -71,10 +71,10 @@ void dialogs_palette_editor(void)
JWidget button_undo, button_redo;
JWidget button_load, button_save;
JWidget button_ramp, button_quantize;
int frpos, columns;
int frame, columns;
PALETTE palette;
int imgtype = current_sprite ? current_sprite->imgtype: IMAGE_INDEXED;
int frpos_bak = current_sprite ? current_sprite->frpos : 0;
int frame_bak = current_sprite ? current_sprite->frame : 0;
if (imgtype == IMAGE_GRAYSCALE) {
jalert (_("Error<<You can't edit grayscale palette||&OK"));
@ -94,7 +94,7 @@ void dialogs_palette_editor(void)
"saturation", &slider_S,
"value", &slider_V,
"columns", &slider_columns,
"frpos", &slider_frpos,
"frame", &slider_frame,
"select_all", &button_select_all,
"undo", &button_undo,
"redo", &button_redo,
@ -116,9 +116,9 @@ void dialogs_palette_editor(void)
jalert (_("Error<<Not enough memory||&OK"));
return;
}
for (frpos=0; frpos<current_sprite->frames; frpos++)
memcpy (palettes[frpos],
sprite_get_palette (current_sprite, frpos), sizeof(PALETTE));
for (frame=0; frame<current_sprite->frames; frame++)
memcpy(palettes[frame],
sprite_get_palette(current_sprite, frame), sizeof(PALETTE));
}
else
palettes = NULL;
@ -147,30 +147,30 @@ void dialogs_palette_editor(void)
jslider_set_value (slider_columns, columns);
palette_editor_set_columns (palette_editor, columns);
/* frpos */
/* frame */
if (current_sprite) {
jslider_set_range (slider_frpos, 0, current_sprite->frames-1);
jslider_set_value (slider_frpos, current_sprite->frpos);
jslider_set_range(slider_frame, 0, current_sprite->frames-1);
jslider_set_value(slider_frame, current_sprite->frame);
}
else
jwidget_disable (slider_frpos);
jwidget_disable(slider_frame);
/* hook signals */
HOOK (slider_R, JI_SIGNAL_SLIDER_CHANGE, sliderRGB_change_signal, 0);
HOOK (slider_G, JI_SIGNAL_SLIDER_CHANGE, sliderRGB_change_signal, 0);
HOOK (slider_B, JI_SIGNAL_SLIDER_CHANGE, sliderRGB_change_signal, 0);
HOOK (slider_H, JI_SIGNAL_SLIDER_CHANGE, sliderHSV_change_signal, 0);
HOOK (slider_S, JI_SIGNAL_SLIDER_CHANGE, sliderHSV_change_signal, 0);
HOOK (slider_V, JI_SIGNAL_SLIDER_CHANGE, sliderHSV_change_signal, 0);
HOOK (slider_columns, JI_SIGNAL_SLIDER_CHANGE, slider_columns_change_signal, 0);
HOOK (slider_frpos, JI_SIGNAL_SLIDER_CHANGE, slider_frpos_change_signal, 0);
HOOK (palette_editor, SIGNAL_PALETTE_EDITOR_CHANGE, palette_editor_change_signal, 0);
HOOK(slider_R, JI_SIGNAL_SLIDER_CHANGE, sliderRGB_change_signal, 0);
HOOK(slider_G, JI_SIGNAL_SLIDER_CHANGE, sliderRGB_change_signal, 0);
HOOK(slider_B, JI_SIGNAL_SLIDER_CHANGE, sliderRGB_change_signal, 0);
HOOK(slider_H, JI_SIGNAL_SLIDER_CHANGE, sliderHSV_change_signal, 0);
HOOK(slider_S, JI_SIGNAL_SLIDER_CHANGE, sliderHSV_change_signal, 0);
HOOK(slider_V, JI_SIGNAL_SLIDER_CHANGE, sliderHSV_change_signal, 0);
HOOK(slider_columns, JI_SIGNAL_SLIDER_CHANGE, slider_columns_change_signal, 0);
HOOK(slider_frame, JI_SIGNAL_SLIDER_CHANGE, slider_frame_change_signal, 0);
HOOK(palette_editor, SIGNAL_PALETTE_EDITOR_CHANGE, palette_editor_change_signal, 0);
jbutton_add_command (button_select_all, select_all_command);
jbutton_add_command (button_load, load_command);
jbutton_add_command (button_save, save_command);
jbutton_add_command (button_ramp, ramp_command);
jbutton_add_command (button_quantize, quantize_command);
jbutton_add_command(button_select_all, select_all_command);
jbutton_add_command(button_load, load_command);
jbutton_add_command(button_save, save_command);
jbutton_add_command(button_ramp, ramp_command);
jbutton_add_command(button_quantize, quantize_command);
/* default position */
jwindow_remap (window);
@ -185,48 +185,48 @@ void dialogs_palette_editor(void)
/* check the killer widget */
if (jwindow_get_killer (window) == button_ok) {
if (current_sprite) {
palette_copy (palettes[jslider_get_value(slider_frpos)],
palette_copy (palettes[jslider_get_value(slider_frame)],
current_palette);
sprite_reset_palettes (current_sprite);
for (frpos=0; frpos<current_sprite->frames; frpos++) {
if (frpos == 0 ||
palette_diff (palettes[frpos], palettes[frpos-1], NULL, NULL))
sprite_set_palette (current_sprite, palettes[frpos], frpos);
for (frame=0; frame<current_sprite->frames; frame++) {
if (frame == 0 ||
palette_diff(palettes[frame], palettes[frame-1], NULL, NULL))
sprite_set_palette(current_sprite, palettes[frame], frame);
}
}
/* change the system palette */
else
set_default_palette (palette);
set_default_palette(palette);
set_current_palette (palette, TRUE);
set_current_palette(palette, TRUE);
}
/* cancel or ESC */
else {
/* restore the system palette */
if (current_sprite) {
current_sprite->frpos = frpos_bak;
set_current_palette (sprite_get_palette(current_sprite, frpos_bak), TRUE);
current_sprite->frame = frame_bak;
set_current_palette(sprite_get_palette(current_sprite, frame_bak), TRUE);
}
else {
set_current_palette (NULL, TRUE);
set_current_palette(NULL, TRUE);
}
}
/* redraw the entire screen */
jmanager_refresh_screen ();
jmanager_refresh_screen();
/* save columns configuration */
columns = jslider_get_value (slider_columns);
set_config_int ("PaletteEditors", "Columns", MID (1, columns, 256));
columns = jslider_get_value(slider_columns);
set_config_int("PaletteEditors", "Columns", MID (1, columns, 256));
/* save window configuration */
save_window_pos (window, "PaletteEditor");
save_window_pos(window, "PaletteEditor");
jwidget_free (window);
jwidget_free(window);
if (palettes)
jfree (palettes);
jfree(palettes);
}
static void select_all_command(JWidget widget)
@ -405,14 +405,14 @@ static int slider_columns_change_signal(JWidget widget, int user_data)
return FALSE;
}
static int slider_frpos_change_signal(JWidget widget, int user_data)
static int slider_frame_change_signal(JWidget widget, int user_data)
{
int old_frpos = current_sprite->frpos;
int new_frpos = jslider_get_value(slider_frpos);
int old_frame = current_sprite->frame;
int new_frame = jslider_get_value(slider_frame);
palette_copy(palettes[old_frpos], current_palette);
current_sprite->frpos = new_frpos;
set_new_palette(palettes[new_frpos]);
palette_copy(palettes[old_frame], current_palette);
current_sprite->frame = new_frame;
set_new_palette(palettes[new_frame]);
return FALSE;
}

View File

@ -70,7 +70,7 @@ typedef struct LayerBox {
typedef struct CelBox {
JWidget widget;
LayerBox *layer_box;
/* for frame movement */
/* for cel movement */
Layer *layer;
Cel *cel;
struct jrect rect;
@ -79,17 +79,17 @@ typedef struct CelBox {
static int state = STATE_NONE;
static JWidget layer_box_new (void);
static int layer_box_type (void);
static LayerBox *layer_box_data (JWidget widget);
static void layer_box_request_size (JWidget widget, int *w, int *h);
static bool layer_box_msg_proc (JWidget widget, JMessage msg);
static JWidget layer_box_new(void);
static int layer_box_type(void);
static LayerBox *layer_box_data(JWidget widget);
static void layer_box_request_size(JWidget widget, int *w, int *h);
static bool layer_box_msg_proc(JWidget widget, JMessage msg);
static JWidget cel_box_new (void);
static int cel_box_type (void);
static CelBox *cel_box_data (JWidget widget);
static void cel_box_request_size (JWidget widget, int *w, int *h);
static bool cel_box_msg_proc (JWidget widget, JMessage msg);
static JWidget cel_box_new(void);
static int cel_box_type(void);
static CelBox *cel_box_data(JWidget widget);
static void cel_box_request_size(JWidget widget, int *w, int *h);
static bool cel_box_msg_proc(JWidget widget, JMessage msg);
static Layer *select_prev_layer(Layer *layer, int enter_in_sets);
static Layer *select_next_layer(Layer *layer, int enter_in_sets);
@ -97,17 +97,18 @@ static int count_layers(Layer *layer);
static int get_layer_pos(Layer *layer, Layer *current, int *pos);
static Layer *get_layer_in_pos(Layer *layer, int pos);
static void select_frpos_motion(JWidget widget);
static void update_after_command(LayerBox *layer_box);
static void select_frame_motion(JWidget widget);
static void select_layer_motion(JWidget widget, LayerBox *layer_box, CelBox *cel_box);
static void control_scroll_motion(JWidget widget, LayerBox *layer_box, CelBox *cel_box);
static void get_cel_rect(JWidget widget, JRect rect);
bool is_movingframe (void)
bool is_movingcel(void)
{
return (state == STATE_MOVING)? TRUE: FALSE;
}
void switch_between_film_and_sprite_editor (void)
void switch_between_film_and_sprite_editor(void)
{
Sprite *sprite = current_sprite;
JWidget window, box1, panel1;
@ -132,8 +133,8 @@ void switch_between_film_and_sprite_editor (void)
jview_attach(layer_view, layer_box);
jview_attach(frame_view, cel_box);
jview_without_bars(layer_view);
jview_without_bars(frame_view);
/* jview_without_bars(layer_view); */
/* jview_without_bars(frame_view); */
jwidget_add_child(panel1, layer_view);
jwidget_add_child(panel1, frame_view);
@ -156,7 +157,7 @@ void switch_between_film_and_sprite_editor (void)
jview_set_scroll(layer_view, 0, y);
jview_set_scroll(frame_view,
sprite->frpos*FRMSIZE+FRMSIZE/2-jrect_w(vp2)/2, y);
sprite->frame*FRMSIZE+FRMSIZE/2-jrect_w(vp2)/2, y);
jrect_free(vp1);
jrect_free(vp2);
@ -174,7 +175,7 @@ void switch_between_film_and_sprite_editor (void)
/* destroy thumbnails */
destroy_thumbnails();
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
/***********************************************************************
@ -208,17 +209,20 @@ static LayerBox *layer_box_data (JWidget widget)
return jwidget_get_data (widget, layer_box_type ());
}
static void layer_box_request_size (JWidget widget, int *w, int *h)
static void layer_box_request_size(JWidget widget, int *w, int *h)
{
Sprite *sprite = current_sprite;
*w = 256;
*h = LAYSIZE*(count_layers (sprite->set)+1);
*h = LAYSIZE*(count_layers(sprite->set)+1);
*w = MAX(*w, JI_SCREEN_W);
*h = MAX(*h, JI_SCREEN_H);
}
static bool layer_box_msg_proc (JWidget widget, JMessage msg)
static bool layer_box_msg_proc(JWidget widget, JMessage msg)
{
LayerBox *layer_box = layer_box_data (widget);
LayerBox *layer_box = layer_box_data(widget);
Sprite *sprite = current_sprite;
switch (msg->type) {
@ -228,9 +232,23 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
break;
case JM_REQSIZE:
layer_box_request_size (widget, &msg->reqsize.w, &msg->reqsize.h);
layer_box_request_size(widget, &msg->reqsize.w, &msg->reqsize.h);
return TRUE;
case JM_SETPOS: {
JWidget view1 = jwidget_get_view(layer_box->widget);
JWidget view2 = jwidget_get_view(layer_box->cel_box->widget);
int scroll1_x, scroll1_y;
int scroll2_x, scroll2_y;
jwidget_signal_off(widget);
jview_get_scroll(view1, &scroll1_x, &scroll1_y);
jview_get_scroll(view2, &scroll2_x, &scroll2_y);
jview_set_scroll(view2, scroll2_x, scroll1_y);
jwidget_signal_on(widget);
break;
}
case JM_DRAW: {
JWidget view = jwidget_get_view (widget);
JRect vp = jview_get_viewport_position (view);
@ -241,7 +259,7 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
Layer *layer;
int y, h;
jview_get_scroll (view, &scroll_x, &scroll_y);
jview_get_scroll(view, &scroll_x, &scroll_y);
text_mode (-1);
clear_to_color (bmp, makecol (255, 255, 255));
@ -302,10 +320,10 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
}
l = (Layer *)l->parent;
}
textout (bmp, widget->text_font, layer->name,
textout(bmp, widget->text_font, layer->name,
2+tabs*16, final_y-text_height (widget->text_font)/2,
selected_layer ?
makecol (255, 255, 255): makecol (0, 0, 0));
makecol(255, 255, 255): makecol (0, 0, 0));
}
#endif
y += h;
@ -331,8 +349,7 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
if (command && strcmp(command->name, CMD_UNDO) == 0) {
if (undo_can_undo(sprite->undo)) {
undo_undo(sprite->undo);
destroy_thumbnails();
jmanager_refresh_screen();
update_after_command(layer_box);
}
return TRUE;
}
@ -341,19 +358,31 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
if (command && strcmp(command->name, CMD_REDO) == 0) {
if (undo_can_redo(sprite->undo)) {
undo_redo(sprite->undo);
destroy_thumbnails();
jmanager_refresh_screen();
update_after_command(layer_box);
}
return TRUE;
}
/* new_frame, remove_frame, new_cel, remove_cel */
if (command &&
(strcmp(command->name, CMD_NEW_CEL) == 0 ||
strcmp(command->name, CMD_NEW_FRAME) == 0 ||
strcmp(command->name, CMD_NEW_LAYER) == 0 ||
strcmp(command->name, CMD_REMOVE_CEL) == 0 ||
strcmp(command->name, CMD_REMOVE_FRAME) == 0 ||
strcmp(command->name, CMD_REMOVE_LAYER) == 0)) {
command_execute(command, NULL);
update_after_command(layer_box);
return TRUE;
}
/* case KEY_UP: */
/* select_next_layer (sprite->layer, TRUE); */
/* GUI_Refresh (sprite); */
/* select_next_layer(sprite->layer, TRUE); */
/* update_screen_for_sprite(sprite); */
/* break; */
/* case KEY_DOWN: */
/* select_prev_layer (sprite->layer, TRUE); */
/* GUI_Refresh (sprite); */
/* select_prev_layer(sprite->layer, TRUE); */
/* update_screen_for_sprite(sprite); */
/* break; */
break;
}
@ -379,10 +408,10 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
if (jwidget_has_capture (widget)) {
/* scroll */
if (state == STATE_SCROLLING)
control_scroll_motion (widget, layer_box, layer_box->cel_box);
control_scroll_motion(widget, layer_box, layer_box->cel_box);
/* move */
else if (state == STATE_MOVING) {
select_layer_motion (widget, layer_box, layer_box->cel_box);
select_layer_motion(widget, layer_box, layer_box->cel_box);
}
return TRUE;
}
@ -398,25 +427,25 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
if (state == STATE_MOVING) {
/* layer popup menu */
if (msg->mouse.right) {
JWidget popup_menuitem = get_layer_popup_menuitem ();
JWidget popup_menuitem = get_layer_popup_menuitem();
if (popup_menuitem && jmenuitem_get_submenu (popup_menuitem)) {
jmenu_popup (jmenuitem_get_submenu (popup_menuitem),
if (popup_menuitem && jmenuitem_get_submenu(popup_menuitem)) {
jmenu_popup(jmenuitem_get_submenu (popup_menuitem),
msg->mouse.x, msg->mouse.y);
jview_update (jwidget_get_view (layer_box->widget));
jview_update (jwidget_get_view (layer_box->cel_box->widget));
jview_update(jwidget_get_view(layer_box->widget));
jview_update(jwidget_get_view(layer_box->cel_box->widget));
}
}
/* move */
else if (layer_box->layer != current_sprite->layer) {
layer_move_layer ((Layer *)layer_box->layer->parent,
layer_move_layer((Layer *)layer_box->layer->parent,
layer_box->layer, current_sprite->layer);
current_sprite->layer = layer_box->layer;
jview_update (jwidget_get_view (layer_box->widget));
jview_update (jwidget_get_view (layer_box->cel_box->widget));
jview_update(jwidget_get_view(layer_box->widget));
jview_update(jwidget_get_view(layer_box->cel_box->widget));
}
else
jwidget_dirty (widget);
@ -434,42 +463,44 @@ static bool layer_box_msg_proc (JWidget widget, JMessage msg)
CelBox
***********************************************************************/
static JWidget cel_box_new (void)
static JWidget cel_box_new(void)
{
JWidget widget = jwidget_new (cel_box_type ());
CelBox *cel_box = jnew (CelBox, 1);
JWidget widget = jwidget_new(cel_box_type());
CelBox *cel_box = jnew(CelBox, 1);
cel_box->widget = widget;
jwidget_add_hook (widget, cel_box_type (),
cel_box_msg_proc, cel_box);
jwidget_focusrest (widget, TRUE);
jwidget_add_hook(widget, cel_box_type(), cel_box_msg_proc, cel_box);
jwidget_focusrest(widget, TRUE);
return widget;
}
static int cel_box_type (void)
static int cel_box_type(void)
{
static int type = 0;
if (!type)
type = ji_register_widget_type ();
type = ji_register_widget_type();
return type;
}
static CelBox *cel_box_data (JWidget widget)
static CelBox *cel_box_data(JWidget widget)
{
return jwidget_get_data (widget, cel_box_type ());
return jwidget_get_data(widget, cel_box_type());
}
static void cel_box_request_size (JWidget widget, int *w, int *h)
static void cel_box_request_size(JWidget widget, int *w, int *h)
{
Sprite *sprite = current_sprite;
*w = FRMSIZE*sprite->frames-1;
*h = LAYSIZE*(count_layers (sprite->set)+1);
*h = LAYSIZE*(count_layers(sprite->set)+1);
*w = MAX(*w, JI_SCREEN_W);
*h = MAX(*h, JI_SCREEN_H);
}
static bool cel_box_msg_proc (JWidget widget, JMessage msg)
static bool cel_box_msg_proc(JWidget widget, JMessage msg)
{
CelBox *cel_box = cel_box_data (widget);
Sprite *sprite = current_sprite;
@ -484,10 +515,24 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
cel_box_request_size (widget, &msg->reqsize.w, &msg->reqsize.h);
return TRUE;
case JM_SETPOS: {
JWidget view1 = jwidget_get_view(cel_box->layer_box->widget);
JWidget view2 = jwidget_get_view(cel_box->widget);
int scroll1_x, scroll1_y;
int scroll2_x, scroll2_y;
jwidget_signal_off(widget);
jview_get_scroll(view1, &scroll1_x, &scroll1_y);
jview_get_scroll(view2, &scroll2_x, &scroll2_y);
jview_set_scroll(view1, scroll1_x, scroll2_y);
jwidget_signal_on(widget);
break;
}
case JM_DRAW: {
JWidget view = jwidget_get_view (widget);
JRect vp = jview_get_viewport_position (view);
BITMAP *bmp = create_bitmap (jrect_w(vp), jrect_h(vp));
JWidget view = jwidget_get_view(widget);
JRect vp = jview_get_viewport_position(view);
BITMAP *bmp = create_bitmap(jrect_w(vp), jrect_h(vp));
BITMAP *thumbnail;
int scroll_x, scroll_y;
int c, x, y, h;
@ -498,18 +543,18 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
int first_viewable_frame;
int last_viewable_frame;
jview_get_scroll (view, &scroll_x, &scroll_y);
jview_get_scroll(view, &scroll_x, &scroll_y);
text_mode (-1);
text_mode(-1);
/* all to white */
clear_to_color (bmp, makecol (255, 255, 255));
clear_to_color(bmp, makecol(255, 255, 255));
/* selected frame (draw the blue-column) */
rectfill (bmp,
-scroll_x+sprite->frpos*FRMSIZE, 0,
-scroll_x+sprite->frpos*FRMSIZE+FRMSIZE-1, bmp->h-1,
makecol (44, 76, 145));
rectfill(bmp,
-scroll_x+sprite->frame*FRMSIZE, 0,
-scroll_x+sprite->frame*FRMSIZE+FRMSIZE-1, bmp->h-1,
makecol(44, 76, 145));
/* draw frames numbers (and vertical separators) */
y = 0;
@ -517,28 +562,28 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
offset_x = scroll_x % FRMSIZE;
for (x=0; x<bmp->w+FRMSIZE; x += FRMSIZE) {
vline (bmp, x-offset_x-1, 0, bmp->h, makecol (0, 0, 0));
vline(bmp, x-offset_x-1, 0, bmp->h, makecol (0, 0, 0));
c = (x+scroll_x)/FRMSIZE;
if (c >= sprite->frames) {
rectfill (bmp, x-offset_x, 0, x-offset_x+FRMSIZE-1, bmp->h-1,
makecol (128, 128, 128));
rectfill(bmp, x-offset_x, 0, x-offset_x+FRMSIZE-1, bmp->h-1,
makecol(128, 128, 128));
}
/* frpos */
/* frame */
textprintf_centre
(bmp, widget->text_font,
x-offset_x+FRMSIZE/2, y+h/2-text_height (widget->text_font)/2,
c == sprite->frpos ? makecol (255, 255, 255): makecol (0, 0, 0),
"%d", c);
c == sprite->frame ? makecol(255, 255, 255): makecol(0, 0, 0),
"%d", c+1);
/* frlen */
textprintf_right
(bmp, widget->text_font,
x-offset_x+FRMSIZE-1, y+h-text_height (widget->text_font),
c == sprite->frpos ? makecol (255, 255, 255): makecol (0, 0, 0),
"%d", sprite_get_frlen(sprite, c));
x-offset_x+FRMSIZE-1, y+h-text_height(widget->text_font),
c == sprite->frame ? makecol(255, 255, 255): makecol(0, 0, 0),
"%dms", sprite_get_frlen(sprite, c));
}
/* draw layers keyframes */
@ -547,37 +592,37 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
first_viewable_frame = (scroll_x)/FRMSIZE;
last_viewable_frame = (bmp->w+FRMSIZE+scroll_x)/FRMSIZE;
hline (bmp, 0, h, bmp->w-1, makecol (0, 0, 0));
set_clip (bmp, 0, h+1, bmp->w-1, bmp->h-1);
hline(bmp, 0, h, bmp->w-1, makecol(0, 0, 0));
set_clip(bmp, 0, h+1, bmp->w-1, bmp->h-1);
layers = count_layers (sprite->set);
layers = count_layers(sprite->set);
for (pos=0; pos<layers; pos++) {
layer = get_layer_in_pos (sprite->set, pos);
layer = get_layer_in_pos(sprite->set, pos);
if (sprite->layer == layer)
rectfill (bmp, 0, y, bmp->w-1, y+h-1, makecol (44, 76, 145));
rectfill(bmp, 0, y, bmp->w-1, y+h-1, makecol(44, 76, 145));
else if (layer->gfxobj.type == GFXOBJ_LAYER_SET)
rectfill (bmp, 0, y, bmp->w-1, y+h-1, makecol (128, 128, 128));
rectfill(bmp, 0, y, bmp->w-1, y+h-1, makecol(128, 128, 128));
hline (bmp, 0, y, bmp->w-1, makecol (0, 0, 0));
hline (bmp, 0, y+h, bmp->w-1, makecol (0, 0, 0));
hline(bmp, 0, y, bmp->w-1, makecol (0, 0, 0));
hline(bmp, 0, y+h, bmp->w-1, makecol (0, 0, 0));
/* draw thumbnails */
/* draw thumbnail of cels */
switch (layer->gfxobj.type) {
case GFXOBJ_LAYER_SET:
break;
case GFXOBJ_LAYER_IMAGE: {
Cel *cel, *cel_link;
int k_frpos, k_image;
int k_frame, k_image;
JLink link;
JI_LIST_FOR_EACH(layer->cels, link) {
cel = link->data;
k_frpos = cel->frpos;
k_frame = cel->frame;
if (k_frpos < first_viewable_frame ||
k_frpos > last_viewable_frame)
if (k_frame < first_viewable_frame ||
k_frame > last_viewable_frame)
continue;
k_image = cel->image;
@ -586,14 +631,14 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
thumbnail = generate_thumbnail(cel_link ? cel_link: cel,
layer);
x1 = k_frpos*FRMSIZE-scroll_x+FRMSIZE/2-THUMBSIZE/2;
x1 = k_frame*FRMSIZE-scroll_x+FRMSIZE/2-THUMBSIZE/2;
y1 = y+3;
x2 = x1+THUMBSIZE-1;
y2 = y1+THUMBSIZE-1;
_ji_theme_rectedge(bmp, x1-1, y1-1, x2+1, y2+1,
makecol (128, 128, 128),
makecol (196, 196, 196));
makecol(128, 128, 128),
makecol(196, 196, 196));
if (thumbnail)
draw_sprite(bmp, thumbnail, x1, y1);
@ -619,7 +664,7 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
}
case JM_BUTTONPRESSED:
jwidget_hard_capture_mouse (widget);
jwidget_hard_capture_mouse(widget);
if (msg->any.shifts & KB_SHIFT_FLAG) {
state = STATE_SCROLLING;
@ -631,20 +676,13 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
state = STATE_SELECTING; /* by default we will be selecting
frames */
select_frpos_motion(widget);
select_frame_motion(widget);
select_layer_motion(widget, cel_box->layer_box, cel_box);
/* show the dialog to change the frlen (frame duration time)? */
if (msg->mouse.y < FRMSIZE) {
jwidget_release_mouse (widget);
/* TODO remove this, make a better UI */
dialogs_frame_length(current_sprite->frpos);
jwidget_dirty(widget);
return TRUE;
}
if (msg->mouse.y >= FRMSIZE) {
/* was the button pressed in a cel? */
cel = layer_get_cel(current_sprite->layer,
current_sprite->frpos);
current_sprite->frame);
if (cel) {
state = STATE_MOVING; /* now we will moving a cel */
jmouse_set_cursor(JI_CURSOR_MOVE);
@ -666,12 +704,29 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
jmouse_show();
}
}
/* show the dialog to change the frlen (frame duration time)? */
else if (msg->mouse.right) {
jwidget_release_mouse(widget);
JWidget popup_menuitem = get_frame_popup_menuitem();
if (popup_menuitem && jmenuitem_get_submenu(popup_menuitem)) {
/* show the frame pop-up menu */
jmenu_popup(jmenuitem_get_submenu(popup_menuitem),
msg->mouse.x, msg->mouse.y);
jview_update(jwidget_get_view(cel_box->widget));
jview_update(jwidget_get_view(cel_box->layer_box->widget));
}
return TRUE;
}
}
case JM_MOTION:
if (jwidget_has_capture (widget)) {
/* scroll */
if (state == STATE_SCROLLING)
control_scroll_motion (widget, cel_box->layer_box, cel_box);
control_scroll_motion(widget, cel_box->layer_box, cel_box);
/* move */
else if (state == STATE_MOVING) {
jmouse_hide();
@ -679,7 +734,7 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
rectrestore(cel_box->rect_data);
rectdiscard(cel_box->rect_data);
select_frpos_motion(widget);
select_frame_motion(widget);
select_layer_motion(widget, cel_box->layer_box, cel_box);
get_cel_rect(widget, &cel_box->rect);
@ -699,7 +754,7 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
}
/* select */
else if (state == STATE_SELECTING) {
select_frpos_motion(widget);
select_frame_motion(widget);
select_layer_motion(widget, cel_box->layer_box, cel_box);
}
return TRUE;
@ -724,19 +779,22 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
set_cel_to_handle(cel_box->layer, cel_box->cel);
if (msg->mouse.right) {
JWidget popup_menuitem = get_frame_popup_menuitem();
JWidget popup_menuitem = get_cel_popup_menuitem();
if (popup_menuitem && jmenuitem_get_submenu(popup_menuitem)) {
/* show the frame pop-up menu */
/* show the cel pop-up menu */
jmenu_popup(jmenuitem_get_submenu(popup_menuitem),
msg->mouse.x, msg->mouse.y);
jview_update(jwidget_get_view (cel_box->widget));
jview_update(jwidget_get_view (cel_box->layer_box->widget));
destroy_thumbnails();
jview_update(jwidget_get_view(cel_box->widget));
jview_update(jwidget_get_view(cel_box->layer_box->widget));
}
}
else if (state == STATE_MOVING) {
move_cel();
destroy_thumbnails();
jwidget_dirty(widget);
}
}
@ -753,7 +811,7 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
Extra Routines
***********************************************************************/
static Layer *select_prev_layer (Layer *layer, int enter_in_sets)
static Layer *select_prev_layer(Layer *layer, int enter_in_sets)
{
GfxObj *parent = layer->parent;
@ -776,7 +834,7 @@ static Layer *select_prev_layer (Layer *layer, int enter_in_sets)
return layer;
}
static Layer *select_next_layer (Layer *layer, int enter_in_sets)
static Layer *select_next_layer(Layer *layer, int enter_in_sets)
{
GfxObj *parent = layer->parent;
@ -862,38 +920,47 @@ static Layer *get_layer_in_pos(Layer *layer, int pos)
return NULL;
}
/* select the frpos depending of mouse motion (also adjust the scroll) */
static void select_frpos_motion(JWidget widget)
static void update_after_command(LayerBox *layer_box)
{
jview_update(jwidget_get_view(layer_box->widget));
jview_update(jwidget_get_view(layer_box->cel_box->widget));
destroy_thumbnails();
jmanager_refresh_screen();
}
/* select the frame depending of mouse motion (also adjust the scroll) */
static void select_frame_motion(JWidget widget)
{
Sprite *sprite = current_sprite;
int frpos = (jmouse_x(0) - widget->rc->x1) / FRMSIZE;
int frame = (jmouse_x(0) - widget->rc->x1) / FRMSIZE;
frpos = MID(0, frpos, sprite->frames-1);
frame = MID(0, frame, sprite->frames-1);
/* the frame change */
if (sprite->frpos != frpos) {
if (sprite->frame != frame) {
JWidget view = jwidget_get_view(widget);
JRect vp = jview_get_viewport_position(view);
int scroll_x, scroll_y, scroll_change;
sprite->frpos = frpos;
sprite->frame = frame;
jview_get_scroll(view, &scroll_x, &scroll_y);
if (widget->rc->x1+frpos*FRMSIZE < vp->x1) {
jview_set_scroll(view, frpos*FRMSIZE, scroll_y);
if (widget->rc->x1+frame*FRMSIZE < vp->x1) {
jview_set_scroll(view, frame*FRMSIZE, scroll_y);
scroll_change = TRUE;
}
else if (widget->rc->x1+frpos*FRMSIZE+FRMSIZE-1 > vp->x2-1) {
else if (widget->rc->x1+frame*FRMSIZE+FRMSIZE-1 > vp->x2-1) {
jview_set_scroll(view,
frpos*FRMSIZE+FRMSIZE-1-jrect_w(vp), scroll_y);
frame*FRMSIZE+FRMSIZE-1-jrect_w(vp), scroll_y);
scroll_change = TRUE;
}
else
scroll_change = FALSE;
if (scroll_change)
jmouse_set_position(widget->rc->x1+frpos*FRMSIZE+FRMSIZE/2, jmouse_y(0));
jmouse_set_position(widget->rc->x1+frame*FRMSIZE+FRMSIZE/2, jmouse_y(0));
jwidget_dirty(widget);
jrect_free(vp);
@ -951,36 +1018,21 @@ static void select_layer_motion(JWidget widget,
}
}
/* controls scroll for "layer_box" and "cel_box" handling horizontal
scroll individually and vertical scroll jointly */
/**
* Controls scroll for "layer_box" and "cel_box" handling horizontal
* scroll individually and vertical scroll jointly
*/
static void control_scroll_motion(JWidget widget,
LayerBox *layer_box, CelBox *cel_box)
{
JWidget view1 = jwidget_get_view(layer_box->widget);
JWidget view2 = jwidget_get_view(cel_box->widget);
JRect vp = jview_get_viewport_position(jwidget_get_view (widget));
int scroll1_x, scroll1_y;
int scroll2_x, scroll2_y;
JWidget view = jwidget_get_view(widget);
JRect vp = jview_get_viewport_position(jwidget_get_view(widget));
int scroll_x, scroll_y;
jview_get_scroll(view1, &scroll1_x, &scroll1_y);
jview_get_scroll(view2, &scroll2_x, &scroll2_y);
/* horizontal scroll for layer_box */
if (widget == layer_box->widget)
scroll1_x += jmouse_x(1)-jmouse_x(0);
/* horizontal scroll for cel_box */
else
scroll2_x += jmouse_x(1)-jmouse_x(0);
jview_set_scroll(view1,
scroll1_x,
/* vertical scroll */
scroll1_y+jmouse_y(1)-jmouse_y(0));
jview_set_scroll(view2,
scroll2_x,
/* vertical scroll */
scroll2_y+jmouse_y(1)-jmouse_y(0));
jview_get_scroll(view, &scroll_x, &scroll_y);
jview_set_scroll(view,
scroll_x+jmouse_x(1)-jmouse_x(0),
scroll_y+jmouse_y(1)-jmouse_y(0));
jmouse_control_infinite_scroll(vp);
jrect_free(vp);
@ -1000,7 +1052,7 @@ static void get_cel_rect(JWidget widget, JRect rect)
get_layer_pos(current_sprite->set, current_sprite->layer, &pos);
x1 = current_sprite->frpos*FRMSIZE-scroll_x+FRMSIZE/2-THUMBSIZE/2;
x1 = current_sprite->frame*FRMSIZE-scroll_x+FRMSIZE/2-THUMBSIZE/2;
y1 = y+h*pos+3;
rect->x1 = vp->x1 + x1 - 1;

View File

@ -19,9 +19,9 @@
#ifndef DIALOGS_FILMEDIT_H
#define DIALOGS_FILMEDIT_H
bool is_movingframe (void);
bool is_movingcel(void);
void switch_between_film_and_sprite_editor (void);
void switch_between_film_and_sprite_editor(void);
#endif /* DIALOGS_FILMEDIT_H */

View File

@ -148,13 +148,13 @@ void dialogs_mask_color(void)
}
/* update boundaries and editors */
sprite_generate_mask_boundaries (sprite);
GUI_Refresh (sprite);
sprite_generate_mask_boundaries(sprite);
update_screen_for_sprite(sprite);
/* save window configuration */
save_window_pos (window, "MaskColor");
save_window_pos(window, "MaskColor");
jwidget_free (window);
jwidget_free(window);
}
static void button_1_command (JWidget widget)
@ -215,15 +215,15 @@ static void mask_preview (void)
{
if (jwidget_is_selected (check_preview)) {
Sprite *sprite = current_sprite;
Mask *mask = gen_mask ();
Mask *mask = gen_mask();
Mask *old_mask = sprite->mask;
sprite->mask = mask;
sprite_generate_mask_boundaries (sprite);
GUI_Refresh (sprite);
sprite_generate_mask_boundaries(sprite);
update_screen_for_sprite(sprite);
sprite->mask = old_mask;
mask_free (mask);
mask_free(mask);
}
}

View File

@ -35,6 +35,7 @@
/* show the language selection dialog */
void dialogs_select_language(bool force)
{
#if 0 /* No more languages by now */
bool select_language = get_config_bool("Options", "SelectLanguage", TRUE);
if (force || select_language) {
@ -64,6 +65,10 @@ void dialogs_select_language(bool force)
jwidget_free(window);
}
#else /* Just english */
intl_set_lang("en");
set_config_bool("Options", "SelectLanguage", FALSE);
#endif
}
/**********************************************************************/
@ -71,10 +76,10 @@ void dialogs_select_language(bool force)
static JWidget label_font, slider_x, slider_y, check_lockmouse;
static int slider_mouse_hook (JWidget widget, int user_data);
static void button_font_command (JWidget widget);
static void button_lang_command (JWidget widget);
static void set_label_font_text (void);
static int slider_mouse_hook(JWidget widget, int user_data);
static void button_font_command(JWidget widget);
static void button_lang_command(JWidget widget);
static void set_label_font_text(void);
/* shows option dialog */
void dialogs_options(void)

View File

@ -117,8 +117,8 @@ static void do_quick (int action)
/* regenerate the boundaries (the mask was deselected) and redraw
the sprite */
sprite_generate_mask_boundaries (sprite);
GUI_Refresh (sprite);
sprite_generate_mask_boundaries(sprite);
update_screen_for_sprite(sprite);
/* move the new layer to a new position */
ret = interactive_move_layer (MODE_CLICKANDCLICK, FALSE, my_callback);
@ -196,7 +196,7 @@ static void do_quick (int action)
layer_remove_layer ((Layer *)handle_layer->parent, handle_layer);
/* refresh the sprite */
GUI_Refresh (sprite);
update_screen_for_sprite(sprite);
}
static int my_callback (void)

View File

@ -160,7 +160,7 @@ void dialogs_vector_map(void)
}
}
image_free (image_copy);
image_free(image_copy);
GUI_Refresh (sprite);
update_screen_for_sprite(sprite);
}

View File

@ -876,8 +876,8 @@ static void ase_file_write_cel_chunk(FILE *f, Cel *cel, Layer *layer, int layer_
}
case ASE_FILE_LINK_CEL:
/* linked frame position */
fputw(link->frpos, f);
/* linked cel to another frame */
fputw(link->frame, f);
break;
case ASE_FILE_RLE_COMPRESSED_CEL:

View File

@ -515,7 +515,7 @@ int sprite_save(Sprite *sprite)
/* use the "sequence" interface */
if (file->flags & FILE_SUPPORT_SEQUENCES) {
Image *image;
int old_frpos = sprite->frpos;
int old_frame = sprite->frame;
char *old_filename = jstrdup (sprite->filename);
/* create a temporary bitmap */
@ -525,14 +525,14 @@ int sprite_save(Sprite *sprite)
/* save one frame */
if (sprite->frames == 1) {
/* draw all the sprite in the image */
sprite->frpos = 0;
sprite->frame = 0;
image_clear (image, 0);
sprite_render (sprite, image, 0, 0);
/* save the temporary image */
file_sequence.image = image;
palette_copy(file_palette, sprite_get_palette(sprite, sprite->frpos));
palette_copy(file_palette, sprite_get_palette(sprite, sprite->frame));
add_progress(100);
ret = (*file->save)(sprite);
@ -553,19 +553,19 @@ int sprite_save(Sprite *sprite)
add_progress(sprite->frames);
for (sprite->frpos=0; sprite->frpos<sprite->frames; sprite->frpos++) {
for (sprite->frame=0; sprite->frame<sprite->frames; sprite->frame++) {
/* draw all the sprite in this frame in the image */
image_clear(image, 0);
sprite_render(sprite, image, 0, 0);
/* get the name for this image */
usprintf(buf, "%s%0*d%s", left, width, start_from+sprite->frpos, right);
usprintf(buf, "%s%0*d%s", left, width, start_from+sprite->frame, right);
/* save the image */
file_sequence.image = image;
ustrcpy(sprite->filename, buf);
palette_copy(file_palette, sprite_get_palette(sprite, sprite->frpos));
palette_copy(file_palette, sprite_get_palette(sprite, sprite->frame));
add_progress(100);
ret = (*file->save)(sprite);
@ -575,7 +575,7 @@ int sprite_save(Sprite *sprite)
if (ret != 0)
break;
do_progress(sprite->frpos);
do_progress(sprite->frame);
}
del_progress();
@ -588,7 +588,7 @@ int sprite_save(Sprite *sprite)
console_printf(_("Not enough memory for the temporary bitmap.\n"));
}
sprite->frpos = old_frpos;
sprite->frame = old_frame;
ustrcpy(sprite->filename, old_filename);
jfree(old_filename);
}

View File

@ -264,7 +264,7 @@ static int save_jpeg(Sprite *sprite)
J_DCT_METHOD method;
/* Configure JPEG compression only in the first frame. */
if (sprite->frpos == 0 && configure_jpeg() < 0)
if (sprite->frame == 0 && configure_jpeg() < 0)
return 0;
/* Options. */

View File

@ -50,6 +50,7 @@
#include "script/script.h"
#include "util/recscr.h"
#include "widgets/editor.h"
#include "widgets/statebar.h"
#endif
@ -240,21 +241,33 @@ static void save_gui_config(void)
set_config_int("GfxMode", "Scale", screen_scaling);
}
void GUI_Refresh(Sprite *sprite)
void update_screen_for_sprite(Sprite *sprite)
{
if (!(ase_mode & MODE_GUI))
return;
/* without sprite */
if (!sprite) {
if (set_current_palette(NULL, FALSE))
/* well, change to the default palette */
if (set_current_palette(NULL, FALSE)) {
/* if the palette changes, refresh the whole screen */
jmanager_refresh_screen();
}
}
/* with a sprite */
else {
/* select the palette of the sprite */
if (set_current_palette(sprite_get_palette(sprite, sprite->frame), FALSE)) {
/* if the palette changes, refresh the whole screen */
jmanager_refresh_screen();
}
else {
if (set_current_palette(sprite_get_palette(sprite, sprite->frpos), FALSE))
jmanager_refresh_screen();
else
/* if it's the same palette update only the editors with the sprite */
update_editors_with_sprite(sprite);
}
}
status_bar_set_text(app_get_status_bar(), 0, "");
}
void gui_run(void)
@ -286,7 +299,7 @@ void gui_feedback(void)
if (next_idle_flags & REBUILD_FULLREFRESH) {
next_idle_flags ^= REBUILD_FULLREFRESH;
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}
}
@ -691,7 +704,7 @@ static bool manager_msg_proc(JWidget widget, JMessage msg)
case JM_IDLE:
gui_feedback();
/* don't eat CPU... rest some time */
rest(1);
rest(0); rest(1);
break;
case JM_CHAR: {

View File

@ -29,7 +29,7 @@ struct Sprite;
int init_module_gui(void);
void exit_module_gui(void);
void GUI_Refresh(struct Sprite *sprite);
void update_screen_for_sprite(struct Sprite *sprite);
void gui_run(void);
void gui_feedback(void);

View File

@ -228,7 +228,7 @@ void use_sprite_rgb_map(Sprite *sprite)
regen_rgb_map = TRUE;
create_rgb_table(my_rgb_map,
sprite_get_palette(sprite, sprite->frpos), NULL);
sprite_get_palette(sprite, sprite->frame), NULL);
}
void restore_rgb_map (void)

View File

@ -43,6 +43,7 @@ static JWidget sprite_list_menuitem;
static JWidget recent_list_menuitem;
static JWidget layer_popup_menuitem;
static JWidget frame_popup_menuitem;
static JWidget cel_popup_menuitem;
static JWidget filters_popup_menuitem;
static JWidget convert_xmlelem_to_menu(JXmlElem elem);
@ -58,11 +59,12 @@ int init_module_rootmenu(void)
void exit_module_rootmenu(void)
{
sprite_list_menuitem = 0;
recent_list_menuitem = 0;
layer_popup_menuitem = 0;
frame_popup_menuitem = 0;
filters_popup_menuitem = 0;
sprite_list_menuitem = NULL;
recent_list_menuitem = NULL;
layer_popup_menuitem = NULL;
frame_popup_menuitem = NULL;
cel_popup_menuitem = NULL;
filters_popup_menuitem = NULL;
command_reset_keys();
jwidget_free(root_menu);
@ -86,11 +88,12 @@ int load_root_menu(void)
/* create a new empty-menu */
root_menu = NULL;
sprite_list_menuitem = 0;
recent_list_menuitem = 0;
layer_popup_menuitem = 0;
frame_popup_menuitem = 0;
filters_popup_menuitem = 0;
sprite_list_menuitem = NULL;
recent_list_menuitem = NULL;
layer_popup_menuitem = NULL;
frame_popup_menuitem = NULL;
cel_popup_menuitem = NULL;
filters_popup_menuitem = NULL;
dirs = filename_in_datadir("usergui.xml");
{
@ -209,6 +212,7 @@ JWidget get_sprite_list_menuitem(void) { return sprite_list_menuitem; }
JWidget get_recent_list_menuitem(void) { return recent_list_menuitem; }
JWidget get_layer_popup_menuitem(void) { return layer_popup_menuitem; }
JWidget get_frame_popup_menuitem(void) { return frame_popup_menuitem; }
JWidget get_cel_popup_menuitem(void) { return cel_popup_menuitem; }
void show_fx_popup_menu(void)
{
@ -282,6 +286,10 @@ static JWidget convert_xmlelem_to_menuitem(JXmlElem elem)
else if (strcmp(id, "frame_popup") == 0) {
frame_popup_menuitem = menuitem;
}
/* cel popup menu */
else if (strcmp(id, "cel_popup") == 0) {
cel_popup_menuitem = menuitem;
}
/* filters popup menu */
else if (strcmp(id, "fx_popup") == 0) {
filters_popup_menuitem = menuitem;

View File

@ -40,6 +40,7 @@ JWidget get_sprite_list_menuitem(void);
JWidget get_recent_list_menuitem(void);
JWidget get_layer_popup_menuitem(void);
JWidget get_frame_popup_menuitem(void);
JWidget get_cel_popup_menuitem(void);
/* int check_for_accel(int accel_type, JMessage msg); */
void show_fx_popup_menu(void);

View File

@ -205,7 +205,7 @@ Stock *sprite_get_images (Sprite *sprite, int target, int write, int **x, int **
static Stock *layer_get_images(Sprite *sprite, Layer *layer, int target, int write)
{
Stock *stock = stock_new_ref(sprite->imgtype);
int frpos = sprite->frpos;
int frame = sprite->frame;
if (!layer->readable)
return stock;
@ -219,14 +219,14 @@ static Stock *layer_get_images(Sprite *sprite, Layer *layer, int target, int wri
Image *image;
if (target & TARGET_FRAMES) {
for (frpos=0; frpos<sprite->frames; frpos++) {
image = GetLayerImage(layer, NULL, NULL, frpos);
for (frame=0; frame<sprite->frames; frame++) {
image = GetLayerImage(layer, NULL, NULL, frame);
if (image)
stock_add_image(stock, image);
}
}
else {
image = GetLayerImage(layer, NULL, NULL, frpos);
image = GetLayerImage(layer, NULL, NULL, frame);
if (image)
stock_add_image(stock, image);
}
@ -262,7 +262,7 @@ static Stock *layer_get_images(Sprite *sprite, Layer *layer, int target, int wri
static void layer_get_pos (Sprite *sprite, Layer *layer, int target, int write, int **x, int **y, int *count)
{
int frpos = sprite->frpos;
int frame = sprite->frame;
if (!layer->readable)
return;
@ -277,8 +277,8 @@ static void layer_get_pos (Sprite *sprite, Layer *layer, int target, int write,
int u, v;
if (target & TARGET_FRAMES) {
for (frpos=0; frpos<sprite->frames; frpos++) {
image = GetLayerImage (layer, &u, &v, frpos);
for (frame=0; frame<sprite->frames; frame++) {
image = GetLayerImage (layer, &u, &v, frame);
if (image) {
(*x)[*count] = u;
(*y)[*count] = v;
@ -287,7 +287,7 @@ static void layer_get_pos (Sprite *sprite, Layer *layer, int target, int write,
}
}
else {
image = GetLayerImage (layer, &u, &v, frpos);
image = GetLayerImage (layer, &u, &v, frame);
if (image) {
(*x)[*count] = u;
(*y)[*count] = v;

View File

@ -1067,7 +1067,7 @@ void control_tool(JWidget widget, Tool *tool, const char *_color)
_size, ABS (x2-x1)+1, ABS (y2-y1)+1, mode);
}
else {
status_bar_set_text (status_bar, 0, "%s %3d %3d", _pos, x1, y1);
status_bar_set_text(status_bar, 0, "%s %3d %3d", _pos, x1, y1);
}
jwidget_flush_redraw(status_bar);
@ -1140,7 +1140,7 @@ void control_tool(JWidget widget, Tool *tool, const char *_color)
MAX (y1, y2) - MIN (y1, y2) + 1);
sprite_generate_mask_boundaries(editor->sprite);
GUI_Refresh(editor->sprite);
update_screen_for_sprite(editor->sprite);
}
/* draw trace ***************************************************/
@ -1149,7 +1149,7 @@ void control_tool(JWidget widget, Tool *tool, const char *_color)
if (undo_is_enabled(editor->sprite->undo))
undo_dirty(editor->sprite->undo, dirty);
GUI_Refresh(editor->sprite);
update_screen_for_sprite(editor->sprite);
}
}
else {
@ -1157,7 +1157,7 @@ void control_tool(JWidget widget, Tool *tool, const char *_color)
dirty_put(dirty);
/* redraw */
GUI_Refresh(editor->sprite);
update_screen_for_sprite(editor->sprite);
}
editor_click_done(widget);

View File

@ -25,13 +25,13 @@
#endif
Cel *cel_new(int frpos, int image)
Cel *cel_new(int frame, int image)
{
Cel *cel = (Cel *)gfxobj_new(GFXOBJ_CEL, sizeof(Cel));
if (!cel)
return NULL;
cel->frpos = frpos;
cel->frame = frame;
cel->image = image;
cel->x = 0;
cel->y = 0;
@ -44,7 +44,7 @@ Cel *cel_new_copy(const Cel *cel)
{
Cel *cel_copy;
cel_copy = cel_new(cel->frpos, cel->image);
cel_copy = cel_new(cel->frame, cel->image);
if (!cel_copy)
return NULL;
cel_set_position(cel_copy, cel->x, cel->y);
@ -61,10 +61,10 @@ void cel_free(Cel *cel)
Cel *cel_is_link(Cel *cel, Layer *layer)
{
Cel *link;
int frpos;
int frame;
for (frpos=0; frpos<cel->frpos; frpos++) {
link = layer_get_cel(layer, frpos);
for (frame=0; frame<cel->frame; frame++) {
link = layer_get_cel(layer, frame);
if (link && link->image == cel->image)
return link;
}
@ -72,11 +72,13 @@ Cel *cel_is_link(Cel *cel, Layer *layer)
return NULL;
}
/* warning, you must remove the cel from parent layer before to change
the frpos */
void cel_set_frpos(Cel *cel, int frpos)
/**
* @warning You have to remove the cel from the layer before to change
* the frame position.
*/
void cel_set_frame(Cel *cel, int frame)
{
cel->frpos = frpos;
cel->frame = frame;
}
void cel_set_image(Cel *cel, int image)

View File

@ -28,19 +28,19 @@ typedef struct Cel Cel;
struct Cel
{
GfxObj gfxobj;
int frpos; /* frame position */
int frame; /* frame position */
int image; /* image index of stock */
int x, y; /* X/Y screen position */
int opacity; /* opacity level */
};
Cel *cel_new(int frpos, int image);
Cel *cel_new(int frame, int image);
Cel *cel_new_copy(const Cel *cel);
void cel_free(Cel *cel);
Cel *cel_is_link(Cel *cel, struct Layer *layer);
void cel_set_frpos(Cel *cel, int frpos);
void cel_set_frame(Cel *cel, int frame);
void cel_set_image(Cel *cel, int image);
void cel_set_position(Cel *cel, int x, int y);
void cel_set_opacity(Cel *cel, int opacity);

View File

@ -32,7 +32,7 @@
#endif
static int has_cels(Layer *layer, int frpos);
static bool has_cels(Layer *layer, int frame);
#define LAYER_INIT(name_string) \
do { \
@ -177,7 +177,7 @@ Layer *layer_new_copy(const Layer *layer)
return layer_copy;
}
Layer *layer_new_with_image(int imgtype, int x, int y, int w, int h, int frpos)
Layer *layer_new_with_image(int imgtype, int x, int y, int w, int h, int frame)
{
Layer *layer;
Cel *cel;
@ -207,7 +207,7 @@ Layer *layer_new_with_image(int imgtype, int x, int y, int w, int h, int frpos)
index = stock_add_image(layer->stock, image);
/* create the cel */
cel = cel_new(frpos, index);
cel = cel_new(frame, index);
cel_set_position(cel, x, y);
/* add the cel in the layer */
@ -313,7 +313,7 @@ void layer_add_cel(Layer *layer, Cel *cel)
JLink link;
JI_LIST_FOR_EACH(layer->cels, link)
if (((Cel *)link->data)->frpos >= cel->frpos)
if (((Cel *)link->data)->frame >= cel->frame)
break;
jlist_insert_before(layer->cels, link, cel);
@ -326,7 +326,7 @@ void layer_remove_cel(Layer *layer, Cel *cel)
jlist_remove(layer->cels, cel);
}
Cel *layer_get_cel(Layer *layer, int frpos)
Cel *layer_get_cel(Layer *layer, int frame)
{
if (layer_is_image(layer)) {
Cel *cel;
@ -334,7 +334,7 @@ Cel *layer_get_cel(Layer *layer, int frpos)
JI_LIST_FOR_EACH(layer->cels, link) {
cel = link->data;
if (cel->frpos == frpos)
if (cel->frame == frame)
return cel;
}
}
@ -350,7 +350,7 @@ void layer_add_layer(Layer *set, Layer *layer)
}
}
void layer_remove_layer (Layer *set, Layer *layer)
void layer_remove_layer(Layer *set, Layer *layer)
{
if (set->gfxobj.type == GFXOBJ_LAYER_SET) {
jlist_remove(set->layers, layer);
@ -372,7 +372,7 @@ void layer_move_layer(Layer *set, Layer *layer, Layer *after)
}
}
void layer_render(Layer *layer, Image *image, int x, int y, int frpos)
void layer_render(Layer *layer, Image *image, int x, int y, int frame)
{
if (!layer->readable)
return;
@ -380,7 +380,7 @@ void layer_render(Layer *layer, Image *image, int x, int y, int frpos)
switch (layer->gfxobj.type) {
case GFXOBJ_LAYER_IMAGE: {
Cel *cel = layer_get_cel(layer, frpos);
Cel *cel = layer_get_cel(layer, frame);
Image *src_image;
if (cel) {
@ -404,7 +404,7 @@ void layer_render(Layer *layer, Image *image, int x, int y, int frpos)
case GFXOBJ_LAYER_SET: {
JLink link;
JI_LIST_FOR_EACH(layer->layers, link)
layer_render(link->data, image, x, y, frpos);
layer_render(link->data, image, x, y, frame);
break;
}
@ -426,7 +426,7 @@ Layer *layer_flatten(Layer *layer, int imgtype,
Layer *flat_layer;
Image *image;
Cel *cel;
int frpos;
int frame;
flat_layer = layer_new(imgtype);
if (!flat_layer)
@ -434,9 +434,9 @@ Layer *layer_flatten(Layer *layer, int imgtype,
layer_set_name(flat_layer, "Flat Layer");
for (frpos=frmin; frpos<=frmax; frpos++) {
/* does this "frpos" have cels to render? */
if (has_cels(layer, frpos)) {
for (frame=frmin; frame<=frmax; frame++) {
/* does this frame have cels to render? */
if (has_cels(layer, frame)) {
/* create a new image */
image = image_new(imgtype, w, h);
if (!image) {
@ -446,7 +446,7 @@ Layer *layer_flatten(Layer *layer, int imgtype,
/* create the new cel for the output layer (add the image to
stock too) */
cel = cel_new(frpos, stock_add_image(flat_layer->stock, image));
cel = cel_new(frame, stock_add_image(flat_layer->stock, image));
cel_set_position(cel, x, y);
if (!cel) {
layer_free(flat_layer);
@ -456,7 +456,7 @@ Layer *layer_flatten(Layer *layer, int imgtype,
/* clear the image and render this frame */
image_clear(image, 0);
layer_render(layer, image, -x, -y, frpos);
layer_render(layer, image, -x, -y, frame);
layer_add_cel(flat_layer, cel);
}
}
@ -464,8 +464,8 @@ Layer *layer_flatten(Layer *layer, int imgtype,
return flat_layer;
}
/* returns TRUE if the "layer" (or him childs) has cels to render in frpos */
static int has_cels(Layer *layer, int frpos)
/* returns TRUE if the "layer" (or him childs) has cels to render in frame */
static bool has_cels(Layer *layer, int frame)
{
if (!layer->readable)
return FALSE;
@ -473,12 +473,12 @@ static int has_cels(Layer *layer, int frpos)
switch (layer->gfxobj.type) {
case GFXOBJ_LAYER_IMAGE:
return layer_get_cel(layer, frpos) ? TRUE: FALSE;
return layer_get_cel(layer, frame) ? TRUE: FALSE;
case GFXOBJ_LAYER_SET: {
JLink link;
JI_LIST_FOR_EACH(layer->layers, link) {
if (has_cels(link->data, frpos))
if (has_cels(link->data, frame))
return TRUE;
}
break;

View File

@ -58,7 +58,7 @@ Layer *layer_new(int imgtype);
Layer *layer_set_new(void);
/* Layer *layer_new_text (const char *text); */
Layer *layer_new_copy(const Layer *layer);
Layer *layer_new_with_image(int imgtype, int x, int y, int w, int h, int frpos);
Layer *layer_new_with_image(int imgtype, int x, int y, int w, int h, int frame);
void layer_free(Layer *layer);
int layer_is_image(const Layer *layer);
@ -74,14 +74,14 @@ void layer_set_parent(Layer *layer, GfxObj *gfxobj);
/* for LAYER_IMAGE */
void layer_add_cel(Layer *layer, struct Cel *cel);
void layer_remove_cel(Layer *layer, struct Cel *cel);
struct Cel *layer_get_cel(Layer *layer, int frpos);
struct Cel *layer_get_cel(Layer *layer, int frame);
/* for LAYER_SET */
void layer_add_layer(Layer *set, Layer *layer);
void layer_remove_layer(Layer *set, Layer *layer);
void layer_move_layer(Layer *set, Layer *layer, Layer *after);
void layer_render(Layer *layer, struct Image *image, int x, int y, int frpos);
void layer_render(Layer *layer, struct Image *image, int x, int y, int frame);
Layer *layer_flatten(Layer *layer, int imgtype,
int x, int y, int w, int h, int frmin, int frmax);

View File

@ -32,7 +32,7 @@
typedef struct PAL
{
int frpos;
int frame;
PALETTE pal;
} PAL;
@ -62,7 +62,7 @@ Sprite *sprite_new(int imgtype, int w, int h)
sprite->h = h;
sprite->frames = 1;
sprite->frlens = jmalloc(sizeof(int)*sprite->frames);
sprite->frpos = 0;
sprite->frame = 0;
/* sprite->palette = jmalloc(sizeof(PALETTE)); */
sprite->palettes = jlist_new();
sprite->set = layer_set_new();
@ -109,7 +109,7 @@ Sprite *sprite_new(int imgtype, int w, int h)
break;
}
sprite_set_palette(sprite, pal, sprite->frpos);
sprite_set_palette(sprite, pal, sprite->frame);
sprite_set_speed(sprite, 42);
return sprite;
@ -259,46 +259,46 @@ void sprite_mark_as_saved(Sprite *sprite)
sprite->associated_to_file = TRUE;
}
RGB *sprite_get_palette(Sprite *sprite, int frpos)
RGB *sprite_get_palette(Sprite *sprite, int frame)
{
RGB *rgb = NULL;
JLink link;
PAL *pal;
frpos = MAX(0, frpos);
frame = MAX(0, frame);
JI_LIST_FOR_EACH(sprite->palettes, link) {
pal = link->data;
if (frpos < pal->frpos)
if (frame < pal->frame)
break;
rgb = pal->pal;
if (frpos == pal->frpos)
if (frame == pal->frame)
break;
}
return rgb;
}
void sprite_set_palette(Sprite *sprite, RGB *rgb, int frpos)
void sprite_set_palette(Sprite *sprite, RGB *rgb, int frame)
{
JLink link;
PAL *pal;
frpos = MAX(0, frpos);
frame = MAX(0, frame);
JI_LIST_FOR_EACH(sprite->palettes, link) {
pal = link->data;
if (frpos == pal->frpos) {
if (frame == pal->frame) {
palette_copy(pal->pal, rgb);
return;
}
else if (frpos < pal->frpos)
else if (frame < pal->frame)
break;
}
pal = jmalloc(sizeof(PAL));
pal->frpos = frpos;
pal->frame = frame;
palette_copy(pal->pal, rgb);
jlist_insert_before(sprite->palettes, link, pal);
@ -345,16 +345,16 @@ void sprite_set_frames(Sprite *sprite, int frames)
sprite->frames = frames;
}
void sprite_set_frlen(Sprite *sprite, int msecs, int frpos)
void sprite_set_frlen(Sprite *sprite, int msecs, int frame)
{
if (frpos >= 0 && frpos < sprite->frames)
sprite->frlens[frpos] = MID(1, msecs, 65535);
if (frame >= 0 && frame < sprite->frames)
sprite->frlens[frame] = MID(1, msecs, 65535);
}
int sprite_get_frlen(Sprite *sprite, int frpos)
int sprite_get_frlen(Sprite *sprite, int frame)
{
if (frpos >= 0 && frpos < sprite->frames)
return sprite->frlens[frpos];
if (frame >= 0 && frame < sprite->frames)
return sprite->frlens[frame];
else
return 0;
}
@ -391,9 +391,9 @@ void sprite_set_layer(Sprite *sprite, Layer *layer)
sprite->layer = layer;
}
void sprite_set_frpos(Sprite *sprite, int frpos)
void sprite_set_frame(Sprite *sprite, int frame)
{
sprite->frpos = frpos;
sprite->frame = frame;
}
/* XXXX WARNING!: it uses the current Allegro "rgb_map" */
@ -482,7 +482,7 @@ Mask *sprite_request_mask(Sprite *sprite, const char *name)
void sprite_render(Sprite *sprite, Image *image, int x, int y)
{
layer_render(sprite->set, image, x, y, sprite->frpos);
layer_render(sprite->set, image, x, y, sprite->frame);
}
void sprite_generate_mask_boundaries(Sprite *sprite)
@ -577,13 +577,13 @@ static Sprite *general_copy(const Sprite *sprite)
/* copy general properties */
strcpy(sprite_copy->filename, sprite->filename);
sprite_set_frames(sprite_copy, sprite->frpos);
sprite_set_frames(sprite_copy, sprite->frame);
memcpy(sprite_copy->frlens, sprite->frlens, sizeof(int)*sprite->frames);
/* copy color palettes */
JI_LIST_FOR_EACH(sprite->palettes, link) {
PAL *pal = link->data;
sprite_set_palette(sprite_copy, pal->pal, pal->frpos);
sprite_set_palette(sprite_copy, pal->pal, pal->frame);
}
/* copy path */
@ -660,11 +660,11 @@ static void layer_set_imgtype(Layer *layer, int imgtype, int dithering_method,
new_image = image_set_imgtype(old_image, imgtype, dithering_method,
rgb_map,
/* XXXXX */
/* TODO check this out */
sprite_get_palette(sprite,
sprite->frpos));
sprite->frame));
if (!new_image)
return; /* XXXX big error!!!: not enough memory!
return; /* TODO big error!!!: not enough memory!
we should undo all work done */
if (undo_is_enabled(sprite->undo))
@ -684,7 +684,7 @@ static void layer_set_imgtype(Layer *layer, int imgtype, int dithering_method,
}
case GFXOBJ_LAYER_TEXT:
/* XXX */
/* TODO */
break;
}
}

View File

@ -41,7 +41,7 @@ struct Sprite
int w, h; /* image width/height size (in pixels) */
int frames; /* how many frames has this sprite */
int *frlens; /* duration per frame */
int frpos; /* selected frame position (0...frames-1) */
int frame; /* current frame, range [0,frames) */
/* RGB *palette; /\* sprite palette *\/ */
JList palettes; /* list of palettes */
struct Layer *set; /* layer list */
@ -74,20 +74,20 @@ bool sprite_is_modified(Sprite *sprite);
bool sprite_is_associated_to_file(Sprite *sprite);
void sprite_mark_as_saved(Sprite *sprite);
RGB *sprite_get_palette(Sprite *sprite, int frpos);
void sprite_set_palette(Sprite *sprite, RGB *rgb, int frpos);
RGB *sprite_get_palette(Sprite *sprite, int frame);
void sprite_set_palette(Sprite *sprite, RGB *rgb, int frame);
void sprite_reset_palettes(Sprite *sprite);
void sprite_set_filename(Sprite *sprite, const char *filename);
void sprite_set_size(Sprite *sprite, int w, int h);
void sprite_set_frames(Sprite *sprite, int frames);
void sprite_set_frlen(Sprite *sprite, int msecs, int frpos);
int sprite_get_frlen(Sprite *sprite, int frpos);
void sprite_set_frlen(Sprite *sprite, int msecs, int frame);
int sprite_get_frlen(Sprite *sprite, int frame);
void sprite_set_speed(Sprite *sprite, int msecs);
void sprite_set_path(Sprite *sprite, const struct Path *path);
void sprite_set_mask(Sprite *sprite, const struct Mask *mask);
void sprite_set_layer(Sprite *sprite, struct Layer *layer);
void sprite_set_frpos(Sprite *sprite, int frpos);
void sprite_set_frame(Sprite *sprite, int frame);
void sprite_set_imgtype(Sprite *sprite, int imgtype, int dithering_method);
void sprite_add_path(Sprite *sprite, struct Path *path);

View File

@ -27,9 +27,11 @@
#endif
/* creates a new stock, the "imgtype" argument indicates that this
stock will contain images of that type */
Stock *stock_new (int imgtype)
/**
* Creates a new stock, the "imgtype" argument indicates that this
* stock will contain images of that type.
*/
Stock *stock_new(int imgtype)
{
Stock *stock = (Stock *)gfxobj_new(GFXOBJ_STOCK, sizeof(Stock));
if (!stock)
@ -45,20 +47,24 @@ Stock *stock_new (int imgtype)
return stock;
}
/* creates a new stock for reference */
Stock *stock_new_ref (int imgtype)
/**
* Creates a new stock for reference.
*/
Stock *stock_new_ref(int imgtype)
{
Stock *stock = stock_new (imgtype);
Stock *stock = stock_new(imgtype);
stock->ref = TRUE;
return stock;
}
/* creates a new copy of "stock"; if "stock" is a reference, the
copy'll be too, but if "stock" isn't, the new copy will be an
original stock (non-referenced) with copies of all images */
Stock *stock_new_copy (const Stock *stock)
/**
* Creates a new copy of "stock"; if "stock" is a reference, the
* copy'll be too, but if "stock" isn't, the new copy will be an
* original stock (non-referenced) with copies of all images
*/
Stock *stock_new_copy(const Stock *stock)
{
Stock *stock_copy = stock_new (stock->imgtype);
Stock *stock_copy = stock_new(stock->imgtype);
Image *image_copy;
int c;
@ -66,40 +72,44 @@ Stock *stock_new_copy (const Stock *stock)
for (c=stock_copy->nimage; c<stock->nimage; c++) {
if (!stock->image[c])
stock_add_image (stock_copy, NULL);
stock_add_image(stock_copy, NULL);
else if (stock_copy->ref)
stock_add_image (stock_copy, stock->image[c]);
stock_add_image(stock_copy, stock->image[c]);
else {
image_copy = image_new_copy (stock->image[c]);
image_copy = image_new_copy(stock->image[c]);
if (!image_copy) {
stock_free (stock_copy);
stock_free(stock_copy);
return NULL;
}
stock_add_image (stock_copy, image_copy);
stock_add_image(stock_copy, image_copy);
}
}
return stock_copy;
}
/* destroys the stock */
void stock_free (Stock *stock)
/**
* Destroys the stock.
*/
void stock_free(Stock *stock)
{
if (!stock->ref) {
int i;
for (i=0; i<stock->nimage; i++) {
if (stock->image[i])
image_free (stock->image[i]);
image_free(stock->image[i]);
}
}
jfree (stock->image);
jfree(stock->image);
gfxobj_free((GfxObj *)stock);
}
/* adds a new image in the stock resizing the images-array */
int stock_add_image (Stock *stock, Image *image)
/**
* Adds a new image in the stock resizing the images-array.
*/
int stock_add_image(Stock *stock, Image *image)
{
int i = stock->nimage++;
@ -112,7 +122,7 @@ int stock_add_image (Stock *stock, Image *image)
}
/* removes a image from the stock, it doesn't resize the stock */
void stock_remove_image (Stock *stock, Image *image)
void stock_remove_image(Stock *stock, Image *image)
{
int i;
@ -123,22 +133,26 @@ void stock_remove_image (Stock *stock, Image *image)
}
}
/* replaces the image in the stock in the "index" position with the
new "image"; you must free the old image before, e.g:
Image *old_image = stock_get_image (stock, index);
if (old_image) image_free (old_image);
stock_replace_image (stock, index, new_image);
*/
void stock_replace_image (Stock *stock, int index, Image *image)
/**
* Replaces the image in the stock in the "index" position with the
* new "image"; you must free the old image before, e.g:
* @code
* Image *old_image = stock_get_image (stock, index);
* if (old_image) image_free (old_image);
* stock_replace_image (stock, index, new_image);
* @endcode
*/
void stock_replace_image(Stock *stock, int index, Image *image)
{
/* The zero index can't be changed. */
if ((index > 0) && (index < stock->nimage))
stock->image[index] = image;
}
/* returns the image in the "index" position */
Image *stock_get_image (Stock *stock, int index)
/**
* Returns the image in the "index" position
*/
Image *stock_get_image(Stock *stock, int index)
{
return ((index >= 0) && (index < stock->nimage)) ? stock->image[index]: NULL;
}

View File

@ -1402,7 +1402,7 @@ static Cel *undo_chunk_read_cel(UndoChunk *chunk)
static void undo_chunk_write_cel(UndoChunk *chunk, Cel *cel)
{
undo_chunk_put32(chunk, cel->gfxobj.id);
undo_chunk_put16(chunk, cel->frpos);
undo_chunk_put16(chunk, cel->frame);
undo_chunk_put16(chunk, cel->image);
undo_chunk_put16(chunk, cel->x);
undo_chunk_put16(chunk, cel->y);

View File

@ -252,16 +252,16 @@ static int metatable_index(lua_State *L)
case Type_Cel: {
Cel *cel = userdata->ptr;
if (strcmp (index, "frpos") == 0)
lua_pushnumber (L, cel->frpos);
else if (strcmp (index, "image") == 0)
lua_pushnumber (L, cel->image);
else if (strcmp (index, "x") == 0)
lua_pushnumber (L, cel->x);
else if (strcmp (index, "y") == 0)
lua_pushnumber (L, cel->y);
else if (strcmp (index, "opacity") == 0)
lua_pushnumber (L, cel->opacity);
if (strcmp(index, "frame") == 0)
lua_pushnumber(L, cel->frame);
else if (strcmp(index, "image") == 0)
lua_pushnumber(L, cel->image);
else if (strcmp(index, "x") == 0)
lua_pushnumber(L, cel->x);
else if (strcmp(index, "y") == 0)
lua_pushnumber(L, cel->y);
else if (strcmp(index, "opacity") == 0)
lua_pushnumber(L, cel->opacity);
/* TODO */
/* else if (strcmp (index, "next") == 0) */
/* lua_pushnumber (L, ); */
@ -276,34 +276,34 @@ static int metatable_index(lua_State *L)
case Type_Layer: {
Layer *layer = userdata->ptr;
if (strcmp (index, "name") == 0)
lua_pushstring (L, layer->name);
else if (strcmp (index, "parent") == 0)
push_userdata (L,
if (strcmp(index, "name") == 0)
lua_pushstring(L, layer->name);
else if (strcmp(index, "parent") == 0)
push_userdata(L,
layer->parent->type == GFXOBJ_LAYER_SET ?
Type_Layer: Type_Sprite, layer->parent);
else if (strcmp (index, "readable") == 0)
lua_pushboolean (L, layer->readable);
else if (strcmp (index, "writable") == 0)
lua_pushboolean (L, layer->writable);
else if (strcmp (index, "prev") == 0)
push_userdata (L, Type_Layer, layer_get_prev (layer));
else if (strcmp (index, "next") == 0)
push_userdata (L, Type_Layer, layer_get_next (layer));
else if (strcmp(index, "readable") == 0)
lua_pushboolean(L, layer->readable);
else if (strcmp(index, "writable") == 0)
lua_pushboolean(L, layer->writable);
else if (strcmp(index, "prev") == 0)
push_userdata(L, Type_Layer, layer_get_prev(layer));
else if (strcmp(index, "next") == 0)
push_userdata(L, Type_Layer, layer_get_next(layer));
else {
switch (layer->gfxobj.type) {
case GFXOBJ_LAYER_IMAGE:
if (strcmp (index, "imgtype") == 0)
lua_pushnumber (L, layer->imgtype);
if (strcmp(index, "imgtype") == 0)
lua_pushnumber(L, layer->imgtype);
/* else if (strcmp (index, "w") == 0) */
/* lua_pushnumber (L, layer->w); */
/* else if (strcmp (index, "h") == 0) */
/* lua_pushnumber (L, layer->h); */
else if (strcmp (index, "blend_mode") == 0)
lua_pushnumber (L, layer->blend_mode);
else if (strcmp (index, "stock") == 0)
push_userdata (L, Type_Stock, layer->stock);
else if (strcmp (index, "cels") == 0)
else if (strcmp(index, "blend_mode") == 0)
lua_pushnumber(L, layer->blend_mode);
else if (strcmp(index, "stock") == 0)
push_userdata(L, Type_Stock, layer->stock);
else if (strcmp(index, "cels") == 0)
push_userdata(L, Type_Cel,
jlist_first_data(layer->cels));
else
@ -361,8 +361,8 @@ static int metatable_index(lua_State *L)
lua_pushnumber(L, sprite->h);
else if (strcmp(index, "frames") == 0)
lua_pushnumber(L, sprite->frames);
else if (strcmp(index, "frpos") == 0)
lua_pushnumber(L, sprite->frpos);
else if (strcmp(index, "frame") == 0)
lua_pushnumber(L, sprite->frame);
else if (strcmp(index, "set") == 0)
push_userdata(L, Type_Layer, sprite->set);
else if (strcmp(index, "layer") == 0)
@ -475,24 +475,24 @@ static int metatable_newindex(lua_State *L)
static int metatable_gc(lua_State *L)
{
UserData *userdata = (UserData *)lua_unboxpointer (L, 1);
UserData *userdata = (UserData *)lua_unboxpointer(L, 1);
PRINTF ("Delete lua_Object (%p)\n", userdata->ptr);
PRINTF("Delete lua_Object (%p)\n", userdata->ptr);
lua_unref (L, userdata->table);
jfree (userdata);
lua_unref(L, userdata->table);
jfree(userdata);
return 0;
}
static int metatable_eq (lua_State *L)
static int metatable_eq(lua_State *L)
{
UserData *userdata1 = (UserData *)lua_unboxpointer (L, 1);
UserData *userdata2 = (UserData *)lua_unboxpointer (L, 2);
UserData *userdata1 = (UserData *)lua_unboxpointer(L, 1);
UserData *userdata2 = (UserData *)lua_unboxpointer(L, 2);
void *ptr1 = userdata1 ? userdata1->ptr: NULL;
void *ptr2 = userdata2 ? userdata2->ptr: NULL;
lua_pushboolean (L, ptr1 == ptr2);
lua_pushboolean(L, ptr1 == ptr2);
return 1;
}
@ -506,45 +506,45 @@ static int metatable_eq (lua_State *L)
#include "util/misc.h"
static void include (const char *filename)
static void include(const char *filename)
{
if (filename)
do_script_file (filename);
do_script_file(filename);
}
static void dofile (const char *filename)
static void dofile(const char *filename)
{
if (filename)
do_script_file (filename);
do_script_file(filename);
}
static void print (const char *buf)
static void print(const char *buf)
{
if (buf)
console_printf ("%s\n", buf);
console_printf("%s\n", buf);
}
static int bind_rand (lua_State *L)
static int bind_rand(lua_State *L)
{
double min = lua_tonumber (L, 1);
double max = lua_tonumber (L, 2);
lua_pushnumber (L,
((rand () % (1+((int)max*1000)-((int)min*1000)))
double min = lua_tonumber(L, 1);
double max = lua_tonumber(L, 2);
lua_pushnumber(L,
((rand() % (1+((int)max*1000)-((int)min*1000)))
+ (min*1000.0)) / 1000.0);
return 1;
}
static int bind_GetImage2 (lua_State *L)
static int bind_GetImage2(lua_State *L)
{
Sprite *sprite;
Image *image;
int x, y, opacity;
sprite = to_userdata (L, Type_Sprite, 1);
image = GetImage2 (sprite, &x, &y, &opacity);
push_userdata (L, Type_Image, image);
lua_pushnumber (L, x);
lua_pushnumber (L, y);
lua_pushnumber (L, opacity);
sprite = to_userdata(L, Type_Sprite, 1);
image = GetImage2(sprite, &x, &y, &opacity);
push_userdata(L, Type_Image, image);
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_pushnumber(L, opacity);
return 4;
}

View File

@ -258,7 +258,7 @@ void sprite_quantize(Sprite *sprite);
/* modules/gui.c */
void GUI_Refresh(Sprite *sprite);
void update_screen_for_sprite(Sprite *sprite);
void rebuild_root_menu(void);
void rebuild_sprite_list(void);
@ -389,13 +389,13 @@ void image_parallelogram(Image *bmp, Image *sprite, int x1, int y1, int x2, int
/* Cel ************************************************************/
Cel *cel_new(int frpos, int image);
Cel *cel_new(int frame, int image);
Cel *cel_new_copy(Cel *cel);
void cel_free(Cel *cel);
Cel *cel_is_link(Cel *cel, Layer *layer);
void cel_set_frpos(Cel *cel, int frpos);
void cel_set_frame(Cel *cel, int frame);
void cel_set_image(Cel *cel, int image);
void cel_set_position(Cel *cel, int x, int y);
void cel_set_opacity(Cel *cel, int opacity);
@ -422,14 +422,14 @@ void layer_set_blend_mode(Layer *layer, int blend_mode);
/* for LAYER_IMAGE */
void layer_add_cel(Layer *layer, Cel *cel);
void layer_remove_cel(Layer *layer, Cel *cel);
Cel *layer_get_cel(Layer *layer, int frpos);
Cel *layer_get_cel(Layer *layer, int frame);
/* for LAYER_SET */
void layer_add_layer(Layer *set, Layer *layer);
void layer_remove_layer(Layer *set, Layer *layer);
void layer_move_layer(Layer *set, Layer *layer, Layer *after);
void layer_render(Layer *layer, Image *image, int x, int y, int frpos);
void layer_render(Layer *layer, Image *image, int x, int y, int frame);
Layer *layer_flatten(Layer *layer, int imgtype, int x, int y, int w, int h, int frmin, int frmax);
@ -498,13 +498,13 @@ void sprite_mark_as_saved(Sprite *sprite);
void sprite_set_filename(Sprite *sprite, const char *filename);
void sprite_set_size(Sprite *sprite, int w, int h);
void sprite_set_frames(Sprite *sprite, int frames);
void sprite_set_frlen(Sprite *sprite, int msecs, int frpos);
int sprite_get_frlen(Sprite *sprite, int frpos);
void sprite_set_frlen(Sprite *sprite, int msecs, int frame);
int sprite_get_frlen(Sprite *sprite, int frame);
void sprite_set_speed(Sprite *sprite, int speed);
void sprite_set_path(Sprite *sprite, Path *path);
void sprite_set_mask(Sprite *sprite, Mask *mask);
void sprite_set_layer(Sprite *sprite, Layer *layer);
void sprite_set_frpos(Sprite *sprite, int frpos);
void sprite_set_frame(Sprite *sprite, int frame);
void sprite_set_imgtype(Sprite *sprite, int imgtype, int dithering_method);
void sprite_add_path(Sprite *sprite, Path *path);

View File

@ -115,7 +115,7 @@ Layer *NewLayer(const char *name, int x, int y, int w, int h)
index = stock_add_image(layer->stock, image);
/* create a new cel in the current frame */
cel = cel_new(sprite->frpos, index);
cel = cel_new(sprite->frame, index);
cel_set_position(cel, x, y);
/* add cel */
@ -260,7 +260,7 @@ Layer *FlattenLayers(void)
if (undo_is_enabled(sprite->undo))
undo_close(sprite->undo);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
return flat_layer;
}
@ -274,15 +274,15 @@ void RemoveCel(Layer *layer, Cel *cel)
Sprite *sprite = current_sprite;
Image *image;
Cel *it;
int frpos;
int frame;
bool used;
if (sprite != NULL && layer_is_image(layer) && cel != NULL) {
/* find if the image that use the cel to remove, is used by
another cels */
used = FALSE;
for (frpos=0; frpos<sprite->frames; ++frpos) {
it = layer_get_cel(layer, frpos);
for (frame=0; frame<sprite->frames; ++frame) {
it = layer_get_cel(layer, frame);
if (it != NULL && it != cel && it->image == cel->image) {
used = TRUE;
break;

View File

@ -1233,11 +1233,11 @@ static int bind_sprite_quantize(lua_State *L)
return 0;
}
static int bind_GUI_Refresh(lua_State *L)
static int bind_update_screen_for_sprite(lua_State *L)
{
Sprite *sprite;
GetUD(1, sprite, Sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
return 0;
}
@ -1808,11 +1808,11 @@ static int bind_image_parallelogram(lua_State *L)
static int bind_cel_new(lua_State *L)
{
Cel *return_value;
int frpos;
int frame;
int image;
GetArg(1, frpos, int, number);
GetArg(1, frame, int, number);
GetArg(2, image, int, number);
return_value = cel_new(frpos, image);
return_value = cel_new(frame, image);
push_userdata(L, Type_Cel, return_value);
return 1;
}
@ -1847,13 +1847,13 @@ static int bind_cel_is_link(lua_State *L)
return 1;
}
static int bind_cel_set_frpos(lua_State *L)
static int bind_cel_set_frame(lua_State *L)
{
Cel *cel;
int frpos;
int frame;
GetUD(1, cel, Cel);
GetArg(2, frpos, int, number);
cel_set_frpos(cel, frpos);
GetArg(2, frame, int, number);
cel_set_frame(cel, frame);
return 0;
}
@ -2029,10 +2029,10 @@ static int bind_layer_get_cel(lua_State *L)
{
Cel *return_value;
Layer *layer;
int frpos;
int frame;
GetUD(1, layer, Layer);
GetArg(2, frpos, int, number);
return_value = layer_get_cel(layer, frpos);
GetArg(2, frame, int, number);
return_value = layer_get_cel(layer, frame);
push_userdata(L, Type_Cel, return_value);
return 1;
}
@ -2075,13 +2075,13 @@ static int bind_layer_render(lua_State *L)
Image *image;
int x;
int y;
int frpos;
int frame;
GetUD(1, layer, Layer);
GetUD(2, image, Image);
GetArg(3, x, int, number);
GetArg(4, y, int, number);
GetArg(5, frpos, int, number);
layer_render(layer, image, x, y, frpos);
GetArg(5, frame, int, number);
layer_render(layer, image, x, y, frame);
return 0;
}
@ -2529,11 +2529,11 @@ static int bind_sprite_set_frlen(lua_State *L)
{
Sprite *sprite;
int msecs;
int frpos;
int frame;
GetUD(1, sprite, Sprite);
GetArg(2, msecs, int, number);
GetArg(3, frpos, int, number);
sprite_set_frlen(sprite, msecs, frpos);
GetArg(3, frame, int, number);
sprite_set_frlen(sprite, msecs, frame);
return 0;
}
@ -2541,10 +2541,10 @@ static int bind_sprite_get_frlen(lua_State *L)
{
int return_value;
Sprite *sprite;
int frpos;
int frame;
GetUD(1, sprite, Sprite);
GetArg(2, frpos, int, number);
return_value = sprite_get_frlen(sprite, frpos);
GetArg(2, frame, int, number);
return_value = sprite_get_frlen(sprite, frame);
lua_pushnumber(L, return_value);
return 1;
}
@ -2589,13 +2589,13 @@ static int bind_sprite_set_layer(lua_State *L)
return 0;
}
static int bind_sprite_set_frpos(lua_State *L)
static int bind_sprite_set_frame(lua_State *L)
{
Sprite *sprite;
int frpos;
int frame;
GetUD(1, sprite, Sprite);
GetArg(2, frpos, int, number);
sprite_set_frpos(sprite, frpos);
GetArg(2, frame, int, number);
sprite_set_frame(sprite, frame);
return 0;
}
@ -5696,7 +5696,7 @@ const luaL_reg bindings_routines[] = {
{ "load_msk_file", bind_load_msk_file },
{ "save_msk_file", bind_save_msk_file },
{ "sprite_quantize", bind_sprite_quantize },
{ "GUI_Refresh", bind_GUI_Refresh },
{ "update_screen_for_sprite", bind_update_screen_for_sprite },
{ "rebuild_root_menu", bind_rebuild_root_menu },
{ "rebuild_sprite_list", bind_rebuild_sprite_list },
{ "rebuild_recent_list", bind_rebuild_recent_list },
@ -5749,7 +5749,7 @@ const luaL_reg bindings_routines[] = {
{ "cel_new_copy", bind_cel_new_copy },
{ "cel_free", bind_cel_free },
{ "cel_is_link", bind_cel_is_link },
{ "cel_set_frpos", bind_cel_set_frpos },
{ "cel_set_frame", bind_cel_set_frame },
{ "cel_set_image", bind_cel_set_image },
{ "cel_set_position", bind_cel_set_position },
{ "cel_set_opacity", bind_cel_set_opacity },
@ -5815,7 +5815,7 @@ const luaL_reg bindings_routines[] = {
{ "sprite_set_path", bind_sprite_set_path },
{ "sprite_set_mask", bind_sprite_set_mask },
{ "sprite_set_layer", bind_sprite_set_layer },
{ "sprite_set_frpos", bind_sprite_set_frpos },
{ "sprite_set_frame", bind_sprite_set_frame },
{ "sprite_set_imgtype", bind_sprite_set_imgtype },
{ "sprite_add_path", bind_sprite_add_path },
{ "sprite_remove_path", bind_sprite_remove_path },

View File

@ -34,7 +34,7 @@ void autocrop_sprite(void)
Sprite *sprite = current_sprite;
if (sprite) {
int old_frpos = sprite->frpos;
int old_frame = sprite->frame;
Mask *old_mask = sprite->mask;
Mask *mask;
Image *image;
@ -48,7 +48,7 @@ void autocrop_sprite(void)
if (!image)
return;
for (sprite->frpos=0; sprite->frpos<sprite->frames; sprite->frpos++) {
for (sprite->frame=0; sprite->frame<sprite->frames; sprite->frame++) {
image_clear(image, 0);
sprite_render(sprite, image, 0, 0);
@ -62,7 +62,7 @@ void autocrop_sprite(void)
y2 = MAX(y2, v2);
}
}
sprite->frpos = old_frpos;
sprite->frame = old_frame;
image_free(image);

View File

@ -51,29 +51,54 @@ void set_cel_to_handle(Layer *layer, Cel *cel)
void move_cel(void)
{
Sprite *sprite = current_sprite;
if (handle_layer && handle_cel &&
!layer_get_cel(current_sprite->layer,
current_sprite->frpos)) {
!layer_get_cel(sprite->layer,
sprite->frame)
/* layer_get_cel(sprite->layer, */
/* sprite->frame) != handle_cel */) {
undo_open(sprite->undo);
/* is a cel in the destination layer/frame? */
/* if (layer_get_cel(sprite->layer, sprite->frame)) { */
/* bool increment_frames = FALSE; */
/* Cel *cel; */
/* int c; */
/* for (c=sprite->frames-1; c>=sprite->frame; --c) { */
/* cel = layer_get_cel(sprite->layer, c); */
/* if (cel) { */
/* undo_int(sprite->undo, &cel->gfxobj, &cel->frame); */
/* cel->frame++; */
/* if (cel->frame == sprite->frames) */
/* increment_frames = TRUE; */
/* } */
/* } */
/* /\* increment frames counter in the sprite *\/ */
/* if (increment_frames) { */
/* undo_set_frames(sprite->undo, sprite); */
/* sprite_set_frames(sprite, sprite->frames+1); */
/* } */
/* } */
/* move a cel in the same layer */
if (handle_layer == current_sprite->layer) {
undo_open (current_sprite->undo);
undo_remove_cel (current_sprite->undo, handle_layer, handle_cel);
handle_cel->frpos = current_sprite->frpos;
undo_add_cel (current_sprite->undo, handle_layer, handle_cel);
undo_close (current_sprite->undo);
if (handle_layer == sprite->layer) {
undo_remove_cel(sprite->undo, handle_layer, handle_cel);
handle_cel->frame = sprite->frame;
undo_add_cel(sprite->undo, handle_layer, handle_cel);
}
/* move a cel from "handle_layer" to "current_sprite->layer" */
/* move a cel from "handle_layer" to "sprite->layer" */
else {
Layer *handle_layer_bkp = handle_layer;
Cel *handle_cel_bkp = handle_cel;
undo_open(current_sprite->undo);
copy_cel();
RemoveCel(handle_layer_bkp, handle_cel_bkp);
undo_close(current_sprite->undo);
}
undo_close(sprite->undo);
}
handle_layer = NULL;
@ -82,17 +107,19 @@ void move_cel(void)
void copy_cel(void)
{
Sprite *sprite = current_sprite;
if (handle_layer && handle_cel &&
!layer_get_cel(current_sprite->layer,
current_sprite->frpos)) {
!layer_get_cel(sprite->layer,
sprite->frame)) {
Cel *cel;
Image *image;
int image_index = 0;
/* create a new cel with a new image (a copy of the
"handle_cel" one) from "handle_layer" to "current_sprite->layer" */
"handle_cel" one) from "handle_layer" to "sprite->layer" */
undo_open(current_sprite->undo);
undo_open(sprite->undo);
cel = cel_new_copy(handle_cel);
@ -102,20 +129,20 @@ void copy_cel(void)
handle_cel->image));
/* add the image in the stock of current layer */
image_index = stock_add_image(current_sprite->layer->stock, image);
undo_add_image(current_sprite->undo,
current_sprite->layer->stock, image);
image_index = stock_add_image(sprite->layer->stock, image);
undo_add_image(sprite->undo,
sprite->layer->stock, image);
}
/* setup the cel */
cel_set_frpos(cel, current_sprite->frpos);
cel_set_frame(cel, sprite->frame);
cel_set_image(cel, image_index);
/* add the cel in the current layer */
undo_add_cel(current_sprite->undo, current_sprite->layer, cel);
layer_add_cel(current_sprite->layer, cel);
undo_add_cel(sprite->undo, sprite->layer, cel);
layer_add_cel(sprite->layer, cel);
undo_close(current_sprite->undo);
undo_close(sprite->undo);
}
handle_layer = NULL;
@ -124,18 +151,20 @@ void copy_cel(void)
void link_cel(void)
{
Sprite *sprite = current_sprite;
if (handle_layer && handle_cel &&
!layer_get_cel (current_sprite->layer,
current_sprite->frpos)) {
if (handle_layer == current_sprite->layer) {
!layer_get_cel(sprite->layer,
sprite->frame)) {
if (handle_layer == sprite->layer) {
Cel *new_cel;
/* create a new copy of the cel with the same image index but in
the new frame */
new_cel = cel_new_copy(handle_cel);
cel_set_frpos(new_cel, current_sprite->frpos);
cel_set_frame(new_cel, sprite->frame);
undo_add_cel(current_sprite->undo, handle_layer, new_cel);
undo_add_cel(sprite->undo, handle_layer, new_cel);
layer_add_cel(handle_layer, new_cel);
}
else {

View File

@ -100,7 +100,7 @@ bool has_clipboard_image(int *w, int *h)
Cel *cel;
if (clipboard) {
cel = layer_get_cel(clipboard->layer, clipboard->frpos);
cel = layer_get_cel(clipboard->layer, clipboard->frame);
if (cel)
image = stock_get_image(clipboard->layer->stock, cel->image);
}
@ -142,7 +142,7 @@ void cut_to_clipboard(void)
console_printf ("Can't copying an image portion from the current layer\n");
else {
ClearMask ();
GUI_Refresh (current_sprite);
update_screen_for_sprite (current_sprite);
}
}
@ -173,7 +173,7 @@ void paste_from_clipboard(void)
return;
}
cel = layer_get_cel(clipboard->layer, clipboard->frpos);
cel = layer_get_cel(clipboard->layer, clipboard->frame);
if (!cel)
return;
@ -218,7 +218,7 @@ void paste_from_clipboard(void)
xout[2], yout[2], xout[3], yout[3]);
}
GUI_Refresh(current_sprite);
update_screen_for_sprite(current_sprite);
}
/**********************************************************************/
@ -645,11 +645,11 @@ static int low_copy(void)
current_sprite->h);
layer_add_layer(sprite->set, layer);
sprite_set_layer(sprite, layer);
sprite_set_frpos(sprite, current_sprite->frpos);
sprite_set_frame(sprite, current_sprite->frame);
sprite_set_palette(sprite,
sprite_get_palette(current_sprite,
current_sprite->frpos), 0);
current_sprite->frame), 0);
set_clipboard_sprite(sprite);

View File

@ -66,7 +66,7 @@ void crop_sprite(void)
undo_close(sprite->undo);
sprite_generate_mask_boundaries(sprite);
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
}
@ -156,7 +156,7 @@ void crop_layer(void)
layer_free(layer);
/* refresh */
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
}
@ -166,7 +166,7 @@ void crop_cel(void)
Image *image = GetImage();
if ((sprite) && (!mask_is_empty (sprite->mask)) && (image)) {
Cel *cel = layer_get_cel(sprite->layer, sprite->frpos);
Cel *cel = layer_get_cel(sprite->layer, sprite->frame);
/* undo */
undo_open(sprite->undo);
@ -189,7 +189,7 @@ void crop_cel(void)
cel->x = sprite->mask->x;
cel->y = sprite->mask->y;
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
}

View File

@ -57,7 +57,7 @@ Image *GetImage(void)
Image *image = NULL;
if (sprite && sprite->layer && layer_is_image (sprite->layer)) {
Cel *cel = layer_get_cel(sprite->layer, sprite->frpos);
Cel *cel = layer_get_cel(sprite->layer, sprite->frame);
if (cel) {
if ((cel->image >= 0) &&
@ -74,7 +74,7 @@ Image *GetImage2(Sprite *sprite, int *x, int *y, int *opacity)
Image *image = NULL;
if (sprite && sprite->layer && layer_is_image (sprite->layer)) {
Cel *cel = layer_get_cel (sprite->layer, sprite->frpos);
Cel *cel = layer_get_cel (sprite->layer, sprite->frame);
if (cel) {
if ((cel->image >= 0) &&
@ -232,7 +232,7 @@ Layer *NewLayerFromMask(void)
layer_set_blend_mode(layer, BLEND_MODE_NORMAL);
cel = cel_new(sprite->frpos, stock_add_image(layer->stock, dst));
cel = cel_new(sprite->frame, stock_add_image(layer->stock, dst));
cel_set_position(cel, sprite->mask->x, sprite->mask->y);
layer_add_cel(layer, cel);
@ -240,12 +240,12 @@ Layer *NewLayerFromMask(void)
return layer;
}
Image *GetLayerImage(Layer *layer, int *x, int *y, int frpos)
Image *GetLayerImage(Layer *layer, int *x, int *y, int frame)
{
Image *image = NULL;
if (layer_is_image (layer)) {
Cel *cel = layer_get_cel(layer, frpos);
Cel *cel = layer_get_cel(layer, frame);
if (cel) {
if ((cel->image >= 0) &&
@ -268,7 +268,7 @@ int interactive_move_layer (int mode, int use_undo, int (*callback) (void))
JWidget editor = current_editor;
Sprite *sprite = editor_get_sprite (editor);
Layer *layer = sprite->layer;
Cel *cel = layer_get_cel(layer, sprite->frpos);
Cel *cel = layer_get_cel(layer, sprite->frame);
int start_x, new_x;
int start_y, new_y;
int start_b;
@ -367,7 +367,7 @@ int interactive_move_layer (int mode, int use_undo, int (*callback) (void))
}
/* redraw the sprite in all editors */
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
/* restore the cursor */
show_drawing_cursor(editor);

View File

@ -27,17 +27,17 @@ struct Layer;
struct Sprite;
struct Undo;
struct Image *GetImage (void);
struct Image *GetImage2 (struct Sprite *sprite, int *x, int *y, int *opacity);
struct Image *GetImage(void);
struct Image *GetImage2(struct Sprite *sprite, int *x, int *y, int *opacity);
void LoadPalette (const char *filename);
void LoadPalette(const char *filename);
void ClearMask (void);
struct Layer *NewLayerFromMask (void);
void ClearMask(void);
struct Layer *NewLayerFromMask(void);
struct Image *GetLayerImage (struct Layer *layer, int *x, int *y, int frpos);
struct Image *GetLayerImage(struct Layer *layer, int *x, int *y, int frame);
int interactive_move_layer (int mode, int use_undo, int (*callback) (void));
int interactive_move_layer(int mode, int use_undo, int (*callback) (void));
#endif /* UTIL_MISC_H */

View File

@ -90,13 +90,13 @@ Image *render_sprite(Sprite *sprite,
return NULL;
}
if ((get_onionskin ()) && (sprite->frpos > 0))
if ((get_onionskin()) && (sprite->frame > 0))
onionskin_layer = sprite->layer;
else
onionskin_layer = NULL;
/* create a temporary bitmap to draw all to it */
image = image_new (sprite->imgtype, width, height);
image = image_new(sprite->imgtype, width, height);
if (!image)
return NULL;
@ -106,8 +106,8 @@ Image *render_sprite(Sprite *sprite,
switch (image->imgtype) {
case IMAGE_RGB:
c1 = _rgba (128, 128, 128, 255);
c2 = _rgba (192, 192, 192, 255);
c1 = _rgba(128, 128, 128, 255);
c2 = _rgba(192, 192, 192, 255);
break;
case IMAGE_GRAYSCALE:
c1 = _graya(128, 255);
@ -142,7 +142,7 @@ Image *render_sprite(Sprite *sprite,
v = (-source_y / 16) * 16;
for (y=-source_y; y<height+16; y+=16) {
for (x=-source_x; x<width+16; x+=16)
image_rectangle (image,
image_rectangle(image,
x,
y,
x+16-1,
@ -153,11 +153,11 @@ Image *render_sprite(Sprite *sprite,
#endif
}
else
image_clear (image, 0);
image_clear(image, 0);
color_map = NULL;
render_layer (sprite->set, image, source_x, source_y,
render_layer(sprite->set, image, source_x, source_y,
zoom, frpos, zoomed_func);
return image;
@ -237,7 +237,7 @@ static void render_layer(Layer *layer, Image *image,
}
case GFXOBJ_LAYER_TEXT:
/* XXX */
/* TODO */
break;
/* case LT_FLOATING: */
@ -268,7 +268,7 @@ static void render_layer(Layer *layer, Image *image,
}
}
static void merge_zoomed_image1 (Image *dst, Image *src,
static void merge_zoomed_image1(Image *dst, Image *src,
int x, int y, int opacity,
int blend_mode, int zoom)
{
@ -418,7 +418,7 @@ done_with_blit:;
jfree (scanline);
}
static void merge_zoomed_image2 (Image *dst, Image *src,
static void merge_zoomed_image2(Image *dst, Image *src,
int x, int y, int opacity,
int blend_mode, int zoom)
{
@ -559,7 +559,7 @@ done_with_blit:;
jfree (scanline);
}
static void merge_zoomed_image4 (Image *dst, Image *src,
static void merge_zoomed_image4(Image *dst, Image *src,
int x, int y, int opacity,
int blend_mode, int zoom)
{

View File

@ -112,7 +112,7 @@ bool editor_cursor_is_subpixel(JWidget editor);
/* src/gui/editor/keys.c */
int editor_keys_toset_zoom(JWidget editor, int scancode);
int editor_keys_toset_frpos(JWidget editor, int scancode);
int editor_keys_toset_frame(JWidget editor, int scancode);
int editor_keys_toset_brushsize(JWidget editor, int scancode);
int editor_keys_toget_pixels(JWidget editor, int scancode);

View File

@ -364,7 +364,7 @@ void editor_draw_sprite(JWidget widget, int x1, int y1, int x2, int y2)
rendered = render_sprite(editor->sprite,
source_x, source_y,
width, height,
editor->sprite->frpos,
editor->sprite->frame,
editor->zoom);
if (use_dither &&
@ -405,7 +405,7 @@ void editor_draw_sprite(JWidget widget, int x1, int y1, int x2, int y2)
jrect_free (vp);
}
void editor_draw_sprite_safe (JWidget widget, int x1, int y1, int x2, int y2)
void editor_draw_sprite_safe(JWidget widget, int x1, int y1, int x2, int y2)
{
JRegion region = jwidget_get_drawable_region(widget, JI_GDR_CUTTOPWINDOWS);
int c, nrects = JI_REGION_NUM_RECTS(region);
@ -816,7 +816,7 @@ void editor_update_status_bar_for_standby(JWidget widget)
screen_to_editor (widget, jmouse_x(0), jmouse_y(0), &x, &y);
status_bar_set_text (app_get_status_bar (), 0,
status_bar_set_text(app_get_status_bar (), 0,
"%s %3d %3d (%s %3d %3d) [%s %d]",
_("Pos"), x, y,
_("Size"),
@ -826,9 +826,9 @@ void editor_update_status_bar_for_standby(JWidget widget)
((editor->sprite->mask->bitmap)?
editor->sprite->mask->h:
editor->sprite->h),
_("Frame"), editor->sprite->frpos);
_("Frame"), editor->sprite->frame+1);
status_bar_update (app_get_status_bar ());
status_bar_update(app_get_status_bar());
}
void editor_refresh_region(JWidget widget)
@ -1208,7 +1208,7 @@ static bool editor_msg_proc (JWidget widget, JMessage msg)
case JM_CHAR:
if (!editor_keys_toset_zoom(widget, msg->key.scancode) &&
!editor_keys_toset_frpos(widget, msg->key.scancode) &&
!editor_keys_toset_frame(widget, msg->key.scancode) &&
!editor_keys_toset_brushsize(widget, msg->key.scancode) &&
!editor_keys_toget_pixels(widget, msg->key.scancode))
return FALSE;
@ -1234,9 +1234,10 @@ static bool editor_msg_proc (JWidget widget, JMessage msg)
/* zoom */
if (editor->zoom != zoom) {
/* XXXX: este pedazo de código es igual que el de la rutina:
editor_keys_toset_zoom, tengo que intentar unir ambos, alguna
función como: editor_set_zoom_and_center_in_mouse */
/* TODO: este pedazo de código es igual que el de la
rutina: editor_keys_toset_zoom, tengo que intentar
unir ambos, alguna función como:
editor_set_zoom_and_center_in_mouse */
screen_to_editor(widget, jmouse_x(0), jmouse_y(0), &x, &y);
x = editor->offset_x - jrect_w(vp)/2 + ((1<<zoom)>>1) + (x << zoom);
@ -1300,13 +1301,13 @@ static bool editor_msg_proc (JWidget widget, JMessage msg)
/* request size for the editor viewport */
/**********************************************************************/
static void editor_request_size (JWidget widget, int *w, int *h)
static void editor_request_size(JWidget widget, int *w, int *h)
{
Editor *editor = editor_data (widget);
Editor *editor = editor_data(widget);
if (editor->sprite) {
JWidget view = jwidget_get_view (widget);
JRect vp = jview_get_viewport_position (view);
JWidget view = jwidget_get_view(widget);
JRect vp = jview_get_viewport_position(view);
editor->offset_x = jrect_w(vp) - 1;
editor->offset_y = jrect_h(vp) - 1;

View File

@ -93,38 +93,38 @@ int editor_keys_toset_zoom(JWidget widget, int scancode)
return FALSE;
}
int editor_keys_toset_frpos(JWidget widget, int scancode)
int editor_keys_toset_frame(JWidget widget, int scancode)
{
Editor *editor = editor_data (widget);
if ((editor->sprite) &&
/* (jwidget_has_mouse (widget)) && */
!(key_shifts & (KB_SHIFT_FLAG | KB_CTRL_FLAG | KB_ALT_FLAG))) {
int old_frpos = editor->sprite->frpos;
int old_frame = editor->sprite->frame;
switch (scancode) {
/* previous frame */
case KEY_LEFT:
editor->sprite->frpos--;
if (editor->sprite->frpos < 0)
editor->sprite->frpos = editor->sprite->frames-1;
editor->sprite->frame--;
if (editor->sprite->frame < 0)
editor->sprite->frame = editor->sprite->frames-1;
break;
/* last frame */
case KEY_UP:
editor->sprite->frpos = editor->sprite->frames-1;
editor->sprite->frame = editor->sprite->frames-1;
break;
/* next frame */
case KEY_RIGHT:
editor->sprite->frpos++;
if (editor->sprite->frpos >= editor->sprite->frames)
editor->sprite->frpos = 0;
editor->sprite->frame++;
if (editor->sprite->frame >= editor->sprite->frames)
editor->sprite->frame = 0;
break;
/* first frame */
case KEY_DOWN:
editor->sprite->frpos = 0;
editor->sprite->frame = 0;
break;
/* nothing */
@ -132,8 +132,8 @@ int editor_keys_toset_frpos(JWidget widget, int scancode)
return FALSE;
}
if (editor->sprite->frpos != old_frpos)
GUI_Refresh(editor->sprite);
if (editor->sprite->frame != old_frame)
update_screen_for_sprite(editor->sprite);
editor_update_status_bar_for_standby(widget);
return TRUE;

View File

@ -349,14 +349,14 @@ static int slider_change_signal(JWidget widget, int user_data)
if (sprite) {
if ((sprite->layer) &&
(sprite->layer->gfxobj.type == GFXOBJ_LAYER_IMAGE)) {
Cel *cel = layer_get_cel(sprite->layer, sprite->frpos);
Cel *cel = layer_get_cel(sprite->layer, sprite->frame);
if (cel) {
/* update the opacity */
cel->opacity = jslider_get_value(widget);
/* update the editors */
GUI_Refresh(sprite);
update_screen_for_sprite(sprite);
}
}
}
@ -369,7 +369,7 @@ static void button_command(JWidget widget, void *data)
Sprite *sprite = current_sprite;
if (sprite) {
int old_frpos = sprite->frpos;
int old_frame = sprite->frame;
switch ((int)data) {
@ -378,12 +378,12 @@ static void button_command(JWidget widget, void *data)
break;
case ACTION_FIRST:
sprite->frpos = 0;
sprite->frame = 0;
break;
case ACTION_PREV:
if ((--sprite->frpos) < 0)
sprite->frpos = sprite->frames-1;
if ((--sprite->frame) < 0)
sprite->frame = sprite->frames-1;
break;
case ACTION_PLAY:
@ -391,18 +391,18 @@ static void button_command(JWidget widget, void *data)
break;
case ACTION_NEXT:
if ((++sprite->frpos) >= sprite->frames)
sprite->frpos = 0;
if ((++sprite->frame) >= sprite->frames)
sprite->frame = 0;
break;
case ACTION_LAST:
sprite->frpos = sprite->frames-1;
sprite->frame = sprite->frames-1;
break;
}
if (sprite->frpos != old_frpos) {
update_from_layer (widget->user_data[0]);
GUI_Refresh (sprite);
if (sprite->frame != old_frame) {
update_from_layer(widget->user_data[0]);
update_screen_for_sprite(sprite);
}
}
}
@ -415,7 +415,7 @@ static void update_from_layer(StatusBar *status_bar)
/* layer button */
if (sprite && sprite->layer) {
char buf[512];
usprintf(buf, "[%d] %s", sprite->frpos, sprite->layer->name);
usprintf(buf, "[%d] %s", sprite->frame, sprite->layer->name);
jwidget_set_text(status_bar->b_layer, buf);
jwidget_enable(status_bar->b_layer);
}
@ -427,7 +427,7 @@ static void update_from_layer(StatusBar *status_bar)
/* opacity layer */
if (sprite && sprite->layer &&
sprite->layer->gfxobj.type == GFXOBJ_LAYER_IMAGE &&
(cel = layer_get_cel(sprite->layer, sprite->frpos))) {
(cel = layer_get_cel(sprite->layer, sprite->frame))) {
jslider_set_value(status_bar->slider, MID(0, cel->opacity, 255));
jwidget_enable(status_bar->slider);
}
@ -453,7 +453,7 @@ END_OF_STATIC_FUNCTION(speed_timer_callback);
static void play_animation(void)
{
Sprite *sprite = current_sprite;
int old_frpos, msecs;
int old_frame, msecs;
bool done = FALSE;
if (sprite->frames < 2)
@ -461,7 +461,7 @@ static void play_animation(void)
jmouse_hide();
old_frpos = sprite->frpos;
old_frame = sprite->frame;
LOCK_VARIABLE(speed_timer);
LOCK_FUNCTION(speed_timer_callback);
@ -474,10 +474,10 @@ static void play_animation(void)
/* do animation */
speed_timer = 0;
while (!done) {
msecs = sprite_get_frlen(sprite, sprite->frpos);
msecs = sprite_get_frlen(sprite, sprite->frame);
install_int_ex(speed_timer_callback, MSEC_TO_TIMER(msecs));
set_palette(sprite_get_palette(sprite, sprite->frpos));
set_palette(sprite_get_palette(sprite, sprite->frame));
editor_draw_sprite_safe(current_editor, 0, 0, sprite->w, sprite->h);
do {
@ -489,9 +489,9 @@ static void play_animation(void)
} while (!done && (speed_timer <= 0));
if (!done) {
sprite->frpos++;
if (sprite->frpos >= sprite->frames)
sprite->frpos = 0;
sprite->frame++;
if (sprite->frame >= sprite->frames)
sprite->frame = 0;
speed_timer--;
}
@ -501,10 +501,10 @@ static void play_animation(void)
/* if right-click or ESC */
if (mouse_b == 2 || (keypressed() && (readkey()>>8) == KEY_ESC))
/* return to the old frame position */
sprite->frpos = old_frpos;
sprite->frame = old_frame;
/* refresh all */
set_current_palette(sprite_get_palette(sprite, sprite->frpos), TRUE);
set_current_palette(sprite_get_palette(sprite, sprite->frame), TRUE);
jmanager_refresh_screen();
gui_feedback();