[layers] NOLAYERS option at compile time. Unfinished.
git-svn-id: svn://pulkomandy.tk/GrafX2/branches/layers@1140 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
119e679e32
commit
3ede1f3a56
10
Makefile
10
Makefile
@ -42,7 +42,7 @@ ifdef COMSPEC
|
|||||||
RMDIR = rmdir
|
RMDIR = rmdir
|
||||||
CP = cp
|
CP = cp
|
||||||
BIN = grafx2.exe
|
BIN = grafx2.exe
|
||||||
COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb `sdl-config --cflags` $(TTFCOPT) $(JOYCOPT) $(LUACOPT)
|
COPT = -W -Wall -Wdeclaration-after-statement -O$(OPTIM) -g -ggdb `sdl-config --cflags` $(TTFCOPT) $(JOYCOPT) $(LUACOPT) $(LAYERCOPT)
|
||||||
LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng $(LUALOPT)
|
LOPT = `sdl-config --libs` -lSDL_image $(TTFLOPT) -lpng $(LUALOPT)
|
||||||
CC = gcc
|
CC = gcc
|
||||||
OBJDIR = obj/win32
|
OBJDIR = obj/win32
|
||||||
@ -274,6 +274,14 @@ else
|
|||||||
JOYCOPT =
|
JOYCOPT =
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
#To speed up rendering, can disable the layered editing
|
||||||
|
# with NOLAYERS=1
|
||||||
|
ifeq ($(NOLAYERS),1)
|
||||||
|
LAYERCOPT = -DNOLAYERS
|
||||||
|
else
|
||||||
|
LAYERCOPT =
|
||||||
|
endif
|
||||||
|
|
||||||
### And now for the real build rules ###
|
### And now for the real build rules ###
|
||||||
|
|
||||||
.PHONY : all debug release clean depend zip version force install uninstall
|
.PHONY : all debug release clean depend zip version force install uninstall
|
||||||
|
|||||||
@ -1013,6 +1013,7 @@ void Draw_one_skin_name(word x, word y, word index, byte highlighted)
|
|||||||
|
|
||||||
#define SWAP_BYTES(a,b) { byte c=a; a=b; b=c;}
|
#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_WORDS(a,b) { word c=a; a=b; b=c;}
|
||||||
|
#define SWAP_DWORDS(a,b) { dword c=a; a=b; b=c;}
|
||||||
#define SWAP_SHORTS(a,b) { short 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;}
|
#define SWAP_FLOATS(a,b) { float c=a; a=b; b=c;}
|
||||||
|
|
||||||
@ -1286,7 +1287,7 @@ void Button_Page(void)
|
|||||||
SWAP_WORDS (Main_fileselector_position,Spare_fileselector_position)
|
SWAP_WORDS (Main_fileselector_position,Spare_fileselector_position)
|
||||||
SWAP_WORDS (Main_fileselector_offset,Spare_fileselector_offset)
|
SWAP_WORDS (Main_fileselector_offset,Spare_fileselector_offset)
|
||||||
SWAP_SHORTS(Main_current_layer,Spare_current_layer)
|
SWAP_SHORTS(Main_current_layer,Spare_current_layer)
|
||||||
SWAP_WORDS (Main_layers_visible,Spare_layers_visible)
|
SWAP_DWORDS (Main_layers_visible,Spare_layers_visible)
|
||||||
|
|
||||||
// A la fin, on affiche l'écran
|
// A la fin, on affiche l'écran
|
||||||
for (factor_index=0; ZOOM_FACTOR[factor_index]!=Main_magnifier_factor; factor_index++);
|
for (factor_index=0; ZOOM_FACTOR[factor_index]!=Main_magnifier_factor; factor_index++);
|
||||||
|
|||||||
5
engine.c
5
engine.c
@ -1055,6 +1055,7 @@ void Main_handler(void)
|
|||||||
Backup_layers(0);
|
Backup_layers(0);
|
||||||
if (!Delete_layer(Main_backups,Main_current_layer))
|
if (!Delete_layer(Main_backups,Main_current_layer))
|
||||||
{
|
{
|
||||||
|
Update_screen_targets();
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
Display_all_screen();
|
Display_all_screen();
|
||||||
@ -1071,6 +1072,7 @@ void Main_handler(void)
|
|||||||
|
|
||||||
Merge_layer();
|
Merge_layer();
|
||||||
|
|
||||||
|
Update_screen_targets();
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
Display_all_screen();
|
Display_all_screen();
|
||||||
@ -1104,6 +1106,7 @@ void Main_handler(void)
|
|||||||
}
|
}
|
||||||
Main_current_layer++;
|
Main_current_layer++;
|
||||||
|
|
||||||
|
Update_screen_targets();
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
Display_all_screen();
|
Display_all_screen();
|
||||||
@ -1138,7 +1141,7 @@ void Main_handler(void)
|
|||||||
Main_layers_visible ^= (3 << (Main_current_layer-1));
|
Main_layers_visible ^= (3 << (Main_current_layer-1));
|
||||||
}
|
}
|
||||||
Main_current_layer--;
|
Main_current_layer--;
|
||||||
|
Update_screen_targets();
|
||||||
Redraw_layered_image();
|
Redraw_layered_image();
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
Display_all_screen();
|
Display_all_screen();
|
||||||
|
|||||||
@ -85,7 +85,7 @@ int L_GetPictureSize(lua_State* L)
|
|||||||
int L_PutPicturePixel(lua_State* L)
|
int L_PutPicturePixel(lua_State* L)
|
||||||
{
|
{
|
||||||
Pixel_in_current_layer(lua_tonumber(L, 1), lua_tonumber(L, 2),
|
Pixel_in_current_layer(lua_tonumber(L, 1), lua_tonumber(L, 2),
|
||||||
lua_tonumber(L, 3),1);
|
lua_tonumber(L, 3));
|
||||||
return 0; // no values returned for lua
|
return 0; // no values returned for lua
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
8
global.h
8
global.h
@ -415,14 +415,6 @@ GFX2_GLOBAL T_List_of_pages * Main_backups;
|
|||||||
GFX2_GLOBAL T_List_of_pages * Spare_backups;
|
GFX2_GLOBAL T_List_of_pages * Spare_backups;
|
||||||
|
|
||||||
|
|
||||||
// -- Layers data
|
|
||||||
|
|
||||||
/// Array of two images, that contains the "flattened" version of the visible layers.
|
|
||||||
GFX2_GLOBAL T_Image Visible_image[2];
|
|
||||||
GFX2_GLOBAL T_Image Visible_image_depth_buffer;
|
|
||||||
/// Index that is 0 or 1, it ways which of the two ::Visible_image[] contains the current image (the other contains the data from last backup)
|
|
||||||
GFX2_GLOBAL int Visible_image_index;
|
|
||||||
|
|
||||||
// -- Brush data
|
// -- Brush data
|
||||||
|
|
||||||
/// Pixel data of the current brush.
|
/// Pixel data of the current brush.
|
||||||
|
|||||||
49
graph.c
49
graph.c
@ -2867,3 +2867,52 @@ void Redraw_grid(short x, short y, unsigned short w, unsigned short h)
|
|||||||
col+= Snap_width*Main_magnifier_factor;
|
col+= Snap_width*Main_magnifier_factor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
byte Read_pixel_from_current_screen (word x,word y)
|
||||||
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
|
byte depth;
|
||||||
|
byte color;
|
||||||
|
color = *(Main_screen+y*Main_image_width+x);
|
||||||
|
if (color != Main_backups->Pages->Transparent_color) // transparent color
|
||||||
|
return color;
|
||||||
|
|
||||||
|
depth = *(Visible_image_depth_buffer.Image+x+y*Main_image_width);
|
||||||
|
return *(Main_backups->Pages->Image[depth] + x+y*Main_image_width);
|
||||||
|
#else
|
||||||
|
return *((y)*Main_image_width+(x)+Main_backups->Pages->Image[Main_current_layer]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pixel_in_current_screen (word x,word y,byte color,int with_preview)
|
||||||
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
|
byte depth = *(Visible_image_depth_buffer.Image+x+y*Main_image_width);
|
||||||
|
*(Main_backups->Pages->Image[Main_current_layer] + x+y*Main_image_width)=color;
|
||||||
|
if ( depth <= Main_current_layer)
|
||||||
|
{
|
||||||
|
if (color == Main_backups->Pages->Transparent_color) // transparent color
|
||||||
|
// fetch pixel color from the topmost visible layer
|
||||||
|
color=*(Main_backups->Pages->Image[depth] + x+y*Main_image_width);
|
||||||
|
|
||||||
|
*(x+y*Main_image_width+Main_screen)=color;
|
||||||
|
|
||||||
|
if (with_preview)
|
||||||
|
Pixel_preview(x,y,color);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
*((y)*Main_image_width+(x)+Main_backups->Pages->Image[Main_current_layer])=color;
|
||||||
|
if (with_preview)
|
||||||
|
Pixel_preview(x,y,color);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pixel_in_current_layer(word x,word y, byte color)
|
||||||
|
{
|
||||||
|
*((y)*Main_image_width+(x)+Main_backups->Pages->Image[Main_current_layer])=color;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte Read_pixel_from_current_layer(word x,word y)
|
||||||
|
{
|
||||||
|
return *((y)*Main_image_width+(x)+Main_backups->Pages->Image[Main_current_layer]);
|
||||||
|
}
|
||||||
|
|||||||
5
graph.h
5
graph.h
@ -111,3 +111,8 @@ extern Func_pixel Pixel_figure;
|
|||||||
void Update_part_of_screen(short x, short y, short width, short height);
|
void Update_part_of_screen(short x, short y, short width, short height);
|
||||||
|
|
||||||
void Redraw_grid(short x, short y, unsigned short w, unsigned short h);
|
void Redraw_grid(short x, short y, unsigned short w, unsigned short h);
|
||||||
|
|
||||||
|
void Pixel_in_current_screen (word x,word y,byte color,int with_preview);
|
||||||
|
void Pixel_in_current_layer(word x,word y, byte color);
|
||||||
|
byte Read_pixel_from_current_screen (word x,word y);
|
||||||
|
byte Read_pixel_from_current_layer(word x,word y);
|
||||||
|
|||||||
@ -37,6 +37,7 @@
|
|||||||
#include "io.h"
|
#include "io.h"
|
||||||
#include "loadsave.h"
|
#include "loadsave.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
#include "graph.h"
|
||||||
#include "op_c.h"
|
#include "op_c.h"
|
||||||
#include "pages.h"
|
#include "pages.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
|
|||||||
2
main.c
2
main.c
@ -639,6 +639,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
Spare_image_width=Screen_width/Pixel_width;
|
Spare_image_width=Screen_width/Pixel_width;
|
||||||
Spare_image_height=Screen_height/Pixel_height;
|
Spare_image_height=Screen_height/Pixel_height;
|
||||||
|
|
||||||
|
#ifndef NOLAYERS
|
||||||
Visible_image[0].Width = 0;
|
Visible_image[0].Width = 0;
|
||||||
Visible_image[0].Height = 0;
|
Visible_image[0].Height = 0;
|
||||||
Visible_image[0].Image = NULL;
|
Visible_image[0].Image = NULL;
|
||||||
@ -648,6 +649,7 @@ int Init_program(int argc,char * argv[])
|
|||||||
Visible_image_depth_buffer.Width = 0;
|
Visible_image_depth_buffer.Width = 0;
|
||||||
Visible_image_depth_buffer.Height = 0;
|
Visible_image_depth_buffer.Height = 0;
|
||||||
Visible_image_depth_buffer.Image = NULL;
|
Visible_image_depth_buffer.Image = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Allocation de mémoire pour les différents écrans virtuels (et brosse)
|
// Allocation de mémoire pour les différents écrans virtuels (et brosse)
|
||||||
if (Init_all_backup_lists(Screen_width,Screen_height)==0)
|
if (Init_all_backup_lists(Screen_width,Screen_height)==0)
|
||||||
|
|||||||
42
misc.c
42
misc.c
@ -34,6 +34,7 @@
|
|||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
#include "graph.h"
|
||||||
|
|
||||||
///Count used palette indexes in the whole picture
|
///Count used palette indexes in the whole picture
|
||||||
///Return the total number of different colors
|
///Return the total number of different colors
|
||||||
@ -216,47 +217,6 @@ byte Read_pixel_from_brush (word x, word y)
|
|||||||
return *(Brush + y * Brush_width + x);
|
return *(Brush + y * Brush_width + x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
byte Read_pixel_from_current_screen (word x,word y)
|
|
||||||
{
|
|
||||||
byte depth;
|
|
||||||
byte color;
|
|
||||||
color = *(Main_screen+y*Main_image_width+x);
|
|
||||||
if (color != Main_backups->Pages->Transparent_color) // transparent color
|
|
||||||
return color;
|
|
||||||
|
|
||||||
depth = *(Visible_image_depth_buffer.Image+x+y*Main_image_width);
|
|
||||||
return *(Main_backups->Pages->Image[depth] + x+y*Main_image_width);
|
|
||||||
// return *(Main_screen+y*Main_image_width+x);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Pixel_in_current_screen (word x,word y,byte color,int with_preview)
|
|
||||||
{
|
|
||||||
byte depth = *(Visible_image_depth_buffer.Image+x+y*Main_image_width);
|
|
||||||
*(Main_backups->Pages->Image[Main_current_layer] + x+y*Main_image_width)=color;
|
|
||||||
if ( depth <= Main_current_layer)
|
|
||||||
{
|
|
||||||
if (color == Main_backups->Pages->Transparent_color) // transparent color
|
|
||||||
// fetch pixel color from the topmost visible layer
|
|
||||||
color=*(Main_backups->Pages->Image[depth] + x+y*Main_image_width);
|
|
||||||
|
|
||||||
*(x+y*Main_image_width+Main_screen)=color;
|
|
||||||
|
|
||||||
if (with_preview)
|
|
||||||
Pixel_preview(x,y,color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Pixel_in_current_layer(word x,word y, byte color)
|
|
||||||
{
|
|
||||||
*((y)*Main_image_width+(x)+Main_backups->Pages->Image[Main_current_layer])=color;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte Read_pixel_from_current_layer(word x,word y)
|
|
||||||
{
|
|
||||||
return *((y)*Main_image_width+(x)+Main_backups->Pages->Image[Main_current_layer]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Replace_a_color(byte old_color, byte new_color)
|
void Replace_a_color(byte old_color, byte new_color)
|
||||||
{
|
{
|
||||||
word x;
|
word x;
|
||||||
|
|||||||
4
misc.h
4
misc.h
@ -36,15 +36,11 @@ dword Round_div(dword numerator,dword divisor);
|
|||||||
word Count_used_colors(dword * usage);
|
word Count_used_colors(dword * usage);
|
||||||
word Count_used_colors_area(dword* usage, word start_x, word start_y, word width, word height);
|
word Count_used_colors_area(dword* usage, word start_x, word start_y, word width, word height);
|
||||||
word Count_used_colors_screen_area(dword* usage, word start_x, word start_y, word width, word height);
|
word Count_used_colors_screen_area(dword* usage, word start_x, word start_y, word width, word height);
|
||||||
void Pixel_in_current_screen (word x,word y,byte color,int with_preview);
|
|
||||||
void Pixel_in_brush (word x,word y,byte color);
|
void Pixel_in_brush (word x,word y,byte color);
|
||||||
byte Read_pixel_from_current_screen (word x,word y);
|
|
||||||
byte Read_pixel_from_spare_screen(word x,word y);
|
byte Read_pixel_from_spare_screen(word x,word y);
|
||||||
byte Read_pixel_from_backup_screen (word x,word y);
|
byte Read_pixel_from_backup_screen (word x,word y);
|
||||||
byte Read_pixel_from_feedback_screen (word x,word y);
|
byte Read_pixel_from_feedback_screen (word x,word y);
|
||||||
byte Read_pixel_from_brush (word x,word y);
|
byte Read_pixel_from_brush (word x,word y);
|
||||||
byte Read_pixel_from_current_layer(word x,word y);
|
|
||||||
void Pixel_in_current_layer(word x,word y, byte color);
|
|
||||||
|
|
||||||
void Ellipse_compute_limites(short horizontal_radius,short vertical_radius);
|
void Ellipse_compute_limites(short horizontal_radius,short vertical_radius);
|
||||||
// Calcule les valeurs suivantes en fonction des deux paramètres:
|
// Calcule les valeurs suivantes en fonction des deux paramètres:
|
||||||
|
|||||||
48
pages.c
48
pages.c
@ -31,6 +31,15 @@
|
|||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
|
|
||||||
|
// -- Layers data
|
||||||
|
|
||||||
|
/// Array of two images, that contains the "flattened" version of the visible layers.
|
||||||
|
#ifndef NOLAYERS
|
||||||
|
T_Image Visible_image[2];
|
||||||
|
T_Image Visible_image_depth_buffer;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// GESTION DES PAGES
|
/// GESTION DES PAGES
|
||||||
///
|
///
|
||||||
@ -162,6 +171,7 @@ void Download_infos_page_main(T_Page * page)
|
|||||||
|
|
||||||
void Redraw_layered_image(void)
|
void Redraw_layered_image(void)
|
||||||
{
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
// Re-construct the image with the visible layers
|
// Re-construct the image with the visible layers
|
||||||
int layer;
|
int layer;
|
||||||
// First layer
|
// First layer
|
||||||
@ -202,11 +212,15 @@ void Redraw_layered_image(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
Update_screen_targets();
|
||||||
|
#endif
|
||||||
Download_infos_backup(Main_backups);
|
Download_infos_backup(Main_backups);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update_depth_buffer(void)
|
void Update_depth_buffer(void)
|
||||||
{
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
// Re-construct the depth buffer with the visible layers.
|
// Re-construct the depth buffer with the visible layers.
|
||||||
// This function doesn't touch the visible buffer, it assumes
|
// This function doesn't touch the visible buffer, it assumes
|
||||||
// that it was already up-to-date. (Ex. user only changed active layer)
|
// that it was already up-to-date. (Ex. user only changed active layer)
|
||||||
@ -247,11 +261,13 @@ void Update_depth_buffer(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Download_infos_backup(Main_backups);
|
Download_infos_backup(Main_backups);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Redraw_current_layer(void)
|
void Redraw_current_layer(void)
|
||||||
{
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<Main_image_width*Main_image_height; i++)
|
for (i=0; i<Main_image_width*Main_image_height; i++)
|
||||||
{
|
{
|
||||||
@ -269,6 +285,7 @@ void Redraw_current_layer(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Upload_infos_page_main(T_Page * page)
|
void Upload_infos_page_main(T_Page * page)
|
||||||
@ -323,10 +340,8 @@ void Download_infos_backup(T_List_of_pages * list)
|
|||||||
|
|
||||||
if (Config.FX_Feedback)
|
if (Config.FX_Feedback)
|
||||||
FX_feedback_screen=list->Pages->Image[Main_current_layer];
|
FX_feedback_screen=list->Pages->Image[Main_current_layer];
|
||||||
// Visible_image[0].Image;
|
|
||||||
else
|
else
|
||||||
FX_feedback_screen=list->Pages->Next->Image[Main_current_layer];
|
FX_feedback_screen=list->Pages->Next->Image[Main_current_layer];
|
||||||
// Visible_image[1].Image;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clear_page(T_Page * page)
|
void Clear_page(T_Page * page)
|
||||||
@ -567,20 +582,29 @@ int Update_buffer(T_Image * image, int width, int height)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Update_screen_targets(void)
|
||||||
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
|
Main_screen=Visible_image[0].Image;
|
||||||
|
Screen_backup=Visible_image[1].Image;
|
||||||
|
#else
|
||||||
|
Main_screen=Main_backups->Pages->Image[Main_current_layer];
|
||||||
|
Screen_backup=Main_backups->Pages->Next->Image[Main_current_layer];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/// Update all the special image buffers, if necessary.
|
/// Update all the special image buffers, if necessary.
|
||||||
int Update_buffers(int width, int height)
|
int Update_buffers(int width, int height)
|
||||||
{
|
{
|
||||||
|
#ifndef NOLAYERS
|
||||||
if (! Update_buffer(&Visible_image_depth_buffer, width, height))
|
if (! Update_buffer(&Visible_image_depth_buffer, width, height))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (! Update_buffer(&Visible_image[0], width, height))
|
if (! Update_buffer(&Visible_image[0], width, height))
|
||||||
return 0;
|
return 0;
|
||||||
Main_screen=Visible_image[0].Image;
|
|
||||||
|
|
||||||
if (! Update_buffer(&Visible_image[1], width, height))
|
if (! Update_buffer(&Visible_image[1], width, height))
|
||||||
return 0;
|
return 0;
|
||||||
Screen_backup=Visible_image[1].Image;
|
#endif
|
||||||
|
Update_screen_targets();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,7 +635,7 @@ int Init_all_backup_lists(int width,int height)
|
|||||||
return 0;
|
return 0;
|
||||||
memset(Main_backups->Pages->Image[i], 0, width*height);
|
memset(Main_backups->Pages->Image[i], 0, width*height);
|
||||||
}
|
}
|
||||||
|
#ifndef NOLAYERS
|
||||||
Visible_image[0].Width = 0;
|
Visible_image[0].Width = 0;
|
||||||
Visible_image[0].Height = 0;
|
Visible_image[0].Height = 0;
|
||||||
Visible_image[0].Image = NULL;
|
Visible_image[0].Image = NULL;
|
||||||
@ -623,14 +647,15 @@ int Init_all_backup_lists(int width,int height)
|
|||||||
Visible_image_depth_buffer.Width = 0;
|
Visible_image_depth_buffer.Width = 0;
|
||||||
Visible_image_depth_buffer.Height = 0;
|
Visible_image_depth_buffer.Height = 0;
|
||||||
Visible_image_depth_buffer.Image = NULL;
|
Visible_image_depth_buffer.Image = NULL;
|
||||||
|
#endif
|
||||||
if (!Update_buffers(width, height))
|
if (!Update_buffers(width, height))
|
||||||
return 0;
|
return 0;
|
||||||
|
#ifndef NOLAYERS
|
||||||
// For speed, instead of Redraw_layered_image() we'll directly set the buffers.
|
// For speed, instead of Redraw_layered_image() we'll directly set the buffers.
|
||||||
memset(Visible_image[0].Image, 0, width*height);
|
memset(Visible_image[0].Image, 0, width*height);
|
||||||
memset(Visible_image[1].Image, 0, width*height);
|
memset(Visible_image[1].Image, 0, width*height);
|
||||||
memset(Visible_image_depth_buffer.Image, 0, width*height);
|
memset(Visible_image_depth_buffer.Image, 0, width*height);
|
||||||
|
#endif
|
||||||
Download_infos_page_main(Main_backups->Pages);
|
Download_infos_page_main(Main_backups->Pages);
|
||||||
Download_infos_backup(Main_backups);
|
Download_infos_backup(Main_backups);
|
||||||
|
|
||||||
@ -930,10 +955,11 @@ void End_of_modification(void)
|
|||||||
|
|
||||||
//Update_buffers(Main_image_width, Main_image_height);
|
//Update_buffers(Main_image_width, Main_image_height);
|
||||||
|
|
||||||
|
#ifndef NOLAYERS
|
||||||
memcpy(Visible_image[1].Image,
|
memcpy(Visible_image[1].Image,
|
||||||
Visible_image[0].Image,
|
Visible_image[0].Image,
|
||||||
Main_image_width*Main_image_height);
|
Main_image_width*Main_image_height);
|
||||||
|
#endif
|
||||||
|
|
||||||
Download_infos_backup(Main_backups);
|
Download_infos_backup(Main_backups);
|
||||||
/*
|
/*
|
||||||
|
|||||||
4
pages.h
4
pages.h
@ -30,6 +30,8 @@
|
|||||||
/////////////////////////// BACKUP ///////////////////////////////////////
|
/////////////////////////// BACKUP ///////////////////////////////////////
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
extern T_Image Visible_image[2];
|
||||||
|
extern T_Image Visible_image_depth_buffer;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// INDIVIDUAL PAGES
|
/// INDIVIDUAL PAGES
|
||||||
@ -92,6 +94,8 @@ void Update_depth_buffer(void);
|
|||||||
void Redraw_layered_image(void);
|
void Redraw_layered_image(void);
|
||||||
void Redraw_current_layer(void);
|
void Redraw_current_layer(void);
|
||||||
|
|
||||||
|
void Update_screen_targets(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// STATISTICS
|
/// STATISTICS
|
||||||
///
|
///
|
||||||
|
|||||||
13
special.c
13
special.c
@ -476,6 +476,9 @@ void Layer_activate(short layer, short side)
|
|||||||
|
|
||||||
// Keep a copy of which layers were visible
|
// Keep a copy of which layers were visible
|
||||||
old_layers = Main_layers_visible;
|
old_layers = Main_layers_visible;
|
||||||
|
|
||||||
|
#ifndef NOLAYERS
|
||||||
|
|
||||||
if (side == RIGHT_SIDE)
|
if (side == RIGHT_SIDE)
|
||||||
{
|
{
|
||||||
// Right-click on current layer
|
// Right-click on current layer
|
||||||
@ -504,6 +507,16 @@ void Layer_activate(short layer, short side)
|
|||||||
Main_current_layer = layer;
|
Main_current_layer = layer;
|
||||||
Main_layers_visible |= 1<<layer;
|
Main_layers_visible |= 1<<layer;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
// Handler for limited layers support: only allow one visible at a time
|
||||||
|
if (side == LEFT_SIDE)
|
||||||
|
{
|
||||||
|
Main_current_layer = layer;
|
||||||
|
Main_layers_visible = 1<<layer;
|
||||||
|
|
||||||
|
Update_screen_targets();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Hide_cursor();
|
Hide_cursor();
|
||||||
if (Main_layers_visible != old_layers)
|
if (Main_layers_visible != old_layers)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user