diff --git a/doc/COMPILING.txt b/doc/COMPILING.txt index 271c656a..c3d753ac 100644 --- a/doc/COMPILING.txt +++ b/doc/COMPILING.txt @@ -184,3 +184,67 @@ Lua: Copy liblua.a to c:\msys\mingw\lib Copy lua51.dll to c:\msys\mingw\bin +== Atari TOS machines == +The Atari build is very similar to the Linux one. The build might work on native machine with gcc 4.3> compiler, +but it wasn't tested. You can also build binary for Coldfire based machines(e.g. Firebee) by +replacing '-m68020-60' in makefile to '-mcpu=5475'. + +Preferable way is to build GRAFX2 with use of cross compiler, you can get one from Vincent Riviere site: +(URL: http://vincent.riviere.free.fr/soft/m68k-atari-mint). There are versions for win32 (Cygwin) and +debian packages for latest Ubuntu (32/64bit). + +Before compilation you have to build all the needed libraries mentioned in requirements. + +To compile a Atari TOS executable, type in + make ATARICROSS=1 prefix=/usr/m68k-atari-mint +You can also add other options like NOTTF,NOLUA,NOLAYERS etc. to enable/disable program features.. + +If you don't know how build libraries here's some hints. Please note that prefix path in examples below is valid only under Linux, +in case of Cygwin the path will be '/opt/m68k-atari-mint'. There will be no prefix when building on native machine. +You have to omit 'sudo' under Cygwin and native build. Stick to this order and you will be fine ;> ... +The versions of libraries were tested, you can also try newer versions. As I mentioned earlier, replace '-m68020-60' with '-mcpu=5475' +if you want to target Coldfire machines. + +libpng [optional](for png reading in SDL_image): +------------------------------------------------ +note: you will need libzip too +libpng 1.2.44 +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" +sudo make install +or +libpng 1.4.44 +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer -DPNG_NO_SETJMP" +sudo make install + +libjpeg, libtiff [optional] (for jpeg/tiff support in SDL_image) +---------------------------------------------------------------- +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" +sudo make install + +freetype 2.4.4 [optional] (for TTF fonts support, required by SDL_ttf) +---------------------------------------------------------------------- +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" +sudo make install + +lua 5.0.4 [optional] (for LUA scripting support) +------------------------------------------------ +Here you have to customize makefiles, add prefixes, platform has to be set as generic. + +SDL 1.2 [mandatory] +-------------------- +note: best is to grab it directly from Mercurial repository +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint --disable-video-opengl --disable-shared --enable-static --disable-threads CFLAGS="-m68020-60 -O2 -fomit-frame-pointer" +sudo make install + +SDL_ttf [optional] (for ttf fonts support, depends on SDL and freetype) +------------------------------------------- +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint --disable-shared --enable-static --with-sdl-prefix=/usr/m68k-atari-mint --with-freetype-prefix=/usr/m68k-atari-mint CFLAGS=" -m68020-60 -O2 -fomit-frame-pointer" +sudo make install + +SDL_image 1.2.10 [mandatory] +---------------------------- +./configure --prefix=/usr/m68k-atari-mint --disable-shared --enable-static --host=m68k-atari-mint --disable-shared --enable-static --with-sdl-prefix=/usr/m68k-atari-mint CFLAGS="-DHAVE_OPENGL=0 -m68020-60 -O2 -fomit-frame-pointer" +sudo make install + +And that's it! :) + diff --git a/share/grafx2/scripts/samples_2.3/brush/ApplyColor.lua b/share/grafx2/scripts/samples_2.4/brush/ApplyColor.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/brush/ApplyColor.lua rename to share/grafx2/scripts/samples_2.4/brush/ApplyColor.lua diff --git a/share/grafx2/scripts/samples_2.3/brush/Fisheye.lua b/share/grafx2/scripts/samples_2.4/brush/Fisheye.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/brush/Fisheye.lua rename to share/grafx2/scripts/samples_2.4/brush/Fisheye.lua diff --git a/share/grafx2/scripts/samples_2.3/brush/GrayscaleAvg.lua b/share/grafx2/scripts/samples_2.4/brush/GrayscaleAvg.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/brush/GrayscaleAvg.lua rename to share/grafx2/scripts/samples_2.4/brush/GrayscaleAvg.lua diff --git a/share/grafx2/scripts/samples_2.3/brush/GrayscaleDesat.lua b/share/grafx2/scripts/samples_2.4/brush/GrayscaleDesat.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/brush/GrayscaleDesat.lua rename to share/grafx2/scripts/samples_2.4/brush/GrayscaleDesat.lua diff --git a/share/grafx2/scripts/samples_2.3/brush/Halfsmooth.lua b/share/grafx2/scripts/samples_2.4/brush/Halfsmooth.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/brush/Halfsmooth.lua rename to share/grafx2/scripts/samples_2.4/brush/Halfsmooth.lua diff --git a/share/grafx2/scripts/samples_2.3/brush/Waves.lua b/share/grafx2/scripts/samples_2.4/brush/Waves.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/brush/Waves.lua rename to share/grafx2/scripts/samples_2.4/brush/Waves.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/3DPalette.lua b/share/grafx2/scripts/samples_2.4/demo/3DPalette.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/3DPalette.lua rename to share/grafx2/scripts/samples_2.4/demo/3DPalette.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/Ellipse.lua b/share/grafx2/scripts/samples_2.4/demo/Ellipse.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/Ellipse.lua rename to share/grafx2/scripts/samples_2.4/demo/Ellipse.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/FlipPicture.lua b/share/grafx2/scripts/samples_2.4/demo/FlipPicture.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/FlipPicture.lua rename to share/grafx2/scripts/samples_2.4/demo/FlipPicture.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/SierpinskyCarpet.lua b/share/grafx2/scripts/samples_2.4/demo/SierpinskyCarpet.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/SierpinskyCarpet.lua rename to share/grafx2/scripts/samples_2.4/demo/SierpinskyCarpet.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/SierpinskyTriangle.lua b/share/grafx2/scripts/samples_2.4/demo/SierpinskyTriangle.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/SierpinskyTriangle.lua rename to share/grafx2/scripts/samples_2.4/demo/SierpinskyTriangle.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/Spritesheet.lua b/share/grafx2/scripts/samples_2.4/demo/Spritesheet.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/Spritesheet.lua rename to share/grafx2/scripts/samples_2.4/demo/Spritesheet.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/brush/Amigaball.lua b/share/grafx2/scripts/samples_2.4/demo/brush/Amigaball.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/brush/Amigaball.lua rename to share/grafx2/scripts/samples_2.4/demo/brush/Amigaball.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/brush/ColorSphere.lua b/share/grafx2/scripts/samples_2.4/demo/brush/ColorSphere.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/brush/ColorSphere.lua rename to share/grafx2/scripts/samples_2.4/demo/brush/ColorSphere.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/brush/FindAA.lua b/share/grafx2/scripts/samples_2.4/demo/brush/FindAA.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/brush/FindAA.lua rename to share/grafx2/scripts/samples_2.4/demo/brush/FindAA.lua diff --git a/share/grafx2/scripts/samples_2.3/demo/brush/Mandelbrot.lua b/share/grafx2/scripts/samples_2.4/demo/brush/Mandelbrot.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/demo/brush/Mandelbrot.lua rename to share/grafx2/scripts/samples_2.4/demo/brush/Mandelbrot.lua diff --git a/share/grafx2/scripts/samples_2.3/libs/dawnbringer_lib.lua b/share/grafx2/scripts/samples_2.4/libs/dawnbringer_lib.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/libs/dawnbringer_lib.lua rename to share/grafx2/scripts/samples_2.4/libs/dawnbringer_lib.lua diff --git a/share/grafx2/scripts/samples_2.3/libs/memory.lua b/share/grafx2/scripts/samples_2.4/libs/memory.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/libs/memory.lua rename to share/grafx2/scripts/samples_2.4/libs/memory.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/Desaturate.lua b/share/grafx2/scripts/samples_2.4/palette/Desaturate.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/Desaturate.lua rename to share/grafx2/scripts/samples_2.4/palette/Desaturate.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/ExpandColors.lua b/share/grafx2/scripts/samples_2.4/palette/ExpandColors.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/ExpandColors.lua rename to share/grafx2/scripts/samples_2.4/palette/ExpandColors.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/FillColorCube.lua b/share/grafx2/scripts/samples_2.4/palette/FillColorCube.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/FillColorCube.lua rename to share/grafx2/scripts/samples_2.4/palette/FillColorCube.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/InvertedRGB.lua b/share/grafx2/scripts/samples_2.4/palette/InvertedRGB.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/InvertedRGB.lua rename to share/grafx2/scripts/samples_2.4/palette/InvertedRGB.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/Set3bit.lua b/share/grafx2/scripts/samples_2.4/palette/Set3bit.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/Set3bit.lua rename to share/grafx2/scripts/samples_2.4/palette/Set3bit.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/Set6bit.lua b/share/grafx2/scripts/samples_2.4/palette/Set6bit.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/Set6bit.lua rename to share/grafx2/scripts/samples_2.4/palette/Set6bit.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/SetC64Palette.lua b/share/grafx2/scripts/samples_2.4/palette/SetC64Palette.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/SetC64Palette.lua rename to share/grafx2/scripts/samples_2.4/palette/SetC64Palette.lua diff --git a/share/grafx2/scripts/samples_2.3/palette/ShiftHue.lua b/share/grafx2/scripts/samples_2.4/palette/ShiftHue.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/palette/ShiftHue.lua rename to share/grafx2/scripts/samples_2.4/palette/ShiftHue.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/CellColourReducer.lua b/share/grafx2/scripts/samples_2.4/picture/CellColourReducer.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/CellColourReducer.lua rename to share/grafx2/scripts/samples_2.4/picture/CellColourReducer.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/DrawGridIsometric.lua b/share/grafx2/scripts/samples_2.4/picture/DrawGridIsometric.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/DrawGridIsometric.lua rename to share/grafx2/scripts/samples_2.4/picture/DrawGridIsometric.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/DrawGridOrthogonal_RGB.lua b/share/grafx2/scripts/samples_2.4/picture/DrawGridOrthogonal_RGB.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/DrawGridOrthogonal_RGB.lua rename to share/grafx2/scripts/samples_2.4/picture/DrawGridOrthogonal_RGB.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/DrawgridOrthogonal_Index.lua b/share/grafx2/scripts/samples_2.4/picture/DrawgridOrthogonal_Index.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/DrawgridOrthogonal_Index.lua rename to share/grafx2/scripts/samples_2.4/picture/DrawgridOrthogonal_Index.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/GlassGridFilter.lua b/share/grafx2/scripts/samples_2.4/picture/GlassGridFilter.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/GlassGridFilter.lua rename to share/grafx2/scripts/samples_2.4/picture/GlassGridFilter.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/PaletteToPicture.lua b/share/grafx2/scripts/samples_2.4/picture/PaletteToPicture.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/PaletteToPicture.lua rename to share/grafx2/scripts/samples_2.4/picture/PaletteToPicture.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/Pic2isometric.lua b/share/grafx2/scripts/samples_2.4/picture/Pic2isometric.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/Pic2isometric.lua rename to share/grafx2/scripts/samples_2.4/picture/Pic2isometric.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/Rainbow-Dark2Bright.lua b/share/grafx2/scripts/samples_2.4/picture/Rainbow-Dark2Bright.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/Rainbow-Dark2Bright.lua rename to share/grafx2/scripts/samples_2.4/picture/Rainbow-Dark2Bright.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/RemapImage2RGB.lua b/share/grafx2/scripts/samples_2.4/picture/RemapImage2RGB.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/RemapImage2RGB.lua rename to share/grafx2/scripts/samples_2.4/picture/RemapImage2RGB.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/RemapImage2RGB_ed.lua b/share/grafx2/scripts/samples_2.4/picture/RemapImage2RGB_ed.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/RemapImage2RGB_ed.lua rename to share/grafx2/scripts/samples_2.4/picture/RemapImage2RGB_ed.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/RemapImageTo3bitPal.lua b/share/grafx2/scripts/samples_2.4/picture/RemapImageTo3bitPal.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/RemapImageTo3bitPal.lua rename to share/grafx2/scripts/samples_2.4/picture/RemapImageTo3bitPal.lua diff --git a/share/grafx2/scripts/samples_2.3/picture/XBitColourXpaceFromPalette.lua b/share/grafx2/scripts/samples_2.4/picture/XBitColourXpaceFromPalette.lua similarity index 100% rename from share/grafx2/scripts/samples_2.3/picture/XBitColourXpaceFromPalette.lua rename to share/grafx2/scripts/samples_2.4/picture/XBitColourXpaceFromPalette.lua diff --git a/src/.DS_Store b/src/.DS_Store index 98526fb4..0be3b530 100644 Binary files a/src/.DS_Store and b/src/.DS_Store differ diff --git a/src/Makefile b/src/Makefile index 80d1b167..820dade2 100644 --- a/src/Makefile +++ b/src/Makefile @@ -50,8 +50,8 @@ ifdef COMSPEC RMDIR = rmdir --ignore-fail-on-non-empty CP = cp BIN = ../bin/grafx2.exe - COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb `sdl-config --cflags` $(TTFCOPT) $(JOYCOPT) $(VKEYCOPT) $(LUACOPT) $(LAYERCOPT) - LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng14 $(LUALOPT) + COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb $(shell sdl-config --cflags) $(TTFCOPT) $(JOYCOPT) $(VKEYCOPT) $(LUACOPT) $(LAYERCOPT) + LOPT = $(shell sdl-config --libs) -lSDL_image $(TTFLOPT) -lpng14 $(LUALOPT) LUALOPT = -llua CC = gcc OBJDIR = ../obj/win32 @@ -74,8 +74,8 @@ else RMDIR = rmdir --ignore-fail-on-non-empty CP = cp BIN = ../bin/grafx2 - COPT = -Wall -c -gstabs `sdl-config --cflags` $(TTFCOPT) - LOPT = `sdl-config --libs` -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lft2 + COPT = -Wall -c -gstabs $(shell sdl-config --cflags) $(TTFCOPT) + LOPT = $(shell sdl-config --libs) -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lft2 CC = gcc OBJDIR = ../obj/amiga ZIP = lha @@ -100,8 +100,8 @@ else SDLCOPT = $(MACOSX_ARCH) -I$(FWDIR)/SDL.framework/Headers -I$(FWDIR)/SDL_image.framework/Headers -I$(FWDIR)/SDL_ttf.framework/Headers -D_THREAD_SAFE #-framework SDL_ttf SDLLOPT = -isysroot $(MACOSX_SYSROOT) $(MACOSX_ARCH) -L/usr/lib -framework SDL -framework SDL_image -framework Cocoa -framework Carbon -framework OpenGL - COPT = -D_DARWIN_C_SOURCE -D__macosx__ -D__linux__ -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -std=c99 -c -g $(LUACOPT) $(SDLCOPT) $(TTFCOPT) -I/usr/X11/include - LOPT = $(SDLLOPT) -llua -lpng -lz + COPT = -D_DARWIN_C_SOURCE -D__macosx__ -D__linux__ -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -std=c99 -c -g $(LUACOPT) $(shell sdlCOPT) $(TTFCOPT) -I/usr/X11/include + LOPT = $(shell sdlLOPT) -llua -lpng -lz # Use gcc for compiling. Use ncc to build a callgraph and analyze the code. CC = gcc #CC = nccgen -ncgcc -ncld -ncfabs @@ -119,8 +119,8 @@ else RMDIR = rmdir --ignore-fail-on-non-empty CP = cp BIN = ../bin/grafx2 - COPT = -Wall -g `sdl-config --cflags` $(TTFCOPT) - LOPT = -lSDL_image `sdl-config --libs` -lpng -ljpeg -lz $(TTFLOPT) -lfreetype2shared + COPT = -Wall -g $(shell sdl-config --cflags) $(TTFCOPT) + LOPT = -lSDL_image $(shell sdl-config --libs) -lpng -ljpeg -lz $(TTFLOPT) -lfreetype2shared CC = gcc OBJDIR = ../obj/aros STRIP = strip --strip-unneeded --remove-section .comment @@ -135,8 +135,8 @@ else RMDIR = rmdir --ignore-fail-on-non-empty CP = cp BIN = ../bin/grafx2 - COPT = -Wall -gstabs -c `sdl-config --cflags` $(TTFCOPT) - LOPT = -lSDL_image `sdl-config --libs` -lpng -ljpeg -lz $(TTFLOPT) + COPT = -Wall -gstabs -c $(shell sdl-config --cflags) $(TTFCOPT) + LOPT = -lSDL_image $(shell sdl-config --libs) -lpng -ljpeg -lz $(TTFLOPT) CC = gcc OBJDIR = ../obj/morphos ZIP = lha @@ -151,8 +151,8 @@ else RMDIR = rmdir --ignore-fail-on-non-empty CP = cp BIN = ../bin/grafx2 - COPT = -W -Wall -c -g `sdl-config --cflags` $(TTFCOPT) -I/boot/home/config/include - LOPT = `sdl-config --libs` -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) + COPT = -W -Wall -c -g $(shell sdl-config --cflags) $(TTFCOPT) -I/boot/home/config/include + LOPT = $(shell sdl-config --libs) -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) CC = gcc OBJDIR = ../obj/beos ZIP = zip @@ -172,8 +172,8 @@ else LUACOPT = -D__ENABLE_LUA__ LUALOPT = -llua endif - COPT = -W -Wall -c -g `sdl-config --cflags` $(TTFCOPT) -I/boot/common/include $(LUACOPT) - LOPT = `sdl-config --libs` -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lfreetype -lbe $(LUALOPT) + COPT = -W -Wall -c -g $(shell sdl-config --cflags) $(TTFCOPT) -I/boot/common/include $(LUACOPT) + LOPT = $(shell sdl-config --libs) -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) -lfreetype -lbe $(LUALOPT) CC = gcc OBJDIR = ../obj/haiku ZIP = zip @@ -186,8 +186,8 @@ else RMDIR = rmdir --ignore-fail-on-non-empty CP = cp BIN = ../bin/grafx2 - COPT = -W -Wall -Wdeclaration-after-statement -c -g `sdl-config --cflags` $(TTFCOPT) - LOPT = `sdl-config --libs` -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) + COPT = -W -Wall -Wdeclaration-after-statement -c -g $(shell sdl-config --cflags) $(TTFCOPT) + LOPT = $(shell sdl-config --libs) -lSDL_image -lpng -ljpeg -lz $(TTFLOPT) CC = gcc OBJDIR = ../obj/skyos ZIP = zip @@ -202,13 +202,30 @@ else ZIP = zip PLATFORMFILES = gfx2.png BIN = ../bin/grafx2 - COPT = -W -Wall -std=c99 -c -g -gstabs -D__TRU64__ `sdl-config --cflags` $(TTFCOPT) $(LUACOPT) - LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng $(LUALOPT) -lm + COPT = -W -Wall -std=c99 -c -g -gstabs -D__TRU64__ $(shell sdl-config --cflags) $(TTFCOPT) $(LUACOPT) + LOPT = $(shell sdl-config --libs) -lSDL_image $(TTFLOPT) -lpng $(LUALOPT) -lm OBJDIR = ../obj/unix X11LOPT = -lX11 CC = gcc else - + ifeq ($(PLATFORM),FreeMiNT) #10 + #Atari FreeMiNT/TOS specific + DELCOMMAND = rm -rf + MKDIR = mkdir -p + RMDIR = rmdir + CP = cp + ZIP = zip + PLATFORMFILES = gfx2.png + CC = gcc + BIN = ../bin/grafx2.ttp + LUALOPT = -llua + OBJDIR = ../obj/m68k-atari-mint + PLATFORM = m68k-atari-mint + STRIP = strip -s + X11LOPT = + COPT = -W -Wall -m68020-60 -fomit-frame-pointer -pedantic -std=c99 -Wdeclaration-after-statement -D__MINT__ -DNO_INLINE_MATH -O$(OPTIM) -c -I$(prefix)/include `$(prefix)/bin/libpng12-config --cflags` `$(prefix)/bin/sdl-config --cflags` $(JOYCOPT) $(LAYERCOPT) $(LUACOPT) + LOPT = -static -m68020-60 -lSDL_image `$(prefix)/bin/sdl-config --libs` -L$(prefix)/lib -ltiff -ljpeg `$(prefix)/bin/libpng12-config --libs` -lz -lm $(TTFLOPT) -lfreetype $(LUALOPT) $(LAYERLOPT) + else # Finally, the default rules that work fine for most unix/gcc systems, linux and freebsd are tested. # Linux and FreeBSD specific (default rules) DELCOMMAND = rm -rf @@ -232,8 +249,8 @@ else #cross compile a Win32 executable CC = i586-mingw32msvc-gcc BIN = ../bin/grafx2.exe - COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb -Dmain=SDL_main `/usr/local/cross-tools/i386-mingw32/bin/sdl-config --cflags` $(TTFCOPT) - LOPT = -mwindows -lmingw32 -lSDLmain -lSDL -lshlwapi `/usr/local/cross-tools/i386-mingw32/bin/sdl-config --libs` -lSDL_image $(TTFLOPT) + COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb -Dmain=SDL_main $(shell /usr/local/cross-tools/i386-mingw32/bin/sdl-config --cflags) $(TTFCOPT) + LOPT = -mwindows -lmingw32 -lSDLmain -lSDL -lshlwapi $(shell /usr/local/cross-tools/i386-mingw32/bin/sdl-config --libs) -lSDL_image $(TTFLOPT) OBJDIR = ../obj/win32 PLATFORM = win32 else @@ -266,13 +283,13 @@ else #cross compile an exec for atari TOS/MiNT machine CC = m68k-atari-mint-gcc BIN = ../bin/grafx2.ttp - LUALOPT = -llua + LUALOPT = -llua OBJDIR = ../obj/m68k-atari-mint PLATFORM = m68k-atari-mint STRIP = m68k-atari-mint-strip -s - X11LOPT = - COPT = -W -Wall -m68020-60 -fomit-frame-pointer -pedantic -std=c99 -Wdeclaration-after-statement -D__MINT__ -DNO_INLINE_MATH -O$(OPTIM) -c -I$(prefix)/include `$(prefix)/bin/libpng12-config --cflags` `$(prefix)/bin/sdl-config --cflags` $() $(JOYCOPT) $(LAYERCOPT) $(LUACOPT) - LOPT = -static -m68020-60 -lSDL_image `$(prefix)/bin/sdl-config --libs` -L$(prefix)/lib -ltiff -ljpeg `$(prefix)/bin/libpng12-config --libs` -lz -lm $(TTFLOPT) -lfreetype $(LUALOPT) $(LAYERLOPT) + X11LOPT = + COPT = -W -Wall -m68020-60 -fomit-frame-pointer -std=c99 -Wdeclaration-after-statement -D__MINT__ -ffast-math -O$(OPTIM) -c -I$(prefix)/include `$(prefix)/bin/libpng12-config --cflags` `$(prefix)/bin/sdl-config --cflags` $(JOYCOPT) $(LAYERCOPT) $(LUACOPT) + LOPT = -static -m68020-60 -lSDL_image `$(prefix)/bin/sdl-config --libs` -L$(prefix)/lib -ltiff -ljpeg `$(prefix)/bin/libpng12-config --libs` -lz -lm $(TTFLOPT) -lfreetype $(LUALOPT) -lm $(LAYERLOPT) -Wl,--stack,8k else # Compiles a regular linux executable for the native platform @@ -297,6 +314,7 @@ else endif endif endif + endif endif ### BUILD SETTINGS are set according to vars set in the platform selection, @@ -373,11 +391,11 @@ OBJ = $(OBJDIR)/main.o $(OBJDIR)/init.o $(OBJDIR)/graph.o $(OBJDIR)/sdlscreen.o SKIN_FILES = ../share/grafx2/skins/skin_classic.png ../share/grafx2/skins/skin_modern.png ../share/grafx2/skins/skin_DPaint.png ../share/grafx2/skins/font_Classic.png ../share/grafx2/skins/font_Fun.png ../share/grafx2/skins/font_Fairlight.png ../share/grafx2/skins/font_Melon.png ../share/grafx2/skins/font_DPaint.png ../share/grafx2/skins/skin_scenish.png ../share/grafx2/skins/font_Seen.png ../share/grafx2/skins/skin_Aurora.png -SCRIPT_FILES = ../share/grafx2/scripts/samples_2.3/brush/ApplyColor.lua ../share/grafx2/scripts/samples_2.3/brush/Fisheye.lua ../share/grafx2/scripts/samples_2.3/brush/GrayscaleAvg.lua ../share/grafx2/scripts/samples_2.3/brush/GrayscaleDesat.lua ../share/grafx2/scripts/samples_2.3/brush/Halfsmooth.lua ../share/grafx2/scripts/samples_2.3/brush/Waves.lua ../share/grafx2/scripts/samples_2.3/demo/3DPalette.lua ../share/grafx2/scripts/samples_2.3/demo/Ellipse.lua ../share/grafx2/scripts/samples_2.3/demo/FlipPicture.lua \ -../share/grafx2/scripts/samples_2.3/demo/SierpinskyCarpet.lua ../share/grafx2/scripts/samples_2.3/demo/SierpinskyTriangle.lua ../share/grafx2/scripts/samples_2.3/demo/Spritesheet.lua ../share/grafx2/scripts/samples_2.3/demo/brush/Amigaball.lua ../share/grafx2/scripts/samples_2.3/demo/brush/ColorSphere.lua ../share/grafx2/scripts/samples_2.3/demo/brush/FindAA.lua ../share/grafx2/scripts/samples_2.3/demo/brush/Mandelbrot.lua ../share/grafx2/scripts/samples_2.3/libs/dawnbringer_lib.lua ../share/grafx2/scripts/samples_2.3/libs/memory.lua \ -../share/grafx2/scripts/samples_2.3/palette/Desaturate.lua ../share/grafx2/scripts/samples_2.3/palette/ExpandColors.lua ../share/grafx2/scripts/samples_2.3/palette/FillColorCube.lua ../share/grafx2/scripts/samples_2.3/palette/InvertedRGB.lua ../share/grafx2/scripts/samples_2.3/palette/Set3bit.lua ../share/grafx2/scripts/samples_2.3/palette/Set6bit.lua ../share/grafx2/scripts/samples_2.3/palette/SetC64Palette.lua ../share/grafx2/scripts/samples_2.3/palette/ShiftHue.lua ../share/grafx2/scripts/samples_2.3/picture/CellColourReducer.lua \ -../share/grafx2/scripts/samples_2.3/picture/DrawGridIsometric.lua ../share/grafx2/scripts/samples_2.3/picture/DrawgridOrthogonal_Index.lua ../share/grafx2/scripts/samples_2.3/picture/DrawGridOrthogonal_RGB.lua ../share/grafx2/scripts/samples_2.3/picture/GlassGridFilter.lua ../share/grafx2/scripts/samples_2.3/picture/PaletteToPicture.lua ../share/grafx2/scripts/samples_2.3/picture/Pic2isometric.lua ../share/grafx2/scripts/samples_2.3/picture/Rainbow-Dark2Bright.lua ../share/grafx2/scripts/samples_2.3/picture/RemapImage2RGB.lua \ -../share/grafx2/scripts/samples_2.3/picture/RemapImage2RGB_ed.lua ../share/grafx2/scripts/samples_2.3/picture/RemapImageTo3bitPal.lua ../share/grafx2/scripts/samples_2.3/picture/XBitColourXpaceFromPalette.lua +SCRIPT_FILES = ../share/grafx2/scripts/samples_2.4/brush/ApplyColor.lua ../share/grafx2/scripts/samples_2.4/brush/Fisheye.lua ../share/grafx2/scripts/samples_2.4/brush/GrayscaleAvg.lua ../share/grafx2/scripts/samples_2.4/brush/GrayscaleDesat.lua ../share/grafx2/scripts/samples_2.4/brush/Halfsmooth.lua ../share/grafx2/scripts/samples_2.4/brush/Waves.lua ../share/grafx2/scripts/samples_2.4/demo/3DPalette.lua ../share/grafx2/scripts/samples_2.4/demo/Ellipse.lua ../share/grafx2/scripts/samples_2.4/demo/FlipPicture.lua \ +../share/grafx2/scripts/samples_2.4/demo/SierpinskyCarpet.lua ../share/grafx2/scripts/samples_2.4/demo/SierpinskyTriangle.lua ../share/grafx2/scripts/samples_2.4/demo/Spritesheet.lua ../share/grafx2/scripts/samples_2.4/demo/brush/Amigaball.lua ../share/grafx2/scripts/samples_2.4/demo/brush/ColorSphere.lua ../share/grafx2/scripts/samples_2.4/demo/brush/FindAA.lua ../share/grafx2/scripts/samples_2.4/demo/brush/Mandelbrot.lua ../share/grafx2/scripts/samples_2.4/libs/dawnbringer_lib.lua ../share/grafx2/scripts/samples_2.4/libs/memory.lua \ +../share/grafx2/scripts/samples_2.4/palette/Desaturate.lua ../share/grafx2/scripts/samples_2.4/palette/ExpandColors.lua ../share/grafx2/scripts/samples_2.4/palette/FillColorCube.lua ../share/grafx2/scripts/samples_2.4/palette/InvertedRGB.lua ../share/grafx2/scripts/samples_2.4/palette/Set3bit.lua ../share/grafx2/scripts/samples_2.4/palette/Set6bit.lua ../share/grafx2/scripts/samples_2.4/palette/SetC64Palette.lua ../share/grafx2/scripts/samples_2.4/palette/ShiftHue.lua ../share/grafx2/scripts/samples_2.4/picture/CellColourReducer.lua \ +../share/grafx2/scripts/samples_2.4/picture/DrawGridIsometric.lua ../share/grafx2/scripts/samples_2.4/picture/DrawgridOrthogonal_Index.lua ../share/grafx2/scripts/samples_2.4/picture/DrawGridOrthogonal_RGB.lua ../share/grafx2/scripts/samples_2.4/picture/GlassGridFilter.lua ../share/grafx2/scripts/samples_2.4/picture/PaletteToPicture.lua ../share/grafx2/scripts/samples_2.4/picture/Pic2isometric.lua ../share/grafx2/scripts/samples_2.4/picture/Rainbow-Dark2Bright.lua ../share/grafx2/scripts/samples_2.4/picture/RemapImage2RGB.lua \ +../share/grafx2/scripts/samples_2.4/picture/RemapImage2RGB_ed.lua ../share/grafx2/scripts/samples_2.4/picture/RemapImageTo3bitPal.lua ../share/grafx2/scripts/samples_2.4/picture/XBitColourXpaceFromPalette.lua FONT_FILES = ../share/grafx2/fonts/8pxfont.png ../share/grafx2/fonts/Tuffy.ttf ../share/grafx2/fonts/PF_Arma_5__.png ../share/grafx2/fonts/PF_Easta_7_.png ../share/grafx2/fonts/PF_Easta_7__.png ../share/grafx2/fonts/PF_Ronda_7__.png ../share/grafx2/fonts/PF_Tempesta_5.png ../share/grafx2/fonts/PF_Tempesta_5_.png ../share/grafx2/fonts/PF_Tempesta_5__.png ../share/grafx2/fonts/PF_Tempesta_5___.png ../share/grafx2/fonts/PF_Tempesta_7.png ../share/grafx2/fonts/PF_Tempesta_7_.png ../share/grafx2/fonts/PF_Tempesta_7__.png ../share/grafx2/fonts/PF_Tempesta_7___.png ../share/grafx2/fonts/PF_Westa_7_.png ../share/grafx2/fonts/PF_Westa_7__.png @@ -387,6 +405,12 @@ all : $(MACAPPEXE) $(MACAPPEXE) : $(BIN) rm -rf Grafx2.app mkdir -p Grafx2.app Grafx2.app/Contents Grafx2.app/Contents/Frameworks Grafx2.app/Contents/MacOS Grafx2.app/Contents/Resources Grafx2.app/Contents/Resources/scripts + mkdir -p Grafx2.app/Contents/Resources/scripts/samples_2.4 + mkdir -p Grafx2.app/Contents/Resources/scripts/samples_2.4/brush + mkdir -p Grafx2.app/Contents/Resources/scripts/samples_2.4/demo + mkdir -p Grafx2.app/Contents/Resources/scripts/samples_2.4/libs + mkdir -p Grafx2.app/Contents/Resources/scripts/samples_2.4/palette + mkdir -p Grafx2.app/Contents/Resources/scripts/samples_2.4/picture echo 'APPL????' > Grafx2.app/Contents/PkgInfo cp ../Info.plist Grafx2.app/Contents cp -r Grafx2.icns Grafx2.app/Contents/Resources @@ -394,13 +418,18 @@ $(MACAPPEXE) : $(BIN) cp -r ../share/grafx2/fonts Grafx2.app/Contents/Resources cp -r ../share/grafx2/skins Grafx2.app/Contents/Resources cp -r ../share/grafx2/gfx2def.ini Grafx2.app/Contents/Resources - cp -r $(SCRIPT_FILES) Grafx2.app/Contents/Resources/scripts + cp -r ../share/grafx2/scripts/samples_2.4/brush Grafx2.app/Contents/Resources/scripts/samples_2.4 + cp -r ../share/grafx2/scripts/samples_2.4/demo Grafx2.app/Contents/Resources/scripts/samples_2.4 + cp -r ../share/grafx2/scripts/samples_2.4/libs Grafx2.app/Contents/Resources/scripts/samples_2.4 + cp -r ../share/grafx2/scripts/samples_2.4/palette Grafx2.app/Contents/Resources/scripts/samples_2.4 + cp -r ../share/grafx2/scripts/samples_2.4/picture Grafx2.app/Contents/Resources/scripts/samples_2.4 mkdir -p Grafx2.app/Contents/Frameworks/SDL.framework/Versions mkdir -p Grafx2.app/Contents/Frameworks/SDL_image.framework/Versions # mkdir -p Grafx2.app/Contents/Frameworks/SDL_ttf.framework/Versions cp -Rp $(FWDIR)/SDL.framework/Versions/A Grafx2.app/Contents/Frameworks/SDL.framework/Versions cp -Rp $(FWDIR)/SDL_image.framework/Versions/A Grafx2.app/Contents/Frameworks/SDL_image.framework/Versions # cp -Rp $(FWDIR)/SDL_ttf.framework/Versions/A Grafx2.app/Contents/Frameworks/SDL_ttf.framework/Versions + # remove those rm -fr Grafx2.app/Contents/Frameworks/SDL.framework/Versions/A/Headers rm -fr Grafx2.app/Contents/Frameworks/SDL.framework/Versions/A/Resources rm -fr Grafx2.app/Contents/Frameworks/SDL_image.framework/Versions/A/Headers @@ -483,13 +512,13 @@ install : $(BIN) test -d $(DESTDIR)$(datadir)/grafx2/skins || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/skins test -d $(DESTDIR)$(datadir)/grafx2/scripts || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts test -d $(DESTDIR)$(datadir)/grafx2/scripts/libs || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/libs - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3 || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3 - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/brush || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/brush - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo/brush || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo/brush - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/libs || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/libs - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/palette || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/palette - test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/picture || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/picture + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4 || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4 + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/brush || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/brush + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo/brush || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo/brush + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/libs || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/libs + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/palette || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/palette + test -d $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/picture || $(MKDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/picture test -d $(DESTDIR)$(datadir)/applications || $(MKDIR) $(DESTDIR)$(datadir)/applications test -d $(DESTDIR)$(pixmapdir) || $(MKDIR) $(DESTDIR)$(pixmapdir) # Copy files @@ -515,13 +544,13 @@ uninstall : $(DELCOMMAND) $(SKIN_FILES:../share%=$(DESTDIR)$(datadir)%) $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/skins),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/skins,) $(DELCOMMAND) $(SCRIPT_FILES:../share%=$(DESTDIR)$(datadir)%) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/picture),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/picture,) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/palette),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/palette,) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/libs),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/libs,) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo/brush),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo/brush,) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/demo,) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/brush),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3/brush,) - $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.3,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/picture),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/picture,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/palette),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/palette,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/libs),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/libs,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo/brush),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo/brush,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/demo,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/brush),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4/brush,) + $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/samples_2.4,) $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts/libs),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts/libs,) $(if $(wildcard $(DESTDIR)$(datadir)/grafx2/scripts),$(RMDIR) $(DESTDIR)$(datadir)/grafx2/scripts,) $(if $(wildcard $(DESTDIR)$(datadir)/grafx2),$(RMDIR) $(DESTDIR)$(datadir)/grafx2,) diff --git a/src/brush.c b/src/brush.c index 5bba8989..969201c9 100644 --- a/src/brush.c +++ b/src/brush.c @@ -36,6 +36,10 @@ #include "sdlscreen.h" #include "brush.h" +// Data used during brush rotation operation +static byte * Brush_rotate_buffer; +static int Brush_rotate_width; +static int Brush_rotate_height; // Calcul de redimensionnement du pinceau pour éviter les débordements de // l'écran et de l'image @@ -1775,7 +1779,8 @@ void Interpolate_texture(int start_x,int start_y,int xt1,int yt1, -void Compute_quad_texture(int x1,int y1,int xt1,int yt1, +void Compute_quad_texture( byte *texture, int texture_width, + int x1,int y1,int xt1,int yt1, int x2,int y2,int xt2,int yt2, int x3,int y3,int xt3,int yt3, int x4,int y4,int xt4,int yt4, @@ -1824,7 +1829,7 @@ void Compute_quad_texture(int x1,int y1,int xt1,int yt1, xt=Round((float)(ScanY_Xt[0][y])+(temp*(ScanY_Xt[1][y]-ScanY_Xt[0][y]))); yt=Round((float)(ScanY_Yt[0][y])+(temp*(ScanY_Yt[1][y]-ScanY_Yt[0][y]))); if (xt>=0 && yt>=0) - buffer[x+(y*width)]=*(Brush_original_pixels + yt * Brush_width + xt); + buffer[x+(y*width)]=*(texture + yt * texture_width + xt); } for (; x>1); end_x=start_x+Brush_width-1; end_y=start_y+Brush_height-1; + //offset = Brush_rotate_width/Brush_width-1; Transform_point(start_x,start_y, cos_a,sin_a, &x1,&y1); Transform_point(end_x ,start_y, cos_a,sin_a, &x2,&y2); @@ -1885,10 +1964,11 @@ void Rotate_brush(float angle) return; } // Et maintenant on calcule la nouvelle brosse tournée. - Compute_quad_texture(x1,y1, 0, 0, - x2,y2,Brush_width-1, 0, - x3,y3, 0,Brush_height-1, - x4,y4,Brush_width-1,Brush_height-1, + Compute_quad_texture( Brush_rotate_buffer, Brush_rotate_width, + x1,y1, offset, offset, + x2,y2,Brush_rotate_width-offset-1, offset, + x3,y3, offset,Brush_rotate_height-offset-1, + x4,y4,Brush_rotate_width-offset-1,Brush_rotate_height-offset-1, new_brush,new_brush_width,new_brush_height); if (Realloc_brush(new_brush_width, new_brush_height, new_brush, NULL)) @@ -1907,7 +1987,8 @@ void Rotate_brush(float angle) -void Draw_quad_texture_preview(int x1,int y1,int xt1,int yt1, +void Draw_quad_texture_preview(byte *texture, int texture_width, + int x1,int y1,int xt1,int yt1, int x2,int y2,int xt2,int yt2, int x3,int y3,int xt3,int yt3, int x4,int y4,int xt4,int yt4) @@ -1966,7 +2047,7 @@ void Draw_quad_texture_preview(int x1,int y1,int xt1,int yt1, yt=Round((float)(ScanY_Yt[0][y])+(temp*(ScanY_Yt[1][y]-ScanY_Yt[0][y]))); if (xt>=0 && yt>=0) { - color=Read_pixel_from_brush(xt,yt); + color=Brush_colormap[*(texture+xt+yt*texture_width)]; if (color!=Back_color) Pixel_preview(x,y_,color); } @@ -1990,6 +2071,7 @@ void Rotate_brush_preview(float angle) int start_x,end_x,start_y,end_y; float cos_a=cos(angle); float sin_a=sin(angle); + int offset=0; // Calcul des coordonnées des 4 coins: // 1 2 @@ -1999,6 +2081,7 @@ void Rotate_brush_preview(float angle) start_y=1-(Brush_height>>1); end_x=start_x+Brush_width-1; end_y=start_y+Brush_height-1; + //offset = Brush_rotate_width/Brush_width-1; Transform_point(start_x,start_y, cos_a,sin_a, &x1,&y1); Transform_point(end_x ,start_y, cos_a,sin_a, &x2,&y2); @@ -2015,10 +2098,11 @@ void Rotate_brush_preview(float angle) y4+=Brush_rotation_center_Y; // Et maintenant on dessine la brosse tournée. - Draw_quad_texture_preview(x1,y1, 0, 0, - x2,y2,Brush_width-1, 0, - x3,y3, 0,Brush_height-1, - x4,y4,Brush_width-1,Brush_height-1); + Draw_quad_texture_preview(Brush_rotate_buffer, Brush_rotate_width, + x1, y1, offset, offset, + x2, y2, Brush_rotate_width-offset-1, offset, + x3, y3, offset, Brush_rotate_height-offset-1, + x4, y4, Brush_rotate_width-offset-1, Brush_rotate_height-offset-1); start_x=Min(Min(x1,x2),Min(x3,x4)); end_x=Max(Max(x1,x2),Max(x3,x4)); start_y=Min(Min(y1,y2),Min(y3,y4)); diff --git a/src/brush.h b/src/brush.h index 9682b1fe..d12defb2 100644 --- a/src/brush.h +++ b/src/brush.h @@ -125,5 +125,7 @@ byte Realloc_brush(word new_brush_width, word new_brush_height, byte *new_brush, /// Sets brush's original palette and color mapping. void Brush_set_palette(T_Palette *palette); +void Begin_brush_rotation(void); +void End_brush_rotation(void); #endif diff --git a/src/brush_ops.c b/src/brush_ops.c index 405ca753..046621c0 100644 --- a/src/brush_ops.c +++ b/src/brush_ops.c @@ -42,7 +42,6 @@ #define M_PI 3.141592653589793238462643 #endif - /// Simulates clicking the "Draw" button. void Return_to_draw_mode(void) { @@ -971,8 +970,7 @@ void Rotate_brush_1_5(void) { dx=Paintbrush_X-Brush_rotation_center_X; dy=Paintbrush_Y-Brush_rotation_center_Y; - angle=acos(((float)dx)/sqrt((dx*dx)+(dy*dy))); - if (dy>0) angle=M_2PI-angle; + angle=M_2PI-atan2(dy,dx); } if (Menu_is_visible) diff --git a/src/factory.c b/src/factory.c index 03fe7674..2bf8f503 100644 --- a/src/factory.c +++ b/src/factory.c @@ -45,7 +45,7 @@ #include "graph.h" #include "filesel.h" // Read_list_of_drives() #include "realpath.h" - +#include "setup.h" /// Lua scripts bound to shortcut keys. char * Bound_script[10]; @@ -457,30 +457,44 @@ int L_DrawCircle(lua_State* L) int L_DrawDisk(lua_State* L) { - int center_x, center_y, r, c; + int center_x, center_y, diameter, c, r, even; long circle_limit; short x_pos,y_pos; short min_x,max_x,min_y,max_y; + double r_float; int nb_args = lua_gettop(L); LUA_ARG_LIMIT(4, "drawdisk"); LUA_ARG_NUMBER(1, "drawdisk", center_x, INT_MIN, INT_MAX); LUA_ARG_NUMBER(2, "drawdisk", center_y, INT_MIN, INT_MAX); - LUA_ARG_NUMBER(3, "drawdisk", r, INT_MIN, INT_MAX); + LUA_ARG_NUMBER(3, "drawdisk", r_float, INT_MIN, INT_MAX); LUA_ARG_NUMBER(4, "drawdisk", c, INT_MIN, INT_MAX); - circle_limit = r*r; + if (r_float<0.0) + return 0; + diameter=(int)(floor(r_float*2.0+1.0)); + r=diameter/2; + even=!(diameter&1); + + circle_limit = Circle_squared_diameter(diameter); // Compute clipping limits - min_x=center_x-r<0 ? 0 : center_x-r; + min_x=center_x-r+even<0 ? 0 : center_x-r+even; max_x=center_x+r>=Main_image_width? Main_image_width-1 : center_x+r; - min_y=center_y-r<0 ? 0 : center_y-r; + min_y=center_y-r+even<0 ? 0 : center_y-r+even; max_y=center_y+r>=Main_image_height? Main_image_height-1 : center_y+r; for (y_pos=min_y;y_pos<=max_y;y_pos++) + { + short y=(y_pos-center_y)*2-even; for (x_pos=min_x;x_pos<=max_x;x_pos++) - Pixel_in_current_screen(x_pos,y_pos,c,0); + { + short x=(x_pos-center_x)*2-even; + if (x*x+y*y <= circle_limit) + Pixel_in_current_screen(x_pos,y_pos,c,0); + } + } return 0; } @@ -690,6 +704,22 @@ int L_MatchColor(lua_State* L) return 1; } +int L_MatchColor2(lua_State* L) +{ + double r, g, b; + int c; + int nb_args=lua_gettop(L); + + LUA_ARG_LIMIT (3, "matchcolor2"); + LUA_ARG_NUMBER(1, "matchcolor2", r, -DBL_MAX, DBL_MAX); + LUA_ARG_NUMBER(2, "matchcolor2", g, -DBL_MAX, DBL_MAX); + LUA_ARG_NUMBER(3, "matchcolor2", b, -DBL_MAX, DBL_MAX); + + c = Best_color_perceptual(clamp_byte(r),clamp_byte(g),clamp_byte(b)); + lua_pushinteger(L, c); + return 1; +} + int L_GetForeColor(lua_State* L) { lua_pushinteger(L, Fore_color); @@ -1461,8 +1491,8 @@ void Run_script(const char *script_subdirectory, const char *script_filename) strcpy(buf, "LUA_PATH="); strcat(buf, Data_directory); - Append_path(buf+9, "scripts", NULL); - Append_path(buf+9, "libs", NULL); + Append_path(buf+9, SCRIPTS_SUBDIRECTORY, NULL); + Append_path(buf+9, LUALIB_SUBDIRECTORY, NULL); Append_path(buf+9, "?.lua", NULL); putenv(buf); @@ -1506,6 +1536,7 @@ void Run_script(const char *script_subdirectory, const char *script_filename) lua_register(L,"gettranscolor",L_GetTransColor); lua_register(L,"matchcolor",L_MatchColor); + lua_register(L,"matchcolor2",L_MatchColor2); // ui lua_register(L,"inputbox",L_InputBox); diff --git a/src/fileformats.c b/src/fileformats.c index 66a5344e..213b8ab1 100644 --- a/src/fileformats.c +++ b/src/fileformats.c @@ -46,6 +46,11 @@ #endif #endif +#ifndef png_jmpbuf +# define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf) +#endif + + #include #include "errors.h" @@ -1102,7 +1107,7 @@ typedef struct dword Size_2; // 40 dword Width; - dword Height; + int32_t Height; // signed: negative means a top-down bitmap (rare) word Planes; // 1 word Nb_bits; // 1,4,8 ou 24 dword Compression; @@ -1132,7 +1137,7 @@ void Test_BMP(T_IO_Context * context) && Read_dword_le(file,&(header.Offset)) && Read_dword_le(file,&(header.Size_2)) && Read_dword_le(file,&(header.Width)) - && Read_dword_le(file,&(header.Height)) + && Read_dword_le(file,(dword *)&(header.Height)) && Read_word_le(file,&(header.Planes)) && Read_word_le(file,&(header.Nb_bits)) && Read_dword_le(file,&(header.Compression)) @@ -1209,6 +1214,7 @@ void Load_BMP(T_IO_Context * context) word line_size; byte a,b,c=0; long file_size; + byte negative_height; Get_full_filename(filename, context->File_name, context->File_directory); @@ -1225,7 +1231,7 @@ void Load_BMP(T_IO_Context * context) && Read_dword_le(file,&(header.Offset)) && Read_dword_le(file,&(header.Size_2)) && Read_dword_le(file,&(header.Width)) - && Read_dword_le(file,&(header.Height)) + && Read_dword_le(file,(dword *)&(header.Height)) && Read_word_le(file,&(header.Planes)) && Read_word_le(file,&(header.Nb_bits)) && Read_dword_le(file,&(header.Compression)) @@ -1249,6 +1255,16 @@ void Load_BMP(T_IO_Context * context) default: File_error=1; } + + if (header.Height < 0) + { + negative_height=1; + header.Height = -header.Height; + } + else + { + negative_height=0; + } if (!File_error) { @@ -1271,6 +1287,9 @@ void Load_BMP(T_IO_Context * context) context->Width=header.Width; context->Height=header.Height; + if (fseek(file, header.Offset, SEEK_SET)) + File_error=2; + switch (header.Compression) { case 0 : // Pas de compression @@ -1283,26 +1302,29 @@ void Load_BMP(T_IO_Context * context) line_size=(line_size*header.Nb_bits)>>3; buffer=(byte *)malloc(line_size); - for (y_pos=context->Height-1; ((y_pos>=0) && (!File_error)); y_pos--) + for (y_pos=0; (y_pos < context->Height && !File_error); y_pos++) { + short target_y; + target_y = negative_height ? y_pos : context->Height-1-y_pos; + if (Read_bytes(file,buffer,line_size)) for (x_pos=0; x_posWidth; x_pos++) switch (header.Nb_bits) { case 8 : - Set_pixel(context, x_pos,y_pos,buffer[x_pos]); + Set_pixel(context, x_pos,target_y,buffer[x_pos]); break; case 4 : if (x_pos & 1) - Set_pixel(context, x_pos,y_pos,buffer[x_pos>>1] & 0xF); + Set_pixel(context, x_pos,target_y,buffer[x_pos>>1] & 0xF); else - Set_pixel(context, x_pos,y_pos,buffer[x_pos>>1] >> 4 ); + Set_pixel(context, x_pos,target_y,buffer[x_pos>>1] >> 4 ); break; case 1 : if ( buffer[x_pos>>3] & (0x80>>(x_pos&7)) ) - Set_pixel(context, x_pos,y_pos,1); + Set_pixel(context, x_pos,target_y,1); else - Set_pixel(context, x_pos,y_pos,0); + Set_pixel(context, x_pos,target_y,0); } else File_error=2; @@ -1481,11 +1503,14 @@ void Load_BMP(T_IO_Context * context) line_size+=(4-x_pos); buffer=(byte *)malloc(line_size); - for (y_pos=context->Height-1; ((y_pos>=0) && (!File_error)); y_pos--) + for (y_pos=0; (y_pos < context->Height && !File_error); y_pos++) { + short target_y; + target_y = negative_height ? y_pos : context->Height-1-y_pos; + if (Read_bytes(file,buffer,line_size)) for (x_pos=0,index=0; x_posWidth; x_pos++,index+=3) - Set_pixel_24b(context, x_pos,y_pos,buffer[index+2],buffer[index+1],buffer[index+0]); + Set_pixel_24b(context, x_pos,target_y,buffer[index+2],buffer[index+1],buffer[index+0]); else File_error=2; } @@ -1495,13 +1520,15 @@ void Load_BMP(T_IO_Context * context) case 32: line_size=context->Width*4; buffer=(byte *)malloc(line_size); - for (y_pos=context->Height-1; ((y_pos>=0) && (!File_error)); y_pos--) + for (y_pos=0; (y_pos < context->Height && !File_error); y_pos++) { + short target_y; + target_y = negative_height ? y_pos : context->Height-1-y_pos; if (Read_bytes(file,buffer,line_size)) for (x_pos=0; x_posWidth; x_pos++) { dword pixel=*(((dword *)buffer)+x_pos); - Set_pixel_24b(context, x_pos,y_pos,Bitmap_mask(pixel,red_mask),Bitmap_mask(pixel,green_mask),Bitmap_mask(pixel,blue_mask)); + Set_pixel_24b(context, x_pos,target_y,Bitmap_mask(pixel,red_mask),Bitmap_mask(pixel,green_mask),Bitmap_mask(pixel,blue_mask)); } else File_error=2; @@ -1512,13 +1539,15 @@ void Load_BMP(T_IO_Context * context) case 16: line_size=(context->Width*2) + (context->Width&1)*2; buffer=(byte *)malloc(line_size); - for (y_pos=context->Height-1; ((y_pos>=0) && (!File_error)); y_pos--) + for (y_pos=0; (y_pos < context->Height && !File_error); y_pos++) { + short target_y; + target_y = negative_height ? y_pos : context->Height-1-y_pos; if (Read_bytes(file,buffer,line_size)) for (x_pos=0; x_posWidth; x_pos++) { word pixel=*(((word *)buffer)+x_pos); - Set_pixel_24b(context, x_pos,y_pos,Bitmap_mask(pixel,red_mask),Bitmap_mask(pixel,green_mask),Bitmap_mask(pixel,blue_mask)); + Set_pixel_24b(context, x_pos,target_y,Bitmap_mask(pixel,red_mask),Bitmap_mask(pixel,green_mask),Bitmap_mask(pixel,blue_mask)); } else File_error=2; diff --git a/src/filesel.c b/src/filesel.c index f0eec93c..9e73b616 100644 --- a/src/filesel.c +++ b/src/filesel.c @@ -120,7 +120,8 @@ byte Native_filesel(byte load) // Check if cancel return CommDlgExtendedError(); } -#else +#else ifndef(__linux__) // This makes no sense on X11-oriented platform. Nothing is really native there. + #warning "EXPERIMENTAL function for native fileselector not available for this platform!" return 255; // fail ! #endif } @@ -437,7 +438,7 @@ void Read_list_of_files(T_Fileselector *list, byte selected_format) } if(!bFound){ - Add_element_to_list(list, "..",1,Format_filename("/",19,1),ICON_NONE); // add if not present + Add_element_to_list(list, "..",Format_filename("/",19,1),1,ICON_NONE); // add if not present list->Nb_directories ++; } @@ -1401,8 +1402,9 @@ byte Button_Load_or_Save(byte load, T_IO_Context *context) if (load) { #if defined(__MINT__) - chdir(Main_current_directory); static char path[1024]={0}; + + chdir(Main_current_directory); Dgetpath(path,0); strcat(path,PATH_SEPARATOR); strcpy(Main_current_directory,path); diff --git a/src/graph.c b/src/graph.c index 776f9c60..b31774e7 100644 --- a/src/graph.c +++ b/src/graph.c @@ -1340,6 +1340,20 @@ void Draw_filled_circle(short center_x,short center_y,short radius,byte color) Update_part_of_screen(start_x,start_y,end_x+1-start_x,end_y+1-start_y); } +int Circle_squared_diameter(int diameter) +{ + int result = diameter*diameter; + // Trick to make some circles rounder, even though + // mathematically incorrect. + if (diameter==3 || diameter==9) + return result-2; + if (diameter==11) + return result-6; + if (diameter==14) + return result-4; + + return result; +} // -- Tracer général d'une ellipse vide ----------------------------------- diff --git a/src/graph.h b/src/graph.h index 2ba2d776..d27ec686 100644 --- a/src/graph.h +++ b/src/graph.h @@ -67,6 +67,8 @@ void Hide_empty_circle_preview (short center_x,short center_y,short radius); void Draw_empty_circle_general(short center_x,short center_y,short radius,byte color); void Draw_filled_circle (short center_x,short center_y,short radius,byte color); +int Circle_squared_diameter(int diameter); + void Draw_empty_ellipse_permanent(short center_x,short center_y,short horizontal_radius,short vertical_radius,byte color); void Draw_empty_ellipse_preview (short center_x,short center_y,short horizontal_radius,short vertical_radius,byte color); void Hide_empty_ellipse_preview (short center_x,short center_y,short horizontal_radius,short vertical_radius); diff --git a/src/helpfile.h b/src/helpfile.h index 53d33154..ed722a8b 100644 --- a/src/helpfile.h +++ b/src/helpfile.h @@ -411,6 +411,7 @@ static const T_Help_table helptable_credits[] = HELP_TEXT ("") HELP_BOLD (" AROS PORT") HELP_TEXT ("") + HELP_TEXT (" Yannick") HELP_TEXT (" Fernando Mastandrea (masta.uy)") HELP_TEXT (" Markus Weiss") HELP_TEXT ("") @@ -459,21 +460,22 @@ static const T_Help_table helptable_credits[] = HELP_TITLE(" BUGFINDERS") HELP_TEXT ("") //HELP_TEXT ("0----5----0----5----0----5----0----5----0--X") - HELP_TEXT (" anibiqme blumunkee BDCIron ") - HELP_TEXT (" Ced DarkDefende DawnBringer ") - HELP_TEXT (" El Topo falenblood fanickbux ") - HELP_TEXT (" fano fogbot121 Frost ") - HELP_TEXT (" Grimmy Gürkan Sengün Hatch ") - HELP_TEXT (" HoraK-FDF iLKke Iw2evk ") - HELP_TEXT (" jackfrost128 Jamon keito ") - HELP_TEXT (" kusma Lord Graga Lorenzo Gatti ") - HELP_TEXT (" MagerValp maymunbeyin mind ") - HELP_TEXT (" MooZ Pasi Kallinen the Peach ") - HELP_TEXT (" petter PheeL Ravey1138 ") - HELP_TEXT (" richienyhus sm4tik spratek ") - HELP_TEXT (" Surt tape.yrm TeeEmCee ") - HELP_TEXT (" tempest Timo Kurrpa titus^Rab ") - HELP_TEXT (" Tobé yakumo2975 00ai99") + HELP_TEXT (" anibiqme antdzeryn blumunkee ") + HELP_TEXT (" BDCIron Ced DarkDefende ") + HELP_TEXT (" DawnBringer El Topo falenblood ") + HELP_TEXT (" fanickbux fano fogbot121 ") + HELP_TEXT (" Frost Grimmy Gürkan Sengün ") + HELP_TEXT (" Hatch HoraK-FDF iLKke ") + HELP_TEXT (" Iw2evk jackfrost128 Jamon ") + HELP_TEXT (" keito kusma Lord Graga ") + HELP_TEXT (" Lorenzo Gatti MagerValp maymunbeyin ") + HELP_TEXT (" mind MooZ Pasi Kallinen ") + HELP_TEXT (" the Peach petter PheeL ") + HELP_TEXT (" Ravey1138 richienyhus sm4tik ") + HELP_TEXT (" spratek Surt tape.yrm ") + HELP_TEXT (" TeeEmCee tempest Timo Kurrpa ") + HELP_TEXT (" titus^Rab Tobé yakumo2975 ") + HELP_TEXT (" 00ai99") HELP_TEXT ("") HELP_TEXT (" ... posted the annoying bug reports.") HELP_TEXT ("") diff --git a/src/misc.c b/src/misc.c index 932cde1d..5ace68d8 100644 --- a/src/misc.c +++ b/src/misc.c @@ -738,7 +738,7 @@ void Zoom_a_line(byte* original_line, byte* zoomed_line, #elif defined(__macosx__) || defined(__FreeBSD__) || defined(__NetBSD__) #include #elif defined(__BEOS__) || defined(__HAIKU__) - // sysinfo not implemented + #include #elif defined(__AROS__) || defined(__amigaos4__) || defined(__MORPHOS__) || defined(__amigaos__) #include #elif defined(__MINT__) @@ -754,11 +754,8 @@ void Zoom_a_line(byte* original_line, byte* zoomed_line, // atari have two kinds of memory // standard and fast ram void Atari_Memory_free(unsigned long *stRam,unsigned long *ttRam){ - //TODO: return STRAM/TT-RAM - unsigned long mem=0; *stRam=Mxalloc(-1L,0); *ttRam = Mxalloc(-1L,1); - } #else // Indique quelle est la mémoire disponible @@ -787,17 +784,23 @@ 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(__TRU64__) - // No 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(__HAIKU__) || defined(__BEOS__) + int pages; + system_info systemInfo; + get_system_info(&systemInfo); + + pages = systemInfo.max_pages - systemInfo.used_pages; + return pages * B_PAGE_SIZE; #elif defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) return AvailMem(MEMF_ANY); -#else +#elif defined(__linux__) struct sysinfo info; sysinfo(&info); return info.freeram*info.mem_unit; +#else + // 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; #endif } #endif diff --git a/src/misc.h b/src/misc.h index cee6f39c..d65b2a8c 100644 --- a/src/misc.h +++ b/src/misc.h @@ -146,8 +146,11 @@ dword Timer_start; // Heure de d byte New_preview_is_needed; // Booléen "Il faut relancer le chrono de preview" +#if defined (__MINT__) +void Atari_Memory_free(unsigned long *stRam,unsigned long *ttRam); +#else unsigned long Memory_free(void); - +#endif #define Num2str(a,b,c) sprintf(b,"%*lu",c,(long)(a)) #define Dec2str(a,b,c) sprintf(b,"%.*f",c,(double)(a)) diff --git a/src/op_c.c b/src/op_c.c index 1838d5d7..004446e2 100644 --- a/src/op_c.c +++ b/src/op_c.c @@ -437,7 +437,7 @@ void Cluster_pack(T_Cluster * c,T_Occurrence_table * to) } } */ - + // Optimized version : find the extremums one at a time, so we can reduce the // area to seek for the next one. Start at the edges of the cluster and go to // the center until we find a pixel. @@ -521,7 +521,7 @@ ENDCRUSH: c->rmin=rmin>>16; c->rmax=rmax>>16; c->vmin=vmin>>8; c->vmax=vmax>>8; c->bmin=bmin; c->bmax=bmax; - + // Find the longest axis to know which way to split the cluster // This multiplications are supposed to improve the result, but may or may not // work, actually. diff --git a/src/operatio.c b/src/operatio.c index 92667d37..cbddd2d4 100644 --- a/src/operatio.c +++ b/src/operatio.c @@ -49,7 +49,17 @@ Uint32 Airbrush_next_time; void Start_operation_stack(word new_operation) { + // This part handles things that must be done when exiting an operation. Brush_rotation_center_is_defined=0; + switch(Current_operation) + { + case OPERATION_ROTATE_BRUSH: + End_brush_rotation(); + break; + + default: + break; + } // On mémorise l'opération précédente si on démarre une interruption switch(new_operation) @@ -60,7 +70,12 @@ void Start_operation_stack(word new_operation) case OPERATION_GRAB_BRUSH: case OPERATION_POLYBRUSH: case OPERATION_STRETCH_BRUSH: + Operation_before_interrupt=Current_operation; + // On passe à l'operation demandée + Current_operation=new_operation; + break; case OPERATION_ROTATE_BRUSH: + Begin_brush_rotation(); Operation_before_interrupt=Current_operation; // On passe à l'operation demandée Current_operation=new_operation; diff --git a/src/pversion.c b/src/pversion.c index b60e3b67..bcc14b4d 100644 --- a/src/pversion.c +++ b/src/pversion.c @@ -1,2 +1,2 @@ -char Program_version[]="2.3"; +char Program_version[]="2.4wip"; diff --git a/src/readini.c b/src/readini.c index 21827b6c..0d5ae57b 100644 --- a/src/readini.c +++ b/src/readini.c @@ -945,7 +945,7 @@ int Load_INI(T_Config * conf) { // Default when empty: Realpath(Data_directory, conf->Scripts_directory); - Append_path(conf->Scripts_directory, "scripts", NULL); + Append_path(conf->Scripts_directory, SCRIPTS_SUBDIRECTORY, NULL); } conf->Allow_multi_shortcuts=0; diff --git a/src/setup.c b/src/setup.c index e1c18dfc..95160b57 100644 --- a/src/setup.c +++ b/src/setup.c @@ -89,7 +89,6 @@ void Set_program_directory(ARG_UNUSED const char * argv0,char * program_dir) #elif defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) || defined(__amigaos__) strcpy(program_dir,"PROGDIR:"); #elif defined(__MINT__) - static char path[1024]={0}; char currentDrive='A'; currentDrive=currentDrive+Dgetdrv(); diff --git a/src/setup.h b/src/setup.h index 67869512..369ac7ce 100644 --- a/src/setup.h +++ b/src/setup.h @@ -70,6 +70,22 @@ void Set_config_directory(const char * program_dir, char * config_dir); #define SKINS_SUBDIRECTORY "skins" #endif +/// Name of the subdirectory containing scripts +#if defined (__MINT__) + #define SCRIPTS_SUBDIRECTORY "SCRIPTS" +#else + #define SCRIPTS_SUBDIRECTORY "scripts" +#endif + +/// LUA directory prefix +#if defined (__MINT__) + #define LUALIB_SUBDIRECTORY "LIBS" +#else + #define LUALIB_SUBDIRECTORY "libs" +#endif + + + /// Name of the binary file containing some configuration settings. #if defined (__MINT__) #define CONFIG_FILENAME "GFX2.CFG" diff --git a/src/special.c b/src/special.c index 6e3dc579..db8e14c0 100644 --- a/src/special.c +++ b/src/special.c @@ -37,21 +37,6 @@ //---------------------- Modifier le pinceau spécial ------------------------- -int Circle_squared_diameter(int diameter) -{ - int result = diameter*diameter; - // Trick to make some circles rounder, even though - // mathematically incorrect. - if (diameter==3 || diameter==9) - return result-2; - if (diameter==11) - return result-6; - if (diameter==14) - return result-4; - - return result; -} - void Set_paintbrush_size(int width, int height) { int x_pos,y_pos;