mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-05 09:40:02 +00:00
Renamed frpos -> frame. Added operations to handle frames and cels.
This commit is contained in:
parent
83444f1775
commit
2ea9551ce1
2
config.h
2
config.h
@ -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"
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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" />
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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") />
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
11
makefile.lst
11
makefile.lst
@ -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 \
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
if (new_frpos != cel->frpos && existent_cel) {
|
||||
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_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;
|
||||
}
|
||||
}
|
||||
|
@ -41,5 +41,5 @@ void command_execute_clear(const char *argument)
|
||||
ClearMask();
|
||||
|
||||
/* refresh the sprite */
|
||||
GUI_Refresh(sprite);
|
||||
update_screen_for_sprite(sprite);
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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, ¤t_sprite->gfxobj, ¤t_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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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?"
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 }
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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,
|
||||
"preview", &check_preview,
|
||||
"button_ok", &button_ok,
|
||||
"curve", &view_curve,
|
||||
"target", &box_target, NULL)) {
|
||||
jwidget_free (window);
|
||||
if (!get_widgets(window,
|
||||
"preview", &check_preview,
|
||||
"button_ok", &button_ok,
|
||||
"curve", &view_curve,
|
||||
"target", &box_target, NULL)) {
|
||||
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);
|
||||
}
|
||||
|
@ -95,41 +95,41 @@ void command_execute_convolution_matrix(const char *argument)
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
if (!get_widgets (window,
|
||||
"preview", &check_preview,
|
||||
"tiled", &check_tiled,
|
||||
"button_ok", &button_ok,
|
||||
"view", &view_convmatr,
|
||||
"target", &box_target,
|
||||
"reload", &reload,
|
||||
"generate", &generate, NULL)) {
|
||||
jwidget_free (window);
|
||||
if (!get_widgets(window,
|
||||
"preview", &check_preview,
|
||||
"tiled", &check_tiled,
|
||||
"button_ok", &button_ok,
|
||||
"view", &view_convmatr,
|
||||
"target", &box_target,
|
||||
"reload", &reload,
|
||||
"generate", &generate, NULL)) {
|
||||
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");
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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,
|
||||
2+tabs*16, final_y-text_height (widget->text_font)/2,
|
||||
selected_layer ?
|
||||
makecol (255, 255, 255): makecol (0, 0, 0));
|
||||
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));
|
||||
}
|
||||
#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),
|
||||
msg->mouse.x, msg->mouse.y);
|
||||
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_box->layer, current_sprite->layer);
|
||||
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,39 +676,49 @@ 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->frame);
|
||||
if (cel) {
|
||||
state = STATE_MOVING; /* now we will moving a cel */
|
||||
jmouse_set_cursor(JI_CURSOR_MOVE);
|
||||
|
||||
cel_box->layer = current_sprite->layer;
|
||||
cel_box->cel = cel;
|
||||
cel_box->rect_data = NULL;
|
||||
|
||||
get_cel_rect(widget, &cel_box->rect);
|
||||
|
||||
jmouse_hide();
|
||||
cel_box->rect_data = rectsave(ji_screen,
|
||||
cel_box->rect.x1, cel_box->rect.y1,
|
||||
cel_box->rect.x2-1, cel_box->rect.y2-1);
|
||||
rectdotted(ji_screen,
|
||||
cel_box->rect.x1, cel_box->rect.y1,
|
||||
cel_box->rect.x2-1, cel_box->rect.y2-1,
|
||||
makecol (0, 0, 0), makecol (255, 255, 255));
|
||||
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();
|
||||
|
||||
cel = layer_get_cel(current_sprite->layer,
|
||||
current_sprite->frpos);
|
||||
if (cel) {
|
||||
state = STATE_MOVING; /* now we will moving a cel */
|
||||
jmouse_set_cursor(JI_CURSOR_MOVE);
|
||||
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);
|
||||
|
||||
cel_box->layer = current_sprite->layer;
|
||||
cel_box->cel = cel;
|
||||
cel_box->rect_data = NULL;
|
||||
jview_update(jwidget_get_view(cel_box->widget));
|
||||
jview_update(jwidget_get_view(cel_box->layer_box->widget));
|
||||
}
|
||||
|
||||
get_cel_rect(widget, &cel_box->rect);
|
||||
|
||||
jmouse_hide();
|
||||
cel_box->rect_data = rectsave(ji_screen,
|
||||
cel_box->rect.x1, cel_box->rect.y1,
|
||||
cel_box->rect.x2-1, cel_box->rect.y2-1);
|
||||
rectdotted(ji_screen,
|
||||
cel_box->rect.x1, cel_box->rect.y1,
|
||||
cel_box->rect.x2-1, cel_box->rect.y2-1,
|
||||
makecol (0, 0, 0), makecol (255, 255, 255));
|
||||
jmouse_show();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -671,7 +726,7 @@ static bool cel_box_msg_proc (JWidget widget, JMessage msg)
|
||||
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,37 +1018,22 @@ 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;
|
||||
|
||||
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));
|
||||
JWidget view = jwidget_get_view(widget);
|
||||
JRect vp = jview_get_viewport_position(jwidget_get_view(widget));
|
||||
int scroll_x, scroll_y;
|
||||
|
||||
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;
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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. */
|
||||
|
@ -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 {
|
||||
if (set_current_palette(sprite_get_palette(sprite, sprite->frpos), FALSE))
|
||||
/* 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
|
||||
}
|
||||
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: {
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
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));
|
||||
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 {
|
||||
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)))
|
||||
+ (min*1000.0)) / 1000.0);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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 },
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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,23 +142,23 @@ 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,
|
||||
x,
|
||||
y,
|
||||
x+16-1,
|
||||
y+16-1,
|
||||
((u++)&1)? c1: c2);
|
||||
image_rectangle(image,
|
||||
x,
|
||||
y,
|
||||
x+16-1,
|
||||
y+16-1,
|
||||
((u++)&1)? c1: c2);
|
||||
u = (++v);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
image_clear (image, 0);
|
||||
image_clear(image, 0);
|
||||
|
||||
color_map = NULL;
|
||||
|
||||
render_layer (sprite->set, image, source_x, source_y,
|
||||
zoom, frpos, zoomed_func);
|
||||
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,9 +268,9 @@ static void render_layer(Layer *layer, Image *image,
|
||||
}
|
||||
}
|
||||
|
||||
static void merge_zoomed_image1 (Image *dst, Image *src,
|
||||
int x, int y, int opacity,
|
||||
int blend_mode, int zoom)
|
||||
static void merge_zoomed_image1(Image *dst, Image *src,
|
||||
int x, int y, int opacity,
|
||||
int blend_mode, int zoom)
|
||||
{
|
||||
unsigned char *src_address;
|
||||
unsigned char *dst_address;
|
||||
@ -418,9 +418,9 @@ done_with_blit:;
|
||||
jfree (scanline);
|
||||
}
|
||||
|
||||
static void merge_zoomed_image2 (Image *dst, Image *src,
|
||||
int x, int y, int opacity,
|
||||
int blend_mode, int zoom)
|
||||
static void merge_zoomed_image2(Image *dst, Image *src,
|
||||
int x, int y, int opacity,
|
||||
int blend_mode, int zoom)
|
||||
{
|
||||
BLEND_COLOR blender = _graya_blenders[blend_mode];
|
||||
unsigned short *src_address;
|
||||
@ -559,9 +559,9 @@ done_with_blit:;
|
||||
jfree (scanline);
|
||||
}
|
||||
|
||||
static void merge_zoomed_image4 (Image *dst, Image *src,
|
||||
int x, int y, int opacity,
|
||||
int blend_mode, int zoom)
|
||||
static void merge_zoomed_image4(Image *dst, Image *src,
|
||||
int x, int y, int opacity,
|
||||
int blend_mode, int zoom)
|
||||
{
|
||||
BLEND_COLOR blender = _rgba_blenders[blend_mode];
|
||||
unsigned long *src_address;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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,19 +816,19 @@ 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,
|
||||
"%s %3d %3d (%s %3d %3d) [%s %d]",
|
||||
_("Pos"), x, y,
|
||||
_("Size"),
|
||||
((editor->sprite->mask->bitmap)?
|
||||
editor->sprite->mask->w:
|
||||
editor->sprite->w),
|
||||
((editor->sprite->mask->bitmap)?
|
||||
editor->sprite->mask->h:
|
||||
editor->sprite->h),
|
||||
_("Frame"), editor->sprite->frpos);
|
||||
status_bar_set_text(app_get_status_bar (), 0,
|
||||
"%s %3d %3d (%s %3d %3d) [%s %d]",
|
||||
_("Pos"), x, y,
|
||||
_("Size"),
|
||||
((editor->sprite->mask->bitmap)?
|
||||
editor->sprite->mask->w:
|
||||
editor->sprite->w),
|
||||
((editor->sprite->mask->bitmap)?
|
||||
editor->sprite->mask->h:
|
||||
editor->sprite->h),
|
||||
_("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;
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user