Moved everything to trunk

This commit is contained in:
David Capello 2007-09-18 23:57:02 +00:00
commit 57e978b102
754 changed files with 209218 additions and 0 deletions

136
AUTHORS.txt Normal file
View File

@ -0,0 +1,136 @@
===================================
AUTHOR
===================================
David A. Capello <dacap@users.sourceforge.net>
Programmer, design, graphics, tester, and the maintainer of the package.
Releases the DOS, Windows, and source distributions.
===================================
THANKFULNESS
===================================
Some people don't contribute to this project in a directly way but
their work are indispensable:
------------------------------------------------------------------
Álvaro González: For the other routine to generate optimised
palettes (used in old versions of ASE).
Angelo Mottola: For the routines to load/save JPEG files with
JPGalleg (alternative use instead of libjpeg).
Ben Davis: For his optimised palette generation routine.
Billy Biggs and Lauris Kaplinski: For the help with the alpha
blending routines.
Csaba Biegl: For his ellipse routine in the GRX library (used in old
versions of ASE).
David Turner, Robert Wilhelm, and Werner Lemberg: For the FreeType
project.
<http://www.freetype.org/>
Derek Liauw Kie Fa and Robert J Ohannessian for 2xSaI.
DJ Delorie: For the DJGPP port to DOS of the GNU software.
<http://www.delorie.com/djgpp/>
Elias Pschernig: For his excelent bresenham ellipse algorithm and to
report some nasty keyboard bugs. And his patch to load/save GIF files.
Elver Loho: For port ASE to BeOS.
Gary Oberbrunner: For his code to quantize RGB images with ordered
dither method.
Javier Gonzalez: For his AllegroFont wrapper.
Jens Ch. Restemeier: For GFLI, his code to save FLI files is just
"amazing".
Jerry Coffin and HenkJan Wolthuis: For the hash table routines.
Johan Halmén and Anders "Trezker" Andersson for mapgen.
<http://edu.loviisa.fi/~lg/jh/mapgen/>
<http://www.angelfire.com/art/dumlesoft/Projects.html>
Jordan Russell and Martijn Laan: For Inno Setup.
<http://www.innosetup.com/>
Juraj Michalek: For the support to ASE in his portal.
<http://games.linux.sk/>
Matthew Leverton: For his Allegro portal.
<http://www.allegro.cc/>
Max Maischein: For the documents about various file formats of the
Animator and Animator Pro.
Mike Haaland: For his documentation about the FLI/FLC, COL, PIC, and
MSK files format.
Paúl Andrés Jiménez (Ceniza): For his help in the translation of
FULL-SCREEN.txt document.
Peter Wang: For his Red Pixel II game, it was very helpful for the
scripting routines.
<http://redpixel.sourceforge.net/>
Raph Levien: For his excelent work with the libart library.
<http://www.levien.com/libart/>
Richard M. Stallman: For the Free Software Foundation, GNU and
Emacs, and everyone who contributed with free software.
<http://www.fsf.org/>
<http://www.gnu.org/>
<http://www.emacs.org/>
Robert Höhne: For the RHIDE enviroment.
<http://www.lanet.lv/~pavenis/rhide.html>
Salvador Eduardo Tropea: For the SETEdit editor (although I don't
use it anymore, but the first months in Linux without it would be
impossible :-)
<http://setedit.sourceforge.net/>
Shawn Hargreaves: And hundreds of people who helped in the Allegro
library.
<http://alleg.sourceforge.net/>
Spencer Kimball and Peter Mattis: And a lot of people who
contributed with The GIMP and GTK+. I personally "borrow" source
code for differents task in the program.
<http://www.gimp.org/>
<http://www.gtk.org/>
The Independent JPEG Group: For the JPEG library to load/save Jpeg
files.
<ftp://ftp.uu.net/graphics/jpeg/>
The Open Group: For XFree86.
<http://www.x.org/>
Waldemar Celes, Roberto Ierusalimschy, and Luiz Henrique de
Figueiredo: For their excelent work with Lua.
<http://www.lua.org/>
And thanks for all the ideas and bugs report of:
Álvaro González (Kronoman X)
Angelo Mottola
Ben Davis (entheh)
Carl Olsson
Christer Sandberg
Elias Pschernig (networm)
Elio Cuevas Gómez
Emmanuel Rousseau (God_Cells)
Hernán Echegoyemberry
Jonathan Taylor
Jorge Ramírez Flores
Juraj Michalek
Manuel De Miguel Moreno
Mateusz Czaplinski
Nathan Smith (whitedoor)
Peter Wang (tjaden)
Robert J Ohannessian (Bob)

340
COPYING Normal file
View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

3503
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

57
FAQ.txt Normal file
View File

