[layers] Merged changes from trunk
git-svn-id: svn://pulkomandy.tk/GrafX2/branches/layers@1131 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
commit
f38fd068a2
14
Doxyfile
14
Doxyfile
@ -939,20 +939,8 @@ ENUM_VALUES_PER_LINE = 4
|
||||
|
||||
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
|
||||
# structure should be generated to display hierarchical information.
|
||||
# If the tag value is set to FRAME, a side panel will be generated
|
||||
# containing a tree-like index structure (just like the one that
|
||||
# is generated for HTML Help). For this to work a browser that supports
|
||||
# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
|
||||
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
|
||||
# probably better off using the HTML help feature. Other possible values
|
||||
# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
|
||||
# and Class Hierarchy pages using a tree view instead of an ordered list;
|
||||
# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
|
||||
# disables this behavior completely. For backwards compatibility with previous
|
||||
# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
|
||||
# respectively.
|
||||
|
||||
GENERATE_TREEVIEW = FRAME
|
||||
GENERATE_TREEVIEW = YES
|
||||
|
||||
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
|
||||
# used to set the initial width (in pixels) of the frame in which the tree
|
||||
|
||||
55
Makefile
55
Makefile
@ -42,15 +42,16 @@ ifdef COMSPEC
|
||||
RMDIR = rmdir
|
||||
CP = cp
|
||||
BIN = grafx2.exe
|
||||
COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb `sdl-config --cflags` $(TTFCOPT) $(JOYCOPT)
|
||||
LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng
|
||||
COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb `sdl-config --cflags` $(TTFCOPT) $(JOYCOPT) $(LUACOPT)
|
||||
LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng $(LUALOPT)
|
||||
CC = gcc
|
||||
OBJDIR = obj/win32
|
||||
# Resources (icon)
|
||||
WINDRES = windres.exe
|
||||
PLATFORMOBJ = $(OBJDIR)/winres.o
|
||||
PLATFORM = win32
|
||||
PLATFORMFILES = SDL.dll SDL_image.dll libpng13.dll zlib1.dll gfx2.ico $(TTFLIBS) #some misc files we have to add to the release archive under windows.
|
||||
#some misc files we have to add to the release archive under windows.
|
||||
PLATFORMFILES = SDL.dll SDL_image.dll libpng13.dll zlib1.dll gfx2.ico $(TTFLIBS)
|
||||
ZIP = zip
|
||||
else
|
||||
|
||||
@ -227,8 +228,8 @@ else
|
||||
|
||||
# Compiles a regular linux exectutable for the native platform
|
||||
BIN = grafx2
|
||||
COPT = -W -Wall -Wdeclaration-after-statement -std=c99 -c -g `sdl-config --cflags` $(TTFCOPT)
|
||||
LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng
|
||||
COPT = -W -Wall -Wdeclaration-after-statement -std=c99 -c -g `sdl-config --cflags` $(TTFCOPT) $(LUACOPT)
|
||||
LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng $(LUALOPT)
|
||||
# Use gcc for compiling. Use ncc to build a callgraph and analyze the code.
|
||||
CC = gcc
|
||||
#CC = nccgen -ncgcc -ncld -ncfabs
|
||||
@ -253,6 +254,17 @@ else
|
||||
TTFLABEL =
|
||||
endif
|
||||
|
||||
#Lua scripting is optional too
|
||||
ifeq ($(NOLUA),1)
|
||||
LUACOPT =
|
||||
LUALOPT =
|
||||
LUALABEL = -nolua
|
||||
else
|
||||
LUACOPT = -D__ENABLE_LUA__
|
||||
LUALOPT = -llua5.1
|
||||
LUALABEL =
|
||||
endif
|
||||
|
||||
#To disable Joystick emulation of cursor, make NOJOY=1 (for input.o)
|
||||
#This can be necessary to test keyboard cursor code, because an existing
|
||||
#joystick will keep reporting a contradicting position.
|
||||
@ -262,16 +274,12 @@ else
|
||||
JOYCOPT =
|
||||
endif
|
||||
|
||||
ifneq ($(PLATFORM),amiga-vbcc)
|
||||
COPT += -DSVN_revision='"$(shell svnversion .)"' -DProgram_version='"$(LABEL)"'
|
||||
endif
|
||||
|
||||
### And now for the real build rules ###
|
||||
|
||||
.PHONY : all debug release clean depend zip force install uninstall
|
||||
.PHONY : all debug release clean depend zip version force install uninstall
|
||||
|
||||
# This is the list of the objects we want to build. Dependancies are built by "make depend" automatically.
|
||||
OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o $(OBJDIR)/misc.o $(OBJDIR)/special.o $(OBJDIR)/buttons.o $(OBJDIR)/palette.o $(OBJDIR)/help.o $(OBJDIR)/operatio.o $(OBJDIR)/pages.o $(OBJDIR)/loadsave.o $(OBJDIR)/readline.o $(OBJDIR)/engine.o $(OBJDIR)/filesel.o $(OBJDIR)/op_c.o $(OBJDIR)/readini.o $(OBJDIR)/saveini.o $(OBJDIR)/shade.o $(OBJDIR)/keyboard.o $(OBJDIR)/io.o $(OBJDIR)/text.o $(OBJDIR)/SFont.o $(OBJDIR)/setup.o $(OBJDIR)/pxsimple.o $(OBJDIR)/pxtall.o $(OBJDIR)/pxwide.o $(OBJDIR)/pxdouble.o $(OBJDIR)/pxtriple.o $(OBJDIR)/pxtall2.o $(OBJDIR)/pxwide2.o $(OBJDIR)/pxquad.o $(OBJDIR)/windows.o $(OBJDIR)/brush.o $(OBJDIR)/realpath.o $(OBJDIR)/mountlist.o $(OBJDIR)/input.o $(OBJDIR)/hotkeys.o $(OBJDIR)/transform.o $(OBJDIR)/pversion.o $(PLATFORMOBJ)
|
||||
OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o $(OBJDIR)/misc.o $(OBJDIR)/special.o $(OBJDIR)/buttons.o $(OBJDIR)/palette.o $(OBJDIR)/help.o $(OBJDIR)/operatio.o $(OBJDIR)/pages.o $(OBJDIR)/loadsave.o $(OBJDIR)/readline.o $(OBJDIR)/engine.o $(OBJDIR)/filesel.o $(OBJDIR)/op_c.o $(OBJDIR)/readini.o $(OBJDIR)/saveini.o $(OBJDIR)/shade.o $(OBJDIR)/keyboard.o $(OBJDIR)/io.o $(OBJDIR)/version.o $(OBJDIR)/text.o $(OBJDIR)/SFont.o $(OBJDIR)/setup.o $(OBJDIR)/pxsimple.o $(OBJDIR)/pxtall.o $(OBJDIR)/pxwide.o $(OBJDIR)/pxdouble.o $(OBJDIR)/pxtriple.o $(OBJDIR)/pxtall2.o $(OBJDIR)/pxwide2.o $(OBJDIR)/pxquad.o $(OBJDIR)/windows.o $(OBJDIR)/brush.o $(OBJDIR)/realpath.o $(OBJDIR)/mountlist.o $(OBJDIR)/input.o $(OBJDIR)/hotkeys.o $(OBJDIR)/transform.o $(OBJDIR)/pversion.o $(OBJDIR)/factory.o $(PLATFORMOBJ) $(OBJDIR)/fileformats.o $(OBJDIR)/miscfileformats.o
|
||||
|
||||
SKIN_FILES = skins/skin_classic.png skins/skin_modern.png skins/font_Classic.png skins/font_Fun.png
|
||||
|
||||
@ -307,15 +315,36 @@ ziprelease: version $(BIN) release
|
||||
echo `sed "s/.*=\"\(.*\)\";/\1/" pversion.c`.`svnversion` | tr " :" "_-" | sed -e s/\\(wip\\)\\\\./\\1/I > $(OBJDIR)/versiontag
|
||||
|
||||
tar cvzf "src-`cat $(OBJDIR)/versiontag`.tgz" --transform 's,^,src/,g' *.c *.h Makefile Makefile.dep gfx2.ico
|
||||
$(ZIP) $(ZIPOPT) "grafx2-`cat $(OBJDIR)/versiontag`$(TTFLABEL)-$(PLATFORM).$(ZIP)" $(BIN) gfx2def.ini $(SKIN_FILES) gfx2.gif doc/README.txt doc/COMPILING.txt doc/gpl-2.0.txt fonts/8pxfont.png doc/README-zlib1.txt doc/README-SDL.txt doc/README-SDL_image.txt doc/README-SDL_ttf.txt fonts/Tuffy.ttf src-`cat $(OBJDIR)/versiontag`.tgz $(PLATFORMFILES)
|
||||
$(ZIP) $(ZIPOPT) "grafx2-`cat $(OBJDIR)/versiontag`$(TTFLABEL)-$(PLATFORM).$(ZIP)" $(BIN) gfx2def.ini test.lua $(SKIN_FILES) gfx2.gif doc/README.txt doc/COMPILING.txt doc/gpl-2.0.txt fonts/8pxfont.png doc/README-zlib1.txt doc/README-SDL.txt doc/README-SDL_image.txt doc/README-SDL_ttf.txt doc/README-lua.txt fonts/Tuffy.ttf src-`cat $(OBJDIR)/versiontag`.tgz $(PLATFORMFILES)
|
||||
$(DELCOMMAND) "src-`cat $(OBJDIR)/versiontag`.tgz"
|
||||
tar cvzf "grafx2-`cat $(OBJDIR)/versiontag`$(TTFLABEL)-src.tgz" --transform 's,^,grafx2/,g' *.c *.h Makefile Makefile.dep gfx2def.ini $(SKIN_FILES) gfx2.ico gfx2.gif doc/README.txt doc/COMPILING.txt doc/gpl-2.0.txt misc/grafx2.1 misc/grafx2.xpm misc/grafx2.desktop fonts/8pxfont.png fonts/Tuffy.ttf
|
||||
tar cvzf "grafx2-`cat $(OBJDIR)/versiontag`$(TTFLABEL)-src.tgz" --transform 's,^,grafx2/,g' *.c *.h Makefile Makefile.dep gfx2def.ini test.lua $(SKIN_FILES) gfx2.ico gfx2.gif doc/README.txt doc/COMPILING.txt doc/gpl-2.0.txt misc/grafx2.1 misc/grafx2.xpm misc/grafx2.desktop fonts/8pxfont.png fonts/Tuffy.ttf
|
||||
$(DELCOMMAND) "$(OBJDIR)/versiontag"
|
||||
|
||||
testsed :
|
||||
|
||||
$(BIN) : $(OBJ)
|
||||
$(CC) $(OBJ) -o $(BIN) $(LOPT)
|
||||
|
||||
# SVN revision number
|
||||
version.c :
|
||||
echo "char SVN_revision[]=\"`svnversion .`\";" > version.c
|
||||
ifeq ($(LABEL),)
|
||||
else
|
||||
echo "char Program_version[]=\"$(LABEL)\";" > pversion.c
|
||||
endif
|
||||
|
||||
version : delversion delpversion version.c pversion.c $(OBJDIR)/version.o $(OBJDIR)/pversion.o all
|
||||
|
||||
|
||||
delversion :
|
||||
$(DELCOMMAND) version.c
|
||||
|
||||
delpversion :
|
||||
ifeq ($(LABEL),)
|
||||
else
|
||||
$(DELCOMMAND) pversion.c
|
||||
endif
|
||||
|
||||
$(OBJDIR)/%.o : %.c
|
||||
$(if $(wildcard $(OBJDIR)),,$(MKDIR) $(OBJDIR))
|
||||
$(CC) $(COPT) -c $*.c -o $(OBJDIR)/$*.o
|
||||
|
||||
21
Makefile.dep
21
Makefile.dep
@ -8,6 +8,10 @@ $(OBJDIR)/buttons.o: buttons.c const.h struct.h global.h misc.h graph.h engine.h
|
||||
$(OBJDIR)/engine.o: engine.c const.h struct.h global.h graph.h misc.h special.h \
|
||||
buttons.h operatio.h shade.h errors.h sdlscreen.h windows.h brush.h \
|
||||
input.h engine.h pages.h
|
||||
$(OBJDIR)/factory.o: factory.c brush.h struct.h const.h buttons.h engine.h errors.h \
|
||||
filesel.h global.h graph.h io.h misc.h readline.h sdlscreen.h windows.h
|
||||
$(OBJDIR)/fileformats.o: fileformats.c errors.h global.h struct.h const.h \
|
||||
loadsave.h misc.h
|
||||
$(OBJDIR)/filesel.o: filesel.c const.h struct.h global.h misc.h errors.h io.h \
|
||||
windows.h sdlscreen.h loadsave.h mountlist.h engine.h readline.h \
|
||||
input.h help.h filesel.h
|
||||
@ -18,9 +22,10 @@ $(OBJDIR)/help.o: help.c const.h struct.h global.h misc.h engine.h helpfile.h \
|
||||
help.h sdlscreen.h text.h keyboard.h windows.h input.h hotkeys.h \
|
||||
errors.h pages.h
|
||||
$(OBJDIR)/hotkeys.o: hotkeys.c struct.h const.h global.h hotkeys.h
|
||||
$(OBJDIR)/init.o: init.c const.h struct.h global.h graph.h buttons.h palette.h \
|
||||
help.h operatio.h misc.h errors.h keyboard.h io.h hotkeys.h setup.h \
|
||||
windows.h sdlscreen.h mountlist.h loadsave.h init.h transform.h
|
||||
$(OBJDIR)/init.o: init.c buttons.h struct.h const.h errors.h global.h graph.h \
|
||||
init.h io.h factory.h help.h hotkeys.h keyboard.h loadsave.h misc.h \
|
||||
mountlist.h operatio.h palette.h sdlscreen.h setup.h transform.h \
|
||||
windows.h
|
||||
$(OBJDIR)/input.o: input.c global.h struct.h const.h keyboard.h sdlscreen.h \
|
||||
windows.h errors.h misc.h input.h
|
||||
$(OBJDIR)/io.o: io.c struct.h const.h io.h realpath.h
|
||||
@ -33,6 +38,8 @@ $(OBJDIR)/main.o: main.c const.h struct.h global.h graph.h misc.h init.h buttons
|
||||
io.h text.h setup.h windows.h brush.h palette.h realpath.h
|
||||
$(OBJDIR)/misc.o: misc.c struct.h const.h sdlscreen.h global.h errors.h buttons.h \
|
||||
engine.h misc.h keyboard.h windows.h palette.h input.h
|
||||
$(OBJDIR)/miscfileformats.o: miscfileformats.c global.h struct.h const.h loadsave.h \
|
||||
windows.h
|
||||
$(OBJDIR)/mountlist.o: mountlist.c
|
||||
$(OBJDIR)/op_c.o: op_c.c op_c.h struct.h const.h errors.h
|
||||
$(OBJDIR)/operatio.o: operatio.c const.h struct.h global.h misc.h engine.h graph.h \
|
||||
@ -68,8 +75,8 @@ $(OBJDIR)/saveini.o: saveini.c const.h global.h struct.h readini.h io.h errors.h
|
||||
$(OBJDIR)/sdlscreen.o: sdlscreen.c global.h struct.h const.h sdlscreen.h errors.h \
|
||||
misc.h
|
||||
$(OBJDIR)/setup.o: setup.c struct.h const.h io.h setup.h
|
||||
$(OBJDIR)/shade.o: shade.c global.h struct.h const.h graph.h engine.h misc.h \
|
||||
readline.h help.h sdlscreen.h windows.h input.h shade.h
|
||||
$(OBJDIR)/shade.o: shade.c global.h struct.h const.h graph.h engine.h errors.h \
|
||||
misc.h readline.h help.h sdlscreen.h windows.h input.h shade.h
|
||||
$(OBJDIR)/special.o: special.c const.h struct.h global.h graph.h engine.h windows.h \
|
||||
special.h pages.h misc.h buttons.h
|
||||
$(OBJDIR)/text.o: text.c SFont.h struct.h const.h global.h sdlscreen.h io.h \
|
||||
@ -78,5 +85,5 @@ $(OBJDIR)/transform.o: transform.c global.h struct.h const.h transform.h engine.
|
||||
sdlscreen.h windows.h input.h help.h misc.h readline.h buttons.h \
|
||||
pages.h
|
||||
$(OBJDIR)/version.o: version.c
|
||||
$(OBJDIR)/windows.o: windows.c windows.h struct.h const.h global.h graph.h engine.h \
|
||||
misc.h sdlscreen.h errors.h input.h
|
||||
$(OBJDIR)/windows.o: windows.c windows.h struct.h const.h engine.h errors.h \
|
||||
global.h graph.h input.h misc.h readline.h sdlscreen.h
|
||||
|
||||
2
brush.h
2
brush.h
@ -25,6 +25,8 @@
|
||||
#ifndef __BRUSH_H_
|
||||
#define __BRUSH_H_
|
||||
|
||||
#include "struct.h"
|
||||
|
||||
/*!
|
||||
Gets the brush from the picture.
|
||||
@param start_x left edge coordinate in the picture
|
||||
|
||||
505
buttons.c
505
buttons.c
@ -70,7 +70,7 @@
|
||||
#define isHidden(x) ((x)->d_name[0]=='.')
|
||||
#endif
|
||||
|
||||
//extern char Program_version[]; // generated in pversion.c
|
||||
extern char Program_version[]; // generated in pversion.c
|
||||
|
||||
extern short Old_MX;
|
||||
extern short Old_MY;
|
||||
@ -309,8 +309,8 @@ void Button_Select_forecolor(void)
|
||||
// Check if it's a double-click
|
||||
if (time_click - time_previous < Config.Double_click_speed)
|
||||
{
|
||||
// Open palette window
|
||||
Button_Palette();
|
||||
// Open palette window
|
||||
Button_Palette();
|
||||
}
|
||||
}
|
||||
else if (color!=-1)
|
||||
@ -715,43 +715,15 @@ void Settings_display_config(T_Config * conf)
|
||||
|
||||
Print_in_window(273, 31,(conf->Show_hidden_files)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window(273, 46,(conf->Show_hidden_directories)?YES:NO,MC_Black,MC_Light);
|
||||
// Print_in_window(273, 61,(conf->Show_system_directories)?YES:NO,MC_Black,MC_Light);
|
||||
|
||||
Print_in_window(223, 84,(conf->Safety_colors)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window(223, 99,(conf->Adjust_brush_pick)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window(223,114,(conf->Separate_colors)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window(223,129,(conf->Auto_set_res)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window(183,144,(conf->Coords_rel)?"Relative":"Absolute",MC_Black,MC_Light);
|
||||
Print_in_window(223,114,(conf->Auto_set_res)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window(183,129,(conf->Coords_rel)?"Relative":"Absolute",MC_Black,MC_Light);
|
||||
|
||||
Print_in_window( 91, 84,(conf->Display_image_limits)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window( 91, 99,(conf->Clear_palette)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window( 91,114,(conf->Maximize_preview)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window( 91,129,(conf->Backup)?YES:NO,MC_Black,MC_Light);
|
||||
/*
|
||||
switch (conf->Cursor)
|
||||
{
|
||||
case 0 : Print_in_window(67,144," Solid",MC_Black,MC_Light); break;
|
||||
case 1 : Print_in_window(67,144,"Transp",MC_Black,MC_Light); break;
|
||||
default: Print_in_window(67,144," Thin",MC_Black,MC_Light);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
if (conf->Font)
|
||||
{ // Fun
|
||||
Print_in_window( 8,31," ",MC_Black,MC_Light);
|
||||
Print_in_window( 78,31," ",MC_Black,MC_Light);
|
||||
Print_in_window( 82,31,"\020",MC_Black,MC_Light);
|
||||
Print_in_window(152,31,"\021",MC_Black,MC_Light);
|
||||
}
|
||||
else
|
||||
{ // Classic
|
||||
Print_in_window( 82,31," ",MC_Black,MC_Light);
|
||||
Print_in_window(152,31," ",MC_Black,MC_Light);
|
||||
Print_in_window( 8,31,"\020",MC_Black,MC_Light);
|
||||
Print_in_window( 78,31,"\021",MC_Black,MC_Light);
|
||||
}
|
||||
*/
|
||||
Print_in_window( 91, 84,(conf->Clear_palette)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window( 91, 99,(conf->Maximize_preview)?YES:NO,MC_Black,MC_Light);
|
||||
Print_in_window( 91,114,(conf->Backup)?YES:NO,MC_Black,MC_Light);
|
||||
|
||||
Print_in_window(155,166,(conf->Auto_save)?YES:NO,MC_Black,MC_Light);
|
||||
|
||||
@ -795,15 +767,6 @@ void Button_Settings(void)
|
||||
Window_display_frame(163, 16,139,48); // Show in filelist
|
||||
Window_display_frame(253, 77, 49,82); // Mouse sens.
|
||||
Window_display_frame( 5, 65,247,96); // |_ Misc.
|
||||
/* Window_display_frame( 5, 65,157,14); // |
|
||||
// On découpe le Frame bizarre des "Miscellaneous"
|
||||
Pixel_in_window(6,77,MC_White);
|
||||
Pixel_in_window(5,78,MC_Dark);
|
||||
Block(Window_pos_X+(7*Menu_factor_X),Window_pos_Y+(77*Menu_factor_Y),
|
||||
Menu_factor_X*154,Menu_factor_Y<<1,MC_Light);
|
||||
Pixel_in_window(161,77,MC_Light);
|
||||
Pixel_in_window(160,77,MC_Dark);
|
||||
*/
|
||||
// On affiche maintenant tout le blabla
|
||||
Print_in_window(169, 19,"Show in filelist",MC_Dark,MC_Light);
|
||||
Print_in_window( 9, 52,"Nb of UNDO pages",MC_Dark,MC_Light);
|
||||
@ -817,43 +780,36 @@ void Button_Settings(void)
|
||||
// Button Show/Hide dans le fileselect
|
||||
Window_set_normal_button(167, 28,131,14,"Hidden files: ",0,1,SDLK_LAST); // 1
|
||||
Window_set_normal_button(167, 43,131,14,"Hidden dir. : ",0,1,SDLK_LAST); // 2
|
||||
// Window_set_normal_button(167, 58,131,14,"System dir. : ",0,1,SDLK_LAST);
|
||||
|
||||
// Button Show/Hide Picture limits
|
||||
Window_set_normal_button( 9, 81,107,14,"Limits : ",0,1,SDLK_LAST); // 3
|
||||
// Button Show/Hide Picture limits
|
||||
Window_set_normal_button( 9, 96,107,14,"Clear pal: ",0,1,SDLK_LAST); // 4
|
||||
// Button Show/Hide Picture limits
|
||||
Window_set_normal_button( 9,111,107,14,"Max prev.: ",0,1,SDLK_LAST); // 5
|
||||
Window_set_normal_button(9, 81, 107, 14, "Clear pal: ", 0, 1, SDLK_LAST); // 3
|
||||
Window_set_normal_button(9, 96, 107, 14, "Max prev.: ", 0, 1, SDLK_LAST); // 4
|
||||
// Button Effectuer des backups à chaque sauvegarde
|
||||
Window_set_normal_button( 9,126,107,14,"Backup : ",0,1,SDLK_LAST); // 6
|
||||
Window_set_normal_button( 9,111,107,14,"Backup : ",0,1,SDLK_LAST); // 5
|
||||
|
||||
// Button Safety colors
|
||||
Window_set_normal_button(117, 81,131,14,"Safe. colors: ",0,1,SDLK_LAST); // 7
|
||||
Window_set_normal_button(117, 81,131,14,"Safe. colors: ",0,1,SDLK_LAST); // 6
|
||||
// Button Adjust Brush Pick
|
||||
Window_set_normal_button(117, 96,131,14,"AdjBrushPick: ",0,1,SDLK_LAST); // 8
|
||||
// Button Separate colors
|
||||
Window_set_normal_button(117,111,131,14,"Separate col: ",0,1,SDLK_LAST); // 9
|
||||
Window_set_normal_button(117, 96,131,14,"AdjBrushPick: ",0,1,SDLK_LAST); // 7
|
||||
// Button Passer dans la résolution appropriée après un chargement
|
||||
Window_set_normal_button(117,126,131,14,"Auto-set res: ",0,1,SDLK_LAST); // 10
|
||||
Window_set_normal_button(117,111,131,14,"Auto-set res: ",0,1,SDLK_LAST); // 8
|
||||
// Button Adapter la palette après un chargement (<=> Shift+BkSpc)
|
||||
Window_set_normal_button(117,141,131,14,"Coords: ",0,1,SDLK_LAST); // 11
|
||||
Window_set_normal_button(117,126,131,14,"Coords: ",0,1,SDLK_LAST); // 9
|
||||
|
||||
// Button Reload
|
||||
Window_set_normal_button( 6,163, 51,14,"Reload" ,0,1,SDLK_LAST); // 12
|
||||
Window_set_normal_button( 6,163, 51,14,"Reload" ,0,1,SDLK_LAST); // 10
|
||||
// Button Auto-save
|
||||
Window_set_normal_button( 73,163,107,14,"Auto-save: ",0,1,SDLK_LAST); // 13
|
||||
Window_set_normal_button( 73,163,107,14,"Auto-save: ",0,1,SDLK_LAST); // 11
|
||||
// Button Save
|
||||
Window_set_normal_button(183,163, 51,14,"Save" ,0,1,SDLK_LAST); // 14
|
||||
Window_set_normal_button(183,163, 51,14,"Save" ,0,1,SDLK_LAST); // 12
|
||||
// Button Close
|
||||
Window_set_normal_button(250,163, 51,14,"Close" ,0,1,KEY_ESC); // 15
|
||||
Window_set_normal_button(250,163, 51,14,"Close" ,0,1,KEY_ESC); // 13
|
||||
|
||||
// Jauges de sensibilité de la souris (X puis Y)
|
||||
Window_set_scroller_button(265,99,56,4,1,0); // 16
|
||||
Window_set_scroller_button(279,99,56,4,1,0); // 17
|
||||
Window_set_scroller_button(265,99,56,4,1,0); // 14
|
||||
Window_set_scroller_button(279,99,56,4,1,0); // 15
|
||||
|
||||
// Zone de saisie du nb de pages de Undo
|
||||
Window_set_input_button(140,50,2); // 18
|
||||
Window_set_input_button(140,50,2); // 16
|
||||
|
||||
Update_window_area(0,0,Window_width, Window_height);
|
||||
|
||||
@ -874,54 +830,45 @@ void Button_Settings(void)
|
||||
case 2 : // Hidden dir.
|
||||
Config_choisie.Show_hidden_directories=(Config_choisie.Show_hidden_directories)?0:-1;
|
||||
break;
|
||||
// case 5 : // System dir.
|
||||
// Config_choisie.Show_system_directories=(Config_choisie.Show_system_directories)?0:-1;
|
||||
// break;
|
||||
case 3 : // Draw limits
|
||||
Config_choisie.Display_image_limits=!Config_choisie.Display_image_limits;
|
||||
break;
|
||||
case 4 : // Clear palette
|
||||
case 3 : // Clear palette
|
||||
Config_choisie.Clear_palette=!Config_choisie.Clear_palette;
|
||||
break;
|
||||
case 5 : // Maximize preview
|
||||
case 4 : // Maximize preview
|
||||
Config_choisie.Maximize_preview=!Config_choisie.Maximize_preview;
|
||||
break;
|
||||
case 6 : // Backup
|
||||
case 5 : // Backup
|
||||
Config_choisie.Backup=!Config_choisie.Backup;
|
||||
break;
|
||||
case 7 : // Safety colors
|
||||
case 6 : // Safety colors
|
||||
Config_choisie.Safety_colors=!Config_choisie.Safety_colors;
|
||||
break;
|
||||
case 8 : // Adjust brush pick
|
||||
case 7 : // Adjust brush pick
|
||||
Config_choisie.Adjust_brush_pick=!Config_choisie.Adjust_brush_pick;
|
||||
break;
|
||||
case 9 : // Separate colors
|
||||
Config_choisie.Separate_colors=!Config_choisie.Separate_colors;
|
||||
break;
|
||||
case 10 : // Auto-set resolution
|
||||
case 8 : // Auto-set resolution
|
||||
Config_choisie.Auto_set_res=!Config_choisie.Auto_set_res;
|
||||
break;
|
||||
case 11 : // Coordonnées
|
||||
case 9 : // Coordonnées
|
||||
Config_choisie.Coords_rel=!Config_choisie.Coords_rel;
|
||||
break;
|
||||
case 12 : // Reload
|
||||
case 10 : // Reload
|
||||
Settings_load_config(&Config_choisie);
|
||||
config_is_reloaded=1;
|
||||
break;
|
||||
case 13 : // Auto-save
|
||||
case 11 : // Auto-save
|
||||
Config_choisie.Auto_save=!Config_choisie.Auto_save;
|
||||
break;
|
||||
case 14 : // Save
|
||||
case 12 : // Save
|
||||
Settings_save_config(&Config_choisie);
|
||||
break;
|
||||
// 15 : OK
|
||||
case 16 : // X Sensib.
|
||||
// 13 close
|
||||
case 14 : // X Sensib.
|
||||
Config_choisie.Mouse_sensitivity_index_x=Window_attribute2+1;
|
||||
break;
|
||||
case 17 : // Y Sensib.
|
||||
case 15 : // Y Sensib.
|
||||
Config_choisie.Mouse_sensitivity_index_y=Window_attribute2+1;
|
||||
break;
|
||||
case 18 : // Nb pages Undo
|
||||
case 16 : // Nb pages Undo
|
||||
Num2str(Config_choisie.Max_undo_pages,str,2);
|
||||
Readline(142,52,str,2,1);
|
||||
Config_choisie.Max_undo_pages=atoi(str);
|
||||
@ -951,15 +898,15 @@ void Button_Settings(void)
|
||||
Spare_fileselector_offset=0;
|
||||
}
|
||||
|
||||
if ((clicked_button>=1) && (clicked_button<15))
|
||||
if ((clicked_button>=1) && (clicked_button<13))
|
||||
Settings_display_config(&Config_choisie);
|
||||
|
||||
if (Is_shortcut(Key,0x100+BUTTON_HELP))
|
||||
Window_help(BUTTON_SETTINGS, NULL);
|
||||
else if (Is_shortcut(Key,0x100+BUTTON_SETTINGS))
|
||||
clicked_button=15;
|
||||
clicked_button=13;
|
||||
}
|
||||
while ( (clicked_button!=15) && (Key!=SDLK_RETURN) );
|
||||
while ( (clicked_button!=13) && (Key!=SDLK_RETURN) );
|
||||
|
||||
Config=Config_choisie;
|
||||
|
||||
@ -1016,11 +963,11 @@ void Add_font_or_skin(const char *name)
|
||||
if (fname)
|
||||
fname++;
|
||||
else
|
||||
fname=name;
|
||||
fname = name;
|
||||
namelength = strlen(fname);
|
||||
if (namelength>=10 && fname[0]!='_' && !strncasecmp(fname, "skin_", 5)
|
||||
&& (!strcasecmp(fname+namelength-4,".png")
|
||||
|| !strcasecmp(fname+namelength-4,".gif")))
|
||||
&& (!strcasecmp(fname + namelength - 4,".png")
|
||||
|| !strcasecmp(fname + namelength - 4,".gif")))
|
||||
{
|
||||
Add_element_to_list(&Skin_files_list, name, 0);
|
||||
|
||||
@ -1031,10 +978,11 @@ void Add_font_or_skin(const char *name)
|
||||
strcpy(Skin_files_list.First->Full_name, fname);
|
||||
// Reformat the short name differently
|
||||
strcpy(Skin_files_list.First->Short_name,
|
||||
Format_filename(Skin_files_list.First->Full_name, 0)
|
||||
);
|
||||
Format_filename(Skin_files_list.First->Full_name, 0)
|
||||
);
|
||||
}
|
||||
else if (namelength>=10 && !strncasecmp(fname, "font_", 5) && (!strcasecmp(fname+namelength-4,".png")))
|
||||
else if (namelength>=10 && !strncasecmp(fname, "font_", 5)
|
||||
&& (!strcasecmp(fname + namelength - 4, ".png")))
|
||||
{
|
||||
Add_element_to_list(&Font_files_list, name, 0);
|
||||
|
||||
@ -1044,7 +992,8 @@ void Add_font_or_skin(const char *name)
|
||||
// Remove directory from full name
|
||||
strcpy(Font_files_list.First->Full_name, fname);
|
||||
// Reformat the short name differently
|
||||
strcpy(Font_files_list.First->Short_name,Format_font_filename(Font_files_list.First->Full_name));
|
||||
strcpy(Font_files_list.First->Short_name,
|
||||
Format_font_filename(Font_files_list.First->Full_name));
|
||||
}
|
||||
|
||||
}
|
||||
@ -1057,10 +1006,16 @@ void Draw_one_skin_name(word x, word y, word index, byte highlighted)
|
||||
if (Skin_files_list.Nb_elements)
|
||||
{
|
||||
current_item = Get_item_by_index(&Skin_files_list, index);
|
||||
Print_in_window(x,y,current_item->Short_name, MC_Black, (highlighted)?MC_Dark:MC_Light);
|
||||
Print_in_window(x, y, current_item->Short_name, MC_Black,
|
||||
(highlighted)?MC_Dark:MC_Light);
|
||||
}
|
||||
}
|
||||
|
||||
#define SWAP_BYTES(a,b) { byte c=a; a=b; b=c;}
|
||||
#define SWAP_WORDS(a,b) { word c=a; a=b; b=c;}
|
||||
#define SWAP_SHORTS(a,b) { short c=a; a=b; b=c;}
|
||||
#define SWAP_FLOATS(a,b) { float c=a; a=b; b=c;}
|
||||
|
||||
/// Skin selector window
|
||||
void Button_Skins(void)
|
||||
{
|
||||
@ -1071,12 +1026,22 @@ void Button_Skins(void)
|
||||
T_Dropdown_button * cursor_dropdown;
|
||||
T_List_button * skin_list;
|
||||
T_Scroller_button * file_scroller;
|
||||
int selected_font=0;
|
||||
int selected_cursor=Config.Cursor;
|
||||
int selected_font = 0;
|
||||
int selected_cursor = Config.Cursor;
|
||||
byte separatecolors = Config.Separate_colors;
|
||||
byte showlimits = Config.Display_image_limits;
|
||||
|
||||
word x, y, x_pos, offs_y;
|
||||
|
||||
char * cursors[] = { "Solid", "Transparent", "Thin" };
|
||||
T_Gui_skin * gfx = NULL;
|
||||
|
||||
#define FILESEL_Y 52
|
||||
|
||||
#define FILESEL_Y 34
|
||||
|
||||
// Show preferred colors
|
||||
Set_color(MC_Dark, Config.Fav_menu_colors[1].R, Config.Fav_menu_colors[1].G, Config.Fav_menu_colors[1].B);
|
||||
Set_color(MC_Light, Config.Fav_menu_colors[2].R, Config.Fav_menu_colors[2].G, Config.Fav_menu_colors[2].B);
|
||||
|
||||
// --- Read the contents of skins/ directory ------------------
|
||||
|
||||
@ -1085,8 +1050,8 @@ void Button_Skins(void)
|
||||
Free_fileselector_list(&Skin_files_list);
|
||||
Free_fileselector_list(&Font_files_list);
|
||||
// Browse the "skins" directory
|
||||
strcpy(skinsdir,Data_directory);
|
||||
strcat(skinsdir,"skins");
|
||||
strcpy(skinsdir, Data_directory);
|
||||
strcat(skinsdir, "skins");
|
||||
// Add each found file to the list
|
||||
For_each_file(skinsdir, Add_font_or_skin);
|
||||
// Sort it
|
||||
@ -1095,47 +1060,63 @@ void Button_Skins(void)
|
||||
|
||||
selected_font = Find_file_in_fileselector(&Font_files_list, Config.Font_file);
|
||||
|
||||
|
||||
// --------------------------------------------------------------
|
||||
|
||||
Open_window(178,155,"Skins");
|
||||
Open_window(290, 140, "Skins");
|
||||
|
||||
// Frames
|
||||
Window_display_frame_in(6,FILESEL_Y-2,148,84); // File selector
|
||||
Window_display_frame_in(6, FILESEL_Y - 2, 148, 84); // File selector
|
||||
|
||||
// Texts
|
||||
Print_in_window( 6, 21,"Font" ,MC_Black,MC_Light);
|
||||
Print_in_window( 6, 36,"Cursor" ,MC_Black,MC_Light);
|
||||
Print_in_window( 172, 33,"Font:" ,MC_Black,MC_Light);
|
||||
Print_in_window( 172, 59,"Cursor:" ,MC_Black,MC_Light);
|
||||
|
||||
// Ok button
|
||||
Window_set_normal_button(6,136, 51,14,"OK" ,0,1,SDLK_RETURN); // 1
|
||||
Window_set_normal_button(6, 120, 51, 14, "OK", 0, 1, SDLK_RETURN); // 1
|
||||
|
||||
// List of skins
|
||||
skin_list = Window_set_list_button(
|
||||
// Fileselector
|
||||
Window_set_special_button(8,FILESEL_Y+1,144,80), // 2
|
||||
// Fileselector
|
||||
Window_set_special_button(8, FILESEL_Y + 1, 144, 80), // 2
|
||||
// Scroller for the fileselector
|
||||
(file_scroller = Window_set_scroller_button(160,FILESEL_Y+1,82,
|
||||
Skin_files_list.Nb_elements,10,0)), // 3
|
||||
(file_scroller = Window_set_scroller_button(155, FILESEL_Y - 1, 82,
|
||||
Skin_files_list.Nb_elements, 10, 0)), // 3
|
||||
Draw_one_skin_name); // 4
|
||||
|
||||
skin_list->Cursor_position = Find_file_in_fileselector(&Skin_files_list, Config.Skin_file);
|
||||
|
||||
// Buttons to choose a font
|
||||
font_dropdown = Window_set_dropdown_button(60,19,104,11,0, Get_item_by_index(&Font_files_list,selected_font)->Short_name,1,0,1,RIGHT_SIDE|LEFT_SIDE); // 5
|
||||
font_dropdown = Window_set_dropdown_button(172, 43, 104, 11, 0, Get_item_by_index(&Font_files_list,selected_font)->Short_name,1,0,1,RIGHT_SIDE|LEFT_SIDE); // 5
|
||||
for (temp=0; temp<Font_files_list.Nb_files; temp++)
|
||||
Window_dropdown_add_item(font_dropdown,temp,Get_item_by_index(&Font_files_list,temp)->Short_name);
|
||||
|
||||
// Cancel
|
||||
Window_set_normal_button(62,136, 51,14,"Cancel",0,1,SDLK_ESCAPE); // 6
|
||||
Window_set_normal_button(61, 120, 51,14,"Cancel",0,1,SDLK_ESCAPE); // 6
|
||||
|
||||
// Dropdown list to choose cursor type
|
||||
cursor_dropdown = Window_set_dropdown_button(60,34,104,11,0,cursors[selected_cursor],1,0,1,RIGHT_SIDE|LEFT_SIDE); // 7
|
||||
for (temp=0; temp<3; temp++)
|
||||
Window_dropdown_add_item(cursor_dropdown,temp,cursors[temp]);
|
||||
cursor_dropdown = Window_set_dropdown_button(172, 69, 104, 11, 0,
|
||||
cursors[selected_cursor], 1, 0, 1, RIGHT_SIDE|LEFT_SIDE); // 7
|
||||
for (temp = 0; temp<3; temp++)
|
||||
Window_dropdown_add_item(cursor_dropdown, temp, cursors[temp]);
|
||||
|
||||
Window_set_normal_button(172, 87, 14, 14,
|
||||
(Config.Display_image_limits)?"X":" ", -1, 1, SDLK_LAST); // 8
|
||||
Print_in_window( 190, 85,"Draw picture", MC_Dark, MC_Light);
|
||||
Print_in_window( 190, 94,"limits", MC_Dark, MC_Light);
|
||||
|
||||
Window_set_normal_button(172, 111, 14, 14,
|
||||
(Config.Separate_colors)?"X":" ", -1, 1, SDLK_LAST); // 9
|
||||
Print_in_window( 190, 109,"Separate", MC_Dark, MC_Light);
|
||||
Print_in_window( 190, 118,"colors", MC_Dark, MC_Light);
|
||||
|
||||
Window_redraw_list(skin_list);
|
||||
|
||||
Update_window_area(0,0,Window_width, Window_height);
|
||||
for (y = 14, offs_y = 0; offs_y < 16; offs_y++, y++)
|
||||
for (x = 6, x_pos = 0; x_pos<173; x_pos++, x++)
|
||||
Pixel_in_window(x, y, Gfx->Preview[offs_y][x_pos]);
|
||||
|
||||
Update_window_area(0, 0, Window_width, Window_height);
|
||||
|
||||
Display_cursor();
|
||||
|
||||
@ -1145,175 +1126,118 @@ void Button_Skins(void)
|
||||
|
||||
switch(clicked_button)
|
||||
{
|
||||
case 1 : // OK
|
||||
break;
|
||||
case 1 : // OK
|
||||
break;
|
||||
case 2 : // doesn't happen
|
||||
break;
|
||||
case 3 : // doesn't happen
|
||||
break;
|
||||
case 4 : // a file is selected
|
||||
break;
|
||||
case 5 : // Font dropdown
|
||||
selected_font=Window_attribute2; // Get the index of the chosen font.
|
||||
break;
|
||||
// 5: Cancel
|
||||
case 7 : // Cursor
|
||||
selected_cursor = Window_attribute2;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (Key)
|
||||
{
|
||||
case SDLK_UNKNOWN : break;
|
||||
/*
|
||||
case SDLK_DOWN : // Bas
|
||||
*quicksearch_filename=0;
|
||||
Hide_cursor();
|
||||
Selector_scroll_down(&Main_fileselector_position,&Main_fileselector_offset);
|
||||
if (file_scroller->Position!=Main_fileselector_position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Main_fileselector_position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
Key=0;
|
||||
break;
|
||||
case SDLK_UP : // Haut
|
||||
*quicksearch_filename=0;
|
||||
Hide_cursor();
|
||||
Selector_scroll_up(&Main_fileselector_position,&Main_fileselector_offset);
|
||||
if (file_scroller->Position!=Main_fileselector_position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Main_fileselector_position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
Key=0;
|
||||
break;
|
||||
case SDLK_PAGEDOWN : // PageDown
|
||||
case KEY_MOUSEWHEELDOWN :
|
||||
*quicksearch_filename=0;
|
||||
Hide_cursor();
|
||||
Selector_page_down(&Main_fileselector_position,&Main_fileselector_offset,9);
|
||||
if (file_scroller->Position!=Main_fileselector_position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Main_fileselector_position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
Key=0;
|
||||
break;
|
||||
case SDLK_PAGEUP : // PageUp
|
||||
case KEY_MOUSEWHEELUP :
|
||||
*quicksearch_filename=0;
|
||||
Hide_cursor();
|
||||
Selector_page_up(&Main_fileselector_position,&Main_fileselector_offset,9);
|
||||
if (file_scroller->Position!=Main_fileselector_position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Main_fileselector_position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
Key=0;
|
||||
break;
|
||||
case SDLK_END : // End
|
||||
*quicksearch_filename=0;
|
||||
Hide_cursor();
|
||||
Selector_end(&Main_fileselector_position,&Main_fileselector_offset);
|
||||
if (file_scroller->Position!=Main_fileselector_position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Main_fileselector_position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
Key=0;
|
||||
break;
|
||||
case SDLK_HOME : // Home
|
||||
*quicksearch_filename=0;
|
||||
Hide_cursor();
|
||||
Selector_home(&Main_fileselector_position,&Main_fileselector_offset);
|
||||
if (file_scroller->Position!=Main_fileselector_position)
|
||||
{
|
||||
// Si c'est le cas, il faut mettre à jour la jauge
|
||||
file_scroller->Position=Main_fileselector_position;
|
||||
Window_draw_slider(file_scroller);
|
||||
}
|
||||
Key=0;
|
||||
break;
|
||||
default: // Autre => On se place sur le nom de fichier qui correspond
|
||||
if (clicked_button<=0)
|
||||
// (Re-)load GUI graphics from selected skins
|
||||
strcpy(skinsdir, Get_item_by_index(&Skin_files_list,
|
||||
skin_list->List_start + skin_list->Cursor_position)->Full_name);
|
||||
|
||||
gfx = Load_graphics(skinsdir);
|
||||
if (gfx == NULL) // Error
|
||||
{
|
||||
if (Is_shortcut(Key,0x100+BUTTON_HELP))
|
||||
{
|
||||
Window_help(BUTTON_SETTINGS, NULL);
|
||||
break;
|
||||
}
|
||||
temp=strlen(quicksearch_filename);
|
||||
if (Key_ANSI>= ' ' && Key_ANSI < 255 && temp<50)
|
||||
{
|
||||
quicksearch_filename[temp]=Key_ANSI;
|
||||
quicksearch_filename[temp+1]='\0';
|
||||
most_matching_filename=Find_filename_match(Skin_files_list, quicksearch_filename);
|
||||
if ( (most_matching_filename) )
|
||||
{
|
||||
temp=Main_fileselector_position+Main_fileselector_offset;
|
||||
Hide_cursor();
|
||||
Highlight_file(most_matching_filename);
|
||||
Prepare_and_display_filelist(Main_fileselector_position,Main_fileselector_offset,file_scroller);
|
||||
Display_cursor();
|
||||
if (temp!=Main_fileselector_position+Main_fileselector_offset)
|
||||
New_preview_is_needed=1;
|
||||
}
|
||||
else
|
||||
*quicksearch_filename=0;
|
||||
Key=0;
|
||||
}
|
||||
Verbose_error_message(Gui_loading_error_message);
|
||||
// Update preview
|
||||
Window_rectangle(6, 14, 173, 16, MC_Light);
|
||||
}
|
||||
else
|
||||
*quicksearch_filename=0;
|
||||
*/
|
||||
{
|
||||
// Update preview
|
||||
|
||||
// Display the bitmap according to its own color indices
|
||||
for (y = 14, offs_y = 0; offs_y < 16; offs_y++, y++)
|
||||
for (x = 6, x_pos = 0; x_pos<173; x_pos++, x++)
|
||||
{
|
||||
if (gfx->Preview[offs_y][x_pos] == gfx->Color_black)
|
||||
Pixel_in_window(x, y, MC_Black);
|
||||
else if (gfx->Preview[offs_y][x_pos] == gfx->Color_dark)
|
||||
Pixel_in_window(x, y, MC_Dark);
|
||||
else if (gfx->Preview[offs_y][x_pos] == gfx->Color_white)
|
||||
Pixel_in_window(x, y, MC_White);
|
||||
else if (gfx->Preview[offs_y][x_pos] == gfx->Color_light)
|
||||
Pixel_in_window(x, y, MC_Light);
|
||||
}
|
||||
// Actualize current screen according to preferred GUI colors
|
||||
Set_color(
|
||||
MC_Dark,
|
||||
gfx->Default_palette[gfx->Color_dark].R,
|
||||
gfx->Default_palette[gfx->Color_dark].G,
|
||||
gfx->Default_palette[gfx->Color_dark].B);
|
||||
Set_color(
|
||||
MC_Light,
|
||||
gfx->Default_palette[gfx->Color_light].R,
|
||||
gfx->Default_palette[gfx->Color_light].G,
|
||||
gfx->Default_palette[gfx->Color_light].B);
|
||||
}
|
||||
Update_window_area(6, 14, 173, 16);
|
||||
|
||||
break;
|
||||
case 5 : // Font dropdown
|
||||
selected_font = Window_attribute2; // Get the index of the chosen font.
|
||||
break;
|
||||
// 6: Cancel
|
||||
case 7 : // Cursor
|
||||
selected_cursor = Window_attribute2;
|
||||
break;
|
||||
case 8: // Display limits
|
||||
showlimits = !showlimits;
|
||||
Hide_cursor();
|
||||
Print_in_window(175, 90, (showlimits)?"X":" ", MC_Black, MC_Light);
|
||||
Display_cursor();
|
||||
break;
|
||||
case 9: // Separate colors
|
||||
separatecolors = !separatecolors;
|
||||
Hide_cursor();
|
||||
Print_in_window(175, 114, (separatecolors)?"X":" ", MC_Black, MC_Light);
|
||||
Display_cursor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
while ( (clicked_button!=1) && (clicked_button !=6) && (Key != SDLK_ESCAPE));
|
||||
|
||||
if(clicked_button == 1)
|
||||
{
|
||||
T_Gui_skin * gfx;
|
||||
byte * new_font;
|
||||
|
||||
// (Re-)load GUI graphics from selected skins
|
||||
strcpy(skinsdir, Get_item_by_index(&Skin_files_list, skin_list->List_start+skin_list->Cursor_position)->Full_name);
|
||||
gfx=Load_graphics(skinsdir);
|
||||
if (gfx == NULL) // Error
|
||||
if (gfx != NULL)
|
||||
{
|
||||
Verbose_error_message(Gui_loading_error_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(Gfx);
|
||||
Gfx = gfx;
|
||||
|
||||
free(Config.Skin_file);
|
||||
Config.Skin_file = strdup(skinsdir);
|
||||
Set_current_skin(skinsdir, gfx);
|
||||
}
|
||||
// (Re-)load the selected font
|
||||
new_font = Load_font(Get_item_by_index(&Font_files_list,selected_font)->Full_name);
|
||||
if (new_font)
|
||||
{
|
||||
const char * fname;
|
||||
// (Re-)load the selected font
|
||||
new_font = Load_font(Get_item_by_index(&Font_files_list,selected_font)->Full_name);
|
||||
if (new_font)
|
||||
{
|
||||
const char * fname;
|
||||
|
||||
free(Menu_font);
|
||||
Menu_font = new_font;
|
||||
fname = Get_item_by_index(&Font_files_list,selected_font)->Full_name;
|
||||
free(Config.Font_file);
|
||||
Config.Font_file = strdup(fname);
|
||||
}
|
||||
free(Menu_font);
|
||||
Menu_font = new_font;
|
||||
fname = Get_item_by_index(&Font_files_list,selected_font)->Full_name;
|
||||
free(Config.Font_file);
|
||||
Config.Font_file = strdup(fname);
|
||||
}
|
||||
// Confirm the change of cursor shape
|
||||
Config.Cursor = selected_cursor;
|
||||
Config.Cursor = selected_cursor;
|
||||
Config.Display_image_limits = showlimits;
|
||||
Config.Separate_colors = separatecolors;
|
||||
|
||||
// Now find the best colors for the new skin in the current palette
|
||||
// and remap the skin
|
||||
Compute_optimal_menu_colors(Main_palette);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_palette(Main_palette);
|
||||
}
|
||||
|
||||
Close_window();
|
||||
Unselect_button(BUTTON_SETTINGS);
|
||||
|
||||
// Raffichage du menu pour que les inscriptions qui y figurent soient retracées avec la nouvelle fonte
|
||||
Display_menu();
|
||||
Display_cursor();
|
||||
@ -1323,14 +1247,9 @@ void Button_Skins(void)
|
||||
//---------------------------- Changement de page ----------------------------
|
||||
void Button_Page(void)
|
||||
{
|
||||
byte factor_index;
|
||||
byte factor_index;
|
||||
char Temp_buffer[256];
|
||||
|
||||
#define SWAP_BYTES(a,b) { byte c=a; a=b; b=c;}
|
||||
#define SWAP_WORDS(a,b) { word c=a; a=b; b=c;}
|
||||
#define SWAP_SHORTS(a,b) { short c=a; a=b; b=c;}
|
||||
#define SWAP_FLOATS(a,b) { float c=a; a=b; b=c;}
|
||||
|
||||
Hide_cursor();
|
||||
|
||||
// On dégrossit le travail avec les infos des listes de pages
|
||||
@ -1616,30 +1535,30 @@ void Display_modes_list(short list_start, short cursor_position)
|
||||
if(Video_mode[current_mode].Fullscreen == 0)
|
||||
memcpy(str+9," Window ",20);
|
||||
else
|
||||
{
|
||||
{
|
||||
memcpy(str+9," Fullscreen ",13);
|
||||
|
||||
if (Video_mode[current_mode].Width*3 == Video_mode[current_mode].Height*4)
|
||||
ratio=" 4:3";
|
||||
else if (Video_mode[current_mode].Width*9 == Video_mode[current_mode].Height*16)
|
||||
ratio=" 16:9";
|
||||
else if (Video_mode[current_mode].Width*10 == Video_mode[current_mode].Height*16)
|
||||
ratio=" 16:10";
|
||||
else if (Video_mode[current_mode].Width*145 == Video_mode[current_mode].Height*192)
|
||||
ratio="192:145";
|
||||
else if (Video_mode[current_mode].Width*2 == Video_mode[current_mode].Height*3)
|
||||
ratio=" 3:2";
|
||||
else if (Video_mode[current_mode].Width*3 == Video_mode[current_mode].Height*5)
|
||||
ratio=" 5:3";
|
||||
else if (Video_mode[current_mode].Width*4 == Video_mode[current_mode].Height*5)
|
||||
ratio=" 5:4";
|
||||
else if (Video_mode[current_mode].Width*16 == Video_mode[current_mode].Height*25)
|
||||
ratio=" 25:16";
|
||||
else
|
||||
ratio=" ";
|
||||
if (Video_mode[current_mode].Width*3 == Video_mode[current_mode].Height*4)
|
||||
ratio=" 4:3";
|
||||
else if (Video_mode[current_mode].Width*9 == Video_mode[current_mode].Height*16)
|
||||
ratio=" 16:9";
|
||||
else if (Video_mode[current_mode].Width*10 == Video_mode[current_mode].Height*16)
|
||||
ratio=" 16:10";
|
||||
else if (Video_mode[current_mode].Width*145 == Video_mode[current_mode].Height*192)
|
||||
ratio="192:145";
|
||||
else if (Video_mode[current_mode].Width*2 == Video_mode[current_mode].Height*3)
|
||||
ratio=" 3:2";
|
||||
else if (Video_mode[current_mode].Width*3 == Video_mode[current_mode].Height*5)
|
||||
ratio=" 5:3";
|
||||
else if (Video_mode[current_mode].Width*4 == Video_mode[current_mode].Height*5)
|
||||
ratio=" 5:4";
|
||||
else if (Video_mode[current_mode].Width*16 == Video_mode[current_mode].Height*25)
|
||||
ratio=" 25:16";
|
||||
else
|
||||
ratio=" ";
|
||||
|
||||
strcpy(str+21,ratio);
|
||||
}
|
||||
strcpy(str+21,ratio);
|
||||
}
|
||||
|
||||
Print_in_window(38,y_pos,str,text_color,background_color);
|
||||
}
|
||||
@ -2812,7 +2731,7 @@ void Load_picture(byte image)
|
||||
Brush_width=1;
|
||||
*Brush=Fore_color;
|
||||
|
||||
free(Smear_brush);
|
||||
free(Smear_brush);
|
||||
Smear_brush=(byte *)malloc(MAX_PAINTBRUSH_SIZE*MAX_PAINTBRUSH_SIZE);
|
||||
Smear_brush_height=MAX_PAINTBRUSH_SIZE;
|
||||
Smear_brush_width=MAX_PAINTBRUSH_SIZE;
|
||||
@ -5709,7 +5628,7 @@ void Button_Text()
|
||||
cursor_position = font_list->Cursor_position;
|
||||
|
||||
free(new_brush);
|
||||
new_brush = NULL;
|
||||
new_brush = NULL;
|
||||
Close_window();
|
||||
Unselect_button(BUTTON_TEXT);
|
||||
Display_cursor();
|
||||
|
||||
16
buttons.h
16
buttons.h
@ -17,10 +17,10 @@
|
||||
along with Grafx2; if not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
///@file buttons.h
|
||||
/// Almost all the editor actions that are called by the menu are here.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __BOUTONS_H_
|
||||
#define __BOUTONS_H_
|
||||
@ -28,19 +28,21 @@
|
||||
#include "struct.h"
|
||||
|
||||
/*!
|
||||
Displays an error message when there is no more memory for the requested operation.
|
||||
Displays an error message when there is no more memory for the requested
|
||||
operation.
|
||||
*/
|
||||
void Message_out_of_memory(void);
|
||||
|
||||
/*!
|
||||
Displays the splash screen at program startup.
|
||||
Displays the splash screen at program startup.
|
||||
*/
|
||||
void Button_Message_initial(void);
|
||||
|
||||
/*!
|
||||
Changes brush shape.
|
||||
This function saves the current brush shape and swith to the default one (single pixel brush) for the filler and the color picker.
|
||||
These functions don't need (and will not work with) a custom brush.
|
||||
Changes brush shape.
|
||||
This function saves the current brush shape and swith to the default one
|
||||
(single pixel brush) for the filler and the color picker.
|
||||
These functions don't need (and will not work with) a custom brush.
|
||||
*/
|
||||
void Change_paintbrush_shape(byte shape);
|
||||
|
||||
|
||||
4
const.h
4
const.h
@ -241,8 +241,8 @@ enum CHUNKS_CFG
|
||||
/// Identifiers for the 8x8 icons of ::Gfx->Icon_sprite (most are unused now)
|
||||
enum ICON_TYPES
|
||||
{
|
||||
ICON_FLOPPY_3_5=0, ///< 3½" Floppy disk
|
||||
ICON_FLOPPY_5_25, ///< 5¼" Floppy disk
|
||||
ICON_FLOPPY_3_5=0, ///< 3.5 Floppy disk
|
||||
ICON_FLOPPY_5_25, ///< 5.25 Floppy disk
|
||||
ICON_HDD, ///< Hard disk drive
|
||||
ICON_CDROM, ///< CD-ROM
|
||||
ICON_NETWORK, ///< "Network" drive
|
||||
|
||||
@ -68,6 +68,11 @@ To compile a gp2x executable, type
|
||||
This will only work on an UNIXsystem (Linux or FreeBSD).
|
||||
|
||||
== Windows ==
|
||||
|
||||
It is also possible to compile from linux, with this command :
|
||||
make WIN32CROSS=1
|
||||
You will need the mingw cross-compiler, and all the librairies listed above.
|
||||
|
||||
Here are the resources used to build the Windows version:
|
||||
|
||||
4DOS
|
||||
@ -141,6 +146,14 @@ SDL_ttf:
|
||||
SDL_ttf-2.0.9-win32.zip for DLLs: libfreetype-6.dll, SDL_ttf.dll, zlib1.dll
|
||||
SDL_ttf-2.0.9.tar.gz
|
||||
|
||||
It is also possible to compile from linux, with this command :
|
||||
make WIN32CROSS=1
|
||||
You will need the mingw cross-compiler, and all the librairies listed above.
|
||||
Lua:
|
||||
(optional)
|
||||
http://www.lua.org/ftp/lua-5.1.4.tar.gz
|
||||
Uncompress in temporary directory
|
||||
Use sh shell
|
||||
make mingw
|
||||
(make install doesn't work, even with prefix)
|
||||
Copy luaconf.h, lualib.h, lua.h, lauxlib.h to c:\msys\mingw\include\lua5.1
|
||||
Copy liblua.a to c:\msys\mingw\lib RENAMED AS liblua5.1.a
|
||||
Copy lua51.dll to c:\msys\mingw\bin
|
||||
|
||||
|
||||
24
doc/README-lua.txt
Normal file
24
doc/README-lua.txt
Normal file
@ -0,0 +1,24 @@
|
||||
The Windows distribution of Grafx2 is compiled and statically linked with
|
||||
Lua v5.1.4
|
||||
|
||||
Lua is licensed with the MIT license:
|
||||
|
||||
Copyright © 1994-2008 Lua.org, PUC-Rio.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
6
engine.c
6
engine.c
@ -16,7 +16,7 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Grafx2; if not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
/// @file Window engine and interface management
|
||||
/// @file engine.c: Window engine and interface management
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
@ -80,7 +80,11 @@ char * Menu_tooltip[NB_BUTTONS]=
|
||||
"Grad. spheres / ellipses",
|
||||
"Brush grab. / Restore ",
|
||||
"Lasso / Restore brush ",
|
||||
#ifdef __ENABLE_LUA__
|
||||
"Brush effects / factory ",
|
||||
#else
|
||||
"Brush effects ",
|
||||
#endif
|
||||
"Drawing modes (effects) ",
|
||||
"Text ",
|
||||
"Magnify mode / Menu ",
|
||||
|
||||
34
engine.h
34
engine.h
@ -49,38 +49,44 @@ void Window_draw_scroller_bouton(T_Scroller_button * button);
|
||||
|
||||
void Window_input_content(T_Special_button * button, char * content);
|
||||
void Window_clear_input_button(T_Special_button * button);
|
||||
void Window_draw_input_bouton(word x_pos,word y_pos,word width_in_characters);
|
||||
void Window_draw_input_bouton(word x_pos, word y_pos, word width_in_characters);
|
||||
|
||||
T_Normal_button * Window_set_normal_button(word x_pos, word y_pos,
|
||||
word width, word height,
|
||||
char * title,byte undersc_letter,
|
||||
byte clickable, word shortcut);
|
||||
word width, word height, char * title, byte undersc_letter,
|
||||
byte clickable, word shortcut);
|
||||
|
||||
T_Normal_button * Window_set_repeatable_button(word x_pos, word y_pos,
|
||||
word width, word height,
|
||||
char * title,byte undersc_letter,
|
||||
byte clickable, word shortcut);
|
||||
word width, word height, char * title, byte undersc_letter,
|
||||
byte clickable, word shortcut);
|
||||
|
||||
T_Palette_button * Window_set_palette_button(word x_pos, word y_pos);
|
||||
void Window_clear_tags(void);
|
||||
void Tag_color_range(byte start,byte end);
|
||||
void Tag_color_range(byte start, byte end);
|
||||
|
||||
T_Scroller_button * Window_set_scroller_button(word x_pos, word y_pos,
|
||||
word height, word nb_elements, word nb_elements_visible,
|
||||
word initial_position);
|
||||
T_Special_button * Window_set_special_button(word x_pos,word y_pos,word width,
|
||||
|
||||
T_Special_button * Window_set_special_button(word x_pos, word y_pos, word width,
|
||||
word height);
|
||||
T_Special_button * Window_set_input_button(word x_pos,word y_pos,
|
||||
|
||||
T_Special_button * Window_set_input_button(word x_pos, word y_pos,
|
||||
word width_in_characters);
|
||||
T_Dropdown_button * Window_set_dropdown_button(word x_pos,word y_pos,word width,
|
||||
word height,word dropdown_width,const char *label,byte display_choice,
|
||||
byte display_centered,byte display_arrow,byte active_button);
|
||||
|
||||
T_Dropdown_button * Window_set_dropdown_button(word x_pos, word y_pos,
|
||||
word width, word height, word dropdown_width, const char *label,
|
||||
byte display_choice, byte display_centered, byte display_arrow,
|
||||
byte active_button);
|
||||
|
||||
/// Adds an item to a dropdown menu
|
||||
void Window_dropdown_add_item(T_Dropdown_button * dropdown, word btn_number,
|
||||
const char *label);
|
||||
|
||||
void Window_dropdown_clear_items(T_Dropdown_button * dropdown);
|
||||
T_List_button * Window_set_list_button(T_Special_button * entry_button,
|
||||
T_Scroller_button * scroller, Func_draw_list_item draw_list_item);
|
||||
void Window_redraw_list(T_List_button * list);
|
||||
byte Window_click_in_rectangle(short start_x,short start_y,short end_x,
|
||||
byte Window_click_in_rectangle(short start_x, short start_y, short end_x,
|
||||
short end_y);
|
||||
short Wait_click_in_palette(T_Palette_button * button);
|
||||
void Get_color_behind_window(byte * color, byte * click);
|
||||
|
||||
2
errors.h
2
errors.h
@ -21,7 +21,7 @@
|
||||
/// Functions and macros for tracing and error reporting.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __func__
|
||||
#ifdef __VBCC__
|
||||
#define __func__ "stupid compiler !"
|
||||
#endif
|
||||
|
||||
|
||||
229
factory.c
Normal file
229
factory.c
Normal file
@ -0,0 +1,229 @@
|
||||
/* Grafx2 - The Ultimate 256-color bitmap paint program
|
||||
|
||||
Copyright 2009 Adrien Destugues
|
||||
|
||||
Grafx2 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; version 2
|
||||
of the License.
|
||||
|
||||
Grafx2 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 Grafx2; if not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
/*! \file factory.c
|
||||
* \brief Brush factory - generates brush from lua scripts
|
||||
*
|
||||
* The brush factory allows you to generate brushes with Lua code.
|
||||
*/
|
||||
|
||||
#include "brush.h"
|
||||
#include "buttons.h"
|
||||
#include "engine.h"
|
||||
#include "errors.h"
|
||||
#include "filesel.h" // Get_item_by_index
|
||||
#include "global.h"
|
||||
#include "graph.h"
|
||||
#include "io.h" // find_last_slash
|
||||
#include "misc.h"
|
||||
#include "readline.h"
|
||||
#include "sdlscreen.h"
|
||||
#include "windows.h"
|
||||
|
||||
#ifdef __ENABLE_LUA__
|
||||
|
||||
#include <lua5.1/lua.h>
|
||||
#include <lua5.1/lauxlib.h>
|
||||
|
||||
// Wrapper functions to call C from Lua
|
||||
|
||||
int L_SetBrushSize(lua_State* L)
|
||||
{
|
||||
Realloc_brush(lua_tonumber(L, 1), lua_tonumber(L, 2));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int L_GetBrushSize(lua_State* L)
|
||||
{
|
||||
DEBUG("GBS",Brush_width);
|
||||
lua_pushinteger(L, Brush_width);
|
||||
lua_pushinteger(L, Brush_height);
|
||||
return 2;
|
||||
}
|
||||
|
||||
int L_PutBrushPixel(lua_State* L)
|
||||
{
|
||||
Pixel_in_brush(lua_tonumber(L, 1), lua_tonumber(L, 2), lua_tonumber(L, 3));
|
||||
return 0; // no values returned for lua
|
||||
}
|
||||
|
||||
int L_GetBrushPixel(lua_State* L)
|
||||
{
|
||||
uint8_t c = Read_pixel_from_brush(lua_tonumber(L, 1), lua_tonumber(L, 2));
|
||||
lua_pushinteger(L, c);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int L_SetPictureSize(lua_State* L)
|
||||
{
|
||||
Resize_image(lua_tonumber(L, 1), lua_tonumber(L, 2));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int L_GetPictureSize(lua_State* L)
|
||||
{
|
||||
lua_pushinteger(L, Main_image_width);
|
||||
lua_pushinteger(L, Main_image_height);
|
||||
return 2;
|
||||
}
|
||||
|
||||
int L_PutPicturePixel(lua_State* L)
|
||||
{
|
||||
Pixel_in_current_screen(lua_tonumber(L, 1), lua_tonumber(L, 2),
|
||||
lua_tonumber(L, 3),1);
|
||||
return 0; // no values returned for lua
|
||||
}
|
||||
|
||||
int L_GetPicturePixel(lua_State* L)
|
||||
{
|
||||
uint8_t c = Read_pixel_from_current_screen(lua_tonumber(L, 1),
|
||||
lua_tonumber(L, 2));
|
||||
lua_pushinteger(L, c);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int L_SetColor(lua_State* L)
|
||||
{
|
||||
Set_color(lua_tonumber(L, 1), lua_tonumber(L, 2), lua_tonumber(L, 3),
|
||||
lua_tonumber(L, 4));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int L_GetColor(lua_State* L)
|
||||
{
|
||||
T_Components couleur;
|
||||
couleur = Main_palette[(int)(lua_tonumber(L,1))];
|
||||
|
||||
lua_pushinteger(L, couleur.R);
|
||||
lua_pushinteger(L, couleur.G);
|
||||
lua_pushinteger(L, couleur.B);
|
||||
return 3;
|
||||
}
|
||||
|
||||
int L_BrushEnable(__attribute__((unused)) lua_State* L)
|
||||
{
|
||||
Change_paintbrush_shape(PAINTBRUSH_SHAPE_COLOR_BRUSH);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Handlers for window internals
|
||||
T_Fileselector Scripts_list;
|
||||
|
||||
// Callback to display a skin name in the list
|
||||
void Draw_script_name(word x, word y, word index, byte highlighted)
|
||||
{
|
||||
T_Fileselector_item * current_item;
|
||||
|
||||
DEBUG("draw",index);
|
||||
if (Scripts_list.Nb_elements)
|
||||
{
|
||||
current_item = Get_item_by_index(&Scripts_list, index);
|
||||
Print_in_window(x, y, current_item->Short_name, MC_Black,
|
||||
(highlighted)?MC_Dark:MC_Light);
|
||||
}
|
||||
}
|
||||
|
||||
// Add a skin to the list
|
||||
void Add_script(const char *name)
|
||||
{
|
||||
Add_element_to_list(&Scripts_list, Find_last_slash(name)+1, 0);
|
||||
}
|
||||
|
||||
void Button_Brush_Factory(void)
|
||||
{
|
||||
short clicked_button;
|
||||
T_List_button* scriptlist;
|
||||
T_Scroller_button* scriptscroll;
|
||||
char scriptdir[MAX_PATH_CHARACTERS];
|
||||
|
||||
Open_window(175, 162, "Brush Factory");
|
||||
|
||||
// Here we use the same data container as the fileselectors.
|
||||
// Reinitialize the list
|
||||
Free_fileselector_list(&Scripts_list);
|
||||
strcpy(scriptdir, Data_directory);
|
||||
strcat(scriptdir, "scripts/");
|
||||
// Add each found file to the list
|
||||
For_each_file(scriptdir, Add_script);
|
||||
// Sort it
|
||||
Sort_list_of_files(&Scripts_list);
|
||||
|
||||
Window_set_normal_button(77, 141, 67, 14, "Cancel", 0, 1, KEY_ESC); // 1
|
||||
Window_set_normal_button(10, 141, 67, 14, "Run", 0, 1, 0); // 2
|
||||
|
||||
#define FILESEL_Y 18
|
||||
Window_display_frame_in(6, FILESEL_Y - 2, 148, 84); // File selector
|
||||
scriptlist = Window_set_list_button(
|
||||
// Fileselector
|
||||
Window_set_special_button(8, FILESEL_Y + 1, 144, 80), // 3
|
||||
// Scroller for the fileselector
|
||||
(scriptscroll = Window_set_scroller_button(154, FILESEL_Y - 1, 82,
|
||||
Scripts_list.Nb_elements, 10, 0)), // 4
|
||||
Draw_script_name); // 5
|
||||
Window_redraw_list(scriptlist);
|
||||
|
||||
Update_window_area(0, 0, Window_width, Window_height);
|
||||
Display_cursor();
|
||||
|
||||
do {
|
||||
clicked_button = Window_clicked_button();
|
||||
|
||||
switch (clicked_button)
|
||||
{
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
} while (clicked_button <= 0 || clicked_button >= 3);
|
||||
|
||||
if (clicked_button == 2) // Run the script
|
||||
{
|
||||
lua_State* L = lua_open();
|
||||
|
||||
lua_register(L,"putbrushpixel",L_PutBrushPixel);
|
||||
lua_register(L,"getbrushpixel",L_GetBrushPixel);
|
||||
lua_register(L,"putpicturepixel",L_PutPicturePixel);
|
||||
lua_register(L,"getpicturepixel",L_GetPicturePixel);
|
||||
lua_register(L,"setbrushsize",L_SetBrushSize);
|
||||
lua_register(L,"setpicturesize",L_SetPictureSize);
|
||||
lua_register(L,"getbrushsize",L_GetBrushSize);
|
||||
lua_register(L,"getpicturesize",L_GetPictureSize);
|
||||
lua_register(L,"setcolor",L_SetColor);
|
||||
lua_register(L,"getcolor",L_GetColor);
|
||||
lua_register(L,"brushenable",L_BrushEnable);
|
||||
|
||||
// For debug only
|
||||
// luaL_openlibs(L);
|
||||
|
||||
strcat(scriptdir, Get_item_by_index(&Scripts_list,
|
||||
scriptlist->List_start + scriptlist->Cursor_position)
|
||||
-> Full_name);
|
||||
if (luaL_loadfile(L,scriptdir) != 0)
|
||||
Verbose_error_message(lua_tostring(L, 1));
|
||||
else if (lua_pcall(L, 0, 0, 0) != 0)
|
||||
Verbose_error_message(lua_tostring(L, 1));
|
||||
|
||||
lua_close(L);
|
||||
}
|
||||
|
||||
Close_window();
|
||||
Unselect_button(BUTTON_BRUSH_EFFECTS);
|
||||
Display_cursor();
|
||||
}
|
||||
|
||||
#endif
|
||||
3557
fileformats.c
Normal file
3557
fileformats.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -1644,6 +1644,9 @@ byte Button_Load_or_Save(byte load, byte image)
|
||||
Prepare_and_display_filelist(Main_fileselector_position,Main_fileselector_offset,file_scroller);
|
||||
Display_cursor();
|
||||
New_preview_is_needed=1;
|
||||
|
||||
// On est dans un nouveau répertoire, donc on remet le quicksearch à 0
|
||||
*quicksearch_filename=0;
|
||||
}
|
||||
else // Sinon on essaye de charger ou sauver le fichier
|
||||
{
|
||||
|
||||
@ -32,7 +32,7 @@ void Add_element_to_list(T_Fileselector *list, const char * fname, int type);
|
||||
///
|
||||
/// Formats a display name for a file, directory, or similar name (drive, volume).
|
||||
/// The returned value is a pointer to a single static buffer of 19 characters
|
||||
/// including the '\0'.
|
||||
/// including the '\\0'.
|
||||
char * Format_filename(const char * fname, int type);
|
||||
|
||||
void Free_fileselector_list(T_Fileselector *list);
|
||||
|
||||
3
global.h
3
global.h
@ -71,9 +71,6 @@ GFX2_GLOBAL byte MC_Light; ///< Index of color to use as "light grey" in the GUI
|
||||
GFX2_GLOBAL byte MC_White; ///< Index of color to use as "white" in the GUI menus.
|
||||
GFX2_GLOBAL byte MC_Trans; ///< Index of color to use as "transparent" while loading the GUI file.
|
||||
|
||||
/// Favorite menu colors (RGB values).
|
||||
GFX2_GLOBAL T_Components Fav_menu_colors[4];
|
||||
|
||||
// Input state
|
||||
GFX2_GLOBAL word Mouse_X; ///< Current mouse cursor position.
|
||||
GFX2_GLOBAL word Mouse_Y; ///< Current mouse cursor position.
|
||||
|
||||
3
help.c
3
help.c
@ -47,6 +47,9 @@
|
||||
#include "errors.h"
|
||||
#include "pages.h"
|
||||
|
||||
extern char Program_version[]; // generated in pversion.c
|
||||
extern char SVN_revision[]; // generated in pversion.c
|
||||
|
||||
// Recherche un raccourci clavier:
|
||||
word * Shortcut(word shortcut_number)
|
||||
{
|
||||
|
||||
145
init.c
145
init.c
@ -48,26 +48,27 @@
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
#include "buttons.h"
|
||||
#include "const.h"
|
||||
#include "struct.h"
|
||||
#include "errors.h"
|
||||
#include "global.h"
|
||||
#include "graph.h"
|
||||
#include "buttons.h"
|
||||
#include "palette.h"
|
||||
#include "help.h"
|
||||
#include "operatio.h"
|
||||
#include "misc.h"
|
||||
#include "errors.h"
|
||||
#include "keyboard.h"
|
||||
#include "io.h"
|
||||
#include "hotkeys.h"
|
||||
#include "setup.h"
|
||||
#include "windows.h"
|
||||
#include "sdlscreen.h"
|
||||
#include "mountlist.h" // read_file_system_list
|
||||
#include "loadsave.h" // Image_emergency_backup
|
||||
#include "init.h"
|
||||
#include "io.h"
|
||||
#include "factory.h"
|
||||
#include "help.h"
|
||||
#include "hotkeys.h"
|
||||
#include "keyboard.h"
|
||||
#include "loadsave.h" // Image_emergency_backup
|
||||
#include "misc.h"
|
||||
#include "mountlist.h" // read_file_system_list
|
||||
#include "operatio.h"
|
||||
#include "palette.h"
|
||||
#include "sdlscreen.h"
|
||||
#include "setup.h"
|
||||
#include "struct.h"
|
||||
#include "transform.h"
|
||||
#include "windows.h"
|
||||
|
||||
char Gui_loading_error_message[512];
|
||||
|
||||
@ -122,11 +123,11 @@ byte GUI_seek_right(SDL_Surface *gui, int *start_x, int start_y, byte neutral_co
|
||||
return 1;
|
||||
}
|
||||
|
||||
byte Read_GUI_block(SDL_Surface *gui, int start_x, int start_y, void *dest, int width, int height, char * section, int type)
|
||||
byte Read_GUI_block(T_Gui_skin *gfx, SDL_Surface *gui, int start_x, int start_y, void *dest, int width, int height, char * section, int type)
|
||||
{
|
||||
// type: 0 = normal GUI element, only 4 colors allowed
|
||||
// type: 1 = mouse cursor, 4 colors allowed + transparent
|
||||
// type: 2 = brush icon or sieve pattern (only MC_White and MC_Trans)
|
||||
// type: 2 = brush icon or sieve pattern (only gui->Color_white and gui->Color_trans)
|
||||
// type: 3 = raw bitmap (splash screen)
|
||||
|
||||
byte * dest_ptr=dest;
|
||||
@ -146,28 +147,28 @@ byte Read_GUI_block(SDL_Surface *gui, int start_x, int start_y, void *dest, int
|
||||
for (x=start_x; x<start_x+width; x++)
|
||||
{
|
||||
color=Get_SDL_pixel_8(gui,x,y);
|
||||
if (type==0 && (color != MC_Black && color != MC_Dark && color != MC_Light && color != MC_White))
|
||||
if (type==0 && (color != gfx->Color_black && color != gfx->Color_dark && color != gfx->Color_light && color != gfx->Color_white))
|
||||
{
|
||||
sprintf(Gui_loading_error_message, "Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the GUI colors (which were detected as %d,%d,%d,%d.\n",
|
||||
start_x, start_y, height, width, section, x, y, color, MC_Black, MC_Dark, MC_Light, MC_White);
|
||||
start_x, start_y, height, width, section, x, y, color, gfx->Color_black, gfx->Color_dark, gfx->Color_light, gfx->Color_white);
|
||||
return 1;
|
||||
}
|
||||
if (type==1 && (color != MC_Black && color != MC_Dark && color != MC_Light && color != MC_White && color != MC_Trans))
|
||||
if (type==1 && (color != gfx->Color_black && color != gfx->Color_dark && color != gfx->Color_light && color != gfx->Color_white && color != gfx->Color_trans))
|
||||
{
|
||||
sprintf(Gui_loading_error_message, "Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the mouse colors (which were detected as %d,%d,%d,%d,%d.\n",
|
||||
start_x, start_y, height, width, section, x, y, color, MC_Black, MC_Dark, MC_Light, MC_White, MC_Trans);
|
||||
start_x, start_y, height, width, section, x, y, color, gfx->Color_black, gfx->Color_dark, gfx->Color_light, gfx->Color_white, gfx->Color_trans);
|
||||
return 1;
|
||||
}
|
||||
if (type==2)
|
||||
{
|
||||
if (color != MC_White && color != MC_Trans)
|
||||
if (color != gfx->Color_white && color != gfx->Color_trans)
|
||||
{
|
||||
sprintf(Gui_loading_error_message, "Error in skin file: Was looking at %d,%d for a %d*%d object (%s) but at %d,%d a pixel was found with color %d which isn't one of the brush colors (which were detected as %d on %d.\n",
|
||||
start_x, start_y, height, width, section, x, y, color, MC_White, MC_Trans);
|
||||
start_x, start_y, height, width, section, x, y, color, gfx->Color_white, gfx->Color_trans);
|
||||
return 1;
|
||||
}
|
||||
// Conversion en 0/1 pour les brosses monochromes internes
|
||||
color = (color != MC_Trans);
|
||||
color = (color != gfx->Color_trans);
|
||||
}
|
||||
*dest_ptr=color;
|
||||
dest_ptr++;
|
||||
@ -176,12 +177,12 @@ byte Read_GUI_block(SDL_Surface *gui, int start_x, int start_y, void *dest, int
|
||||
return 0;
|
||||
}
|
||||
|
||||
byte Read_GUI_pattern(SDL_Surface *gui, int start_x, int start_y, word *dest, char * section)
|
||||
byte Read_GUI_pattern(T_Gui_skin *gfx, SDL_Surface *gui, int start_x, int start_y, word *dest, char * section)
|
||||
{
|
||||
byte buffer[256];
|
||||
int x,y;
|
||||
|
||||
if (Read_GUI_block(gui, start_x, start_y, buffer, 16, 16, section, 2))
|
||||
if (Read_GUI_block(gfx, gui, start_x, start_y, buffer, 16, 16, section, 2))
|
||||
return 1;
|
||||
|
||||
for (y=0; y<16; y++)
|
||||
@ -208,7 +209,7 @@ void Center_GUI_cursor(T_Gui_skin *gfx, byte *cursor_buffer, int cursor_number)
|
||||
{
|
||||
for (y=0;y<29;y++)
|
||||
{
|
||||
if (cursor_buffer[y*29+start_x]!=MC_Trans)
|
||||
if (cursor_buffer[y*29+start_x]!=gfx->Color_trans)
|
||||
{
|
||||
found=1;
|
||||
break;
|
||||
@ -223,7 +224,7 @@ void Center_GUI_cursor(T_Gui_skin *gfx, byte *cursor_buffer, int cursor_number)
|
||||
{
|
||||
for (x=0;x<29;x++)
|
||||
{
|
||||
if (cursor_buffer[start_y*29+x]!=MC_Trans)
|
||||
if (cursor_buffer[start_y*29+x]!=gfx->Color_trans)
|
||||
{
|
||||
found=1;
|
||||
break;
|
||||
@ -270,7 +271,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
Get_SDL_Palette(SDLPal, gfx->Default_palette);
|
||||
|
||||
// Carré "noir"
|
||||
MC_Black = Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
gfx->Color_black = Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
do
|
||||
{
|
||||
if (++cursor_x>=gui->w)
|
||||
@ -279,9 +280,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
return 1;
|
||||
}
|
||||
color=Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
} while(color==MC_Black);
|
||||
} while(color==gfx->Color_black);
|
||||
// Carré "foncé"
|
||||
MC_Dark=color;
|
||||
gfx->Color_dark = color;
|
||||
do
|
||||
{
|
||||
if (++cursor_x>=gui->w)
|
||||
@ -290,9 +291,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
return 1;
|
||||
}
|
||||
color=Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
} while(color==MC_Dark);
|
||||
} while(color==gfx->Color_dark);
|
||||
// Carré "clair"
|
||||
MC_Light=color;
|
||||
gfx->Color_light = color;
|
||||
do
|
||||
{
|
||||
if (++cursor_x>gui->w)
|
||||
@ -301,9 +302,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
return 1;
|
||||
}
|
||||
color=Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
} while(color==MC_Light);
|
||||
} while(color==gfx->Color_light);
|
||||
// Carré "blanc"
|
||||
MC_White=color;
|
||||
gfx->Color_white = color;
|
||||
do
|
||||
{
|
||||
if (++cursor_x>=gui->w)
|
||||
@ -312,9 +313,9 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
return 1;
|
||||
}
|
||||
color=Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
} while(color==MC_White);
|
||||
} while(color==gfx->Color_white);
|
||||
// Carré "transparent"
|
||||
MC_Trans=color;
|
||||
gfx->Color_trans=color;
|
||||
do
|
||||
{
|
||||
if (++cursor_x>=gui->w)
|
||||
@ -323,14 +324,14 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
return 1;
|
||||
}
|
||||
color=Get_SDL_pixel_8(gui,cursor_x,cursor_y);
|
||||
} while(color==MC_Trans);
|
||||
} while(color==gfx->Color_trans);
|
||||
// Reste : couleur neutre
|
||||
neutral_color=color;
|
||||
|
||||
|
||||
cursor_x=0;
|
||||
cursor_y=1;
|
||||
while ((color=Get_SDL_pixel_8(gui,cursor_x,cursor_y))==MC_Black)
|
||||
while ((color=Get_SDL_pixel_8(gui,cursor_x,cursor_y))==gfx->Color_black)
|
||||
{
|
||||
cursor_y++;
|
||||
if (cursor_y>=gui->h)
|
||||
@ -343,8 +344,14 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
// Menu
|
||||
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "menu"))
|
||||
return 1;
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, gfx->Menu_block, MENU_WIDTH, MENU_HEIGHT,"menu",0))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Menu_block, MENU_WIDTH, MENU_HEIGHT,"menu",0))
|
||||
return 1;
|
||||
|
||||
cursor_x += MENU_WIDTH;
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "logo"))
|
||||
return 1;
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Preview, 173, 16, "logo", 0))
|
||||
return 1;
|
||||
cursor_y+=MENU_HEIGHT;
|
||||
|
||||
// Effets
|
||||
@ -360,7 +367,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "effect sprite"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, gfx->Effect_sprite[i], MENU_SPRITE_WIDTH, MENU_SPRITE_HEIGHT, "effect sprite",0))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Effect_sprite[i], MENU_SPRITE_WIDTH, MENU_SPRITE_HEIGHT, "effect sprite",0))
|
||||
return 1;
|
||||
cursor_x+=MENU_SPRITE_WIDTH;
|
||||
}
|
||||
@ -379,7 +386,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "mouse cursor"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, mouse_cursor_area, 29, 29, "mouse cursor",1))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, mouse_cursor_area, 29, 29, "mouse cursor",1))
|
||||
return 1;
|
||||
Center_GUI_cursor(gfx, (byte *)mouse_cursor_area,i);
|
||||
cursor_x+=29;
|
||||
@ -399,7 +406,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "menu sprite"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, gfx->Menu_sprite[i], MENU_SPRITE_WIDTH, MENU_SPRITE_HEIGHT, "menu sprite",1))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Menu_sprite[i], MENU_SPRITE_WIDTH, MENU_SPRITE_HEIGHT, "menu sprite",1))
|
||||
return 1;
|
||||
cursor_x+=MENU_SPRITE_WIDTH;
|
||||
}
|
||||
@ -421,7 +428,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "brush icon"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, gfx->Paintbrush_sprite[i], PAINTBRUSH_WIDTH, PAINTBRUSH_HEIGHT, "brush icon",2))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Paintbrush_sprite[i], PAINTBRUSH_WIDTH, PAINTBRUSH_HEIGHT, "brush icon",2))
|
||||
return 1;
|
||||
cursor_x+=PAINTBRUSH_WIDTH;
|
||||
}
|
||||
@ -440,7 +447,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "sprite drive"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, gfx->Icon_sprite[i], ICON_SPRITE_WIDTH, ICON_SPRITE_HEIGHT, "sprite drive",1))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Icon_sprite[i], ICON_SPRITE_WIDTH, ICON_SPRITE_HEIGHT, "sprite drive",1))
|
||||
return 1;
|
||||
cursor_x+=ICON_SPRITE_WIDTH;
|
||||
}
|
||||
@ -450,7 +457,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
|
||||
if (GUI_seek_down(gui, &cursor_x, &cursor_y, neutral_color, "logo menu"))
|
||||
return 1;
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, gfx->Logo_grafx2, 231, 56, "logo menu",3))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, gfx->Logo_grafx2, 231, 56, "logo menu",3))
|
||||
return 1;
|
||||
cursor_y+=56;
|
||||
|
||||
@ -467,7 +474,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "sieve pattern"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_pattern(gui, cursor_x, cursor_y, gfx->Sieve_pattern[i],"sieve pattern"))
|
||||
if (Read_GUI_pattern(gfx, gui, cursor_x, cursor_y, gfx->Sieve_pattern[i],"sieve pattern"))
|
||||
return 1;
|
||||
cursor_x+=16;
|
||||
}
|
||||
@ -489,7 +496,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "help font (norm)"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, &(gfx->Help_font_norm[i][0][0]), 6, 8, "help font (norm)",0))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, &(gfx->Help_font_norm[i][0][0]), 6, 8, "help font (norm)",0))
|
||||
return 1;
|
||||
cursor_x+=6;
|
||||
}
|
||||
@ -511,7 +518,7 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
if (GUI_seek_right(gui, &cursor_x, cursor_y, neutral_color, "help font (bold)"))
|
||||
return 1;
|
||||
}
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, &(gfx->Bold_font[i][0][0]), 6, 8, "help font (bold)",0))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, &(gfx->Bold_font[i][0][0]), 6, 8, "help font (bold)",0))
|
||||
return 1;
|
||||
cursor_x+=6;
|
||||
}
|
||||
@ -546,15 +553,12 @@ byte Parse_skin(SDL_Surface * gui, T_Gui_skin *gfx)
|
||||
else
|
||||
dest=&(gfx->Help_font_t1[char_1++][0][0]);
|
||||
|
||||
if (Read_GUI_block(gui, cursor_x, cursor_y, dest, 6, 8, "help font (title)",0))
|
||||
if (Read_GUI_block(gfx, gui, cursor_x, cursor_y, dest, 6, 8, "help font (title)",0))
|
||||
return 1;
|
||||
cursor_x+=6;
|
||||
}
|
||||
cursor_y+=8;
|
||||
|
||||
Current_help_section=0;
|
||||
Help_position=0;
|
||||
|
||||
gfx->Preset_paintbrush_width [ 0]= 1;
|
||||
gfx->Preset_paintbrush_height[ 0]= 1;
|
||||
gfx->Paintbrush_type [ 0]=PAINTBRUSH_SHAPE_SQUARE;
|
||||
@ -1058,10 +1062,14 @@ void Init_buttons(void)
|
||||
FAMILY_INTERRUPTION);
|
||||
|
||||
Init_button(BUTTON_BRUSH_EFFECTS,
|
||||
106,18,
|
||||
16,16,
|
||||
106, 18,
|
||||
16, 16,
|
||||
BUTTON_SHAPE_RECTANGLE,
|
||||
Button_Brush_FX,Button_Brush_FX,
|
||||
#ifdef __ENABLE_LUA__
|
||||
Button_Brush_FX, Button_Brush_Factory,
|
||||
#else
|
||||
Button_Brush_FX, Button_Brush_FX,
|
||||
#endif
|
||||
Do_nothing,
|
||||
FAMILY_INSTANT);
|
||||
|
||||
@ -2464,3 +2472,28 @@ void Init_brush_container(void)
|
||||
Brush_container[i].Brush = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void Set_current_skin(const char *skinfile, T_Gui_skin *gfx)
|
||||
{
|
||||
// Free previous one
|
||||
free(Gfx);
|
||||
|
||||
// Assign main skin pointer
|
||||
Gfx = gfx;
|
||||
|
||||
// Change config
|
||||
free(Config.Skin_file);
|
||||
Config.Skin_file = strdup(skinfile);
|
||||
|
||||
Config.Fav_menu_colors[0] = gfx->Default_palette[gfx->Color_black];
|
||||
Config.Fav_menu_colors[1] = gfx->Default_palette[gfx->Color_dark];
|
||||
Config.Fav_menu_colors[2] = gfx->Default_palette[gfx->Color_light];
|
||||
Config.Fav_menu_colors[3] = gfx->Default_palette[gfx->Color_white];
|
||||
|
||||
// Reassign GUI color indices
|
||||
MC_Black = gfx->Color_black;
|
||||
MC_Dark = gfx->Color_dark;
|
||||
MC_Light = gfx->Color_light;
|
||||
MC_White = gfx->Color_white;
|
||||
MC_Trans = gfx->Color_trans;
|
||||
}
|
||||
|
||||
1
init.h
1
init.h
@ -23,6 +23,7 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
T_Gui_skin *Load_graphics(const char * skin_file);
|
||||
void Set_current_skin(const char *skinfile, T_Gui_skin *gfx);
|
||||
void Init_buttons(void);
|
||||
void Init_operations(void);
|
||||
void Init_brush_container(void);
|
||||
|
||||
6177
loadsave.c
6177
loadsave.c
File diff suppressed because it is too large
Load Diff
33
loadsave.h
33
loadsave.h
@ -22,9 +22,9 @@
|
||||
/// Also handles showing the preview in fileselectors.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void Pixel_load_in_current_screen(word x_pos,word y_pos,byte color);
|
||||
void Pixel_load_in_preview (word x_pos,word y_pos,byte color);
|
||||
void Pixel_load_in_brush (word x_pos,word y_pos,byte color);
|
||||
void Pixel_load_in_current_screen (word x_pos, word y_pos, byte color);
|
||||
void Pixel_load_in_preview (word x_pos, word y_pos, byte color);
|
||||
void Pixel_load_in_brush (word x_pos, word y_pos, byte color);
|
||||
|
||||
void Get_full_filename(char * filename, byte is_colorix_format);
|
||||
|
||||
@ -33,6 +33,7 @@ void Get_full_filename(char * filename, byte is_colorix_format);
|
||||
/// Handles loading an image or a brush, or previewing only.
|
||||
/// @param image true if the fileselector is the one for loading images (not brush)
|
||||
void Load_image(byte image);
|
||||
|
||||
///
|
||||
/// High-level picture saving function.
|
||||
/// @param image true if the image should be saved (instead of the brush)
|
||||
@ -68,9 +69,31 @@ T_Format * Get_fileformat(byte format);
|
||||
// -- File formats
|
||||
|
||||
#ifndef __no_pnglib__
|
||||
#define NB_KNOWN_FORMATS 18 ///< Total number of known file formats.
|
||||
#define NB_KNOWN_FORMATS 18 ///< Total number of known file formats.
|
||||
#else
|
||||
// Without pnglib
|
||||
#define NB_KNOWN_FORMATS 17 ///< Total number of known file formats.
|
||||
#define NB_KNOWN_FORMATS 17 ///< Total number of known file formats.
|
||||
#endif
|
||||
|
||||
// This is here and not in fileformats.c because the emergency save uses it...
|
||||
#pragma pack(1)
|
||||
typedef struct
|
||||
{
|
||||
byte Filler1[6];
|
||||
word Width;
|
||||
word Height;
|
||||
byte Filler2[118];
|
||||
T_Palette Palette;
|
||||
} T_IMG_Header;
|
||||
#pragma pack()
|
||||
|
||||
// Données pour la gestion du chargement en 24b
|
||||
#define FORMAT_24B 0x100
|
||||
typedef void (* Func_24b_display) (short,short,byte,byte,byte);
|
||||
extern int Image_24b;
|
||||
|
||||
extern T_Components * Buffer_image_24b;
|
||||
extern Func_24b_display Pixel_load_24b;
|
||||
|
||||
void Pixel_load_in_24b_preview(short x_pos,short y_pos,byte r,byte g,byte b);
|
||||
extern enum PIXEL_RATIO Ratio_of_loaded_image;
|
||||
|
||||
38
main.c
38
main.c
@ -75,9 +75,6 @@
|
||||
extern DECLSPEC int SDLCALL SDL_putenv(const char *variable);
|
||||
#endif
|
||||
|
||||
// filename for the current GUI skin file.
|
||||
static char Gui_skin_file[MAX_PATH_CHARACTERS];
|
||||
|
||||
//--- Affichage de la syntaxe, et de la liste des modes vidéos disponibles ---
|
||||
void Display_syntax(void)
|
||||
{
|
||||
@ -278,7 +275,7 @@ void Analyze_command_line(int argc,char * argv[])
|
||||
index++;
|
||||
if (index<argc)
|
||||
{
|
||||
strcpy(Gui_skin_file,argv[index]);
|
||||
strcpy(Config.Skin_file,argv[index]);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -326,6 +323,7 @@ int Init_program(int argc,char * argv[])
|
||||
int temp;
|
||||
int starting_videomode;
|
||||
char program_directory[MAX_PATH_CHARACTERS];
|
||||
T_Gui_skin *gfx;
|
||||
|
||||
// On crée dès maintenant les descripteurs des listes de pages pour la page
|
||||
// principale et la page de brouillon afin que leurs champs ne soient pas
|
||||
@ -555,32 +553,34 @@ int Init_program(int argc,char * argv[])
|
||||
|
||||
Analyze_command_line(argc,argv);
|
||||
|
||||
Current_help_section=0;
|
||||
Help_position=0;
|
||||
|
||||
// Load sprites, palette etc.
|
||||
strcpy(Gui_skin_file,Config.Skin_file);
|
||||
Gfx = Load_graphics(Gui_skin_file);
|
||||
if (Gfx == NULL)
|
||||
gfx = Load_graphics(Config.Skin_file);
|
||||
if (gfx == NULL)
|
||||
{
|
||||
Gfx = Load_graphics("skin_modern.png");
|
||||
if (Gfx == NULL)
|
||||
gfx = Load_graphics("skin_modern.png");
|
||||
if (gfx == NULL)
|
||||
{
|
||||
printf("%s", Gui_loading_error_message);
|
||||
Error(ERROR_GUI_MISSING);
|
||||
}
|
||||
}
|
||||
Set_current_skin(Config.Skin_file, gfx);
|
||||
Fore_color=MC_White;
|
||||
Back_color=MC_Black;
|
||||
// Override colors
|
||||
// Gfx->Default_palette[MC_Black]=Fav_menu_colors[0]=Config.Fav_menu_colors[0];
|
||||
// Gfx->Default_palette[MC_Dark] =Fav_menu_colors[1]=Config.Fav_menu_colors[1];
|
||||
// Gfx->Default_palette[MC_Light]=Fav_menu_colors[2]=Config.Fav_menu_colors[2];
|
||||
// Gfx->Default_palette[MC_White]=Fav_menu_colors[3]=Config.Fav_menu_colors[3];
|
||||
Compute_optimal_menu_colors(Gfx->Default_palette);
|
||||
|
||||
// Infos sur les trames (Sieve)
|
||||
Sieve_mode=0;
|
||||
Copy_preset_sieve(0);
|
||||
|
||||
// Transfert des valeurs du .INI qui ne changent pas dans des variables
|
||||
// plus accessibles:
|
||||
Gfx->Default_palette[MC_Black]=Fav_menu_colors[0]=Config.Fav_menu_colors[0];
|
||||
Gfx->Default_palette[MC_Dark] =Fav_menu_colors[1]=Config.Fav_menu_colors[1];
|
||||
Gfx->Default_palette[MC_Light]=Fav_menu_colors[2]=Config.Fav_menu_colors[2];
|
||||
Gfx->Default_palette[MC_White]=Fav_menu_colors[3]=Config.Fav_menu_colors[3];
|
||||
Compute_optimal_menu_colors(Gfx->Default_palette);
|
||||
Fore_color=MC_White;
|
||||
Back_color=MC_Black;
|
||||
|
||||
// Font
|
||||
if (!(Menu_font=Load_font(Config.Font_file)))
|
||||
if (!(Menu_font=Load_font("font_Classic.png")))
|
||||
|
||||
12
misc.c
12
misc.c
@ -159,7 +159,7 @@ void Set_color(byte color, byte red, byte green, byte blue)
|
||||
comp.r=red;
|
||||
comp.g=green;
|
||||
comp.b=blue;
|
||||
SDL_SetPalette(Screen_SDL, SDL_LOGPAL, &comp, color, 1);
|
||||
SDL_SetPalette(Screen_SDL, SDL_PHYSPAL | SDL_LOGPAL, &comp, color, 1);
|
||||
}
|
||||
|
||||
void Wait_end_of_click(void)
|
||||
@ -206,12 +206,12 @@ void Init_chrono(dword delay)
|
||||
return;
|
||||
}
|
||||
|
||||
void Pixel_in_brush (word x,word y,byte color)
|
||||
void Pixel_in_brush (word x, word y, byte color)
|
||||
{
|
||||
*(Brush+y*Brush_width+x)=color;
|
||||
*(Brush + y * Brush_width + x)=color;
|
||||
}
|
||||
|
||||
byte Read_pixel_from_brush (word x,word y)
|
||||
byte Read_pixel_from_brush (word x, word y)
|
||||
{
|
||||
return *(Brush + y * Brush_width + x);
|
||||
}
|
||||
@ -782,12 +782,12 @@ unsigned long Memory_free(void)
|
||||
len = sizeof(maxmem);
|
||||
sysctl(mib,2,&maxmem,&len,NULL,0);
|
||||
return maxmem;
|
||||
#elif defined(__BEOS__) || defined(__HAIKU__) || defined(__SKYOS__) || defined(__amigaos4__) || defined(__amigaos__)
|
||||
#elif defined(__BEOS__) || defined(__HAIKU__) || defined(__SKYOS__) || defined(__amigaos4__)
|
||||
// No <sys/sysctl.h> on BeOS or Haiku
|
||||
// AvailMem is misleading on os4 (os4 caches stuff in memory that you can still allocate)
|
||||
#warning "There is missing code there for your platform ! please check and correct :)"
|
||||
return 10*1024*1024;
|
||||
#elif defined(__AROS__) || defined(__MORPHOS__)
|
||||
#elif defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__)
|
||||
return AvailMem(MEMF_ANY);
|
||||
#else
|
||||
struct sysinfo info;
|
||||
|
||||
2485
miscfileformats.c
Normal file
2485
miscfileformats.c
Normal file
File diff suppressed because it is too large
Load Diff
2
op_c.c
2
op_c.c
@ -1206,7 +1206,7 @@ void Convert_24b_bitmap_to_256_Floyd_Steinberg(T_Bitmap256 dest,T_Bitmap24B sour
|
||||
}
|
||||
|
||||
void Convert_24b_bitmap_to_256_nearest_neighbor(T_Bitmap256 dest,
|
||||
T_Bitmap24B source, int width, int height, T_Components * palette,
|
||||
T_Bitmap24B source, int width, int height, __attribute__((unused)) T_Components * palette,
|
||||
T_Conversion_table * tc)
|
||||
{
|
||||
T_Bitmap24B current;
|
||||
|
||||
296
palette.c
296
palette.c
@ -433,9 +433,9 @@ void Set_nice_menu_colors(dword * color_usage,int not_picture)
|
||||
rgb[index].R=Main_palette[color].R;
|
||||
rgb[index].G=Main_palette[color].G;
|
||||
rgb[index].B=Main_palette[color].B;
|
||||
Main_palette[color].R=Fav_menu_colors[index].R;
|
||||
Main_palette[color].G=Fav_menu_colors[index].G;
|
||||
Main_palette[color].B=Fav_menu_colors[index].B;
|
||||
Main_palette[color].R=Config.Fav_menu_colors[index].R;
|
||||
Main_palette[color].G=Config.Fav_menu_colors[index].G;
|
||||
Main_palette[color].B=Config.Fav_menu_colors[index].B;
|
||||
}
|
||||
|
||||
// Maintenant qu'on a placé notre nouvelle palette, on va chercher quelles
|
||||
@ -752,68 +752,81 @@ void Draw_all_palette_sliders(T_Scroller_button * red_slider,
|
||||
|
||||
void Button_Palette(void)
|
||||
{
|
||||
static short reducer_index=0;
|
||||
static short reduce_colors_number=256;
|
||||
short temp_color; // Variable pouvant reservir pour différents calculs intermédiaires
|
||||
dword temp;
|
||||
byte color,click; // Variables pouvant reservir pour différents calculs intermédiaires
|
||||
short clicked_button;
|
||||
word old_mouse_x;
|
||||
word old_mouse_y;
|
||||
byte old_mouse_k;
|
||||
byte block_start;
|
||||
byte block_end;
|
||||
byte first_color;
|
||||
byte last_color;
|
||||
char str[10];
|
||||
word i;
|
||||
//short x_pos,y_pos;
|
||||
static short reduce_colors_number = 256;
|
||||
short temp_color; // Variable pouvant reservir pour différents calculs intermédiaires
|
||||
dword temp;
|
||||
byte color,click; // Variables pouvant reservir pour différents calculs intermédiaires
|
||||
short clicked_button;
|
||||
word old_mouse_x;
|
||||
word old_mouse_y;
|
||||
byte old_mouse_k;
|
||||
byte block_start;
|
||||
byte block_end;
|
||||
byte first_color;
|
||||
byte last_color;
|
||||
char str[10];
|
||||
word i;
|
||||
T_Normal_button * button_used;
|
||||
T_Scroller_button * red_slider;
|
||||
T_Scroller_button * green_slider;
|
||||
T_Scroller_button * blue_slider;
|
||||
T_Scroller_button * reduce_slider;
|
||||
byte image_is_backed_up=0;
|
||||
byte need_to_remap=0;
|
||||
T_Dropdown_button * reduce_dropdown;
|
||||
byte image_is_backed_up = 0;
|
||||
byte need_to_remap = 0;
|
||||
|
||||
dword color_usage[256];
|
||||
short used_colors=-1; // -1 <=> Inconnu
|
||||
short used_colors = -1; // -1 <=> Inconnu
|
||||
byte conversion_table[256];
|
||||
|
||||
T_Components * backup_palette;
|
||||
T_Components * temp_palette;
|
||||
T_Components * working_palette;
|
||||
|
||||
backup_palette =(T_Components *)malloc(sizeof(T_Palette));
|
||||
backup_palette =(T_Components *)malloc(sizeof(T_Palette));
|
||||
temp_palette=(T_Components *)malloc(sizeof(T_Palette));
|
||||
working_palette=(T_Components *)malloc(sizeof(T_Palette));
|
||||
|
||||
Componant_unit(RGB_scale);
|
||||
|
||||
Open_window(299,188,"Palette");
|
||||
Open_window(299, 188,"Palette");
|
||||
|
||||
memcpy(working_palette,Main_palette,sizeof(T_Palette));
|
||||
memcpy(backup_palette ,Main_palette,sizeof(T_Palette));
|
||||
memcpy(temp_palette,Main_palette,sizeof(T_Palette));
|
||||
memcpy(working_palette, Main_palette, sizeof(T_Palette));
|
||||
memcpy(backup_palette, Main_palette, sizeof(T_Palette));
|
||||
memcpy(temp_palette, Main_palette, sizeof(T_Palette));
|
||||
|
||||
Window_set_palette_button(5,79); // 1
|
||||
Window_set_palette_button(5, 79); // 1
|
||||
|
||||
Window_display_frame (173, 67,121,116);
|
||||
Window_display_frame (128, 16, 91, 39);
|
||||
Window_display_frame (221, 16, 73, 39);
|
||||
// Frame creux destiné à l'affichage de la(les) couleur(s) sélectionnée(s)
|
||||
Window_display_frame_in(259, 88, 26, 74);
|
||||
Window_display_frame (173, 67, 121, 116);
|
||||
Window_display_frame (128, 16, 91, 39);
|
||||
|
||||
// Graduation des jauges de couleur
|
||||
Block(Window_pos_X+(Menu_factor_X*179),Window_pos_Y+(Menu_factor_Y*109),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*206),Window_pos_Y+(Menu_factor_Y*109),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*233),Window_pos_Y+(Menu_factor_Y*109),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*179),Window_pos_Y+(Menu_factor_Y*125),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*206),Window_pos_Y+(Menu_factor_Y*125),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*233),Window_pos_Y+(Menu_factor_Y*125),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*179),Window_pos_Y+(Menu_factor_Y*141),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*206),Window_pos_Y+(Menu_factor_Y*141),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X+(Menu_factor_X*233),Window_pos_Y+(Menu_factor_Y*141),Menu_factor_X*17,Menu_factor_Y,MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 179),
|
||||
Window_pos_Y + (Menu_factor_Y * 109), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 206),
|
||||
Window_pos_Y + (Menu_factor_Y * 109), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 233),
|
||||
Window_pos_Y + (Menu_factor_Y * 109), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 179),
|
||||
Window_pos_Y + (Menu_factor_Y * 125), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 206),
|
||||
Window_pos_Y + (Menu_factor_Y * 125), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 233),
|
||||
Window_pos_Y + (Menu_factor_Y * 125), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 179),
|
||||
Window_pos_Y + (Menu_factor_Y * 141), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 206),
|
||||
Window_pos_Y + (Menu_factor_Y * 141), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
Block(Window_pos_X + (Menu_factor_X * 233),
|
||||
Window_pos_Y + (Menu_factor_Y * 141), Menu_factor_X * 17, Menu_factor_Y,
|
||||
MC_Dark);
|
||||
// Jauges de couleur
|
||||
red_slider = Window_set_scroller_button(182, 81, 88,Color_count,1,Color_max-working_palette[Fore_color].R*Color_max/255);// 2
|
||||
green_slider = Window_set_scroller_button(209, 81, 88,Color_count,1,Color_max-working_palette[Fore_color].G*Color_max/255);// 3
|
||||
@ -841,10 +854,9 @@ void Button_Palette(void)
|
||||
// Affichage des valeurs de la couleur courante (pour 1 couleur)
|
||||
Display_sliders(red_slider,green_slider,blue_slider,(block_start!=block_end),working_palette);
|
||||
|
||||
Print_in_window(129,58,"Color number:",MC_Dark,MC_Light);
|
||||
Num2str(Fore_color,str,3);
|
||||
Print_in_window(237,58,str,MC_Black,MC_Light);
|
||||
|
||||
Print_in_window(129, 58, "Color number:", MC_Dark, MC_Light);
|
||||
Num2str(Fore_color, str, 3);
|
||||
Print_in_window(237, 58, str, MC_Black, MC_Light);
|
||||
|
||||
Window_set_normal_button( 6,17,59,14,"Default",3,1,SDLK_f); // 5
|
||||
Window_set_normal_button(66,17,29,14,"Gry" ,1,1,SDLK_g); // 6
|
||||
@ -853,8 +865,16 @@ void Button_Palette(void)
|
||||
Window_set_normal_button(66,32,29,14,"Cpy" ,1,1,SDLK_c); // 9
|
||||
Window_set_normal_button( 6,32,59,14,"Spread" ,4,1,SDLK_e); // 10
|
||||
|
||||
Window_set_normal_button(239,20,51,14,"Reduce" ,1,1,SDLK_r); // 11
|
||||
Print_in_window(241,41,"to",MC_Dark,MC_Light);
|
||||
reduce_dropdown = Window_set_dropdown_button(222, 17, 60, 14, 60, "Reduce", 0,
|
||||
0, 1, 1); // 11
|
||||
Window_dropdown_add_item(reduce_dropdown, 0, "to 128");
|
||||
Window_dropdown_add_item(reduce_dropdown, 1, "to 64");
|
||||
Window_dropdown_add_item(reduce_dropdown, 2, "to 32");
|
||||
Window_dropdown_add_item(reduce_dropdown, 3, "to 16");
|
||||
Window_dropdown_add_item(reduce_dropdown, 4, "to 8");
|
||||
Window_dropdown_add_item(reduce_dropdown, 5, "to 4");
|
||||
Window_dropdown_add_item(reduce_dropdown, 6, "to 2");
|
||||
Window_dropdown_add_item(reduce_dropdown, 7, "Other");
|
||||
|
||||
Window_set_normal_button( 6,168,35,14,"Undo" ,1,1,SDLK_u); // 12
|
||||
Window_set_normal_button( 62,168,51,14,"Cancel",0,1,KEY_ESC); // 13
|
||||
@ -863,23 +883,26 @@ void Button_Palette(void)
|
||||
button_used = Window_set_normal_button(132,20,83,14,"Used: ???",4,1,SDLK_d);// 15
|
||||
Window_set_normal_button(132,37,83,14,"Zap unused",0,1,SDLK_DELETE);//16
|
||||
|
||||
// Jauge de réduction de palette
|
||||
reduce_slider = Window_set_scroller_button(225,20,31,7,1,reducer_index);// 17
|
||||
Window_set_repeatable_button(266, 74,12,11,"+",0,1,SDLK_KP_PLUS); // 17
|
||||
Window_set_repeatable_button(266,165,12,11,"-",0,1,SDLK_KP_MINUS); // 18
|
||||
|
||||
Window_set_repeatable_button(266, 74,12,11,"+",0,1,SDLK_KP_PLUS); // 18
|
||||
Window_set_repeatable_button(266,165,12,11,"-",0,1,SDLK_KP_MINUS); // 19
|
||||
Window_set_normal_button(96,17,29,14,"Neg" ,1,1,SDLK_n); // 19
|
||||
Window_set_normal_button(66,62,29,14,"Inv" ,1,1,SDLK_i); // 20
|
||||
Window_set_normal_button( 6,62,59,14,"X-Inv." ,5,1,SDLK_v); // 21
|
||||
|
||||
Window_set_normal_button(96,17,29,14,"Neg" ,1,1,SDLK_n); // 20
|
||||
Window_set_normal_button(66,62,29,14,"Inv" ,1,1,SDLK_i); // 21
|
||||
Window_set_normal_button( 6,62,59,14,"X-Inv." ,5,1,SDLK_v); // 22
|
||||
Window_set_normal_button(96,32,29,14,"HSL" ,1,1,SDLK_h); // 22
|
||||
Window_set_normal_button(96,47,29,14,"Srt" ,1,1,SDLK_s); // 23
|
||||
|
||||
if (Config.Auto_nb_used)
|
||||
{
|
||||
Update_color_count(&used_colors,color_usage);
|
||||
|
||||
Num2str(color_usage[Fore_color], str, 6);
|
||||
Print_in_window(222, 33, str, MC_Black, MC_Light);
|
||||
Print_in_window(222, 42, "pixels", MC_Dark, MC_Light);
|
||||
}
|
||||
|
||||
Window_set_input_button(263,39,3); // 23
|
||||
|
||||
Window_set_normal_button(96,32,29,14,"HSL" ,1,1,SDLK_h); // 24
|
||||
Window_set_normal_button(96,47,29,14,"Srt" ,1,1,SDLK_s); // 25
|
||||
// Affichage du facteur de réduction de la palette
|
||||
Num2str(reduce_colors_number,str,3);
|
||||
Print_in_window(265,41,str,MC_Black,MC_Light);
|
||||
|
||||
// Dessin des petits effets spéciaux pour les boutons [+] et [-]
|
||||
Draw_thingumajig(263, 74,MC_White,-1);
|
||||
@ -891,9 +914,6 @@ void Button_Palette(void)
|
||||
|
||||
Display_cursor();
|
||||
|
||||
if (Config.Auto_nb_used)
|
||||
Update_color_count(&used_colors,color_usage);
|
||||
|
||||
do
|
||||
{
|
||||
old_mouse_x=Mouse_X;
|
||||
@ -942,6 +962,8 @@ void Button_Palette(void)
|
||||
Block(Window_pos_X+(Menu_factor_X*237),Window_pos_Y+(Menu_factor_Y*58),Menu_factor_X*56,Menu_factor_Y*7,MC_Light);
|
||||
Num2str(Fore_color,str,3);
|
||||
Print_in_window(237,58,str,MC_Black,MC_Light);
|
||||
Num2str(color_usage[Fore_color], str, 6);
|
||||
Print_in_window(222, 33, str, MC_Black, MC_Light);
|
||||
Update_rect(Window_pos_X+(Menu_factor_X*237),Window_pos_Y+(Menu_factor_Y*58),Menu_factor_X*56,Menu_factor_Y*7);
|
||||
|
||||
// Affichage des jauges
|
||||
@ -972,6 +994,13 @@ void Button_Palette(void)
|
||||
Num2str(block_end ,str+4,3);
|
||||
str[3]=26; // Flèche vers la droite
|
||||
Print_in_window(237,58,str,MC_Black,MC_Light);
|
||||
{
|
||||
int pixel_count = 0;
|
||||
for (i = block_start; i <= block_end; i++)
|
||||
pixel_count += color_usage[i];
|
||||
Num2str(pixel_count, str, 6);
|
||||
}
|
||||
Print_in_window(222, 33, str, MC_Black, MC_Light);
|
||||
|
||||
// Affichage des jauges
|
||||
Display_sliders(red_slider,green_slider,blue_slider,1,NULL);
|
||||
@ -989,6 +1018,13 @@ void Button_Palette(void)
|
||||
Num2str(block_end ,str+4,3);
|
||||
str[3]=26; // Flèche vers la droite
|
||||
Print_in_window(237,58,str,MC_Black,MC_Light);
|
||||
{
|
||||
int pixel_count = 0;
|
||||
for (i = block_start; i <= block_end; i++)
|
||||
pixel_count += color_usage[i];
|
||||
Num2str(pixel_count, str, 6);
|
||||
}
|
||||
Print_in_window(222, 33, str, MC_Black, MC_Light);
|
||||
|
||||
// Affichage des jauges
|
||||
Display_sliders(red_slider,green_slider,blue_slider,1,NULL);
|
||||
@ -1005,6 +1041,8 @@ void Button_Palette(void)
|
||||
Block(Window_pos_X+(Menu_factor_X*261),Window_pos_Y+(Menu_factor_Y*58),Menu_factor_X*32,Menu_factor_Y*7,MC_Light);
|
||||
Num2str(Fore_color,str,3);
|
||||
Print_in_window(237,58,str,MC_Black,MC_Light);
|
||||
Num2str(Fore_color, str, 6);
|
||||
Print_in_window(222, 33, str, MC_Black, MC_Light);
|
||||
|
||||
// Affichage des jauges
|
||||
Display_sliders(red_slider,green_slider,blue_slider,0,working_palette);
|
||||
@ -1400,29 +1438,66 @@ void Button_Palette(void)
|
||||
break;
|
||||
|
||||
case 11: // Reduce
|
||||
memcpy(backup_palette,working_palette,sizeof(T_Palette));
|
||||
if (!image_is_backed_up)
|
||||
{
|
||||
Backup_layers(-1);
|
||||
image_is_backed_up=1;
|
||||
}
|
||||
Reduce_palette(&used_colors,reduce_colors_number,working_palette,color_usage);
|
||||
memcpy(backup_palette, working_palette, sizeof(T_Palette));
|
||||
switch(Window_attribute2) // Get the dropdown value
|
||||
{
|
||||
case 0: // 128
|
||||
reduce_colors_number = 128;
|
||||
break;
|
||||
case 1: // 64
|
||||
reduce_colors_number = 64;
|
||||
break;
|
||||
case 2: // 32
|
||||
reduce_colors_number = 32;
|
||||
break;
|
||||
case 3: // 16
|
||||
reduce_colors_number = 16;
|
||||
break;
|
||||
case 4: // 8
|
||||
reduce_colors_number = 8;
|
||||
break;
|
||||
case 5: // 4
|
||||
reduce_colors_number = 4;
|
||||
break;
|
||||
case 6: // 2
|
||||
reduce_colors_number = 2;
|
||||
break;
|
||||
case 7: // other
|
||||
reduce_colors_number
|
||||
= Requester_window("Enter the max. number of colors",
|
||||
reduce_colors_number);
|
||||
if (reduce_colors_number < 2 || reduce_colors_number >= 256)
|
||||
reduce_colors_number = -1;
|
||||
break;
|
||||
}
|
||||
if (reduce_colors_number > 0)
|
||||
{
|
||||
if (!image_is_backed_up)
|
||||
{
|
||||
Backup_layers(-1);
|
||||
image_is_backed_up=1;
|
||||
}
|
||||
|
||||
if ((Config.Safety_colors) && (used_colors<4))
|
||||
{
|
||||
memcpy(temp_palette,Main_palette,sizeof(T_Palette));
|
||||
memcpy(Main_palette,working_palette,sizeof(T_Palette));
|
||||
Set_nice_menu_colors(color_usage,0);
|
||||
memcpy(working_palette,Main_palette,sizeof(T_Palette));
|
||||
memcpy(Main_palette,temp_palette,sizeof(T_Palette));
|
||||
}
|
||||
Reduce_palette(&used_colors, reduce_colors_number, working_palette,
|
||||
color_usage);
|
||||
|
||||
Set_palette(working_palette); // On définit la nouvelle palette
|
||||
Draw_all_palette_sliders(red_slider,green_slider,blue_slider,working_palette,block_start,block_end);
|
||||
memcpy(temp_palette,working_palette,sizeof(T_Palette));
|
||||
if ((Config.Safety_colors) && (used_colors<4))
|
||||
{
|
||||
memcpy(temp_palette, Main_palette, sizeof(T_Palette));
|
||||
memcpy(Main_palette, working_palette, sizeof(T_Palette));
|
||||
Set_nice_menu_colors(color_usage, 0);
|
||||
memcpy(working_palette, Main_palette, sizeof(T_Palette));
|
||||
memcpy(Main_palette, temp_palette, sizeof(T_Palette));
|
||||
}
|
||||
|
||||
End_of_modification();
|
||||
need_to_remap=1;
|
||||
Set_palette(working_palette); // On définit la nouvelle palette
|
||||
Draw_all_palette_sliders(red_slider, green_slider, blue_slider,
|
||||
working_palette, block_start, block_end);
|
||||
memcpy(temp_palette, working_palette, sizeof(T_Palette));
|
||||
|
||||
End_of_modification();
|
||||
need_to_remap = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 12: // Undo
|
||||
@ -1470,19 +1545,7 @@ void Button_Palette(void)
|
||||
need_to_remap=1;
|
||||
break;
|
||||
|
||||
case 17 : // Jauge de réduction de palette
|
||||
if (reducer_index!=reduce_slider->Position)
|
||||
{
|
||||
reducer_index=reduce_slider->Position;
|
||||
// Affichage du facteur de réduction de la palette
|
||||
Hide_cursor();
|
||||
Print_in_window(265,41,Palette_reduce_label[reducer_index],MC_Black,MC_Light);
|
||||
Display_cursor();
|
||||
reduce_colors_number=atoi(Palette_reduce_label[reducer_index]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 18 : // [+]
|
||||
case 17 : // [+]
|
||||
if (!Palette_view_is_RGB)
|
||||
break;
|
||||
Hide_cursor();
|
||||
@ -1607,7 +1670,7 @@ void Button_Palette(void)
|
||||
Set_palette(working_palette);
|
||||
break;
|
||||
|
||||
case 19 : // [-]
|
||||
case 18 : // [-]
|
||||
if (!Palette_view_is_RGB)
|
||||
break;
|
||||
Hide_cursor();
|
||||
@ -1732,7 +1795,7 @@ void Button_Palette(void)
|
||||
Set_palette(working_palette);
|
||||
break;
|
||||
|
||||
case 20 : // Negative
|
||||
case 19 : // Negative
|
||||
// Backup
|
||||
memcpy(backup_palette,working_palette,sizeof(T_Palette));
|
||||
// Negative
|
||||
@ -1750,8 +1813,8 @@ void Button_Palette(void)
|
||||
need_to_remap=1;
|
||||
break;
|
||||
|
||||
case 21 : // Inversion
|
||||
case 22 : // X-Inversion
|
||||
case 20 : // Inversion
|
||||
case 21 : // X-Inversion
|
||||
// Backup
|
||||
memcpy(backup_palette,working_palette,sizeof(T_Palette));
|
||||
// On initialise la table de conversion
|
||||
@ -1795,30 +1858,7 @@ void Button_Palette(void)
|
||||
need_to_remap=1;
|
||||
break;
|
||||
|
||||
case 23 : // Saisie du nombre de couleurs pour la réduction de palette
|
||||
Num2str(reduce_colors_number,str,3);
|
||||
|
||||
if (Readline(265,41,str,3,1))
|
||||
{
|
||||
temp_color=atoi(str);
|
||||
// Correction de la valeur lue
|
||||
if ( (temp_color>256) || (temp_color<2) )
|
||||
{
|
||||
if (temp_color>256)
|
||||
temp_color=256;
|
||||
else
|
||||
temp_color=2;
|
||||
|
||||
Num2str(temp_color,str,3);
|
||||
Window_input_content(Window_special_button_list,str);
|
||||
}
|
||||
|
||||
reduce_colors_number=temp_color;
|
||||
}
|
||||
Display_cursor();
|
||||
break;
|
||||
|
||||
case 24 : // HSL <> RGB
|
||||
case 22 : // HSL <> RGB
|
||||
|
||||
// Acte les changements en cours sur une ou plusieurs couleurs
|
||||
memcpy(temp_palette,working_palette,sizeof(T_Palette));
|
||||
@ -1854,7 +1894,7 @@ void Button_Palette(void)
|
||||
Update_window_area(265,73,14,103);
|
||||
break;
|
||||
|
||||
case 25 : // Sort palette
|
||||
case 23 : // Sort palette
|
||||
{
|
||||
byte h = 0, l = 0, s=0;
|
||||
byte oh=0,ol=0,os=0; // Valeur pour la couleur précédente
|
||||
@ -2028,7 +2068,7 @@ void Button_Palette(void)
|
||||
image_is_backed_up=1;
|
||||
}
|
||||
if (used_colors==-1)
|
||||
Update_color_count(&used_colors,color_usage);
|
||||
Update_color_count(&used_colors, color_usage);
|
||||
|
||||
memcpy(backup_palette,working_palette,sizeof(T_Palette));
|
||||
memcpy(temp_palette,Main_palette,sizeof(T_Palette));
|
||||
|
||||
7
scripts/test.lua
Normal file
7
scripts/test.lua
Normal file
@ -0,0 +1,7 @@
|
||||
w, h = getbrushsize()
|
||||
|
||||
for x = 0, w - 1, 1 do
|
||||
for y = 0, h - 1, 1 do
|
||||
putbrushpixel(x, y, (x+y)%256);
|
||||
end
|
||||
end
|
||||
30
shade.c
30
shade.c
@ -22,6 +22,7 @@
|
||||
#include "global.h"
|
||||
#include "graph.h"
|
||||
#include "engine.h"
|
||||
#include "errors.h"
|
||||
#include "misc.h"
|
||||
#include "readline.h"
|
||||
#include "help.h"
|
||||
@ -432,18 +433,18 @@ void Swap_shade(short block_1_start,short block_2_start,short block_size)
|
||||
|
||||
int Menu_shade(void)
|
||||
{
|
||||
short clicked_button; // Numéro du bouton sur lequel l'utilisateur a clické
|
||||
char str[4]; // str d'affichage du n° de shade actif et du Pas
|
||||
word old_mouse_x,old_mouse_x2; // Mémo. de l'ancienne pos. du curseur
|
||||
word old_mouse_y,old_mouse_y2;
|
||||
byte old_mouse_k,old_mouse_k2;
|
||||
short clicked_button; // Numéro du bouton sur lequel l'utilisateur a clické
|
||||
char str[4]; // str d'affichage du n° de shade actif et du Pas
|
||||
word old_mouse_x, old_mouse_x2; // Mémo. de l'ancienne pos. du curseur
|
||||
word old_mouse_y, old_mouse_y2;
|
||||
byte old_mouse_k, old_mouse_k2;
|
||||
byte temp_color; // Variables de gestion des clicks dans la palette
|
||||
byte first_color=0;
|
||||
byte last_color=0;
|
||||
word selection_start=0;
|
||||
word selection_end=0;
|
||||
byte first_color = Fore_color;
|
||||
byte last_color = Fore_color;
|
||||
word selection_start = 0;
|
||||
word selection_end = 0;
|
||||
T_Special_button * input_button;
|
||||
short temp,temp2;
|
||||
short temp, temp2;
|
||||
word temp_cell;
|
||||
word * buffer; // buffer du Copy/Paste
|
||||
word * undo_buffer; // buffer du Undo
|
||||
@ -477,7 +478,7 @@ int Menu_shade(void)
|
||||
Window_set_normal_button(234,87,43,14,"Paste" ,1,1,SDLK_p); // 7
|
||||
|
||||
// On tagge le bloc
|
||||
Tag_color_range(0,0);
|
||||
Tag_color_range(Fore_color,Fore_color);
|
||||
|
||||
// Tracé d'un cadre creux autour du bloc dégradé
|
||||
Window_display_frame_in(171,26,18,66);
|
||||
@ -614,6 +615,13 @@ int Menu_shade(void)
|
||||
}
|
||||
break;
|
||||
|
||||
case 5: // Ok
|
||||
if (selection_start == selection_end && Shade_list[Shade_current].List[selection_start] > 0)
|
||||
Set_fore_color(Shade_list[Shade_current].List[selection_start]);
|
||||
else if (first_color == last_color)
|
||||
Set_fore_color(first_color);
|
||||
break;
|
||||
|
||||
case 6 : // Copy
|
||||
memcpy(buffer,Shade_list[Shade_current].List,512*sizeof(word));
|
||||
break;
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
BIN
skins/skin_remapped.png
Normal file
BIN
skins/skin_remapped.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
14
struct.h
14
struct.h
@ -436,6 +436,20 @@ typedef struct
|
||||
/// A default 256-color palette.
|
||||
T_Palette Default_palette;
|
||||
|
||||
/// Preview for displaying in the skin dialog
|
||||
byte Preview[16][173];
|
||||
|
||||
/// Black GUI color index in skin palette
|
||||
byte Color_black;
|
||||
/// Dark GUI color index in skin palette
|
||||
byte Color_dark;
|
||||
/// Light GUI color index in skin palette
|
||||
byte Color_light;
|
||||
/// White GUI color index in skin palette
|
||||
byte Color_white;
|
||||
/// Transparent GUI color index in skin file
|
||||
byte Color_trans;
|
||||
|
||||
|
||||
} T_Gui_skin;
|
||||
|
||||
|
||||
92
windows.c
92
windows.c
@ -23,16 +23,19 @@
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h> // atoi()
|
||||
#include <string.h> // strncpy() strlen()
|
||||
|
||||
#include "windows.h"
|
||||
|
||||
#include "engine.h"
|
||||
#include "errors.h"
|
||||
#include "global.h"
|
||||
#include "graph.h"
|
||||
#include "engine.h"
|
||||
#include "misc.h"
|
||||
#include "sdlscreen.h"
|
||||
#include "errors.h"
|
||||
#include "input.h"
|
||||
#include "misc.h"
|
||||
#include "readline.h"
|
||||
#include "sdlscreen.h"
|
||||
|
||||
// L'encapsulation tente une percée...ou un dernier combat.
|
||||
|
||||
@ -210,7 +213,7 @@ void Set_back_color(byte color)
|
||||
///
|
||||
/// Redraw the cell in the menu palette for ::Fore_color.
|
||||
/// This function checks bounds, it won't draw anything if Fore_color is not visible.
|
||||
/// @param id:Color number to frame
|
||||
/// @param id: Color number to frame
|
||||
void Frame_menu_color(byte id)
|
||||
{
|
||||
word start_x,start_y,end_x,end_y;
|
||||
@ -836,6 +839,49 @@ byte Confirmation_box(char * message)
|
||||
}
|
||||
|
||||
|
||||
/// Window that allows you to enter a single value
|
||||
int Requester_window(char* message, int initial_value)
|
||||
{
|
||||
short clicked_button = 0;
|
||||
word window_width;
|
||||
char str[10];
|
||||
|
||||
window_width=(strlen(message)<<3)+20;
|
||||
|
||||
if (window_width<120)
|
||||
window_width = 120;
|
||||
|
||||
Open_window(window_width, 60, "Request");
|
||||
|
||||
Print_in_window((window_width>>1)-(strlen(message)<<2), 20, message,
|
||||
MC_Black, MC_Light);
|
||||
sprintf(str, "%d", initial_value);
|
||||
Window_set_input_button(10, 37, 4); // 1
|
||||
Print_in_window(11, 39, str, MC_Black, MC_Light);
|
||||
Window_set_normal_button(60 ,37,40,14,"OK",1,1,SDLK_y); // 2
|
||||
Window_set_normal_button(130,37,60,14,"Cancel" ,1,1,SDLK_n); // 3
|
||||
|
||||
Update_rect(Window_pos_X, Window_pos_Y, Menu_factor_X * window_width,
|
||||
Menu_factor_Y * 60);
|
||||
Display_cursor();
|
||||
|
||||
do
|
||||
{
|
||||
clicked_button = Window_clicked_button();
|
||||
if (clicked_button == 1)
|
||||
Readline(11, 39, str, 4, 1);
|
||||
if (Key == SDLK_ESCAPE) clicked_button = 2;
|
||||
}
|
||||
while (clicked_button <= 0);
|
||||
|
||||
Key = 0;
|
||||
|
||||
Close_window();
|
||||
Display_cursor();
|
||||
|
||||
return clicked_button==2?-1:atoi(str);
|
||||
}
|
||||
|
||||
|
||||
/// Window that show a warning message and wait for a click on the OK button
|
||||
void Warning_message(char * message)
|
||||
@ -864,7 +910,7 @@ void Warning_message(char * message)
|
||||
}
|
||||
|
||||
/// Window that shows a big message, and waits for a click on OK
|
||||
void Verbose_error_message(char * message)
|
||||
void Verbose_error_message(const char * message)
|
||||
{
|
||||
short clicked_button;
|
||||
int line;
|
||||
@ -1120,7 +1166,7 @@ void Display_menu_palette_avoiding_window(byte * table)
|
||||
if (table[real_color]!=real_color)
|
||||
{
|
||||
start_x=Palette_cell_X(real_color);
|
||||
start_y=Palette_cell_Y(real_color); //Menu_Y_before_window ??!
|
||||
start_y=Palette_cell_Y(real_color);
|
||||
end_x=start_x+width;
|
||||
end_y=start_y+height;
|
||||
|
||||
@ -2497,23 +2543,23 @@ void Remap_screen_after_menu_colors_change(void)
|
||||
void Compute_optimal_menu_colors(T_Components * palette)
|
||||
{
|
||||
byte table[4];
|
||||
short i,j,k;
|
||||
short i;
|
||||
|
||||
|
||||
Old_black =MC_Black;
|
||||
Old_dark=MC_Dark;
|
||||
Old_light=MC_Light;
|
||||
Old_white=MC_White;
|
||||
Old_trans=MC_Trans;
|
||||
Old_dark = MC_Dark;
|
||||
Old_light = MC_Light;
|
||||
Old_white = MC_White;
|
||||
Old_trans = MC_Trans;
|
||||
|
||||
// Recherche du noir
|
||||
Compute_4_best_colors_for_1_menu_color
|
||||
(Fav_menu_colors[0].R, Fav_menu_colors[0].G, Fav_menu_colors[0].B,palette,table);
|
||||
(Config.Fav_menu_colors[0].R, Config.Fav_menu_colors[0].G, Config.Fav_menu_colors[0].B,palette,table);
|
||||
MC_Black=table[0];
|
||||
|
||||
// Recherche du blanc
|
||||
Compute_4_best_colors_for_1_menu_color
|
||||
(Fav_menu_colors[3].R, Fav_menu_colors[3].G, Fav_menu_colors[3].B,palette,table);
|
||||
(Config.Fav_menu_colors[3].R, Config.Fav_menu_colors[3].G, Config.Fav_menu_colors[3].B,palette,table);
|
||||
if (MC_Black!=table[0])
|
||||
MC_White=table[0];
|
||||
else
|
||||
@ -2521,7 +2567,7 @@ void Compute_optimal_menu_colors(T_Components * palette)
|
||||
|
||||
// Recherche du gris clair
|
||||
Compute_4_best_colors_for_1_menu_color
|
||||
(Fav_menu_colors[2].R, Fav_menu_colors[2].G, Fav_menu_colors[2].B,palette,table);
|
||||
(Config.Fav_menu_colors[2].R, Config.Fav_menu_colors[2].G, Config.Fav_menu_colors[2].B,palette,table);
|
||||
if ( (MC_Black!=table[0]) && (MC_White!=table[0]) )
|
||||
MC_Light=table[0];
|
||||
else
|
||||
@ -2534,7 +2580,7 @@ void Compute_optimal_menu_colors(T_Components * palette)
|
||||
|
||||
// Recherche du gris foncé
|
||||
Compute_4_best_colors_for_1_menu_color
|
||||
(Fav_menu_colors[1].R, Fav_menu_colors[1].G, Fav_menu_colors[1].B,palette,table);
|
||||
(Config.Fav_menu_colors[1].R, Config.Fav_menu_colors[1].G, Config.Fav_menu_colors[1].B,palette,table);
|
||||
if ( (MC_Black!=table[0]) && (MC_White!=table[0]) && (MC_Light!=table[0]) )
|
||||
MC_Dark=table[0];
|
||||
else
|
||||
@ -2564,7 +2610,14 @@ void Compute_optimal_menu_colors(T_Components * palette)
|
||||
for (MC_Trans=0; ((MC_Trans==MC_Black) || (MC_Trans==MC_Dark) ||
|
||||
(MC_Trans==MC_Light) || (MC_Trans==MC_White)); MC_Trans++);
|
||||
|
||||
// Et maintenant, on "remappe" tous les sprites, etc...
|
||||
Remap_menu_sprites();
|
||||
}
|
||||
|
||||
/// Remap all menu data when the palette changes or a new skin is loaded
|
||||
void Remap_menu_sprites()
|
||||
{
|
||||
int i, j, k;
|
||||
|
||||
if ( (MC_Light!=Old_light)
|
||||
|| (MC_Dark!=Old_dark)
|
||||
|| (MC_White!=Old_white)
|
||||
@ -2621,6 +2674,11 @@ void Compute_optimal_menu_colors(T_Components * palette)
|
||||
for (j=0; j<ICON_SPRITE_HEIGHT; j++)
|
||||
for (i=0; i<ICON_SPRITE_WIDTH; i++)
|
||||
Remap_pixel(&Gfx->Icon_sprite[k][j][i]);
|
||||
|
||||
// Skin preview
|
||||
for (j = 0; j < 173; j++)
|
||||
for (i = 0; i < 16; i++)
|
||||
Remap_pixel(&Gfx->Preview[i][j]);
|
||||
}
|
||||
Clear_border(MC_Black);
|
||||
}
|
||||
|
||||
@ -39,6 +39,7 @@ void Hide_cursor(void);
|
||||
|
||||
void Remap_screen_after_menu_colors_change(void);
|
||||
void Compute_optimal_menu_colors(T_Components * palette);
|
||||
void Remap_menu_sprites();
|
||||
|
||||
void Position_screen_according_to_zoom(void);
|
||||
void Compute_separator_data(void);
|
||||
@ -70,7 +71,8 @@ void Print_counter(short x,short y,const char * str,byte text_color,byte backgro
|
||||
|
||||
byte Confirmation_box(char * message);
|
||||
void Warning_message(char * message);
|
||||
void Verbose_error_message(char * message);
|
||||
void Verbose_error_message(const char * message);
|
||||
int Requester_window(char* message, int initial_value);
|
||||
|
||||
void Display_image_limits(void);
|
||||
void Display_all_screen(void);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user