@ -0,0 +1,57 @@
========================================
Frequently Asked Questions
========================================
1. ¿How I can add new convolutions matrices?
2. ¿How I can change the screen layout?
3. ¿How I can load my palette in ASE that are in a 768 bytes file?
4. ¿How I can add a new frame?
1. ¿How I can add new convolutions matrices?
----------------------------------------------------------------------
Add a "convmatr.usr" file in the configuration directory
("ase/data" for Windows or "~/.ase" for Unix) with the same format
of "convmatr.def" (you'll find it in the data directory too). When
ASE start it loads all "convmatr.usr", "convmatr.gen", and
"convmatr.def" files ("user", "generated", and "default" matrices
respectively).
2. ¿How I can change the screen layout?
----------------------------------------------------------------------
If you want to try other screen layout (other organization for the
controls (widgets) in the main window), you can modify the
"data/jids/main.jid" file. I recommend you make a backup copy so
you can back to the original layout. Also, there are some
alternative layouts already, to try them, you should modify:
<window noborders desktop text="Main Window" name="main_window">
By:
<window noborders desktop text="Main Window" name="main_window_old">
And then (for example) modify some name="main_window_alt1" to
name="main_window".
3. ¿How I can load my palette in ASE that are in a 768 bytes file?
----------------------------------------------------------------------
If you palette is in a raw binary file of 768 bytes, the entries
are in order RGB and the range of each entry is 0-63, you can
rename it with the .col extension, and load like an original .col
Animator file.
4. ¿How I can add a new frame?
----------------------------------------------------------------------
Press <Ctrl+Shift+N> (or "Frame/New" menu).
----------------------------------------------------------------------
Copyright (C) 2003-2005 by David A. Capello

103
HACKING.txt Normal file
View File

@ -0,0 +1,103 @@
======================================================================
ASE Hacking Notes
======================================================================
Add a new file to compile
----------------------------------------------------------------------
Remember that if you add a new file to compile, it should have a
different name of any other file name in the source code tree. Also,
you must add it in the ASE_SOURCES variable of the makefile.lst.
Add a new load/save file type
----------------------------------------------------------------------
Look at the "src/file/" directory. You have two options to make a
new load/save routines:
- Use the sequence API (src/file/file.h);
- Use directly the sprite API (src/raster/sprite.h);
The sequence API should be used only for images that don't support
animation and that are plain images (don't have layers), like BMP,
PCX, TGA, or JPEG format. This is useful to handle sequences of
bitmaps like spr00.pcx, spr01.pcx, spr02.pcx automatically (you
don't worry about that, you just write the code to load/save one
file).
In the other hand, you should use directly the raster API
(src/raster/) if your format support animation or layers, like FLI,
or GIF formats.
Hook palette's changes
----------------------------------------------------------------------
With the routines (from "src/modules/palette.c"):
void hook_palette_changes(void (*proc)(void));
void unhook_palette_changes(void (*proc)(void));
The hooks are installed in the tail (it's important see the order of
modules in "src/core/modules.c").
Then when you use "set_current_palette", the routine
"call_palette_hooks" will call the hooks from the first to the last
one.
Update the icon of buttons when the bitmap is destroyed in palette changes
----------------------------------------------------------------------
NOTE: This is only for buttons with a BITMAP
from "get_gfx()" (src/modules/gfx.c).
When the palette changes, all graphics from "src/modules/gfx.c" are
regenerated. If one button was using one of these BITMAP, that will
be a problem, because that pointer is pointing to a freed memory
area.
To update this icon pointer, you can use this is routine:
void add_gfxicon_to_button(JWidget button, int gfx_id, int icon_align);
This routine save in "user_data[3]" of "button" the "gfx_id", and
when the palette changes, the icon will be restored making a:
jbutton_set_icon(button, get_gfx(gfx_id));
Also, the routine will hook the destroy signal to remove
automatically this button from the "list of buttons to fixup"
("icon_buttons" in "src/modules/gui.c").
Reload the fonts
----------------------------------------------------------------------
The routine "reload_default_font" in "src/modules/gui.c" reloads the
font indicated in the configuration string "/options/default_font",
also if it doesn't exist, the routine will try to load the
"data/fonts/default.pcx" font (finally, ASE uses the Allegro font if
no one was found).
This routine uses the "_ji_set_font_of_all_widgets" to change the
"text_font" property of EVERY widget.
Undo
----------------------------------------------------------------------
NOTE.1: Every undo action must be added in the "sprite.undo"
structure before to do the operation in the sprite. E.g:
undo_remove_layer(sprite.undo, sprite.layer);
layer_remove_layer(sprite.layer.parent, sprite.layer);
The only exception for this is "undo_add_image":
stock_add_image(stock, image);
undo_add_image(undo, stock, image);
----------------------------------------------------------------------
Copyright (C) 2003-2005 by David A. Capello

31
INSTALL.txt Normal file
View File

@ -0,0 +1,31 @@
===================================
COMPILATION
===================================
Before compile, you must configure what ASE should use, what
libraries are available, etc. You can run the fix.sh script, answer
some questions and done: the main makefile is created. Or you could
edit the makefile.cfg, uncomment CONFIGURED=1 and uncomment the
necessary options, and then run "makefile -f makefile.lnx".
===================================
INSTALLATION
===================================
After compilation, you have two options:
1) Running ASE from its source directory.
2) Install ASE in the directory that you specify in the fix.sh question:
"Where do you want install ASE by default?" (generally "/usr/local")
(in the makefile.cfg, it's the DEFAULT_PREFIX variable)
Run "make install" (it only works in Unix like systems)
===================================
UNINSTALLATION
===================================
Run "make uninstall".

19
LEGAL.txt Normal file
View File

@ -0,0 +1,19 @@
===================================
LEGAL ISSUES
===================================
- ASE is distributed under GPL license.
- Allegro and Jinete are gift-ware (doesn't have restrictions).
- ALFONT is under LGPL terms.
- quantize.c is copyright by Ben Davis (you need his authorization to
use his code in your own program).
- quantize2.c is distributed under the MIT License.
- Lua-5.0 is distributed under the MIT license.
- GIMP is distributed under GPL license.
- GLib and GTK+ are distributed under LGPL license.
- GFLI-1.3 is distributed under GPL license.
- Libart 2.3.3 is distributed under LGPL license.
- Libintl is distributed under LGPL license.
- The FreeType Project is distributed under FTL license.
You can find all these licenses in the "docs/licenses" directory.

255
NEWS-es.txt Normal file
View File

@ -0,0 +1,255 @@
===================================
NOTICIAS
===================================
0.5
---
- Se agregaron funcionalidades solicitadas por Carl Olsson:
+ mejor soporte cuando "Ajustar a Grilla" está activado para
las herramientas de dibujo que se controlan con cajas (como
rectángulo, elipse, etc).
+ al manejar una selección flotante (al pegar el portapapeles)
la opción "Ajustar a Grilla" tiene efecto sobre el movimiento
de la imagen.
+ agregado movimiento a nivel de subpixel para los cursores con
demasiado zoom en el editor, para saber dónde estamos dentro
del pixel.
- Soporte para grabar archivos GIF por defecto.
- Arreglada la compilación con Allegro 4.2.1 (y arreglado un bug en
Allegro con key_shifts).
- Ahora el estado ventana/pantalla-completa es guardado por
la aplicación (gracias a Manuel De Miguel Moreno por reportarlo).
0.4
---
- Modo consola ya no existe.
- Cambiado el atajo de teclado para el Editor de Película: tecla TAB.
- Nueva característica: Cada cuadro de animación tiene duración.
- Nuevo Editor de Paleta (tecla F4).
- Ahora los sprites soportan multiples paletas: Cada cuadro puede
tener su propia palette de colores.
- Agregado soporte para cargar archivos GIF (por Elias Pschernig).
- Agregado una combo-box al cuadro de selección de archivos para
manejar bookmarks ("Favoritos").
- Hay rotación!!! Ahora puede rotar y escalar al pegar desde el
clipboard (portapapeles).
0.3.1
-----
- Arreglada la creación de archivos de sesión cuando una excepción
(error fatal) ocurre bajo Windows.
- Agregados los ficheros es.po y tips.es.
0.3
---
- Agregado la administración de sesiones (si ocurre algún fallo la
sesión es guardada automáticamente).
- Se agregó una herramienta para dibujar texto (finalmente).
- Más documentación y tips.
- Mejorado el proceso para agregar cuadros de animación.a
- Se arreglaron algunos bugs importantes.
- Se agregó la utilidad mapgen (código original por Johan Halmén y
Anders Andersson).
- Soporte para el lenguage Español (ahora funciona en Windows también).
- Código interno mejorado (principalmente las partes de la GUI, y los
nombres de las funciones).
0.2.4
-----
- Undo más estable: con límites y sin el extraño comportamiento del
rehacer-después-de-sobreescribir-el-deshacer.
- Nueveo filtro por mediana para reducir el ruido de las imágenes.
- Actualizado el soporte alternativo para leer y escribir archivos
JPEG mediante la librería JPGalleg 2.3, gracias a Angelo Mottola por esto.
- Se arreglaron algunos problemas con el teclado: la tecla Alt ya no puede
ser utilizada para atajos del teclado. Alguna combinaciones cambiaron:
+ <~> a <`> (abre el editor de película)
+ <Ctrl+/> a <?> (enmascara por color)
+ <Ctrl+~> a <Ctrl+4> (cierra el editor actualx)
- Agregado Cortar, Copiar, Pegar!
- Agregado AutoCrop (antes conocido como Trim).
0.2.3
-----
- Se arregló la rutina para grabar archivos JPG.
- Arregladas y mejoradas varias partes de la GUI.
0.2.2
-----
- Se agregó algo de documentación para escribir scripts en Lua.
- El Editor de Película (The Film Editor) fue mejorado.
- Arreglados algunos errores con el cursor gráfico, algunons problemas
con el teclado y varios bugs menores.
- Nuevos tips con texto e imágenes. Esto será muy útil para los
principiantes.
- La función del papel cebolla (onionskin) está lista.
- Agregado (de modo opcional) el fusionado de colores ordenado para
dibujar imágenes RGB en 8 bpp.
- Nuevas acciones: Merge Down, New Frame, Copy Frame, cambiar Image
Type!, Load Script File.
- Optimizado la velocidad de dibujado en modo alicatado (tiled).
0.2.1
-----
- Arreglada la versión de Windows: el spray y algunos errores
guardando nombres de ficheros en el archivo de configuración.
- Agregado soporte libintl y la traducción al Español del programa
(sólo para Linux, pero tengo planes de hacer esto andar en Windows).
- Más soporte undo: insertar/remover capas y modificaciones en la
máscara.
- Los filtros Matriz de Convolución y Curva de Color están de vuelta.
- Se agregaron más operaciones básicas (con soporte de undo): aplanar
capas, duplicar capa, duplicar sprite, flip horizontal/vertical,
recortar cuadro.
- Nuevo formato .ASE (en estado alpha, por favor pruébelo!).
- Rutinas para script más simples: ahora hay una capa de rutinas de
alto nivel (fáciles de usar y comprender), y un juego de rutinas de
bajo nivel (para scripts internos o trabajos más específicos).
- Se removió todo el código relacionado con interpolación entre
key-frames (cuadros claves): sí, luego de estar pensando un largo
rato, esto hace muy complicada la edición de la animación (así la
"elegante interpolación spline" fue eliminada).
- El editor de sprites fue optimizado para ser más rápido al mover el
scroll.
- El Editor de Película (The Film Editor) está casi listo para
controlar capas y cuadros.
- Arreglados los filtros usando máscaras con capas desplazadas.
- Soporte para aplicar filtros a varias cuadros/capas al mismo tiempo.
- Diferentes disposiciones de la pantalla fueron agregadas en main.jid
(mire FAQ.txt para saber como cambiar entre ellas).
- La barra de herramientas está devuelta!
0.2
---
- Arreglados varios bugs.
- Soporte opcional para archivos JPEG con la librería JPGalleg 2.0.
- Agregados modos de dibujado: Opaque (opaco/normal), Glass
(vidrio/transparente), Semi (patrón).
- Agregados los tipos de brochas: Circle (círculo), Square (cuadrado),
Line (línea).
- Implementado un sistema de "paleta-falsa" para hacer al GUI
utilizable con cualquier paleta de colores (principalmente para
evitar las situaciones de "pantalla negra" al abrir sprites con
paletas "feas").
- El editor de la paleta de colores tiene mejoras (como la posibilidad
de mover los colores seleccionados).
- El archivo "menus" cambió un poco. Algunos atajos del teclado se
modificaron (y otro nuevos se agregaron), puede verlos en el archivo
"docs/QuickHelp.html". De todos modos, intenté dejar la
compatibilidad con los comandos más usados.
- Soporte completo de scripts con Lua-5.0. Los sprites y el GUI son
controlables desde los mismos scripts, para darle una idea, varias
acciones en los menús están programadas directamente con scripts.
- Control de selección completo (regiones de máscara). Puede
seleccionar areas irregulares (agregar, substraer, cruzar, y
seleccionar por color), guardar y cargarlas en el viejo formato .MSK
del Animator Pro.
- Soporte para editores multiples. Ahora puede editar una imágen con
zoom y ver los resultados en otros editores (actualizados en tiempo
real). - Nuevo núcleo de para controlar gráficos. Todo lo
relacionado a sprite/imágenes/capas/propiedades/key fue
reprogramado. El cambio más importante, se hizo al nivel de
propiedad/keyframes (cada propiedad puede tener interpolación lineal
o con curvas beziers, además de una bandera de finalización de la
curva para hacer movimientos circulares o patrones de movimientos).
- Nuevo GUI. Tanto los gráficos como el código interno fueron
reestructurados completamente, hice una nueva librería de GUI:
Jinete.
0.1.2
-----
- Nuevo efecto RLE Gaussian Blur (desde el código de The GIMP).
- Los modos de mezcla (blender modes) están devuelta: Normal,
Multiply, Screen, Overlay, Hard Light, Darken, Lighten, Addition,
Subtract, Difference, Hue, Saturation, Color, Luminosity.
- Mejor GUI: con colores, ahora debería de ser menos aburrido :-)
- Agregado un diálogo para seleccionar *cualquier* modo de video
gráfico (esto podría ser útil para modos de video con ventanas).
- Nuevamente se volvió a los makefiles al estilo Allegro. Bueno,
bueno, el estilo GNU fue el peor cambio en ASE, pero ahora está
arreglado :-)
- Eliminada la capacidad de cargar archivos .DLL o .so de
plug-ins. Luego de semanas pensándolo, decidí por sacar esta
característica ya que es muy complicado de hacer un buen sistema
para agregar nuevos plug-ins con la implementación del menú
actual. La mayoría de usuarios son solo "usuarios" y no copiarán el
plug-in y modificarán luego el archivo "menus" para agregar el
script que llame a la acción del plug-in. Además, esto me salva de
miles de dolores de cabezas :-)
- Agregada la aplicación de filtros multiples: Ahora, se puede aplicar
los efectos a cada capa, a cada cuadro de animación, o ambos.
- Agregado la lista de archivos usados recientemente ("Recent Files").
- Nuevas rutinas en los scripts para manejar "paths" (rutas).
- Nuevo tipo de selección: "shrink", para encoger la selección a los
límites de la capa bitmap actual.
- Nueva acción "trim_sprite".
0.1.0
-----
- Eliminada la herramienta `move' para mover capas (era redundante).
- Nueva interface para cargar Plug-Ins en forma dinámica (DLL, .so).
- Nuevo soporte completo para cargar/guardar archivos JPEG (RGB/grayscale):
a través de la Independent JPEG Group's JPEG Library.
- Nuevas acciones:
+ trim_layer_bitmap: recorta la capa actual por los límites de la selección.
+ merge_down: para mezclar la capa activa con la próxima.
+ make_undo_animation: para crear una animación desde la operaciones
para deshacer (para ver la progresión del gráfico).
+ undo_history: para deshacer/rehacer varias operaciones a la vez.
+ color_curve: para hacer efectos de conversión de color pixel por pixel.
- Mejorado el comando `Reemplazar Color' (con `tolerancia' y `vista previa').
- Una nueva barra-de-capas optimizada, para manejar sobre todo
las propiedades y los cuadros claves.
- Varias cosas reescritas a Plug-Ins:
+ los formatos de archivos,
+ las acciones de los menús (también, ahora estas acciones pueden ser
utilizadas desde los "guiones" o "scripts").
- Reemplazado el viejo sistema de "profundidad de color" por el nuevo
"tipo de imagen". Desde ahora, una imagen puede ser:
RGB (rojo, verde, azul), Grayscale (escala de grises), o Indexed
(256 colores).
- Nueva Libreria ASE, con un nuevo diseño para manejar:
imágenes, capas, bitmaps, propiedades, cuadros claves, etc.
- Código fuente al estilo GNU: con configure.in, Makefile.am, etc.
0.0.7
-----
- Nuevas rutinas para "guionado" (script): request(), apply_filter(),
load_sprite(), y save_sprite().
- Soporte para cargar archivos FLI/FLC y guardar FLC. Sí! Ahora con ASE
puede hacer animaciones FLC con un buen rendimiento de compresión.
- Agregada la posibilidad de cargar/guardar secuencias de bitmaps:
como por ejemplo ani00.pcx, ani01.pcx, ani02.pcx, etc.
- Más funcionalidad para `deshacer'. Reescribí todo el sistem de `undo'
por completo.
- Nueva herramienta de selección rectangular. Ahora puede cortar, copiar,
pegar, y borrar.
- Nueva compresión RLE para 8 bpp en los archivos .ase.
- Soporte para cargar ficheros .ase de las versiones `0.0.6' y
`0.0.7 CVS (fases importante)': Le recomiendo que actualice todos sus
archivos .ase a la nueva versión `0.0.7' release.
- Nuevas propiedades para los cuadros claves (keyframes): ahora cada keyframe
tiene su propia posición y valor alpha, con esto puede hacer animaciones de
objetos moviendo sólo los keyframes (todos los cuadros intermedios serán
calculados automáticamente).
- Ahora el programa recuerda la configuración (a través de `ase.cfg').
- Agregado un nuevo modo para dibujar "mosaicado" (tiled).
- Nuevo modo de edición en pantalla completa. Con la barra de capas
(layer-bar) a la que se le puede cambiar el tamaño.
- Agregada la opción para dibujar un cuadro previo en modo transparente.
- Eliminada la propiedad de `fondo' de las capas: desde ahora, una capa
será transparente siempre. Con esto son arreglados una tonelada de problemas
con las rutinas para cargar/guardar archivos de las versiones anteriores.
- Nuevo comando `reload_menus' (para recargar los menús).

306
NEWS.txt Normal file
View File

@ -0,0 +1,306 @@
===================================
NEWS
===================================
0.5
---
- Added features-requested by Carl Olsson:
+ better "snap to grid" support for box-like tools (rectangle,
ellipse, etc.).
+ floating selection now "snap to grid" also.
+ added a subpixel movement for zoomed-cursors in the editor, to
known where we are inside the pixel.
- Better support for the mouse wheel and middle button in the
sprite-editor (to scroll and zoom).
- GIF support to save file fully supported by default.
- Fixed compilation with Allegro 4.2.3 SVN (and fixed a bug in Allegro
with key_shifts).
- Now the full-screen or windowed state is remembered (thanks
to Manuel De Miguel Moreno to report it).
0.4
---
- Removed the console mode.
- Changed Film Editor shortcut: TAB key.
- New feature: Each animation frame has duration.
- New Palette Editor (F4 key).
- Now sprites support multiple palettes: Each frame can has its own
color palette.
- Added support to load GIF files (by Elias Pschernig).
- Added a combobox to file-selection to handle the bookmarks.
- Added rotation!!! Now you can scale and rotate what you paste from
the clipboard.
0.3.1
-----
- Fixed the creation of session files when an exception (fatal error)
happens in Windows.
- Added es.po and tips.es files.
0.3
---
- Added session manager (if the program crashes the session is saved
automatically).
- Added a tool to draw text (finally).
- More documentation and tips.
- Improved the frame adding process.
- Fixed important bugs.
- Added a mapgen utility (original code by Johan Halmén and Anders
Andersson).
- Spanish language support (now works in Windows too).
- Internal code improved (mainly GUI parts, and functions names).
0.2.4
-----
- More stable undo: with limit and without the strange
redo-after-overwrite-undo feature.
- New median filter to despeckle images.
- Updated alternative support to load/save JPEG files with JPGalleg 2.3
library, thanks to Angelo Mottola for this.
- Fixed problems with non-US keyboards: the Alt key can't be used for
shortcuts. Some combinations changes:
+ <~> to <`> (open film editor)
+ <Ctrl+/> to <?> (mask by color)
+ <Ctrl+~> to <Ctrl+4> (close current editor)
- Added Cut, Copy, Paste!
- Added AutoCrop (before known as Trim).
0.2.3
-----
- Fixed routine to save JPG files.
- Fixed and improved various parts of GUI.
0.2.2
-----
- Added some documentation to write Lua scripts.
- Film Editor was improved.
- Fixed errors with the graphics cursor, some keyboard problems, and
various minor bugs.
- New tips with text and images. This will be very useful for
beginners.
- Onionskin feature is done.
- Added (optional) ordered dithering to render RGB images in 8 bpp.
- New actions: Merge Down, New Frame, Copy Frame, change Image Type!,
Load Script File.
- Optimized the drawing speed with tiled mode.
0.2.1
-----
- Fixed in Windows version: spray and some errors saving file-names in
the configuration file.
- Added libintl support and the Spanish translation (only for Linux,
but I have planned make this usable in Windows).
- More undo support: insert/remove layers and mask modifications.
- Filters Convolution Matrix and Color Curve are back.
- Added more basic operations (with undo support): flatten layers,
duplicate layer, duplicate sprite, horizontal/vertical flip, crop
frame.
- New .ASE format (in alpha status, please test it!).
- Easy script routines: now are a high-level layer of routines (easy
to use and understand), and the low-level routine's set (for
internal or more specific works).
- Removed all the interpolation stuff between key-frames: yes, after
thinking, this make too hard the animation edition (so the "fancy
spline interpolation" was removed).
- Optimized the editor's speed in scroll movements.
- The Film Editor is almost done for layers and frames handle.
- Fixed filters using mask with displaced layers.
- Support to apply filters to various frames/layers at the same time.
- Added differents screen layouts in main.jid (see FAQ.txt to see how
change between them).
- The tool bar is back!
0.2
---
- Fixed a lot of bugs.
- Added optional support for JPEG with JPGalleg 2.0 library.
- Added draw mode: Opaque (normal), Glass (transparent), Semi
(pattern).
- Added brush types: Circle, Square, Line.
- Implemented a fake-palette system to make the GUI usable with any
sprite palette (mainly to avoid "black-screen" situations when open
sprites with ugly palettes).
- The palette editor has more improvements (like the possibility to
move the selection range).
- "menus" file modified a bit. Some keyboard bindings have change
(and new ones added), you can see the "docs/QuickHelp.html" file for
more help. Anyway, I try to leave the compability in the more used
commands.
- Full scripting support with Lua-5.0. Sprites and GUI controllable
from same scripts, to give you an idea, various of menus actions are
programmed directly with scripts.
- Complete selection handle (mask regions). You can select irregular
areas (add, subtract, intersect, by color), save and load them in
the .MSK Animator Pro format.
- Multiple editors. Now you will be able to edit an image with zoom
and see the results in other editors (updated in real-time).
- New Gfx-core. All sprite/image/layer/prop/key stuff was
reprogrammed. The more big change, was to property/keyframe level
(the properties can be with lineal or spline interpolation, also,
have a ending flag to make circular movements or patterns of movement).
- New GUI. The look and the internal code was reestructured
completelly, I made a new GUI library: Jinete (rider).
0.1.2
-----
- New RLE Gaussian Blur effect (from The GIMP source code).
- Blender modes are back!: Normal, Multiply, Screen, Overlay,
Hard Light, Darken, Lighten, Addition, Subtract, Difference, Hue,
Saturation, Color, Luminosity.
- Better the GUI look: With colors, this should be less boring :-)
- Added a graphics selection dialog where you can specify any
resolution (this could be useful for windowed modes).
- Back again to the good-and-peaceful-allegro-like makefiles. Ok, ok,
the GNU style was the worst change in ASE, but now is fixed :-)
- Removed the .DLL or .so capability for plug-ins. After some weeks of
thinking, I decide to strip off this feature because is too hard to
do a good system to attach new plug-ins with the current menu
implementation. The most user are just "user" and don't will copy
the plug-in and modify the `menus' to add a new entry with a little
script-string to call the new plug-in action. Also, this save me a
lot of headaches :-)
- Added multiple filter application: Now, you can apply effects to
every layer, to every animation frame, or both.
- Added the "Recent Files" list.
- A complete set of scripts routines to handle paths.
- New selection type: "shrink", to shrink the selection to the current
layer bitmap bounds.
- New "trim_sprite" action.
0.1.0
-----
- Removed the `move' tool to displace layers (it was redundant).
- New interface to load Plug-Ins in a dynamic way (DLL, .so).
- Complete new support for JPEG files (RGB/grayscale) load/save:
athwart the Independent JPEG Group's JPEG Library.
- New actions:
+ trim_layer_bitmap: trim the current layer to the selection bounds.
+ merge_down: to merge the current layer with the next one.
+ make_undo_animation: to make an animation from the undo
operations (to see all the progression of the graphics).
+ undo_history: to undo/redo various operations.
+ color_curve: to make color conversion effects pixel by pixel.
- Improved the `Color Replace' command (with `tolerance' and `preview').
- A new optimized layer-bar, to handle all the keyframe/properties stuff.
- Various things rewritten to Plug-Ins:
+ file formats,
+ actions for menus (also, now these actions can be used from scripts).
- Replaced the old `color depth' system to the new `image types':
From now, an image can be: RGB, Grayscale, or Indexed type.
- New ASE Library, with a complete new design to handle:
images, layers, bitmaps, properties, keyframes, etc.
- Source code to GNU style: with configure.in, Makefile.am, etc.
0.0.7
-----
- New scripts routines: request(), apply_filter(), load_sprite(),
and save_sprite().
- Support to load FLI/FLC and to save FLC files. Yes! Now with ASE
you can make FLC animations with a good compression performance.
- Added the posibility to load/save sequences of bitmaps: like ani00.pcx,
ani01.pcx, ani02.pcx, etc.
- More undo functionality. I re-wrote the entire `undo' system.
- New rectangular-selection tool: Now you can cut, copy, paste and clear.
- New RLE compression for 8 bpp in .ase files.
- Support to load .ase files of `0.0.6' and `0.0.7 CVS (important stage)':
I recommend you upgrade all your .ase files to the `0.0.7 release' version.
- New properties for keyframes: now each keyframe has its position and alpha,
with this you can make animations of objects moving only the keyframes
(all the intermediate frames will be calculate automatically).
- Now the program remember the configuration (through `ase.cfg').
- Added a new draw-tiled mode.
- New full-screen editing mode. With resizable layer-bar.
- Added an options to draw the previous frame in transparent mode.
- Removed the `background' properties of layers: from now, a layer
will be transparent (masked-blitting) ever. With this are fixed
a lot of problems with load/save routines in old versions.
- New `reload_menus' command.
0.0.6
-----
- I still don't recommend you the .ase format (just for temporary usage):
there are planes to change it.
- Scripting capability athwart Lua language (http://www.lua.org/):
now, you can make automatic tasks programming your own scripts
(included some scripts as example).
- Independent `alpha' (global transparency) and `blender-mode' for
each layer (like in GIMP and Adobe Photoshop).
- Improved the layer/frame-control:
Now add/remove/move/copy layer and frames are really-very-easy
with the new layer-panel (like in Macromedia Flash).
- More easy tool-configuration.
- New drawing tool: real-pencil, with a unique and original algorithm.
- Removed all the use of the Allegro GUI.
- New original (and ugly) GUI look:
now, the colors are in harmony for the eyes.
0.0.5
-----
- More facilities to handle colors with different `alpha'.
- New animation control: need test (see `bugs.txt' to report errors).
- Optimized the color-selection dialog: now you can make gammas
between *four* colors.
- Added a `preview' in the apply-filter dialog.
- New improved gui system (for the users and for the developers).
- New `tile' and `reload' option for the filters.
- New view-tile option in tool-menu (for make tileable patterns).
0.0.4
-----
- Modificable draw properties:
thickness, alpha color, spray random factor, and spray radius.
- Undo support for all tools.
- Multiple drawing tools support:
pixel, pencil, fill, spray, line, rectangle, and ellipse;
- New improved layer control.
- A lot of optimizations in the status bar.
- New duplicate sprite option.
- New session manager, for load and save your work. Other utility of this,
is if the program crash for any reason, it auto-backups your data.
- Bad news: the old .ase format is incompatible with the new one:
I recommend you don't save in .ase until the 0.1 release.
- New "visible" property for hide and show the layers.
- New change color-depth function.
- Added a set-gfx-mode option in the system-menu.
- New duplicate layer support.
0.0.3
-----
- New .ase format (for save the layers).
- More keyboard shorcuts (with a new `keys.txt').
- New layers operations: insert, move and remove.
- RGBA (alpha channel) bitmaps support.
- New filter capability, with some examples of filters.
- An incredible new way to create dialogs (for programmers only).
- More "Windows friendly" text files.
- New optimized status bar.
- New improved look of the GUI.
0.0.2
-----
- New "infinite" Undo & Redo support.
- Some importants bug fixed.
0.0.1
-----
- One tool: interactive line.
- Color selection support.
- Poor palette modification capability.

180
README-es.txt Normal file
View File

@ -0,0 +1,180 @@
ase -- allegro-sprite-editor: the ultimate sprites factory
Copyright (C) 2001-2005, 2007 por David A. Capello
------------------------------------------------------------------------
Mire el fichero "AUTHORS.txt" para la lista completa de colaboradores
===================================
COPYRIGHT
===================================
Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo
los términos de la Licencia Pública General GNU según es publicada por la
Free Software Foundation, bien de la versión 2 de dicha Licencia o bien
(según su elección) de cualquier versión posterior.
Este programa es distribuido con la esperanza de que sea útil, pero SIN
GARANTIA ALGUNA, incluso sin la garantía implícita de COMERCIALIZACIÓN o
IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General
de GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General junto con
este programa. Si no ha sido así, escriba a la Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
===================================
INTRODUCCIÓN
===================================
ASE es un programa especialmente diseñado para crear sprites
animados con mucha facilidad y que luego puedan ser utilizados en un
video juego. Este programa le permitirá crear desde imágenes
estáticas, a personajes con movimiento, texturas, patrones, fondos,
logos, paletas de colores, y cualquier otra cosa que se le ocurra.
===================================
CARACTERÍSTICAS
===================================
ASE le ofrece la posibilidad de:
- Editar sprites con capas y cuadros de animación.
- Editar imágenes RGB (con Alpha), escala de grises (también con
Alpha), e imágenes con paleta de 256 colores o "indexadas".
- Controlar paletas de 256 colores completamente.
- Aplicar filtros para diferentes efectos (matriz de convolución,
curva de color, etc.).
- Cargar y guardar sprites en los formatos .BMP, .PCX, .TGA, .JPG,
.GIF, .FLC, .FLI, .ASE (el formato especial de ASE).
- Utilizar secuencia de bitmaps (ani00.pcx, ani01.pcx, etc.) para
guardar las animaciones.
- Herramientas de dibujo (puntos, pincel, brocha real, relleno, línea,
rectángulo, elipse), modos de dibujo (opaco, vidrio), y tipos de
brochas (círculo, cuadrado, línea).
- Soporte de máscaras (selecciones).
- Soporte para deshacer/rehacer cada operación.
- Soporte para editores multiples.
- Dibujar con una rejilla personalizable.
- Único modo de dibujo alicatado para dibujar patrones y texturas en
segundos.
- Guardar y cargar sesiones completas de trabajo (en ficheros `.ses').
- Capacidad de hacer `scripts' (guiones) con el lenguaje Lua
(http://www.lua.org).
===================================
CONFIGURACIÓN
===================================
En plataformas Windows y DOS:
ase.cfg - Configuración
data/matrices - Matrices de convolución
data/menus - Menús
data/scripts/* - Scripts o "guiones"
En plataformas Unix, el archivo de configuratión es ~/.aserc, y los
archivos de datos (en data/) son buscados en estos lugares (por
orden de preferencia):
$HOME/.ase/
/usr/local/share/ase/
data/
Mire "src/core/dirs.c" para más información.
===================================
MODO VERBOSO
===================================
Cuando ejecuta "ase" con el parámetro "-v", en las plataformas
Windows y DOS los errores son escritos en STDERR y un archivo
"logXXXX.txt" en el directorio "ase/" es creado con el mismo
contenido.
En otras plataformas (como Unix), ese archivo de registro no es
creado, ya que la utilización de STDERR es mucho más común.
Mire "src/core/core.c" para más información.
===================================
ACTUALIZACIONES
===================================
Los últimos paquetes tanto binarios como el de código fuente, los
puede encontrar desde:
http://sourceforge.net/project/showfiles.php?group_id=20848
También, si desea obtener la última versión en desarrollo de ASE desde el
repositorio CVS, la cual por sierto es la más propensa a tener errores pero
es la que más actualizada está con respecto a las herramientas, la puede
explorar archivo por archivo en esta dirección:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ase
O la puede bajar completamente a su disco con un programa que controle CVS,
de la siguiente forma:
1) Debemos ingresar al repositorio de forma anónima (cuando le pregunte
por la contraseña, solamente presione <enter>):
cvs -d :pserver:anonymous@cvs.ase.sourceforge.net:/cvsroot/ase login
2) Realizamos el primer checkout, lo que significa que sacaremos una
copia "fresca" de ASE:
cvs -z3 -d :pserver:anonymous@cvs.ase.sourceforge.net:/cvsroot/ase checkout gnuase
3) Una vez esto, cada vez que quiera actualizar la copia local con la
del repositorio, deberá ejecutar en el directorio gnuase/:
cvs update -Pd
AVISO: Cuando obtenga la versión CVS, no borre los directorios CVS
ni el contenido dentro de ellos, ya que es para uso interno del
programa cvs.
===================================
CRÉDITOS
===================================
Mire el archivo "AUTHORS.txt".
===================================
INFORMACIÓN DE CONTACTO
===================================
Para pedir ayuda, reportar bugs, mandar parches, etc., utilice la
lista de correo ase-help:
ase-help@lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/ase-help/
Para más información visite la página oficial del proyecto:
http://ase.sourceforge.net
----------------------------------------------------------------------------
Copyright (C) 2001-2005 por David A. Capello

175
README.txt Normal file
View File

@ -0,0 +1,175 @@
ase -- allegro-sprite-editor: the ultimate sprites factory
Copyright (C) 2001-2005, 2007 by David A. Capello
--------------------------------------------------------------
See the "AUTHORS.txt" file for a complete list of contributors
===================================
COPYRIGHT
===================================
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA
===================================
INTRODUCTION
===================================
ASE is a program specially designed with facilities to create
animated sprites that can be used in some video game. This program
let you create from static images, to characters with movement,
textures, patterns, backgrounds, logos, color palettes, and any
other thing that you think.
===================================
FEATURES
===================================
ASE gives to you the possibility to:
- Edit sprites with layers and animation frames.
- Edit RGB (with Alpha), Grayscale (with Alpha also) and Indexed
images.
- Control 256 color palettes completely.
- Apply filters for different color effects (convolution matrix,
color curve, etc.).
- Load and save sprites in these formats: .BMP, .PCX, .TGA, .JPG,
.GIF, .FLC, .FLI, and .ASE (ASE's special format).
- Use bitmap's sequences (ani00.pcx, ani01.pcx, etc.) to save
animations.
- Drawing tools (dots, pencil, real-brush, floodfill, line, rectangle,
ellipse), drawing modes (opaque, glass), and brushes types (circle,
square, line).
- Mask (selections) support.
- Undo/Redo support for every operation.
- Multiple editor support.
- Draw with a customizable grid.
- Unique tiled drawing mode to draw patterns and textures in seconds.
- Save and load entire work's sessions (in `.ses' files).
- Scripting capabilities with Lua language (http://www.lua.org).
===================================
CONFIGURATION FILES
===================================
In Windows and DOS platforms:
ase.cfg - Configuration
data/matrices - Convolutions matrices
data/menus - Menus
data/scripts/* - Scripts
In Unix platforms, the configuration file is ~/.aserc, and the data/
files are searched in these locations (in order of preference):
$HOME/.ase/
/usr/local/share/ase/
data/
See "src/core/dirs.c" for more information.
===================================
VERBOSE MODE
===================================
When run "ase" with "-v" parameter, in Windows and DOS platforms the
errors will be written in STDERR and a "logXXXX.txt" file in "ase/"
directory is created with the same content.
In others platforms (like Unix), that log file isn't created,
because the use of STDERR is more common.
See "src/core/core.c" for more information.
===================================
UPDATES
===================================
The last packages of binaries and source code, you can found them
from:
http://sourceforge.net/project/showfiles.php?group_id=20848
Also, if you want to get the last development version of ASE from
the CVS repository, which is the version more prone to have errors,
but is the more updated in the tools area, you can browse it file by
file in this address:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/ase
Or you can download it completelly to your disk with a program which
control CVS, as follow-up:
1) We must input to the repository in anonymous form (when you be
asked for the password, just press <enter>):
cvs -d :pserver:anonymous@cvs.ase.sourceforge.net:/cvsroot/ase login
2) We make the first checkout, which means that we fetch a "fresh"
copy of ASE:
cvs -z3 -d :pserver:anonymous@cvs.ase.sourceforge.net:/cvsroot/ase checkout gnuase
3) Then, whenever you want update your copy with the repository
one, you will must execute in the gnuase/ directory:
cvs update -Pd
WARNING: When you obtain the CVS version, don't remove the CVS
directories, they are for exclusive use of the cvs program.
===================================
CREDITS
===================================
See the "AUTHORS.txt" file.
===================================
CONTACT INFO
===================================
To request help, report bugs, send patches, etc., you can use the
ase-help mailing list:
ase-help@lists.sourceforge.net
http://lists.sourceforge.net/lists/listinfo/ase-help/
For more information, visit the official page of the project:
http://ase.sourceforge.net
----------------------------------------------------------------------------
Copyright (C) 2001-2005 by David A. Capello

79
TODO.txt Normal file
View File

@ -0,0 +1,79 @@
High priority work
------------------
- GUI using double buffering.
- add support for PNG files.
- ver por el nuevo load_font de Allegro.
- borrar src/core/config.c
- search for XXX (XXXX is supposed to be high priority);
- complete palette operations, and palette editor (it needs a slider
or something to move between palette changes);
- fix undo of big chunks (more than limit):
+ how to reproduce the error? create an RGB image of 800x600, add a
layer, add a frame, move the new frame to the other layer, undo,
there is the bug.
- fix quantize (one palette for all frames, one palette per frame)
- fix Jinete examples:
+ 05fsel
+ 09lists
+ 20combo
+ 21manage
- fix "tiled mode" when it's used in frames that doesn't have the same
size of the sprite;
- add "size" to GUI font (for TTF fonts);
- layer movement (between sets) in filmeditor;
- quick swap;
+ the regions mustn't be overlapped;
- options to change the curve type (in curedit.c);
- canvas size;
+ with the current crop this isn't necessary anymore;
+ anyway, it's a good way to expand the graphics
- gauss blur;
- pal-operations (sort, quantize, gamma by color-curves, etc.);
- RGB and HSV effects;
- color-curve stock;
- fix algo_ellipsefill;
- view_tiled() should support animation playback (partial support:
with left and right keys).
- when press Plus/Minus pad in the editor and the configuration tool
window is active, the slider of the "Brush Size" must be updated.
- make keys like 9, 0, + Pad, - Pad configurable.
- drawing tools:
+ real-spray;
+ Animator Pro like: oval, petal, rpoly, star, poly, spiral;
- Add suppport to load old .ase files:
+ I don't think so, nobody tell me "I need load an old .ase file!!!"
Wish-list
---------
- Mateusz Czaplinski ideas:
+ when move selections, will be good the possibility to see relative
position from the starting point of movement;
+ make drawing the 'marching-ants-rectangle' a prioritaire thing to
draw (when move it).
- default Windowed mode? (idea from Robert J Ohannessian);
+ I don't think so: ASE was, is and will be better in FULL-SCREEN modes;
+ Maybe a recordable "card" in the configuration file will be enough;
+ See docs/FULLSCR.txt;
+ if double buffering is implemented, that is the answer (double buffering
with a backbuffer of 320x240 and a realscreen of 640x480).
- for Jinete:
+ add columns handle to list-boxes;
+ add icons handle to all widgets (mainly button, list-items, and labels);
+ add tree widget;
Low priority stuff
------------------
- test routines: load/save_pic_file, load/save_msk_file,
load/save_col_file.
- fix the fli reader (both Allegro and Gfli): when a frame hasn't
chunks means that it's looks like the last frame;
- talk with Ben Davis, his "quantize.c" has memory leaks (test it
more, I don't think so);
- talk with Elias Pschernig, his "do_ellipse_diameter" (algo_ellipse)
has a bug with ellipses of some dimensions (I made a test, and a
various sizes have errors).
- optimize the *_to_allegro image methods (I profiled ASE, and these
are the more slow routines in all the program);

23
WARNING.txt Normal file
View File

@ -0,0 +1,23 @@
======================================================================
ALLEGRO-SPRITE-EDITOR WARNING
======================================================================
THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY !!!
See README.txt and COPYING files for more information.
Remember to report "bugs" and errors to:
ase-help@lists.sourceforge.net
======================================================================
ADVERTENCIA SOBRE ALLEGRO-SPRITE-EDITOR
======================================================================
ESTE PROGRAMA ES DISTRIBUIDO SIN GARANTIA ALGUNA !!!
Mire los ficheros README-es.txt y COPYING para mayor
información. Recuerde reportar errores y "bugs" a:
ase-help@lists.sourceforge.net
======================================================================

170
all.h Normal file
View File

@ -0,0 +1,170 @@
#include "allegro.h"
#include "allegro/internal/aintern.h"
#include "console/console.h"
#include "core/app.h"
#include "core/cfg.h"
#include "core/core.h"
#include "core/dirs.h"
#include "core/modules.h"
#include "core/shutdown.h"
#include "dialogs/about.h"
#include "dialogs/canvasze.h"
#include "dialogs/colsel.h"
#include "dialogs/dfrlen.h"
#include "dialogs/dmapgen.h"
#include "dialogs/dpaledit.h"
#include "dialogs/drawtext.h"
#include "dialogs/effect.h"
#include "dialogs/filesel.h"
#include "dialogs/filmedit.h"
#include "dialogs/gfxsel.h"
#include "dialogs/maskcol.h"
#include "dialogs/maskrepo.h"
#include "dialogs/minipal.h"
#include "dialogs/options.h"
#include "dialogs/playfli.h"
#include "dialogs/quick.h"
#include "dialogs/repo.h"
#include "dialogs/scrsaver.h"
#include "dialogs/tips.h"
#include "dialogs/toolconf.h"
#include "dialogs/vectmap.h"
#include "dialogs/viewspr.h"
#include "effect/colcurve.h"
#include "effect/convmatr.h"
#include "effect/effect.h"
#include "effect/invrtcol.h"
#include "effect/median.h"
#include "effect/replcol.h"
#include "file/ase.h"
#include "file/file.h"
#include "file/gif/format.h"
#include "file/gif/lzw.h"
#include "gfli.h"
#include "intl/intl.h"
#include "intl/msgids.h"
#include "jinete.h"
#include "jinete/alert.h"
#include "jinete/base.h"
#include "jinete/box.h"
#include "jinete/button.h"
#include "jinete/draw.h"
#include "jinete/entry.h"
#include "jinete/hook.h"
#include "jinete/intern.h"
#include "jinete/label.h"
#include "jinete/list.h"
#include "jinete/listbox.h"
#include "jinete/manager.h"
#include "jinete/menu.h"
#include "jinete/message.h"
#include "jinete/rect.h"
#include "jinete/region.h"
#include "jinete/sep.h"
#include "jinete/slider.h"
#include "jinete/system.h"
#include "jinete/textbox.h"
#include "jinete/theme.h"
#include "jinete/view.h"
#include "jinete/widget.h"
#include "jinete/window.h"
#include "lauxlib.h"
#include "libart_lgpl/libart-features.h"
#include "libart_lgpl/libart.h"
#include "lua.h"
#include "lualib.h"
#include "modules/chkmthds.h"
#include "modules/color.h"
#include "modules/editors.h"
#include "modules/gfx.h"
#include "modules/gui.h"
#include "modules/palette.h"
#include "modules/recent.h"
#include "modules/render.h"
#include "modules/rootmenu.h"
#include "modules/sprites.h"
#include "modules/tools.h"
#include "modules/tools2.h"
#include "raster/algo.h"
#include "raster/blend.h"
#include "raster/brush.h"
#include "raster/dirty.h"
#include "raster/frame.h"
#include "raster/gfxobj.h"
#include "raster/image.h"
#include "raster/layer.h"
#include "raster/mask.h"
#include "raster/path.h"
#include "raster/quant.h"
#include "raster/raster.h"
#include "raster/rotate.h"
#include "raster/sprite.h"
#include "raster/stock.h"
#include "raster/undo.h"
#include "script/bindings.h"
#include "script/import.h"
#include "script/script.h"
#include "util/autocrop.h"
#include "util/boundary.h"
#include "util/clipbrd.h"
#include "util/col_file.h"
#include "util/crop.h"
#include "util/filetoks.h"
#include "util/flip.h"
#include "util/frmove.h"
#include "util/hash.h"
#include "util/mapgen.h"
#include "util/misc.h"
#include "util/msk_file.h"
#include "util/pic_file.h"
#include "util/quantize.h"
#include "util/recscr.h"
#include "util/scrshot.h"
#include "util/session.h"
#include "util/setgfx.h"
#include "util/thmbnail.h"
#include "widgets/colbar.h"
#include "widgets/colbut.h"
#include "widgets/colview.h"
#include "widgets/curvedit.h"
#include "widgets/editor.h"
#include "widgets/groupbut.h"
#include "widgets/menu.h"
#include "widgets/paledit.h"
#include "widgets/preview.h"
#include "widgets/statebar.h"
#include "widgets/target.h"
#include "widgets/toolbar.h"
#include <allegro.h>
#include <allegro/base.h>
#include <allegro/color.h>
#include <allegro/config.h>
#include <allegro/draw.h>
#include <allegro/file.h>
#include <allegro/gfx.h>
#include <allegro/internal/aintern.h>
#include <allegro/keyboard.h>
#include <allegro/system.h>
#include <allegro/unicode.h>
#include <ctype.h>
#include <errno.h>
#ifdef HAVE_LIBJPEG
#include <jpeglib.h>
#endif
#ifdef HAVE_JPGALLEG
#include <jpgalleg.h>
#endif
#include <limits.h>
#include <math.h>
#include <setjmp.h>
#include <signal.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#if 0
#include "ft2build.h"
#include FT_FREETYPE_H
#endif

49
config.h Normal file
View File

@ -0,0 +1,49 @@
/* ase -- allegro-sprite-editor: the ultimate sprites factory
* Copyright (C) 2001-2005, 2007 David A. Capello
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifdef __ASE_CONFIG_H
# error You cannot use config.h two times
#endif
#define __ASE_CONFIG_H
/* general information */
#define PACKAGE "ase"
#define VERSION "0.5"
#define WEBSITE "http://ase.sourceforge.net/"
#define BUGREPORT "ase-help@lists.sourceforge.net"
#define COPYRIGHT "Copyright (C) 2001-2005, 2007 David A. Capello"
#define PRINTF verbose_printf
/* include everything headers files to precompile */
#ifdef USE_PRECOMPILED_HEADER
#include "all.h"
#endif
/* defined in src/core/core.c */
void verbose_printf(const char *format, ...);
/* strings */
const char *msgids_get(const char *id); /* src/intl/msgids.[ch] */
#define _(msgid) (msgids_get(msgid))
#include <math.h>
#undef PI
#define PI 3.14159265358979323846

BIN
data/aseicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
data/aseicon.pcx Normal file

Binary file not shown.

324
data/convmatr.def Normal file
View File

@ -0,0 +1,324 @@
# allegro-sprite-editor convolution matrices -*- Shell-script -*-
# Copyright (C) 2001-2005 by David A. Capello
#
# Loader in "plug-ins/action/convmatr.c".
#
# Format:
#
# matrix-name w h cx cy { data } div bias target
#
# References:
#
# w = 1 ... N
# h = 1 ... N
# width and height of the matrix
#
# cx = 0 ... w-1
# cy = 0 ... h-1
# center of the matrix
#
# data = N0 N1 ... N(w*h)
# the multiplicity factors
#
# div = N != 0 | auto
# final division factor
#
# bias = -N ... +N | auto
# final shift
#
# target = rgba
# [r]ed, [g]reen, [b]lue, [a]lpha
#
alpha-maximum 1 1 0 0 { 1 } 1 255 a
rgb-brightness 1 1 0 0 { 1 } 1 +8 rgb
rgb-contrast 1 1 0 0 { 1 } 1 -8 rgb
rgb-negative 1 1 0 0 { -1 } auto auto rgb
rgb-remap-colors 1 1 0 0 { 1 } 1 0 rgb
edges-find 3 3 1 1
{ -1 -1 -1
-1 8 -1
-1 -1 -1 } 1 0 rgb
edges-find-horizontal 3 3 1 1
{ -1 -2 -1
0 0 0
1 2 1 } 1 0 rgb
edges-find-vertical 3 3 1 1
{ -1 0 1
-2 0 2
-1 0 1 } 1 0 rgb
misc-contour 3 3 1 1
{ 1 1 1
1 -8 1
1 1 1 } 1 255 rgb
misc-texturize 3 3 1 1
{ -2 -2 1
-2 1 2
-1 2 2 } 1 0 rgb
misc-emboss 3 3 1 1
{ -4 -2 -1
-2 1 2
1 2 4 } 1 0 rgb
misc-marmolize 3 3 1 1
{ -1 -1 1
-1 0 1
-1 1 1 } 2 128 rgb
misc-rock 3 3 1 1
{ -4 -2 -1
-2 0 2
1 2 4 } auto auto rgb
misc-rock-edges 3 3 1 1
{ -1 -1 -1
-1 8 -1
-1 -1 -1 } auto auto rgb
drunk-3x3_x 3 3 1 1
{ 1 0 1
0 1 0
1 0 1 } auto auto rgba
drunk-3x3_+ 3 3 1 1
{ 0 1 0
1 1 1
0 1 0 } auto auto rgba
drunk-5x5_x 5 5 2 2
{ 1 0 0 0 1
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
1 0 0 0 1 } auto auto rgba
drunk-5x5_+ 5 5 2 2
{ 0 0 1 0 0
0 0 0 0 0
1 0 1 0 1
0 0 0 0 0
0 0 1 0 0 } auto auto rgba
drunk-7x7_x 7 7 3 3
{ 1 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 0 0 0 1 } auto auto rgba
drunk-7x7_+ 7 7 3 3
{ 0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 0 } auto auto rgba
drunk-9x9_x 9 9 4 4
{ 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 } auto auto rgba
drunk-9x9_+ 9 9 4 4
{ 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 } auto auto rgba
drunk-17x17_x 17 17 8 8
{ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 } auto auto rgba
drunk-17x17_+ 17 17 8 8
{ 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } auto auto rgba
drunk-17x17_o 17 17 8 8
{ 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 } auto auto rgba
sharpen-3x3 3 3 1 1
{ -1 -1 -1
-1 16 -1
-1 -1 -1 } 8 0 rgb
sharpen-5x5 5 5 2 2
{ 0 -1 -2 -1 0
-1 -2 -4 -2 -1
-2 -4 48 -4 -2
-1 -2 -4 -2 -1
0 -1 -2 -1 0 } 8 0 rgb
sharpen-7x7 7 7 3 3
{ 0 -1 -2 -4 -2 -1 0
-1 -2 -4 -8 -4 -2 -1
-2 -4 -8 -16 -8 -4 -2
-4 -8 -16 224 -16 -8 -4
-2 -4 -8 -16 -8 -4 -2
-1 -2 -4 -8 -4 -2 -1
0 -1 -2 -4 -2 -1 -0 } 16 0 rgb
smooth-3x3 3 3 1 1
{ 1 2 1
2 4 2
1 2 1 } auto auto rgba
smooth-3x3-hard 3 3 1 1
{ 0 1 0
1 8 1
0 1 0 } auto auto rgba
smooth-5x5 5 5 2 2
{ 1 2 3 2 1
2 3 4 3 2
3 4 5 4 3
2 3 4 3 2
1 2 3 2 1 } auto auto rgba
smooth-7x7 7 7 3 3
{ 1 2 3 4 3 2 1
2 3 4 5 4 3 2
3 4 5 6 5 4 3
4 5 6 7 6 5 4
3 4 5 6 5 4 3
2 3 4 5 4 3 2
1 2 3 4 3 2 1 } auto auto rgba
smooth-9x9 9 9 4 4
{ 1 2 3 4 5 4 3 2 1
2 3 4 5 6 5 4 3 2
3 4 5 6 7 6 5 4 3
4 5 6 7 8 7 6 5 4
5 6 7 8 9 8 7 6 5
4 5 6 7 8 7 6 5 4
3 4 5 6 7 6 5 4 3
2 3 4 5 6 5 4 3 2
1 2 3 4 5 4 3 2 1 } auto auto rgba
smooth-17x17 17 17 8 8
{ 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2
3 4 5 6 7 8 9 10 11 10 9 8 7 6 5 4 3
4 5 6 7 8 9 10 11 12 11 10 9 8 7 6 5 4
5 6 7 8 9 10 11 12 13 12 11 10 9 8 7 6 5
6 7 8 9 10 11 12 13 14 13 12 11 10 9 8 7 6
7 8 9 10 11 12 13 14 15 14 13 12 11 10 9 8 7
8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8
9 10 11 12 13 14 15 16 17 16 15 14 13 12 11 10 9
8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8
7 8 9 10 11 12 13 14 15 14 13 12 11 10 9 8 7
6 7 8 9 10 11 12 13 14 13 12 11 10 9 8 7 6
5 6 7 8 9 10 11 12 13 12 11 10 9 8 7 6 5
4 5 6 7 8 9 10 11 12 11 10 9 8 7 6 5 4
3 4 5 6 7 8 9 10 11 10 9 8 7 6 5 4 3
2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 } auto auto rgba
smooth-5x3-left 5 3 0 1
{ 2 3 2 1 0
6 4 3 2 1
2 3 2 1 0 } auto auto rgba
smooth-17x3-left 17 3 0 1
{ 14 16 13 12 10 8 6 4 3 2 1 0 0 0 0 0 0
24 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
14 16 13 12 10 8 6 4 3 2 1 0 0 0 0 0 0 } auto auto rgba
smooth-3x17-top 3 17 1 0
{ 14 24 14
16 16 16
13 15 13
12 14 12
10 13 10
8 12 8
6 11 6
4 10 4
3 9 3
2 8 2
1 7 1
0 6 0
0 5 0
0 4 0
0 3 0
0 2 0
0 1 0 } auto auto rgba
smooth-5x5-diagonal(\) 5 5 2 2
{ 1 1 1 0 0
1 2 2 1 0
1 2 3 2 1
0 1 2 2 1
0 0 1 1 1 } auto auto rgba
smooth-5x5-diagonal(/) 5 5 2 2
{ 0 0 1 1 1
0 1 2 2 1
1 2 3 2 1
1 2 2 1 0
1 1 1 0 0 } auto auto rgba

BIN
data/fonts/allegro.pcx Normal file

Binary file not shown.

BIN
data/fonts/anipro.pcx Normal file

Binary file not shown.

BIN
data/fonts/anipro2.pcx Normal file

Binary file not shown.

BIN
data/fonts/default.pcx Normal file

Binary file not shown.

BIN
data/fonts/default2.pcx Normal file

Binary file not shown.

BIN
data/fonts/lcd8.pcx Normal file

Binary file not shown.

BIN
data/fonts/mssansserif8.pcx Normal file

Binary file not shown.

Binary file not shown.

BIN
data/fonts/tahoma8.pcx Normal file

Binary file not shown.

BIN
data/fonts/terminal10.pcx Normal file

Binary file not shown.

BIN
data/fonts/terminal8.pcx Normal file

Binary file not shown.

BIN
data/fonts/verdana10.pcx Normal file

Binary file not shown.

BIN
data/fonts/verdana8.pcx Normal file

Binary file not shown.

BIN
data/fonts/verdana8bold.pcx Normal file

Binary file not shown.

BIN
data/fonts/verdana9.pcx Normal file

Binary file not shown.

18
data/jids/colcurv.jid Normal file
View File

@ -0,0 +1,18 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Color Curve") name="color_curve">
<box vertical>
<box horizontal expansive>
<view expansive name="curve" /><!-- custom widget -->
<box vertical>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
<box name="target" />
<check text=_("&Preview") name="preview" />
</box>
</box>
</box>
</window>

47
data/jids/colsel.jid Normal file
View File

@ -0,0 +1,47 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Color Selection") name="color_selection">
<!-- <box horizontal> -->
<box vertical expansive>
<box horizontal>
<box vertical homogeneous>
<label text="R" />
<label text="G" />
<label text="B" />
</box>
<box vertical homogeneous expansive>
<slider min="0" max="255" name="red" />
<slider min="0" max="255" name="green" />
<slider min="0" max="255" name="blue" />
</box>
<box vertical homogeneous>
<label text="H" />
<label text="S" />
<label text="V" />
</box>
<box vertical homogeneous expansive>
<slider min="0" max="255" name="hue" />
<slider min="0" max="255" name="saturation" />
<slider min="0" max="255" name="value" />
</box>
</box>
<box horizontal>
<label text="A" />
<slider min="0" max="255" expansive name="alpha" />
</box>
<view name="palette_editor" expansive /> <!-- custom-widget -->
<box name="color_viewer" expansive /> <!-- custom-widget -->
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
<!-- <box vertical> -->
<!-- <view name="palette_editor" expansive /> <\!-- custom-widget -\-> -->
<!-- <box name="color_viewer" expansive /> <\!-- custom-widget -\-> -->
<!-- </box> -->
<!-- </box> -->
</window>

66
data/jids/convmatr.jid Normal file
View File

@ -0,0 +1,66 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Convolution Matrix") name="convolution_matrix">
<box vertical>
<box horizontal expansive>
<view expansive name="view" /><!-- custom widget -->
<box vertical>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
<box name="target" />
<check text=_("&Preview") name="preview" />
<check text=_("&Tiled") name="tiled" />
</box>
</box>
<box horizontal>
<button text=_("&Reload Stock") name="reload" />
<button text=_("&Generate") name="generate" />
</box>
</box>
</window>
<window text=_("Generate New Matrix") name="generate_convolution_matrix">
<box vertical>
<box horizontal expansive homogeneous>
<box vertical expansive>
<label text=_("X axis") />
<view expansive name="view_x" /><!-- custom widget -->
</box>
<box vertical expansive>
<label text=_("Y axis") />
<view expansive name="view_y" /><!-- custom widget -->
</box>
</box>
<box horizontal homogeneous>
<box horizontal>
<box vertical homogeneous>
<label text=_("Width:") />
<label text=_("Height:") />
</box>
<box vertical homogeneous expansive>
<slider min="1" max="31" name="width" />
<slider min="1" max="31" name="height" />
</box>
<box vertical homogeneous>
<label text=_("Div:") />
<label text=_("Bias:") />
</box>
<box vertical homogeneous expansive>
<entry maxsize=32 name="div" />
<entry maxsize=32 name="bias" />
</box>
<box vertical homogeneous>
<check text=_("Auto") name="div_auto" />
<check text=_("Auto") name="bias_auto" />
</box>
</box>
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

37
data/jids/drawtext.jid Normal file
View File

@ -0,0 +1,37 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Draw Text") name="drawtext_window">
<box vertical>
<box horizontal>
<box vertical homogeneous>
<label text=_("Font:") />
<label text=_("Size:") />
</box>
<box vertical homogeneous expansive>
<button text="" name="font" />
<entry maxsize=8 name="size"/>
</box>
</box>
<!-- <label text=_("Fixed Size:") /> -->
<!-- <view expansive> -->
<!-- <listbox /> -->
<!-- </view> -->
<separator horizontal />
<box horizontal>
<box vertical homogeneous>
<label text=_("Text:") />
<label text=_("Color:") />
</box>
<box vertical homogeneous expansive name="color_box">
<entry maxsize=256 name="text" expansive />
</box>
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

24
data/jids/dupspr.jid Normal file
View File

@ -0,0 +1,24 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Duplicate Sprite") name="duplicate_sprite">
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Duplicate:") />
<label text=_("As:") />
</box>
<box vertical homogeneous expansive>
<label text="" name="src_name" />
<entry maxsize="256" name="dst_name" />
</box>
</box>
<check text=_("Duplicate merged layers only") name="flatten" />
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

23
data/jids/frlen.jid Normal file
View File

@ -0,0 +1,23 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Frame Duration") name="frame_duration">
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Frame position:") />
<label text=_("Frame duration (msecs):") />
</box>
<box vertical homogeneous expansive>
<label text="" name="frpos" />
<entry maxsize=32 name="frlen" />
</box>
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

27
data/jids/frmprop.jid Normal file
View File

@ -0,0 +1,27 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Frame Properties") name="frame_properties">
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Frame position:") />
<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="xpos" />
<entry maxsize=32 name="ypos" />
<slider min=0 max=255 name="opacity" />
</box>
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

26
data/jids/imgtype.jid Normal file
View File

@ -0,0 +1,26 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Convert Image Type") name="image_type">
<box vertical>
<box vertical expansive>
<box horizontal>
<label text=_("From:") />
<label text="" name="from" />
</box>
<label text=_("To:") />
<radio name="imgtype1" text=_("&RGB") group=1 />
<radio name="imgtype2" text=_("&Grayscale") group=1 />
<radio name="imgtype3" text=_("&Indexed") group=1 />
<separator horizontal />
<radio name="dither1" text=_("&No Dithering") group=2 />
<radio name="dither2" text=_("&Ordered Dither") group=2 />
</box>
<box horizontal expansive homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

15
data/jids/invrtcol.jid Normal file
View File

@ -0,0 +1,15 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Invert Color") name="invert_color">
<box vertical>
<box vertical expansive name="target" />
<check text=_("&Preview") name="preview" />
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

58
data/jids/main.jid Normal file
View File

@ -0,0 +1,58 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<!-- default 0.2 layout -->
<window noborders desktop text="Main Window" name="main_window">
<box noborders vertical>
<box noborders horizontal name="menu_bar" />
<box noborders horizontal expansive>
<box noborders vertical name="color_bar" />
<box noborders horizontal name="editor" expansive />
<box noborders vertical name="tool_bar" />
</box>
<box noborders horizontal name="status_bar" />
</box>
</window>
<!-- old 0.1.2 layout -->
<window noborders desktop text="Main Window" name="main_window_alt1">
<box noborders vertical>
<box noborders horizontal name="menu_bar" />
<box noborders horizontal expansive>
<box noborders vertical name="color_bar" />
<box noborders vertical expansive>
<box noborders horizontal expansive>
<box noborders horizontal name="editor" expansive />
<box noborders vertical name="tool_bar" />
</box>
<box noborders horizontal name="status_bar" />
</box>
</box>
</box>
</window>
<!-- alternative layout like Windows apps -->
<window noborders desktop text="Main Window" name="main_window_alt2">
<box noborders vertical>
<box noborders horizontal name="menu_bar" />
<box noborders horizontal name="tool_bar" />
<box noborders horizontal name="editor" expansive />
<box noborders horizontal name="color_bar" />
<box noborders horizontal name="status_bar" />
</box>
</window>
<!-- alternative layout like Corel -->
<window noborders desktop text="Main Window" name="main_window_alt3">
<box noborders vertical>
<box noborders horizontal name="menu_bar" />
<box horizontal expansive>
<box noborders vertical name="tool_bar" />
<box noborders horizontal name="editor" expansive />
</box>
<box noborders horizontal name="color_bar" />
<box noborders horizontal name="status_bar" />
</box>
</window>

42
data/jids/mapgen.jid Normal file
View File

@ -0,0 +1,42 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Map Generator") name="mapgen">
<panel horizontal>
<view name="mapview" expansive /><!-- custom-widget -->
<box vertical>
<box horizontal>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Width:") />
<label text=_("Height:") />
</box>
<box vertical homogeneous expansive>
<entry expansive name="width" maxsize=8 />
<entry expansive name="height" maxsize=8 />
</box>
</box>
</box>
<label text=_("Seed:") />
<box horizontal>
<entry expansive name="seed" maxsize=32 />
<button text="&Random" name="random_seed" />
</box>
<label text=_("Fractal Factor:") />
<box horizontal>
<entry expansive name="fractal_factor" maxsize=32 />
<button text="sqrt2" name="sqrt2_factor" />
</box>
<check text=_("&Preview") name="preview" />
<check text=_("&Tiled") name="tiled" />
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

30
data/jids/median.jid Normal file
View File

@ -0,0 +1,30 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Median Blur") name="median">
<box vertical>
<box horizontal>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Width:") />
<label text=_("Height:") />
</box>
<box vertical homogeneous expansive>
<entry expansive name="width" maxsize=4 />
<entry expansive name="height" maxsize=4 />
</box>
</box>
<box vertical>
<box name="target" />
<check text=_("&Preview") name="preview" />
<check text=_("&Tiled") name="tiled" />
</box>
</box>
<box horizontal homogeneous expansive>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

38
data/jids/newlay.jid Normal file
View File

@ -0,0 +1,38 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("New Image Layer") name="new_layer">
<box vertical>
<box horizontal>
<box vertical homogeneous>
<label text=_("Name:") />
<label text=_("Width:") />
<label text=_("Height:") />
</box>
<box vertical homogeneous>
<entry maxsize=256 text=_("New Layer") name="name" />
<entry maxsize=4 name="width" />
<entry maxsize=4 name="height" />
</box>
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>
<window text=_("New Layer Set") name="new_layer_set">
<box vertical>
<box horizontal>
<label text=_("Name:") />
<entry maxsize=256 text=_("New Set") name="name" />
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

48
data/jids/newspr.jid Normal file
View File

@ -0,0 +1,48 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("New Sprite") name="new_sprite">
<box vertical>
<box horizontal>
<box vertical expansive>
<separator text=_("Size:") left horizontal />
<box vertical expansive>
<box horizontal>
<box vertical homogeneous>
<label text=_("Width:") />
<label text=_("Height:") />
</box>
<box vertical homogeneous expansive>
<entry expansive name="width" maxsize=8 />
<entry expansive name="height" maxsize=8 />
</box>
</box>
</box>
</box>
<box vertical>
<separator text=_("Type:") left horizontal />
<box vertical homogeneous>
<radio name="radio1" text=_("&RGB") group=1 />
<radio name="radio2" text=_("&Grayscale") group=1 />
<radio name="radio3" text=_("&Indexed") group=1 />
</box>
</box>
</box>
<separator text=_("Background:") left horizontal />
<view maxsize expansive>
<listbox name="bg_box">
<listitem text=_("Transparent (mask color)") />
<listitem text=_("Black") />
<listitem text=_("White") />
<listitem text=_("Bright Pink") />
<listitem text=_("Custom") />
</listbox>
</view>
<box horizontal homogeneous>
<button text=_("&OK") name="ok_button" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

54
data/jids/options.jid Normal file
View File

@ -0,0 +1,54 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Options") name="options">
<box vertical>
<box horizontal>
<box vertical>
<label text=_("Mouse Speed:") />
<box horizontal>
<box vertical homogeneous>
<label text=_("X:") />
<label text=_("Y:") />
</box>
<box vertical homogeneous expansive>
<slider min="-8" max="8" name="mouse_x" />
<slider min="-8" max="8" name="mouse_y" />
</box>
</box>
<check text=_("Lock X/Y") name="lock_axis" />
<separator horizontal />
<label text=_("Movement Delay (milliseconds):") />
<slider min="0" max="1000" name="move_delay" />
<check text=_("Smooth auto-scroll") name="smooth" />
<check text=_("Real-time ordered dithering") name="dither" />
</box>
<separator vertical />
<box vertical>
<label text="" name="label_font" />
<button text=_("Change GUI Font") name="button_font" />
<button text=_("Change Language") name="button_lang" />
<separator horizontal />
<check text=_("2 Click Movement") name="move_click2" />
<check text=_("2 Click Drawing") name="draw_click2" />
</box>
</box>
<separator horizontal />
<check text=_("Ask to load backed up sessions") name="askbkpses" />
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Save") name="button_save" />
<button text=_("&Cancel") />
</box>
</box>
</window>

60
data/jids/paledit.jid Normal file
View File

@ -0,0 +1,60 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Palette Editor") name="palette_editor">
<box vertical>
<box horizontal expansive>
<box vertical>
<view name="palette_editor" expansive /> <!-- custom-widget -->
<slider min="1" max="256" name="columns" />
</box>
<box vertical expansive>
<box horizontal>
<box vertical homogeneous>
<label text="R" />
<label text="G" />
<label text="B" />
</box>
<box vertical homogeneous expansive>
<slider min="0" max="255" name="red" />
<slider min="0" max="255" name="green" />
<slider min="0" max="255" name="blue" />
</box>
<box vertical homogeneous>
<label text="H" />
<label text="S" />
<label text="V" />
</box>
<box vertical homogeneous expansive>
<slider min="0" max="255" name="hue" />
<slider min="0" max="255" name="saturation" />
<slider min="0" max="255" name="value" />
</box>
</box>
<box name="color_viewer" expansive /> <!-- custom-widget -->
<button text=_("Select &All") name="select_all" />
<box vertical>
<box horizontal homogeneous>
<button text=_("&Undo") name="undo" />
<button text=_("&Redo") name="redo" />
</box>
<box horizontal homogeneous>
<button text=_("&Load") name="load" />
<button text=_("&Save") name="save" />
</box>
<box horizontal homogeneous>
<button text=_("&Ramp") name="ramp" />
<button text=_("&Quantize") name="quantize" />
</box>
</box>
</box>
</box>
<slider min="0" max="1" name="frpos" />
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

16
data/jids/playfli.jid Normal file
View File

@ -0,0 +1,16 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Play FLI/FLC") name="play_fli">
<box vertical>
<check text=_("Loop") name="loop" />
<check text=_("Fullscreen") name="fullscreen" />
<button text=_("&Open") name="button_open" />
<box horizontal homogeneous expansive>
<button text=_("&Play") name="button_play" magnetic />
<button text=_("&Close") />
</box>
</box>
</window>

23
data/jids/pntprop.jid Normal file
View File

@ -0,0 +1,23 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Point Properties") name="point_properties">
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("X:") />
<label text=_("Y:") />
</box>
<box vertical homogeneous expansive>
<entry maxsize="32" name="x" />
<entry maxsize="32" name="y" />
</box>
</box>
<box horizontal homogeneous>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

38
data/jids/replcol.jid Normal file
View File

@ -0,0 +1,38 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Replace Color") name="replace_color">
<box horizontal>
<box vertical expansive>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("Get:") />
<label text=_("Put:") />
</box>
<box vertical homogeneous expansive>
<box horizontal expansive>
<box vertical homogeneous expansive name="color_buttons_box" />
<box vertical homogeneous>
<button text="1" name="button1_1" />
<button text="1" name="button2_1" />
</box>
<box vertical homogeneous>
<button text="2" name="button1_2" />
<button text="2" name="button2_2" />
</box>
</box>
</box>
</box>
<label text=_("Fuzziness:") />
<slider min=0 max=255 name="fuzziness" />
</box>
<box vertical>
<button text=_("&OK") name="button_ok" magnetic />
<button text=_("&Cancel") />
<box name="target" />
<check text=_("&Preview") name="preview" />
</box>
</box>
</window>

28
data/jids/sprprop.jid Normal file
View File

@ -0,0 +1,28 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Sprite Properties") name="sprite_properties">
<box vertical>
<box horizontal expansive>
<box vertical homogeneous>
<label text=_("File name:") />
<label text=_("Type:") />
<label text=_("Size:") />
<label text=_("Frames:") />
</box>
<box vertical homogeneous expansive>
<entry maxsize=256 name="name" />
<label text="" name="type" />
<label text="" name="size" />
<entry maxsize=4 name="frames" />
</box>
</box>
<button text=_("Constant Frame-Rate Speed") name="speed" />
<box horizontal homogeneous>
<button text=_("&OK") name="ok" magnetic />
<button text=_("&Cancel") />
</box>
</box>
</window>

55
data/jids/toolconf.jid Normal file
View File

@ -0,0 +1,55 @@
<!-- ase -- allegro-sprite-editor: the ultimate sprites factory -->
<!-- Copyright (C) 2001-2005, 2007 by David A. Capello -->
<!-- Read "LEGAL.txt" for more information. -->
<window text=_("Tools Setup") name="configure_tool">
<box vertical>
<box horizontal expansive>
<box vertical>
<separator text=_("General:") horizontal left />
<check text=_("Filled") name="filled" />
<check text=_("Tiled") name="tiled" />
<check text=_("Onionskin") name="onionskin" />
<separator text=_("Grid:") horizontal left />
<check text=_("Snap to Grid") name="use_grid" />
<check text=_("View Grid") name="view_grid" />
<button text=_("Set &Grid") name="set_grid" />
<separator text=_("Cursor:") horizontal left />
<box name="cursor_color_box" /><!-- custom widget -->
</box>
<box vertical expansive>
<separator text=_("Brush:") horizontal left />
<box horizontal>
<box vertical homogeneous>
<label text=_("Size:") />
<label text=_("Angle:") />
</box>
<box vertical homogeneous expansive>
<slider min=1 max=32 name="brush_size" />
<slider min=0 max=180 name="brush_angle" />
</box>
<box vertical homogeneous>
<box name="brush_type_box" /><!-- custom widget -->
<box name="brush_mode_box" /><!-- custom widget -->
</box>
<box name="brush_preview_box" /><!-- custom widget -->
</box>
<separator text=_("Glass Dirty:") horizontal left />
<slider min=0 max=255 name="glass_dirty" />
<separator text=_("Spray:") horizontal left />
<box horizontal>
<box vertical homogeneous>
<label text=_("Spray Width:") />
<label text=_("Air Speed:") />
</box>
<box vertical homogeneous expansive>
<slider min=1 max=32 name="spray_width" />
<slider min=1 max=100 name="air_speed" />
</box>
</box>
</box>
</box>
<button text=_("&Close") />
</box>
</window>

272
data/menus.en Normal file
View File

@ -0,0 +1,272 @@
# allegro-sprite-editor menus -*- Shell-script -*-
# Copyright (C) 2001-2005, 2007 by David A. Capello
#
# Loader in "src/modules/rootmenu.c"
# Check methods in "src/modules/chkmthds.c"
#
# See "src/script/bindings.src" for the list of available script routines
#
# Format:
# -------
#
# # <- comment
# sub-menu {
# menu-item = check_method script_expression [keyboard_bindings...] ;
# sprite-list-menu SPRITE_LIST ;
# recent-list-menu RECENT_LIST ;
# ----
# layer-menu LAYER_POPUP {
# ...
# }
# frame-menu FRAME_POPUP {
# ...
# }
# undo-action UNDO_ACCEL = ... ;
# redo-action REDO_ACCEL = ... ;
# open-film-editor-action FILMEDITOR_ACCEL = ... ;
# screenshot-action SCREENSHOT_ACCEL = ... ;
# ...
# }
#
# References:
# -----------
#
# script_expression:
# The script string to be run.
#
# keyboard_bindings:
# Keys shorcuts for the menu (must be between <...>).
# The characters between <...> can not have spaces.
# The first key shortcut will be showed in the program.
#
# ----:
# Is a separator
#
# check_method:
# A name of a method to check when this options should be available
# on interactive mode:
#
# always - always is enabled
# has_sprite - only when we are editing a sprite
# has_layer - only when we are editing a layer
# has_layerimage - only when we are editing a layer (of "image" type)
# has_image - only when we are editing a image
# can_undo - only when we can undo
# can_redo - only when we can redo
# has_path - sprite has a working path
# has_mask - sprite has a region marked
# has_imagemask - sprite has a region marked in a image layer
# has_clipboard - only when the clipboard can be used in
# the current sprite
#
# menu_bar - menu bar visibility
# status_bar - status bar visibility
# color_bar - color bar visibility
# tool_bar - tool bar visibility
#
# tool_marker - current tool is marker?
# tool_dots - current tool is dots?
# tool_pencil - current tool is pencil?
# tool_brush - current tool is brush?
# tool_floodfill - current tool is floodfill?
# tool_spray - current tool is spray?
# tool_line - current tool is line?
# tool_rectangle - current tool is rectangle?
# tool_ellipse - current tool is ellipse?
#
# is_rec - controls the check status if is recording-screen on/off
# is_movingframe - when the user moves a frame in the film editor
#
- {
"&Tips" = always "GUI_Tips(true)" <F1> ;
"&About" = always "GUI_About()" ;
"&Refresh" = always "app_refresh_screen()" <F5> ;
----
"&Screen Saver" = always "GUI_ScreenSaver()" ;
"Set &Graphics Mode" {
"&Select" = always "set_gfx(\"interactive\", 0, 0, 0)" ;
----
"320x200 8" = always "set_gfx(\"autodetect\", 320, 200, 8)" ;
"320x240 8" = always "set_gfx(\"autodetect\", 320, 240, 8)" ;
"640x480 8" = always "set_gfx(\"autodetect\", 640, 480, 8)" ;
"800x600 8" = always "set_gfx(\"autodetect\", 800, 600, 8)" ;
----
"320x200 16" = always "set_gfx(\"autodetect\", 320, 200, 16)" ;
"320x240 16" = always "set_gfx(\"autodetect\", 320, 240, 16)" ;
"640x480 16" = always "set_gfx(\"autodetect\", 640, 480, 16)" ;
"800x600 16" = always "set_gfx(\"autodetect\", 800, 600, 16)" ;
}
----
"Screen Sh&ot" SCREENSHOT_ACCEL = always "screen_shot()" <F12> ;
"Recording Screen" = is_rec "GUI_SwitchREC()" ;
----
"Reload &Menus" = always "GUI_ReloadMenus()" ;
----
"Load Session" = always "GUI_LoadSession()" ;
"Save Session" = always "GUI_SaveSession()" ;
}
&File {
"&New" = always "GUI_NewSprite()" <Ctrl+N> ;
"&Open" = always "GUI_OpenSprite()" <Ctrl+O> <F3> ;
"Open &Recent" RECENT_LIST ;
----
"&Save" = has_sprite "GUI_SaveSprite()" <Ctrl+S> <F2> ;
"&Close" = has_sprite "GUI_CloseSprite()" <Ctrl+W> ;
----
"E&xit" = always "GUI_Exit()" <Ctrl+Q> <Esc> ;
}
&Edit {
"&Undo" UNDO_ACCEL = can_undo "GUI_Undo()" <Ctrl+Z> <Ctrl+U> ;
"&Redo" REDO_ACCEL = can_redo "GUI_Redo()" <Ctrl+R> ;
----
"Cu&t" = has_imagemask "cut_to_clipboard()" <Ctrl+X> <Shift+Del> ;
"&Copy" = has_imagemask "copy_to_clipboard()" <Ctrl+C> <Ctrl+Ins> ;
"&Paste" = has_clipboard "paste_from_clipboard(true, 0, 0, 0, 0)" <Ctrl+V> <Shift+Ins> ;
"C&lear" = has_image "GUI_EditClear()" <Ctrl+B> <Ctrl+Del> ;
----
"Quick &Move" = has_imagemask "quick_move()" <Shift+M> ;
"Quick C&opy" = has_imagemask "quick_copy()" <Shift+C> ;
# "Quick S&wap" = has_imagemask "quick_swap()" <Shift+S> ;
----
"Flip &Horizontal" = has_image "GUI_FlipHorizontal()" <Shift+H> ;
"Flip &Vertical" = has_image "GUI_FlipVertical()" <Shift+V> ;
----
"R&eplace Color" = has_image "GUI_ReplaceColor()" </> ;
"&Invert" = has_image "GUI_InvertColor()" <Ctrl+I> ;
}
&Sprite {
"&Properties" = has_sprite "GUI_SpriteProperties()" <Ctrl+P> ;
----
"&Duplicate" = has_sprite "GUI_DuplicateSprite()" ;
"Image &Type" = has_sprite "GUI_ImageType()" ;
----
#"&Image Resize" = has_sprite "print(\"Unavailable\")" ;
#"&Canvas Resize" = has_sprite "canvas_resize()" ;
"Cr&op" = has_mask "crop_sprite()" ;
"&Auto Crop" = has_sprite "autocrop_sprite()" ;
}
&Layer LAYER_POPUP {
"&Properties" = has_layer "GUI_LayerProperties()" <Shift+P> ;
----
"&New" = has_sprite "GUI_NewLayer()" <Shift+N> ;
"New &Set" = has_sprite "GUI_NewLayerSet()" ;
"&Remove" = has_layer "GUI_RemoveLayer()" ;
----
"&Duplicate" = has_layer "GUI_DuplicateLayer()" ;
"&Merge Down" = has_layer "GUI_MergeDown()" ;
"&Flatten" = has_layer "FlattenLayers()" ;
"Cr&op" = has_mask "crop_layer()" ;
}
F&rame FRAME_POPUP {
"&Properties" = has_image "GUI_FrameProperties()" <Ctrl+Shift+P> ;
"&Remove" = has_image "GUI_RemoveFrame()" ;
----
"&New" = has_layerimage "new_frame()" <Ctrl+Shift+N> ;
"&Move" = is_movingframe "move_frame()" ;
"&Copy" = is_movingframe "copy_frame()" ;
"&Link" = is_movingframe "link_frame()" ;
----
"Cr&op" = has_imagemask "crop_frame()" ;
}
&Mask {
"&All" = has_sprite "MaskAll()" <Ctrl+A> ;
"&Deselect" = has_mask "DeselectMask()" <Ctrl+D> ;
"&Reselect" = has_sprite "ReselectMask()" <Shift+Ctrl+D> ;
"&Invert" = has_sprite "InvertMask()" <Shift+Ctrl+I> ;
# "&Shrink" = has_imagemask "selection(current_sprite, SEL_SHRINK)" ;
----
"&Color" = has_image "GUI_MaskColor()" <?> ;
"S&pecial" {
"Stretch &Bottom" = has_mask "StretchMaskBottom()" ;
}
----
"Repositor&y" = has_sprite "GUI_MaskRepository()" <Shift+Ctrl+M> ;
"&Load" = has_sprite "GUI_LoadMask()" ;
"&Save" = has_mask "GUI_SaveMask()" ;
}
# XXX
# &Path {
# "&Repository" = has_sprite "print(\"Unavailable\")" <Shift+Ctrl+P> ;
# "&Load" = has_sprite "print(\"Unavailable\")" ;
# "&Save" = has_path "print(\"Unavailable\")" ;
# }
&Tool {
"&Drawing Tool" {
"&Configure" = always "GUI_ToolsConfiguration()" <C> ;
----
"&Marker" = tool_marker "select_tool(\"Marker\")" <M> ;
"&Dots" = tool_dots "select_tool(\"Dots\")" <D> ;
"&Pencil" = tool_pencil "select_tool(\"Pencil\")" <P> ;
"&Brush (real pencil)" = tool_brush "select_tool(\"Brush\")" <B> ;
"&Floodfill" = tool_floodfill "select_tool(\"Floodfill\")" <F> ;
"&Spray" = tool_spray "select_tool(\"Spray\")" <S> ;
"&Line" = tool_line "select_tool(\"Line\")" <L> ;
"&Rectangle" = tool_rectangle "select_tool(\"Rectangle\")" <R> ;
"&Ellipse" = tool_ellipse "select_tool(\"Ellipse\")" <E> ;
# "&Oval" = tool_path "select_tool(\"Oval\")" <O> ;
}
&Filters FILTERS_POPUP {
"Convolution &Matrix" = has_image "GUI_ConvolutionMatrix()" <F9> ;
"&Color Curve" = has_image "GUI_ColorCurve()" <Ctrl+M> <F10> ;
#"&Gaussian Blur" = has_image "gaussian_blur(current_sprite)" ;
#"&Vector Map" = has_image "GUI_VectorMap()" ;
----
"&Despeckle (median filter)" = has_image "GUI_MedianFilter()" ;
}
# "Make &Undo Animation" = has_sprite
# "sprite = make_undo_animation(current_sprite)
# if sprite ~= nil then select_sprite(sprite) end" ;
&Scripts {
"Load script &file" = always "GUI_LoadScriptFile()" <Ctrl+0> ;
----
"aselogo.lua" = always "include(\"examples/aselogo.lua\")" ;
"cosy.lua" = always "include(\"examples/cosy.lua\")" ;
"dacap.lua" = always "include(\"examples/dacap.lua\")" ;
"shell.lua" = always "include(\"examples/shell.lua\")" ;
"spiral.lua" = always "include(\"examples/spiral.lua\")" ;
"terrain.lua" = always "include(\"examples/terrain.lua\")" ;
}
----
"Draw &Text" = has_sprite "GUI_DrawText()" ;
"&MapGen" = always "GUI_MapGen()" ;
"&Play FLI/FLC File" = always "GUI_PlayFLI()" ;
# ----
# "Test &JID File" = always "GUI_TestJID()" ;
----
"&Options" = always "GUI_Options()" <Shift+Ctrl+O> ;
}
&View {
"&Tiled" = has_sprite "view_tiled()" <F8> ;
"&Normal" = has_sprite "view_normal()" <F7> ;
"&Fullscreen" = has_sprite "view_fullscreen()" ;
----
"&Menu Bar" = menu_bar "app_switch(app_get_menu_bar())" <Ctrl+F1> ;
"&Status Bar" = status_bar "app_switch(app_get_status_bar())" <Ctrl+F2> ;
"&Color Bar" = color_bar "app_switch(app_get_color_bar())" <Ctrl+F3> ;
"T&ool Bar" = tool_bar "app_switch(app_get_tool_bar())" <Ctrl+F4> ;
----
&Editor {
"Make &Unique" = always "make_unique_editor(current_editor)" <Ctrl+1> ;
----
"Split &Vertically" = always "split_editor(current_editor, JI_VERTICAL)" <Ctrl+2> ;
"Split &Horizontally" = always "split_editor(current_editor, JI_HORIZONTAL)" <Ctrl+3> ;
----
"&Close" = always "close_editor(current_editor)" <Ctrl+4> ;
}
"Fi&lm Editor" FILMEDITOR_ACCEL = has_sprite "switch_between_film_and_sprite_editor()" <Tab> ;
"&Palette Editor" = always "show_palette_editor()" <F4> ;
----
"F&ilters Popup Menu" = always "show_filters_popup_menu()" <X> ;
}
L&ist SPRITE_LIST ;

189
data/menus.es Normal file
View File

@ -0,0 +1,189 @@
# allegro-sprite-editor menus -*- Shell-script -*-
# Copyright (C) 2001-2005, 2007 by David A. Capello
#
# Spanish menus (see menus.en for more information)
- {
"&Tips" = always "GUI_Tips(true)" <F1> ;
"&Acerca de" = always "GUI_About()" ;
"&Refrescar" = always "app_refresh_screen()" <F5> ;
----
"&Protector de Pantalla" = always "GUI_ScreenSaver()" ;
"Cambiar Modo &Gráfico" {
"&Seleccionar" = always "set_gfx(\"interactive\", 0, 0, 0)" ;
----
"320x200 8" = always "set_gfx(\"autodetect\", 320, 200, 8)" ;
"320x240 8" = always "set_gfx(\"autodetect\", 320, 240, 8)" ;
"640x480 8" = always "set_gfx(\"autodetect\", 640, 480, 8)" ;
"800x600 8" = always "set_gfx(\"autodetect\", 800, 600, 8)" ;
----
"320x200 16" = always "set_gfx(\"autodetect\", 320, 200, 16)" ;
"320x240 16" = always "set_gfx(\"autodetect\", 320, 240, 16)" ;
"640x480 16" = always "set_gfx(\"autodetect\", 640, 480, 16)" ;
"800x600 16" = always "set_gfx(\"autodetect\", 800, 600, 16)" ;
}
----
"Screen Sh&ot" SCREENSHOT_ACCEL = always "screen_shot()" <F12> ;
"G&rabar Pantalla" = is_rec "GUI_SwitchREC()" ;
----
"Recargar los &Menus" = always "GUI_ReloadMenus()" ;
----
"Cargar Sesión" = always "GUI_LoadSession()" ;
"Guardar Sesión" = always "GUI_SaveSession()" ;
}
&Archivo {
"&Nuevo" = always "GUI_NewSprite()" <Ctrl+N> ;
"&Abrir" = always "GUI_OpenSprite()" <Ctrl+O> <F3> ;
"Abrir &Reciente" RECENT_LIST ;
----
"&Guardar" = has_sprite "GUI_SaveSprite()" <Ctrl+S> <F2> ;
"&Cerrar" = has_sprite "GUI_CloseSprite()" <Ctrl+W> ;
----
"&Salir" = always "GUI_Exit()" <Ctrl+Q> <Esc> ;
}
&Edit {
"&Deshacer" UNDO_ACCEL = can_undo "GUI_Undo()" <Ctrl+Z> <Ctrl+U> ;
"&Rehacer" REDO_ACCEL = can_redo "GUI_Redo()" <Ctrl+R> ;
----
"Cortar" = has_imagemask "cut_to_clipboard()" <Ctrl+X> <Shift+Del> ;
"Copiar" = has_imagemask "copy_to_clipboard()" <Ctrl+C> <Ctrl+Ins> ;
"Pegar" = has_clipboard "paste_from_clipboard(true, 0, 0, 0, 0)" <Ctrl+V> <Shift+Ins> ;
"Borrar" = has_image "GUI_EditClear()" <Ctrl+B> <Ctrl+Del> ;
----
"Movimiento Rápido" = has_imagemask "quick_move()" <Shift+M> ;
"Copia Rápida" = has_imagemask "quick_copy()" <Shift+C> ;
# "Intercambio Rápido" = has_imagemask "quick_swap()" <Shift+S> ;
----
"Flip &Horizontal" = has_image "GUI_FlipHorizontal()" <Shift+H> ;
"Flip &Vertical" = has_image "GUI_FlipVertical()" <Shift+V> ;
----
"Reemplazar Color" = has_image "GUI_ReplaceColor()" </> ;
"Invertir" = has_image "GUI_InvertColor()" <Ctrl+I> ;
}
&Sprite {
"&Propiedades" = has_sprite "GUI_SpriteProperties()" <Ctrl+P> ;
----
"&Duplicar" = has_sprite "GUI_DuplicateSprite()" ;
"&Tipo de Imagen" = has_sprite "GUI_ImageType()" ;
----
#"Tamaño de &Imagen" = has_sprite "print(\"Unavailable\")" ;
#"&Canvas Resize" = has_sprite "canvas_resize()" ;
"Rec&ortar" = has_mask "crop_sprite()" ;
"Recortar &Automáticamente" = has_sprite "autocrop_sprite()" ;
}
&Layer LAYER_POPUP {
"&Propiedades" = has_layer "GUI_LayerProperties()" <Shift+P> ;
----
"&Nueva Capa" = has_sprite "GUI_NewLayer()" <Shift+N> ;
"Nuevo Con&junto" = has_sprite "GUI_NewLayerSet()" ;
"&Remover" = has_layer "GUI_RemoveLayer()" ;
----
"&Duplicar" = has_layer "GUI_DuplicateLayer()" ;
"&Mezclar Abajo" = has_layer "GUI_MergeDown()" ;
"&Aplanar" = has_layer "FlattenLayers()" ;
"Rec&ortar" = has_mask "crop_layer()" ;
}
F&rame FRAME_POPUP {
"&Propiedades" = has_layer "GUI_FrameProperties()" <Ctrl+Shift+P> ;
"&Remover" = has_image "GUI_RemoveFrame()" ;
----
"&Nuevo" = has_layerimage "new_frame()" <Ctrl+Shift+N> ;
"&Mover" = is_movingframe "move_frame()" ;
"&Copiar" = is_movingframe "copy_frame()" ;
"En&lazar" = is_movingframe "link_frame()" ;
----
"Rec&ortar" = has_imagemask "crop_frame()" ;
}
&Mask {
"&Todo" = has_sprite "MaskAll()" <Ctrl+A> ;
"&Deseleccionar" = has_mask "DeselectMask()" <Ctrl+D> ;
"&Reseleccionar" = has_sprite "ReselectMask()" <Shift+Ctrl+D> ;
"&Invertir" = has_sprite "InvertMask()" <Shift+Ctrl+I> ;
----
"&Color" = has_image "GUI_MaskColor()" <?> ;
"&Especial" {
"Estirar &Fondo" = has_mask "StretchMaskBottom()" ;
}
----
"Repositorio" = has_sprite "GUI_MaskRepository()" <Shift+Ctrl+M> ;
"Cargar" = has_sprite "GUI_LoadMask()" ;
"Guardar" = has_mask "GUI_SaveMask()" ;
}
# XXX
# &Path {
# "Repositorio" = has_sprite "print(\"Unavailable\")" <Shift+Ctrl+P> ;
# "Cargar" = has_sprite "print(\"Unavailable\")" ;
# "Guardar" = has_path "print(\"Unavailable\")" ;
# }
&Tool {
"&Herramientas de Dibujo" {
"&Configurar" = always "GUI_ToolsConfiguration()" <C> ;
----
"&Marcador" = tool_marker "select_tool(\"Marker\")" <M> ;
"Puntos" = tool_dots "select_tool(\"Dots\")" <D> ;
"Pincel" = tool_pencil "select_tool(\"Pencil\")" <P> ;
"&Brocha (pincel real)" = tool_brush "select_tool(\"Brush\")" <B> ;
"Relleno" = tool_floodfill "select_tool(\"Floodfill\")" <F> ;
"&Spray" = tool_spray "select_tool(\"Spray\")" <S> ;
"&Línea" = tool_line "select_tool(\"Line\")" <L> ;
"&Rectángulo" = tool_rectangle "select_tool(\"Rectangle\")" <R> ;
"&Elipse" = tool_ellipse "select_tool(\"Ellipse\")" <E> ;
}
&Filtros FILTERS_POPUP {
"&Matriz de Convolución" = has_image "GUI_ConvolutionMatrix()" <F9> ;
"&Curva de Color" = has_image "GUI_ColorCurve()" <Ctrl+M> <F10> ;
# "Mapa de &Vectores" = has_image "GUI_VectorMap()" <F11> ;
----
"&Reducción de ruido (filtrado por mediana)" = has_image "GUI_MedianFilter()" ;
}
&Scripts {
"Cargar script desde &archivo" = always "GUI_LoadScriptFile()" <Ctrl+0> ;
----
"aselogo.lua" = always "include(\"examples/aselogo.lua\")" ;
"cosy.lua" = always "include(\"examples/cosy.lua\")" ;
"dacap.lua" = always "include(\"examples/dacap.lua\")" ;
"shell.lua" = always "include(\"examples/shell.lua\")" ;
"spiral.lua" = always "include(\"examples/spiral.lua\")" ;
"terrain.lua" = always "include(\"examples/terrain.lua\")" ;
}
----
"Dibujar &Texto" = has_sprite "GUI_DrawText()" ;
"&MapGen" = always "GUI_MapGen()" ;
"&Reproducir Archivo FLI/FLC" = always "GUI_PlayFLI()" ;
----
"&Opciones" = always "GUI_Options()" <Shift+Ctrl+O> ;
}
&Ver {
"&Alicatado" = has_sprite "view_tiled()" <F8> ;
"&Normal" = has_sprite "view_normal()" <F7> ;
"Pantalla c&ompleta" = has_sprite "view_fullscreen()" ;
----
"Barra de &Menu" = menu_bar "app_switch(app_get_menu_bar())" <Ctrl+F1> ;
"Barra de E&stado" = status_bar "app_switch(app_get_status_bar())" <Ctrl+F2> ;
"Barra de &Colores" = color_bar "app_switch(app_get_color_bar())" <Ctrl+F3> ;
"Barra de &Herramientas" = tool_bar "app_switch(app_get_tool_bar())" <Ctrl+F4> ;
----
&Editor {
"Hacer &Único" = always "make_unique_editor(current_editor)" <Ctrl+1> ;
----
"Dividir &Verticalmente" = always "split_editor(current_editor, JI_VERTICAL)" <Ctrl+2> ;
"Dividir &Horizontalmente" = always "split_editor(current_editor, JI_HORIZONTAL)" <Ctrl+3> ;
----
"&Cerrar" = always "close_editor(current_editor)" <Ctrl+4> ;
}
"E&ditor de Película" FILMEDITOR_ACCEL = has_sprite "switch_between_film_and_sprite_editor()" <TAB>
"&Paleta de Colores" = always "show_palette_editor()" <F4> ;
----
"Popup Menu de &Filtros" = always "show_filters_popup_menu()" <X> ;
}
L&ista SPRITE_LIST ;

BIN
data/palettes/default.col Normal file

Binary file not shown.

BIN
data/palettes/grayramp.col Normal file

Binary file not shown.

BIN
data/palettes/terrain1.col Normal file

Binary file not shown.

1445
data/po/es.po Normal file

File diff suppressed because it is too large Load Diff

28
data/scripts/closespr.lua Normal file
View File

@ -0,0 +1,28 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_CloseSprite()
if not current_sprite then return end
-- see if the sprite has changes
while sprite_is_modified(current_sprite) do
-- ask what want to do the user with the changes in the sprite
local ret = jalert(_("Warning")..
"<<".._("Saving changes in:")..
"<<"..get_filename(current_sprite.filename)..
"||".._("&Save||&Discard||&Cancel"))
if ret == 1 then
-- "save": save the changes
GUI_SaveSprite() -- call this routine from savespr.lua
elseif ret != 2 then
-- "cancel" or <esc>
return -- we back doing nothing
else
-- "discard"
break
end
end
CloseSprite()
end

71
data/scripts/confjpeg.lua Normal file
View File

@ -0,0 +1,71 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
-- shows the JPEG configuration dialog
function ConfigureJPEG()
-- configuration parameters
local quality = get_config_int("JPEG", "Quality", 100)
local smooth = get_config_int("JPEG", "Smooth", 0)
local method = get_config_int("JPEG", "Method", 0)
-- widgets
local window = jwindow_new(_("Configure JPEG Compression"))
local box1 = jbox_new(JI_VERTICAL)
local box2 = jbox_new(JI_HORIZONTAL)
local box3 = jbox_new(JI_VERTICAL + JI_HOMOGENEOUS)
local box4 = jbox_new(JI_VERTICAL + JI_HOMOGENEOUS)
local box5 = jbox_new(JI_HORIZONTAL + JI_HOMOGENEOUS)
local label_quality = jlabel_new(_("Quality:"), JI_LEFT)
local label_smooth = jlabel_new(_("Smooth:"), JI_LEFT)
local label_method = jlabel_new(_("Method:"), JI_LEFT)
local slider_quality = jslider_new(0, 100, quality)
local slider_smooth = jslider_new(0, 100, smooth)
local view_method = jview_new()
local list_method = jlistbox_new()
local button_ok = jbutton_new(_("&OK"))
local button_cancel = jbutton_new(_("&Cancel"))
local ret
jwidget_add_child (list_method, jlistitem_new(_("Slow")))
jwidget_add_child (list_method, jlistitem_new(_("Fast")))
jwidget_add_child (list_method, jlistitem_new(_("Float")))
jlistbox_select_index(list_method, method)
jview_attach(view_method, list_method)
jview_maxsize(view_method)
jwidget_expansive(box4, true)
jwidget_expansive(view_method, true)
jwidget_add_child (box3, label_quality)
jwidget_add_child (box3, label_smooth)
jwidget_add_child (box4, slider_quality)
jwidget_add_child (box4, slider_smooth)
jwidget_add_child (box2, box3)
jwidget_add_child (box2, box4)
jwidget_add_child (box1, box2)
jwidget_add_child (box1, label_method)
jwidget_add_child (box1, view_method)
jwidget_add_child (box5, button_ok)
jwidget_add_child (box5, button_cancel)
jwidget_add_child (box1, box5)
jwidget_add_child (window, box1)
jwindow_open_fg(window)
if jwindow_get_killer(window) == button_ok then
ret = true
quality = jslider_get_value(slider_quality)
smooth = jslider_get_value(slider_smooth)
method = jlistbox_get_selected_index(list_method)
set_config_int("JPEG", "Quality", quality)
set_config_int("JPEG", "Smooth", smooth)
set_config_int("JPEG", "Method", method)
else
ret = false
end
jwidget_free(window)
return ret
end

42
data/scripts/duplay.lua Normal file
View File

@ -0,0 +1,42 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function DuplicateLayer()
local sprite = current_sprite
if not sprite or not sprite.layer then
return nil
end
local layer_copy = layer_new_copy(sprite.layer)
if not layer_copy then
print("Not enough memory")
return nil
end
layer_set_name(layer_copy, layer_copy.name .. " Copy")
if undo_is_enabled(sprite.undo) then
undo_open(sprite.undo)
undo_add_layer(sprite.undo, sprite.layer.parent, layer_copy)
end
layer_add_layer(sprite.layer.parent, layer_copy)
if undo_is_enabled(sprite.undo) then
undo_move_layer(sprite.undo, layer_copy)
undo_set_layer(sprite.undo, sprite)
undo_close(sprite.undo)
end
layer_move_layer(sprite.layer.parent, layer_copy, sprite.layer)
sprite_set_layer(sprite, layer_copy)
return layer_copy
end
function GUI_DuplicateLayer()
if DuplicateLayer() then
GUI_Refresh(current_sprite)
end
end

49
data/scripts/dupspr.lua Normal file
View File

@ -0,0 +1,49 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_DuplicateSprite()
local sprite = current_sprite
if not sprite then return end
-- load the window widget
local window = ji_load_widget("dupspr.jid", "duplicate_sprite")
if not window then return end
local src_name, dst_name, flatten
= jwidget_find_name(window, "src_name"),
jwidget_find_name(window, "dst_name"),
jwidget_find_name(window, "flatten")
jwidget_set_text(src_name, get_filename(sprite.filename))
jwidget_set_text(dst_name, sprite.filename .. " Copy")
if get_config_bool("DuplicateSprite", "Flatten", false) then
jwidget_select(flatten)
end
-- open the window
jwindow_open_fg(window)
if jwindow_get_killer(window) == jwidget_find_name(window, "ok") then
set_config_bool("DuplicateSprite", "Flatten",
jwidget_is_selected(flatten))
local sprite_copy
if jwidget_is_selected(flatten) then
sprite_copy = sprite_new_flatten_copy(sprite)
else
sprite_copy = sprite_new_copy(sprite)
end
if sprite_copy then
sprite_set_filename(sprite_copy, jwidget_get_text(dst_name))
sprite_mount(sprite_copy)
set_current_sprite(sprite_copy)
sprite_show(sprite_copy)
end
end
jwidget_free(window)
end

14
data/scripts/edit.lua Normal file
View File

@ -0,0 +1,14 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_EditClear()
-- get current sprite
local sprite = current_sprite
if not sprite then return end
-- clear the mask
ClearMask()
-- refresh the sprite
GUI_Refresh(sprite)
end

126
data/scripts/effect.lua Normal file
View File

@ -0,0 +1,126 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
----------------------------------------------------------------------
-- Convolution Matrix
-- you should use set_tiled_mode() before
function ConvolutionMatrix(name, r, g, b, k, a, index)
local image, x, y = GetImage2 (current_sprite)
if image then
local effect = effect_new(current_sprite, "convolution_matrix")
if effect then
local convmatr = get_convmatr_by_name(name)
if convmatr then
set_convmatr(convmatr)
effect_set_target(effect, r, g, b, k, a, index)
effect_apply_to_image(effect, image, x, y)
end
effect_free(effect)
end
end
end
function ConvolutionMatrixRGB(name)
ConvolutionMatrix(name, true, true, true, false, false, false)
end
function ConvolutionMatrixRGBA(name)
ConvolutionMatrix(name, true, true, true, false, true, false)
end
function ConvolutionMatrixGray(name)
ConvolutionMatrix(name, false, false, false, true, false, false)
end
function ConvolutionMatrixGrayA(name)
ConvolutionMatrix(name, false, false, false, true, true, false)
end
function ConvolutionMatrixIndex(name)
ConvolutionMatrix(name, false, false, false, false, false, true)
end
function ConvolutionMatrixAlpha(name)
ConvolutionMatrix(name, false, false, false, false, true, false)
end
----------------------------------------------------------------------
-- Color Curve
function _ColorCurve(curve, r, g, b, k, a, index)
local image, x, y = GetImage2 (current_sprite)
if image then
local effect = effect_new(current_sprite, "color_curve")
if effect then
set_color_curve(curve)
effect_set_target(effect, r, g, b, k, a, index)
effect_apply_to_image(effect, image, x, y)
effect_free(effect)
end
end
end
function _ColorCurveRGB(curve)
_ColorCurve(curve, true, true, true, false, false, false)
end
function _ColorCurveRGBA(curve)
_ColorCurve(curve, true, true, true, false, true, false)
end
function _ColorCurveGray(curve)
_ColorCurve(curve, false, false, false, true, false, false)
end
function _ColorCurveGrayA(curve)
_ColorCurve(curve, false, false, false, true, true, false)
end
function _ColorCurveIndex(curve)
_ColorCurve(curve, false, false, false, false, false, true)
end
function _ColorCurveAlpha(curve)
_ColorCurve(curve, false, false, false, false, true, false)
end
----------------------------------------------------------------------
-- Color Curve(with array)
function ColorCurve(array, r, g, b, k, a, index)
local curve = curve_new(CURVE_LINEAR)
local c
for c in array do
curve_add_point(curve, curve_point_new(array[c], array[c+1]))
c = c+1
end
_ColorCurve(curve, r, g, b, k, a, index)
curve_free(curve)
end
function ColorCurveRGB(array)
ColorCurve(array, true, true, true, false, false, false)
end
function ColorCurveRGBA(array)
ColorCurve(array, true, true, true, false, true, false)
end
function ColorCurveGray(array)
ColorCurve(array, false, false, false, true, false, false)
end
function ColorCurveGrayA(array)
ColorCurve(array, false, false, false, true, true, false)
end
function ColorCurveIndex(array)
ColorCurve(array, false, false, false, false, false, true)
end
function ColorCurveAlpha(array)
ColorCurve(array, false, false, false, false, true, false)
end

View File

@ -0,0 +1,123 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
-- create an rectangle in the path
local function path_rectangle(path, x, y, w, h)
path_moveto(path, x, y)
path_lineto(path, x+w, y)
path_lineto(path, x+w, y+h)
path_lineto(path, x, y+h)
path_close(path)
end
-- create an ellipse in the path
local function path_ellipse(path, x, y, a, b)
a = a - 1
b = b - 1
path_moveto(path, x, y-b)
path_curveto(path, x-a*4/3, y-b, x-a*4/3, y+b, x, y+b)
path_curveto(path, x+a*4/3, y+b, x+a*4/3, y-b, x, y-b)
path_close(path)
end
function MakeASELogo(color_bg, color_a, color_s, color_e)
local image_a, image_s, image_e, image_bg
local layer_a, layer_s, layer_e
local layer_A, layer_S, layer_E
local sprite = NewSprite(IMAGE_RGB, 128, 72)
undo_disable(sprite.undo)
image_bg = GetImage()
layer_a = NewLayer("A", 0, 0, 0, 0) image_a = GetImage()
layer_s = NewLayer("S", 0, 0, 0, 0) image_s = GetImage()
layer_e = NewLayer("E", 0, 0, 0, 0) image_e = GetImage()
-- clear the images
image_clear(image_bg, get_color_for_image(sprite.imgtype, color_bg))
-- "A" letter shape, a triangle
local path_a = path_new("A")
path_moveto(path_a, 19, 48)
path_lineto(path_a, 49, 48)
path_lineto(path_a, 34, 19)
path_close(path_a)
-- "S" letter shape, a circle
local path_s = path_new("S")
path_ellipse(path_s, 63, 34, 17, 17)
-- "E" letter shape, a rectangle
local path_e = path_new("E")
path_rectangle(path_e, 82, 20, 24, 29)
-- we fill the paths
path_fill(path_a, image_a, get_color_for_image(sprite.imgtype, color_a))
path_fill(path_s, image_s, get_color_for_image(sprite.imgtype, color_s))
path_fill(path_e, image_e, get_color_for_image(sprite.imgtype, color_e))
path_free(path_a)
path_free(path_s)
path_free(path_e)
-- clean some areas of the paths(some slits in letters shapes)
image_rectfill(image_a, 21, 41, 33, 41, 0) -- for A
image_rectfill(image_s, 64, 27, 79, 27, 0) -- for S
image_rectfill(image_s, 48, 41, 63, 41, 0)
image_rectfill(image_e, 96, 29, 109, 29, 0) -- for E
image_rectfill(image_e, 96, 38, 109, 38, 0)
-- duplicate layers
sprite_set_layer(sprite, layer_a) layer_A = DuplicateLayer()
sprite_set_layer(sprite, layer_s) layer_S = DuplicateLayer()
sprite_set_layer(sprite, layer_e) layer_E = DuplicateLayer()
-- smooth parts
sprite_set_layer(sprite, layer_a) ConvolutionMatrixRGBA("smooth-7x7")
sprite_set_layer(sprite, layer_s) ConvolutionMatrixRGBA("smooth-7x7")
sprite_set_layer(sprite, layer_e) ConvolutionMatrixRGBA("smooth-7x7")
local curve = { 0,0, 86,0, 100,64, 137,212, 217,0, 255,136 }
sprite_set_layer(sprite, layer_a) ColorCurveAlpha(curve)
sprite_set_layer(sprite, layer_s) ColorCurveAlpha(curve)
sprite_set_layer(sprite, layer_e) ColorCurveAlpha(curve)
-- outlines
sprite_set_layer(sprite, layer_A) ConvolutionMatrixRGBA("smooth-3x3")
sprite_set_layer(sprite, layer_S) ConvolutionMatrixRGBA("smooth-3x3")
sprite_set_layer(sprite, layer_E) ConvolutionMatrixRGBA("smooth-3x3")
local curve = { 0,0, 232,128, 255,0 }
sprite_set_layer(sprite, layer_A) ColorCurveAlpha(curve)
sprite_set_layer(sprite, layer_S) ColorCurveAlpha(curve)
sprite_set_layer(sprite, layer_E) ColorCurveAlpha(curve)
-- final makeup
autocrop_sprite()
FlattenLayers()
sprite_set_filename(sprite, "ASE logo")
undo_enable(sprite.undo)
-- returns the new sprite
return sprite
end
local sprite = MakeASELogo("rgb{255,255,255}",
"rgb{255,0,0}", "rgb{0,100,0}", "rgb{0,0,255}")
undo_disable(sprite.undo)
sprite_quantize(sprite)
use_sprite_rgb_map(sprite)
sprite_set_imgtype(sprite, IMAGE_INDEXED, DITHERING_NONE)
restore_rgb_map()
undo_enable(sprite.undo)
sprite_show(sprite)

View File

@ -0,0 +1,26 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
local x, y, points, sprite
ResetConfig()
sprite = NewSprite(IMAGE_RGB, 128, 128)
undo_disable(sprite.undo)
ClearMask()
points = ""
for y = 0, 128 do
x = 64 + cos(PI*y/128) * 63
points = points .. " " .. x .. "," .. y
end
ToolTrace("pencil " .. points)
ToolTrace("floodfill 127,127")
ConvolutionMatrixRGBA("smooth-5x5")
ColorCurveRGBA({ 0,0, 128-32,16, 128+32,256-16, 255,255 })
undo_enable(sprite.undo)
sprite_show(sprite)
RestoreConfig()

View File

@ -0,0 +1,59 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
local function MakeDacap()
local x, y, sprite, image, render
local w, h = 256, 128
sprite = sprite_new_with_layer(IMAGE_RGB, w, h)
sprite_mount(sprite)
set_current_sprite(sprite)
-- disable undo
undo_disable(sprite.undo)
sprite_set_filename(sprite, "dacap")
-- Background layer
image = GetImage()
image_clear(image, _rgba(255, 255, 255, 255))
render = RenderText("verdana10.pcx", 22, _rgba(255,0,0,255), "David A. Capello")
if render then
x = image.w/2-render.w/2+2
y = image.h/2-render.h/2+2
image_merge(image, render, x, y, 255, BLEND_MODE_NORMAL)
ConvolutionMatrixRGB("smooth-3x3")
image_free(render)
end
-- Foreground layer
NewLayer("Foreground", 0, 0, 0, 0)
image = GetImage()
image_clear(image, _rgba(0,0,0,0))
render = RenderText("verdana10.pcx", 22, _rgba(0,0,0,255), "David A. Capello")
if render then
x = image.w/2-render.w/2
y = image.h/2-render.h/2
image_merge(image, render, x, y, 255, BLEND_MODE_NORMAL)
image_free(render)
end
-- flatten both layers
FlattenLayers()
-- enable undo
undo_enable(sprite.undo)
return sprite
end
local sprite = MakeDacap()
if sprite then
sprite_quantize(sprite)
use_sprite_rgb_map(sprite)
sprite_set_imgtype(sprite, IMAGE_INDEXED, DITHERING_NONE)
restore_rgb_map()
sprite_show(sprite)
end

View File

@ -0,0 +1,30 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
ResetConfig()
sprite = NewSprite(IMAGE_RGB, 128, 96)
undo_disable(sprite.undo)
ClearMask()
local points = ""
local x, y, angle
SetBrush("circle 2 0")
SetDrawMode("glass 32")
for angle = 0, 360 do
x = 48 + cos(PI*angle/180) * (64*angle/360)
y = 64 + sin(PI*angle/180) * (64*angle/360)
points = points .. " " .. x .. "," .. y
ToolTrace("line 48,64 "..x..","..y)
end
ConvolutionMatrixRGBA("smooth-3x3")
ColorCurveRGBA({ 0,0, 132,41, 187,131, 211,251, 255,255 })
undo_enable(sprite.undo)
sprite_show(sprite)
RestoreConfig()

View File

@ -0,0 +1,64 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
local function MakeSpiral(bg_color, fg_color)
local sprite, layer, frame, image, frpos
local w, h = 256, 256
sprite = sprite_new(IMAGE_RGB, w, h)
sprite_mount(sprite)
set_current_sprite(sprite)
-- disable undo
undo_disable(sprite.undo)
sprite_set_filename(sprite, "spiral")
sprite_set_frames(sprite, 16)
sprite_set_speed(sprite, 10)
layer = layer_new(sprite.imgtype)
layer_set_name(layer, _("Background"))
layer_set_blend_mode(layer, BLEND_MODE_NORMAL)
layer_add_layer(sprite.set, layer)
sprite_set_layer(sprite, layer)
-- draw the graphics
local a, a2, len, dlen, max
local lastpos = sprite.frames-1
add_progress(sprite.frames)
for frpos = 0, lastpos do
image = image_new(sprite.imgtype, w, h)
image_clear(image, bg_color)
stock_add_image(layer.stock, image)
frame = frame_new(frpos, stock_add_image(layer.stock, image))
layer_add_frame(layer, frame)
path = path_new(nil)
path_moveto(path, w/2, h/2)
max = 2*PI*8
len = 0
dlen = 0.75*w/(max/0.05)
for a = 0, max, 0.05 do
a2 = a - PI*2*frpos/(lastpos+1)
path_lineto(path,
w/2 + cos(a2)*len,
h/2 - sin(a2)*len)
len = len + dlen
end
path_stroke(path, image, fg_color, 1)
path_free(path)
sprite_set_frpos(sprite, frpos)
do_progress(frpos)
end
sprite_set_frpos(sprite, 0)
del_progress()
-- enable undo
undo_enable(sprite.undo)
return sprite
end
local sprite = MakeSpiral(_rgba(255,255,255,255), _rgba(0,0,0,255))
sprite_show(sprite)

View File

@ -0,0 +1,59 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
local function MakeTerrain()
local sprite, layer, frame, image, frpos, first_image
local w, h = 256, 256
sprite = sprite_new(IMAGE_INDEXED, w, h)
sprite_mount(sprite)
set_current_sprite(sprite)
-- disable undo
undo_disable(sprite.undo)
sprite_set_filename(sprite, "terrain")
sprite_set_frames(sprite, 64)
sprite_set_speed(sprite, 100)
layer = layer_new(sprite.imgtype)
layer_set_name(layer, _("Background"))
layer_set_blend_mode(layer, BLEND_MODE_NORMAL)
layer_add_layer(sprite.set, layer)
sprite_set_layer(sprite, layer)
-- draw the graphics
local lastpos = sprite.frames-1
add_progress(sprite.frames)
for frpos = 0, lastpos do
image = image_new(sprite.imgtype, w, h)
stock_add_image(layer.stock, image)
frame = frame_new(frpos, stock_add_image(layer.stock, image))
layer_add_frame(layer, frame)
if frpos == 0 then
mapgen(image, 3, sqrt(2))
first_image = image
else
image_copy(image, first_image, 0, 0)
ColorCurveIndex({ 0,0,
128,MID(0, 128+128*sin(2*PI*frpos/lastpos), 255),
255,255 })
end
sprite_set_frpos(sprite, frpos)
do_progress(frpos)
end
sprite_set_frpos(sprite, 0)
del_progress()
LoadPalette("terrain1.col")
-- enable undo
undo_enable(sprite.undo)
return sprite
end
local sprite = MakeTerrain()
sprite_show(sprite)

24
data/scripts/exit.lua Normal file
View File

@ -0,0 +1,24 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_Exit()
local sprite = get_first_sprite()
local clipboard = get_clipboard_sprite()
while sprite do
-- check if this sprite is modified
if sprite_is_modified(sprite)
and (not clipboard
or sprite.id != clipboard.id) then
if jalert(_("Warning<<There are sprites with changes.<<Do you want quit anyway?||&Yes||&No"))
!= 1 then
return
end
break
end
sprite = get_next_sprite(sprite)
end
-- close the window
jwindow_close(app_get_top_window(), 0)
end

63
data/scripts/flatten.lua Normal file
View File

@ -0,0 +1,63 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function FlattenLayers()
local sprite = current_sprite
if not sprite then
return
end
-- generate the flat_layer
local flat_layer = layer_flatten(sprite.set,
sprite.imgtype, 0, 0, sprite.w, sprite.h,
0, sprite.frames-1)
if not flat_layer then
print("Not enough memory")
return nil
end
-- open undo, and add the new layer
if undo_is_enabled(sprite.undo) then
undo_open(sprite.undo)
undo_add_layer(sprite.undo, sprite.set, flat_layer)
end
layer_add_layer(sprite.set, flat_layer)
-- select the new layer
if undo_is_enabled(sprite.undo) then
undo_set_layer(sprite.undo, sprite)
end
sprite_set_layer(sprite, flat_layer)
-- remove old layers
local it = sprite.set.layers
local next
while it do
next = it.next
if it.id != flat_layer.id then
-- undo
if undo_is_enabled(sprite.undo) then
undo_remove_layer(sprite.undo, it)
end
-- remove and destroy "it" layer
layer_remove_layer(sprite.set, it)
layer_free(it)
end
it = next
end
-- close the undo
if undo_is_enabled(sprite.undo) then
undo_close(sprite.undo)
end
GUI_Refresh(sprite)
return flat_layer
end

16
data/scripts/flip.lua Normal file
View File

@ -0,0 +1,16 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_FlipHorizontal()
if current_sprite then
flip_horizontal()
GUI_Refresh(current_sprite)
end
end
function GUI_FlipVertical()
if current_sprite then
flip_vertical()
GUI_Refresh(current_sprite)
end
end

77
data/scripts/frmprop.lua Normal file
View File

@ -0,0 +1,77 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_FrameProperties()
-- get current sprite
local sprite = current_sprite
if not sprite then return end
-- get selected layer
local layer = sprite.layer
if not layer then return end
-- get current frame
local frame = layer_get_frame(layer, sprite.frpos)
if not frame then return end
local window = ji_load_widget("frmprop.jid", "frame_properties")
if not window then return end
local entry_frpos = jwidget_find_name(window, "frpos")
local entry_xpos = jwidget_find_name(window, "xpos")
local entry_ypos = jwidget_find_name(window, "ypos")
local slider_opacity = jwidget_find_name(window, "opacity")
local button_ok = jwidget_find_name(window, "ok")
jwidget_set_text(entry_frpos, tostring(frame.frpos))
jwidget_set_text(entry_xpos, tostring(frame.x))
jwidget_set_text(entry_ypos, tostring(frame.y))
jslider_set_value(slider_opacity, frame.opacity)
repeat
jwindow_open_fg(window)
if jwindow_get_killer(window) == button_ok then
local new_frpos = MID(0, tonumber(jwidget_get_text (entry_frpos)),
sprite.frames-1)
local existent_frame = layer_get_frame(layer, new_frpos)
if new_frpos != frame.frpos and existent_frame then
jalert("Error<<You can't change frpos to " .. new_frpos ..
"<<Already there is a frame in that pos.||&OK")
else
-- WE MUST REMOVE THE FRAME BEFORE CALL frame_set_frpos()
if undo_is_enabled(sprite.undo) then
undo_open(sprite.undo)
undo_remove_frame(sprite.undo, layer, frame)
end
layer_remove_frame(layer, frame)
-- change frame properties
frame_set_frpos(frame, new_frpos)
frame_set_position(frame,
MID(-9999, tonumber(jwidget_get_text(entry_xpos)), 9999),
MID(-9999, tonumber(jwidget_get_text(entry_ypos)), 9999))
frame_set_opacity(frame, jslider_get_value(slider_opacity))
-- add again the same frame
if undo_is_enabled(sprite.undo) then
undo_add_frame(sprite.undo, layer, frame)
undo_close(sprite.undo)
end
layer_add_frame(layer, frame)
-- set the sprite position, refresh and break the loop
sprite_set_frpos(sprite, new_frpos)
GUI_Refresh(sprite)
break
end
else
break
end
until false
jwidget_free(window)
end

69
data/scripts/imgtype.lua Normal file
View File

@ -0,0 +1,69 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_ImageType()
if not current_sprite then
return
end
-- load the window widget
local window = ji_load_widget("imgtype.jid", "image_type")
if not window then return end
local from, radio1, radio2, radio3, dither1, dither2 =
jwidget_find_name(window, "from"),
jwidget_find_name(window, "imgtype1"),
jwidget_find_name(window, "imgtype2"),
jwidget_find_name(window, "imgtype3"),
jwidget_find_name(window, "dither1"),
jwidget_find_name(window, "dither2")
if current_sprite.imgtype == IMAGE_RGB then
jwidget_set_text(from, _("RGB"))
jwidget_disable(radio1)
jwidget_select(radio3) -- to Indexed by default
elseif current_sprite.imgtype == IMAGE_GRAYSCALE then
jwidget_set_text(from, _("Grayscale"))
jwidget_disable(radio2)
jwidget_select(radio1) -- to RGB by default
elseif current_sprite.imgtype == IMAGE_INDEXED then
jwidget_set_text(from, _("Indexed"))
jwidget_disable(radio3)
jwidget_select(radio1) -- to RGB by default
end
if get_config_bool("Options", "Dither", false) then
jwidget_select(dither2)
else
jwidget_select(dither1)
end
-- open the window
jwindow_open_fg(window)
if jwindow_get_killer(window) == jwidget_find_name(window, "ok") then
local destimgtype, dithermethod
if jwidget_is_selected(radio1) then
destimgtype = IMAGE_RGB
elseif jwidget_is_selected(radio2) then
destimgtype = IMAGE_GRAYSCALE
elseif jwidget_is_selected(radio3) then
destimgtype = IMAGE_INDEXED
end
if jwidget_is_selected(dither1) then
dithermethod = DITHERING_NONE
elseif jwidget_is_selected(dither2) then
dithermethod = DITHERING_ORDERED
end
use_current_sprite_rgb_map()
sprite_set_imgtype(current_sprite, destimgtype, dithermethod)
restore_rgb_map()
app_refresh_screen()
end
jwidget_free(window)
end

166
data/scripts/layer.lua Normal file
View File

@ -0,0 +1,166 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
-- internal routine
local function count_layers(layer)
local count
if layer.parent.type == GFXOBJ_SPRITE then
count = 0
else
count = 1
end
if layer_is_set(layer) then
local it = layer.layers
while it do
count = count + count_layers(it)
it = it.next
end
end
return count
end
-- const char *GetUniqueLayerName()
function GetUniqueLayerName()
local sprite = current_sprite
if sprite then
return _("Layer") .. " " .. count_layers(sprite.set)
else
return nil
end
end
-- Layer *NewLayer(const char *name, int x, int y, int w, int h)
-- creates a new layer with the "name" in the current sprite(in the
-- current frame) with the specified position and size(if w=h=0 the
-- routine will use the sprite dimension)
function NewLayer(name, x, y, w, h)
local sprite = current_sprite
local layer = nil
local image, frame, index
if sprite and name then
if not w or w == 0 then w = sprite.w end
if not h or h == 0 then h = sprite.h end
-- new image
image = image_new(sprite.imgtype, w, h)
if not image then
return nil
end
-- new layer
layer = layer_new(sprite.imgtype)
if not layer then
image_free(image)
return nil
end
-- clear with mask color
image_clear(image, 0)
-- configure layer name and blend mode
layer_set_name(layer, name)
layer_set_blend_mode(layer, BLEND_MODE_NORMAL)
-- add image in the layer stock
index = stock_add_image(layer.stock, image)
-- create a new frame in the current frpos
frame = frame_new(sprite.frpos, index)
frame_set_position(frame, x, y)
-- add frame
layer_add_frame(layer, frame)
-- undo stuff
if undo_is_enabled(sprite.undo) then
undo_open(sprite.undo)
undo_add_layer(sprite.undo, sprite.set, layer)
undo_set_layer(sprite.undo, sprite)
undo_close(sprite.undo)
end
-- add the layer in the sprite set
layer_add_layer(sprite.set, layer)
-- select the new layer
sprite_set_layer(sprite, layer)
end
return layer
end
-- Layer *NewLayerSet(const char *name)
-- creates a new layer set with the "name" in the current sprite
function NewLayerSet(name)
local sprite = current_sprite
local layer = nil
if sprite and name then
-- new layer
layer = layer_set_new()
if not layer then
return nil
end
-- configure layer name and blend mode
layer_set_name(layer, name)
-- add the layer in the sprite set
layer_add_layer(sprite.set, layer)
-- select the new layer
sprite_set_layer(sprite, layer)
end
return layer
end
-- removes the current selected layer
function RemoveLayer()
local sprite = current_sprite
if sprite and sprite.layer then
local layer = sprite.layer
local parent = layer.parent
local layer_select
-- select: previous layer, or next layer, or parent(if it is not
-- the main layer of sprite set)
if layer.prev then
layer_select = layer.prev
elseif layer.next then
layer_select = layer.next
elseif parent != sprite.set then
layer_select = parent
else
layer_select = nil
end
-- undo stuff
if undo_is_enabled(sprite.undo) then
undo_open(sprite.undo)
undo_set_layer(sprite.undo, sprite)
undo_remove_layer(sprite.undo, layer)
undo_close(sprite.undo)
end
-- select other layer
sprite_set_layer(sprite, layer_select)
-- remove the layer
layer_remove_layer(parent, layer)
-- destroy the layer
layer_free(layer)
end
end
function GUI_RemoveLayer()
if current_sprite then
RemoveLayer()
GUI_Refresh(current_sprite)
end
end

85
data/scripts/layprop.lua Normal file
View File

@ -0,0 +1,85 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_LayerProperties()
-- get current sprite
local sprite = current_sprite
if not sprite then
return
end
-- get selected layer
local layer = sprite.layer
if not layer then
return
end
local window = jwindow_new(_("Layer Properties"))
local box1 = jbox_new(JI_VERTICAL)
local box2 = jbox_new(JI_HORIZONTAL)
local box3 = jbox_new(JI_HORIZONTAL + JI_HOMOGENEOUS)
local label_name = jlabel_new(_("Name:"))
local entry_name = jentry_new(256, layer.name)
local button_ok = jbutton_new(_("&OK"))
local button_cancel = jbutton_new(_("&Cancel"))
local label_bm, view_bm, list_bm
if layer.type == GFXOBJ_LAYER_IMAGE then
label_bm = jlabel_new(_("Blend mode:"))
view_bm = jview_new()
list_bm = jlistbox_new()
jwidget_add_child(list_bm, jlistitem_new(_("Normal")))
jwidget_add_child(list_bm, jlistitem_new(_("Dissolve")))
jwidget_add_child(list_bm, jlistitem_new(_("Multiply")))
jwidget_add_child(list_bm, jlistitem_new(_("Screen")))
jwidget_add_child(list_bm, jlistitem_new(_("Overlay")))
jwidget_add_child(list_bm, jlistitem_new(_("Hard Light")))
jwidget_add_child(list_bm, jlistitem_new(_("Dodge")))
jwidget_add_child(list_bm, jlistitem_new(_("Burn")))
jwidget_add_child(list_bm, jlistitem_new(_("Darken")))
jwidget_add_child(list_bm, jlistitem_new(_("Lighten")))
jwidget_add_child(list_bm, jlistitem_new(_("Addition")))
jwidget_add_child(list_bm, jlistitem_new(_("Subtract")))
jwidget_add_child(list_bm, jlistitem_new(_("Difference")))
jwidget_add_child(list_bm, jlistitem_new(_("Hue")))
jwidget_add_child(list_bm, jlistitem_new(_("Saturation")))
jwidget_add_child(list_bm, jlistitem_new(_("Color")))
jwidget_add_child(list_bm, jlistitem_new(_("Luminosity")))
jlistbox_select_index(list_bm, layer.blend_mode)
jview_attach(view_bm, list_bm)
jwidget_set_static_size(view_bm, 128, 64)
jwidget_expansive(view_bm, true)
end
jwidget_expansive(entry_name, true)
jwidget_add_child(box2, label_name)
jwidget_add_child(box2, entry_name)
jwidget_add_child(box1, box2)
if layer.type == GFXOBJ_LAYER_IMAGE then
jwidget_add_child(box1, label_bm)
jwidget_add_child(box1, view_bm)
end
jwidget_add_child(box3, button_ok)
jwidget_add_child(box3, button_cancel)
jwidget_add_child(box1, box3)
jwidget_add_child(window, box1)
jwidget_magnetic(button_ok, true)
jwindow_open_fg(window)
if jwindow_get_killer(window) == button_ok then
layer_set_name(layer, jwidget_get_text(entry_name))
if layer.type == GFXOBJ_LAYER_IMAGE then
layer_set_blend_mode(layer, jlistbox_get_selected_index(list_bm))
end
GUI_Refresh(sprite)
end
jwidget_free(window)
end

View File

@ -0,0 +1,9 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_LoadScriptFile()
local filename = ji_file_select(_("Load Script File(.lua)"), "", "lua")
if filename then
dofile(filename)
end
end

229
data/scripts/mask.lua Normal file
View File

@ -0,0 +1,229 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function MaskAll()
local sprite = current_sprite
if not sprite then return end
-- undo
if undo_is_enabled(sprite.undo) then
undo_set_mask(sprite.undo, sprite)
end
-- change the selection
mask_replace(sprite.mask, 0, 0, sprite.w, sprite.h)
sprite_generate_mask_boundaries(sprite)
GUI_Refresh(sprite)
end
function DeselectMask()
local sprite = current_sprite
if not sprite or mask_is_empty(sprite.mask) then return end
-- destroy the *deselected* mask
local mask = sprite_request_mask(sprite, "*deselected*")
if mask then
sprite_remove_mask(sprite, mask)
mask_free(mask)
end
-- save the selection in the repository
local mask = mask_new_copy(sprite.mask)
mask_set_name(mask, "*deselected*")
sprite_add_mask(sprite, mask)
-- undo
if undo_is_enabled(sprite.undo) then
undo_set_mask(sprite.undo, sprite)
end
-- deselect the mask
mask_none(sprite.mask)
sprite_generate_mask_boundaries(sprite)
GUI_Refresh(sprite)
end
function ReselectMask()
local sprite = current_sprite
if not sprite then return end
-- request *deselected* mask
local mask = sprite_request_mask(sprite, "*deselected*")
if mask then
-- undo
if undo_is_enabled(sprite.undo) then
undo_set_mask(sprite.undo, sprite)
end
-- set the mask
sprite_set_mask(sprite, mask)
-- remove the *deselected* mask
sprite_remove_mask(sprite, mask)
mask_free(mask)
sprite_generate_mask_boundaries(sprite)
GUI_Refresh(sprite)
end
end
function InvertMask()
local sprite = current_sprite
if not sprite then return end
-- change the selection
if not sprite.mask.bitmap then
MaskAll()
else
-- undo
if undo_is_enabled(sprite.undo) then
undo_set_mask(sprite.undo, sprite)
end
-- create a new mask
local mask = mask_new()
-- select all the sprite area
mask_replace(mask, 0, 0, sprite.w, sprite.h)
-- remove in the new mask the current sprite marked region
image_rectfill(mask.bitmap,
sprite.mask.x, sprite.mask.y,
sprite.mask.x + sprite.mask.w-1,
sprite.mask.y + sprite.mask.h-1, 0)
-- invert the current mask in the sprite
mask_invert(sprite.mask)
if sprite.mask.bitmap then
-- copy the inverted region in the new mask
image_copy(mask.bitmap, sprite.mask.bitmap,
sprite.mask.x, sprite.mask.y)
end
-- we need only need the area inside the sprite
mask_intersect(mask, 0, 0, sprite.w, sprite.h)
-- set the new mask
sprite_set_mask(sprite, mask)
mask_free(mask)
sprite_generate_mask_boundaries(sprite)
GUI_Refresh(sprite)
end
end
function StretchMaskBottom()
local sprite = current_sprite
if not sprite or not sprite.mask.bitmap then return end
-- undo
if undo_is_enabled(sprite.undo) then
undo_set_mask(sprite.undo, sprite)
end
local x, y, bitmap, modified
bitmap = sprite.mask.bitmap
for y = 0, bitmap.h-2 do
modified = false
for x = 0, bitmap.w-1 do
if image_getpixel(bitmap, x, y) == 1 and
image_getpixel(bitmap, x, y+1) == 0 then
image_putpixel(bitmap, x, y+1, 1)
modified = true
end
end
if modified then
y = y+1
end
end
mask_union(sprite.mask,
sprite.mask.x, sprite.mask.y+sprite.mask.h, sprite.mask.w, 1)
bitmap = sprite.mask.bitmap -- the bitmap could change in the union operation
y = bitmap.h-2
for x = 0, bitmap.w-1 do
if image_getpixel(bitmap, x, y) == 0 then
image_putpixel(bitmap, x, y+1, 0)
end
end
sprite_generate_mask_boundaries(sprite)
GUI_Refresh(sprite)
end
function GUI_LoadMask()
-- get current sprite
local sprite = current_sprite
if not sprite then
return
end
local filename = ji_file_select(_("Load .msk File"), "", "msk")
if filename then
local mask = load_msk_file(filename)
if not mask then
jalert(_("Error<<Error loading .msk file").."<<"
..filename.."||".._("&Close"))
return
end
-- undo
if undo_is_enabled(sprite.undo) then
undo_set_mask(sprite.undo, sprite)
end
sprite_set_mask(sprite, mask)
mask_free(mask)
sprite_generate_mask_boundaries(sprite)
GUI_Refresh(sprite)
end
end
function GUI_SaveMask()
-- get current sprite
local sprite = current_sprite
if not sprite then
return
end
local filename = "default.msk"
local ret
while true do
filename = ji_file_select(_("Save .msk File"), filename, "msk")
if not filename then
return
end
-- does the file exist?
if file_exists(filename) then
-- ask if the user wants overwrite the file?
ret = jalert(_("Warning").."<<".._("File exists, overwrite it?")
.."<<"..get_filename(filename)
.."||".._("&Yes||&No||&Cancel"))
else
break
end
-- "yes": we must continue with the operation...
if ret == 1 then
break
-- "cancel" or <esc> per example: we back doing nothing
elseif ret != 2 then
return
end
-- "no": we must back to select other file-name */
end
if save_msk_file(sprite.mask, filename) != 0 then
jalert("Error<<Error saving .msk file<<"..filename.."||&Close")
end
end

98
data/scripts/mergedwn.lua Normal file
View File

@ -0,0 +1,98 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_MergeDown()
local sprite, frpos, index
local src_layer, dst_layer
local src_frame, dst_frame
local src_image, dst_image
local old_id
sprite = current_sprite
if not sprite then return end
src_layer = sprite.layer
if not src_layer or not layer_is_image(src_layer) then return end
dst_layer = sprite.layer.prev
if not dst_layer or not layer_is_image(dst_layer) then return end
if undo_is_enabled(sprite.undo) then
undo_open(sprite.undo)
end
for frpos = 0, sprite.frames-1 do
-- get frames
src_frame = layer_get_frame(src_layer, frpos)
dst_frame = layer_get_frame(dst_layer, frpos)
-- get images
if src_frame then
src_image = stock_get_image(src_layer.stock, src_frame.image)
else
src_image = nil
end
if dst_frame then
dst_image = stock_get_image(dst_layer.stock, dst_frame.image)
else
dst_image = nil
end
-- with source image?
if src_image then
-- no destination image
if not dst_image then
-- copy this frame to the destination layer
dst_image = image_new_copy(src_image)
index = stock_add_image(dst_layer.stock, dst_image)
if undo_is_enabled(sprite.undo) then
undo_add_image(sprite.undo, dst_layer.stock, dst_image)
end
dst_frame = frame_new(frpos, index)
frame_set_position(dst_frame, src_frame.x, src_frame.y)
frame_set_opacity(dst_frame, src_frame.opacity)
if undo_is_enabled(sprite.undo) then
undo_add_frame(sprite.undo, dst_layer, dst_frame)
end
layer_add_frame(dst_layer, dst_frame)
-- with destination
else
local x1 = MIN(src_frame.x, dst_frame.x)
local y1 = MIN(src_frame.y, dst_frame.y)
local x2 = MAX(src_frame.x+src_image.w-1, dst_frame.x+dst_image.w-1)
local y2 = MAX(src_frame.y+src_image.h-1, dst_frame.y+dst_image.h-1)
local new_image = image_crop(dst_image,
x1-dst_frame.x,
y1-dst_frame.y,
x2-x1+1, y2-y1+1)
-- merge src_image in new_image
image_merge(new_image, src_image,
src_frame.x-x1,
src_frame.y-y1,
src_frame.opacity, src_layer.blend_mode)
frame_set_position(dst_frame, x1, y1)
if undo_is_enabled(sprite.undo) then
undo_replace_image(sprite.undo, dst_layer.stock, dst_frame.image)
end
stock_replace_image(dst_layer.stock, dst_frame.image, new_image)
image_free(dst_image)
end
end
end
if undo_is_enabled(sprite.undo) then
undo_set_layer(sprite.undo, sprite)
undo_remove_layer(sprite.undo, src_layer)
undo_close(sprite.undo)
end
sprite_set_layer(sprite, dst_layer)
layer_remove_layer(src_layer.parent, src_layer)
layer_free(src_layer)
GUI_Refresh(sprite)
end

60
data/scripts/newlay.lua Normal file
View File

@ -0,0 +1,60 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_NewLayer()
-- get current sprite
local sprite = current_sprite
if not sprite then return end
-- load the window widget
local window = ji_load_widget("newlay.jid", "new_layer")
if not window then return end
jwidget_set_text(jwidget_find_name(window, "name"), GetUniqueLayerName())
jwidget_set_text(jwidget_find_name(window, "width"), tostring(sprite.w))
jwidget_set_text(jwidget_find_name(window, "height"), tostring(sprite.h))
jwindow_open_fg(window)
if jwindow_get_killer(window) == jwidget_find_name(window, "ok") then
local name = jwidget_get_text(jwidget_find_name(window, "name"))
local w = MID(1, tonumber(jwidget_get_text(jwidget_find_name(window, "width"))), 9999)
local h = MID(1, tonumber(jwidget_get_text(jwidget_find_name(window, "height"))), 9999)
local layer = NewLayer(name, 0, 0, w, h)
if not layer then
jalert(_("Error<<Not enough memory||&Close"))
return
end
GUI_Refresh(sprite)
end
jwidget_free(window)
end
function GUI_NewLayerSet()
-- get current sprite
local sprite = current_sprite
if not sprite then
return
end
-- load the window widget
local window = ji_load_widget("newlay.jid", "new_layer_set")
if not window then return end
jwindow_open_fg(window)
if jwindow_get_killer(window) == jwidget_find_name(window, "ok") then
local name = jwidget_get_text(jwidget_find_name(window, "name"))
local layer = NewLayerSet(name)
if not layer then
jalert(_("Error<<Not enough memory||&Close"))
return
end
GUI_Refresh(sprite)
end
jwidget_free(window)
end

113
data/scripts/newspr.lua Normal file
View File

@ -0,0 +1,113 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
local _sprite_counter = 0
function NewSprite(imgtype, w, h)
-- new sprite
local sprite = sprite_new_with_layer(imgtype, w, h)
if not sprite then return nil end
sprite_mount(sprite)
set_current_sprite(sprite)
return sprite
end
-- shows the "New Sprite" dialog
function GUI_NewSprite()
-- load the window widget
local window = ji_load_widget("newspr.jid", "new_sprite")
if not window then return end
local width = jwidget_find_name(window, "width")
local height = jwidget_find_name(window, "height")
local radio1 = jwidget_find_name(window, "radio1")
local radio2 = jwidget_find_name(window, "radio2")
local radio3 = jwidget_find_name(window, "radio3")
local button_ok = jwidget_find_name(window, "ok_button")
local bg_box = jwidget_find_name(window, "bg_box")
local imgtype, w, h, bg
-- default values: Indexed, 320x200, Transparent
imgtype = get_config_int("NewSprite", "Type", IMAGE_INDEXED)
imgtype = MID(IMAGE_RGB, imgtype, IMAGE_INDEXED)
w = get_config_int("NewSprite", "Width", 320)
h = get_config_int("NewSprite", "Height", 200)
bg = get_config_int("NewSprite", "Background", 0)
jwidget_set_text(width, w)
jwidget_set_text(height, h)
-- select image-type
if imgtype == IMAGE_RGB then
jwidget_select(radio1)
elseif imgtype == IMAGE_GRAYSCALE then
jwidget_select(radio2)
elseif imgtype == IMAGE_INDEXED then
jwidget_select(radio3)
end
-- select background color
jlistbox_select_index(bg_box, bg)
-- open the window
jwindow_open_fg(window)
if jwindow_get_killer(window) == button_ok then
-- get the options
if jwidget_is_selected(radio1) then
imgtype = IMAGE_RGB
elseif jwidget_is_selected(radio2) then
imgtype = IMAGE_GRAYSCALE
elseif jwidget_is_selected(radio3) then
imgtype = IMAGE_INDEXED
end
w = tonumber(jwidget_get_text(width))
h = tonumber(jwidget_get_text(height))
bg = jlistbox_get_selected_index(bg_box)
w = MID(1, w, 9999)
h = MID(1, h, 9999)
-- select the color
local color = nil
if bg >= 0 and bg <= 3 then
local bg_table = {
"mask",
"rgb{0,0,0}",
"rgb{255,255,255}",
"rgb{255,0,255}" }
color = bg_table[bg+1]
else
local default_color = get_config_string("NewSprite", "BackgroundCustom",
"rgb{0,0,0}")
color = ji_color_select(imgtype, default_color)
if color then
set_config_string("NewSprite", "BackgroundCustom", color)
end
end
if color then
-- save the configuration
set_config_int("NewSprite", "Type", imgtype)
set_config_int("NewSprite", "Width", w)
set_config_int("NewSprite", "Height", h)
set_config_int("NewSprite", "Background", bg)
-- create the new sprite
local sprite = NewSprite(imgtype, w, h)
_sprite_counter = _sprite_counter + 1
sprite_set_filename(sprite, "Sprite-" .. _sprite_counter)
image_clear(GetImage(), get_color_for_image(imgtype, color))
sprite_show(sprite)
end
end
jwidget_free(window)
end

22
data/scripts/openspr.lua Normal file
View File

@ -0,0 +1,22 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function sprite_recent_load(filename)
local sprite = sprite_load(filename)
if sprite then
recent_file(filename)
sprite_mount(sprite)
sprite_show(sprite)
else
unrecent_file(filename)
end
return sprite
end
function GUI_OpenSprite()
local filename = ji_file_select(_("Open Sprite"), "",
get_readable_extensions())
if filename then
sprite_recent_load(filename)
end
end

49
data/scripts/playfli.lua Normal file
View File

@ -0,0 +1,49 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
local function file_select_fli()
return ji_file_select(_("Open a FLI/FLC file"), "", "fli,flc")
end
function GUI_PlayFLI()
local filename = file_select_fli()
if filename then
-- load the window widget
local window = ji_load_widget("playfli.jid", "play_fli")
if not window then return end
local loop = jwidget_find_name(window, "loop")
local fullscreen = jwidget_find_name(window, "fullscreen")
local button_open = jwidget_find_name(window, "button_open")
local button_play = jwidget_find_name(window, "button_play")
if get_config_bool("PlayFLI", "Loop", true) then
jwidget_select(loop)
end
if get_config_bool("PlayFLI", "FullScreen", false) then
jwidget_select(fullscreen)
end
while true do
jwindow_open_fg(window)
if jwindow_get_killer(window) == button_play then
set_config_bool("PlayFLI", "Loop", jwidget_is_selected(loop))
set_config_bool("PlayFLI", "FullScreen", jwidget_is_selected(fullscreen))
play_fli_animation(filename,
jwidget_is_selected(loop),
jwidget_is_selected(fullscreen))
elseif jwindow_get_killer(window) == button_open then
local filename2 = file_select_fli()
if filename2 then
filename = filename2
end
else
break
end
end
jwidget_free(window)
end
end

10
data/scripts/rec.lua Normal file
View File

@ -0,0 +1,10 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_SwitchREC()
if is_rec_screen() then
rec_screen_off()
else
rec_screen_on()
end
end

47
data/scripts/remfrm.lua Normal file
View File

@ -0,0 +1,47 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function RemoveFrame(layer, frame)
local sprite = current_sprite
local frpos, it, used, image
if sprite and layer_is_image(layer) and frame then
-- find if the image that use the frame to remove, is used by
-- another frames
used = false
for frpos = 0, sprite.frames-1 do
it = layer_get_frame(layer, frpos)
if it and it.id != frame.id and it.image == frame.image then
used = true
break
end
end
undo_open(sprite.undo)
if not used then
-- if the image is only used by this frame, we can remove the
-- image from the stock
image = stock_get_image(layer.stock, frame.image)
undo_remove_image(sprite.undo, layer.stock, image)
stock_remove_image(layer.stock, image)
image_free(image)
end
undo_remove_frame(sprite.undo, layer, frame)
undo_close(sprite.undo)
-- remove the frame
layer_remove_frame(layer, frame)
frame_free(frame)
end
end
function GUI_RemoveFrame()
local sprite = current_sprite
if sprite then
local frame = layer_get_frame(sprite.layer, sprite.frpos)
if frame then
RemoveFrame(sprite.layer, frame)
GUI_Refresh(sprite)
end
end
end

View File

@ -0,0 +1,9 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_ReloadMenus()
if jalert(_("Warning<<If you try to reload the root-menu<<you will lost the current one.<<Do you want continue?||&Load||&Cancel"))
== 1 then
rebuild_root_menu()
end
end

50
data/scripts/savespr.lua Normal file
View File

@ -0,0 +1,50 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_SaveSprite()
if not current_sprite then
return
end
local filename = current_sprite.filename
local ret
while true do
filename = ji_file_select(_("Save Sprite"), filename,
get_writeable_extensions())
if not filename then
return
end
-- does the file exist?
if file_exists(filename) then
-- ask if the user wants overwrite the file?
ret = jalert(_("Warning")..
"<<".._("File exists, overwrite it?")..
"<<"..get_filename(filename)..
"||".._("&Yes||&No||&Cancel"))
else
break
end
-- "yes": we must continue with the operation...
if ret == 1 then
break
-- "cancel" or <esc> per example: we back doing nothing
elseif ret != 2 then
return
end
-- "no": we must back to select other file-name */
end
sprite_set_filename(current_sprite, filename)
rebuild_sprite_list()
if sprite_save(current_sprite) == 0 then
recent_file(filename)
sprite_was_saved(current_sprite)
else
unrecent_file(filename)
print(_("Error saving sprite file: ")..current_sprite.filename)
end
end

29
data/scripts/selspr.lua Normal file
View File

@ -0,0 +1,29 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
-- shows a sprite by its ID
function ShowSpriteByID(sprite_id)
local sprite = nil
-- is not the null sprite?
if sprite_id != 0 then
local clipboard = get_clipboard_sprite()
-- the clipboard?
if clipboard and sprite_id == clipboard.id then
sprite = clipboard
-- some sprite in the list?
else
sprite = get_first_sprite()
while sprite do
if sprite.id == sprite_id then
break
end
sprite = get_next_sprite(sprite)
end
end
end
set_sprite_in_current_editor(sprite)
end

39
data/scripts/session.lua Normal file
View File

@ -0,0 +1,39 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_LoadSession()
local filename = ji_file_select(_("Load .ses File"), "", "ses")
if filename then
if load_session(filename) then
jalert(_("Session Manager<<Session loaded succefully<<Go to the \"List\" menu to see the loaded sprites||&OK"))
else
jalert(_("Session Manager<<Error loading session||&OK"))
end
end
end
function GUI_SaveSession()
local filename = ji_file_select(_("Save .ses File"), "", "ses")
if filename then
if save_session(filename) then
jalert(_("Session Manager<<Session saved succefully||&OK"))
else
jalert(_("Session Manager<<Error saving session||&OK"))
end
end
end
if is_interactive() and
is_backup_session() and
get_config_bool("Options", "AskBkpSes", true) then
local ret = jalert(_("Session Manager<<There is a backed up session(maybe a previous crash).<<Do you want to load it?||Never &ask||&No||&Yes"))
-- never ask again
if ret == 1 then
set_config_bool("Options", "AskBkpSes", false)
-- try to load it
elseif ret == 3 then
set_config_string("FileSelect", "CurrentDirectory", "data/session")
GUI_LoadSession()
end
end

11
data/scripts/sprite.lua Normal file
View File

@ -0,0 +1,11 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
-- closes the current sprite
function CloseSprite()
local sprite = current_sprite
if sprite then
sprite_unmount(sprite)
sprite_free(sprite)
end
end

70
data/scripts/sprprop.lua Normal file
View File

@ -0,0 +1,70 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_SpriteProperties()
-- get current sprite
local sprite = current_sprite
if not sprite then return end
-- load the window widget
local window = ji_load_widget("sprprop.jid", "sprite_properties")
if not window then return end
-- update widgets values
do
local imgtype_text
if sprite.imgtype == IMAGE_RGB then
imgtype_text = "RGB"
elseif sprite.imgtype == IMAGE_GRAYSCALE then
imgtype_text = "Grayscale"
elseif sprite.imgtype == IMAGE_INDEXED then
imgtype_text = "Indexed"
else
imgtype_text = "Unknown"
end
jwidget_set_text(jwidget_find_name(window, "name"), sprite.filename)
jwidget_set_text(jwidget_find_name(window, "type"), imgtype_text)
jwidget_set_text(jwidget_find_name(window, "size"),
sprite.w .. "x" .. sprite.h)
jwidget_set_text(jwidget_find_name(window, "frames"),
tostring(sprite.frames))
end
jwindow_remap(window)
jwindow_center(window)
while true do
load_window_pos(window, "SpriteProperties")
jwindow_open_fg(window)
save_window_pos(window, "SpriteProperties")
local killer = jwindow_get_killer(window)
if killer == jwidget_find_name(window, "ok") then
local filename = jwidget_get_text(jwidget_find_name(window, "name"))
local frames = tonumber(jwidget_get_text(jwidget_find_name(window, "frames")))
frames = MID(1, frames, 9999)
-- does filename change?
if filename != sprite.filename then
sprite_set_filename(sprite, filename)
rebuild_sprite_list()
end
sprite_set_frames(sprite, frames)
-- update sprite in editors
GUI_Refresh(sprite)
break
elseif killer == jwidget_find_name(window, "speed") then
GUI_FrameLength(-1)
else
break
end
end
jwidget_free(window)
end

54
data/scripts/testjid.lua Normal file
View File

@ -0,0 +1,54 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_TestJID()
local filename = ji_file_select(_("Open a JID file"), "", "jid")
if filename then
local window, box1, box2, box3, label, entry, button_ok, button_cancel
window = jwindow_new(_("Test Widget"))
box1 = jbox_new(JI_VERTICAL)
box2 = jbox_new(JI_HORIZONTAL)
box3 = jbox_new(JI_HORIZONTAL + JI_HOMOGENEOUS)
label = jlabel_new(_("Widget Name:"))
entry = jentry_new(256, get_config_string("TestJid", "Name", "my_widget"))
button_ok = jbutton_new(_("&OK"))
button_cancel = jbutton_new(_("&Cancel"))
jwidget_magnetic(button_ok, true)
jwidget_expansive(box2, true)
jwidget_expansive(entry, true)
jwidget_add_child (box2, label)
jwidget_add_child (box2, entry)
jwidget_add_child (box1, box2)
jwidget_add_child (box3, button_ok)
jwidget_add_child (box3, button_cancel)
jwidget_add_child (box1, box3)
jwidget_add_child (window, box1)
jwindow_open_fg(window)
if jwindow_get_killer(window) == button_ok then
local widget_name = jwidget_get_text(entry)
local loaded_widget = ji_load_widget(filename, widget_name)
if not loaded_widget then
jalert(_("Error<<Error loading widget:") .. "<<"
.. widget_name .. "||" .. _("&OK"))
else
set_config_string("TestJid", "Name", widget_name)
if jwidget_get_type(loaded_widget) == JI_WINDOW then
jwindow_open_bg(loaded_widget)
else
local aux_window = jwindow_new("Widget: "..widget_name)
jwidget_add_child (aux_window, loaded_widget)
jwindow_open_bg(aux_window)
end
end
end
jwidget_free(window)
end
end

18
data/scripts/undo.lua Normal file
View File

@ -0,0 +1,18 @@
-- ase -- allegro-sprite-editor: the ultimate sprites factory
-- Copyright (C) 2001-2005 by David A. Capello
function GUI_Undo()
if current_sprite and undo_can_undo(current_sprite.undo) then
undo_undo(current_sprite.undo)
sprite_generate_mask_boundaries(current_sprite)
GUI_Refresh(current_sprite)
end
end
function GUI_Redo()
if current_sprite and undo_can_redo(current_sprite.undo) then
undo_redo(current_sprite.undo)
sprite_generate_mask_boundaries(current_sprite)
GUI_Refresh(current_sprite)
end
end

1
data/session/README.txt Normal file
View File

@ -0,0 +1 @@
If the program crashes, a session file is created here.

BIN
data/tips/aselogo.pcx Normal file

Binary file not shown.

BIN
data/tips/colcurv.pcx Normal file

Binary file not shown.

BIN
data/tips/dither.pcx Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More