Source
...
Target
......@@ -87,18 +87,6 @@
/*#define XTRACE for extended tracing*/
#endif
#undef OS_ScreenMode
#define OS_ScreenMode 0x65
#undef ColourTrans_ReadPalette
#define ColourTrans_ReadPalette 0x4075C
#undef ColourTrans_GenerateTable
#define ColourTrans_GenerateTable 0x40763
#define MIN(a, b) ((a) < (b)? (a): (b))
#define MAX(a, b) ((a) > (b)? (a): (b))
/*#define DUMPING*/ /*dump tables when put sprite scaled fails*/
/************************************
......@@ -184,6 +172,9 @@ BOOL psprite_hasmask (main_sprite *sprite)
int psprite_size (int width, int height, int mode, int mask, int palette)
{ int log2bpp = bbc_modevar (mode, bbc_Log2BPC), bpr, spritesize,
palsize = 0;
/*Modifed 4th Nov 1993 J R C so that |palette| may be
0 => no palette
1 => colour palette
......@@ -192,9 +183,6 @@ int psprite_size (int width, int height, int mode, int mask, int palette)
a 'mono' palette has 256 entries rather than 16.
*/
{ int log2bpp = bbc_modevar (mode, bbc_Log2BPC), bpr, spritesize,
palsize = 0;
if (palette != 0)
{ int nc = bbc_modevar (mode, bbc_NColour) + 1;
......@@ -334,7 +322,7 @@ void psprite_recalculate_offsets (main_file *file)
* Delete a sprite info block from its list *
********************************************************/
void psprite_delete (main_window* window,main_sprite *sprite)
void psprite_delete (main_window *window, main_sprite *sprite)
{ main_sprite_window *spritewindow;
main_file *file = sprite->file;
......@@ -433,11 +421,10 @@ main_sprite *psprite_new (int offset, int spriteno, main_file *parent)
static void table_new (void *a0, void *a1, int dmode, int *dpal, int flags,
int *size, char **table)
{ int junk;
ftracef0 ("table_new\n");
os_swi6r (ColourTrans_GenerateTable, a0, a1, dmode, dpal, 0 /*read size*/,
flags, &junk, &junk, &junk, &junk, size, &junk);
{ ftracef0 ("table_new\n");
os_swi6r (ColourTrans_GenerateTable,
a0, a1, dmode, dpal, 0 /*read size*/, flags,
NULL, NULL, NULL, NULL, size, NULL);
ftracef1 ("size %d\n", *size);
if (*size == 0)
......@@ -451,12 +438,14 @@ static void table_new (void *a0, void *a1, int dmode, int *dpal, int flags,
os_swi6 (ColourTrans_GenerateTable, a0, a1, dmode, dpal, *table,
flags);
} }
}
}
/*********************************************
* Call the SWI to build a translation table *
*********************************************/
static int modesixteen [] = /* actual colour values */
static const unsigned int modesixteen [] = /* actual colour values */
{ 0, /* black */
0xFF00, /* red */
0xFF0000, /* green */
......@@ -475,7 +464,7 @@ static int modesixteen [] = /* actual colour values */
0xFFFFFF00 /* white */
};
static int hardmode_defpal [] = /* default palette for 256 colour modes */
static const unsigned int hardmode_defpal [] = /* default palette for 256 colour modes */
{ 0, /* 0000 */
0x10101000, /* 0001 */
0x20202000, /* 0010 */
......@@ -494,46 +483,33 @@ static int hardmode_defpal [] = /* default palette for 256 colour modes */
0x70307000 /* 1111 */
};
static int black_and_white [] =
static const unsigned int black_and_white [] =
{ 0, /* black */
0xFFFFFF00 /* white */
};
static int fourcolourpal [] =
static const unsigned int fourcolourpal [] =
{ 0, /* black */
0xFF00, /* red */
0xFFFF00, /* yellow */
0xFFFFFF00 /* white */
};
#ifdef ModuleVersion
int *psprite_std_palettes [2] [4];
int *psprite_std_palettes [2] [4];
static void init_palettes (void)
static void init_palettes (void)
{ ftracef0 ("init_palettes\n");
{ /* Required to generate relocatable code */
ftracef0 ("init_palettes\n");
psprite_std_palettes [0] [0] = twowimp_colours;
psprite_std_palettes [0] [1] = fourwimp_colours;
psprite_std_palettes [0] [2] = wimp_colours;
psprite_std_palettes [0] [3] = hardmode_defpal;
psprite_std_palettes [1] [0] = black_and_white;
psprite_std_palettes [1] [1] = fourcolourpal;
psprite_std_palettes [1] [2] = modesixteen;
psprite_std_palettes [1] [3] = hardmode_defpal;
}
#else
int *psprite_std_palettes [2] [4] =
{ { twowimp_colours,
fourwimp_colours,
wimp_colours,
hardmode_defpal
},
{ black_and_white,
fourcolourpal,
modesixteen,
hardmode_defpal
} };
#endif
psprite_std_palettes [0] [3] = (int *)hardmode_defpal;
psprite_std_palettes [1] [0] = (int *)black_and_white;
psprite_std_palettes [1] [1] = (int *)fourcolourpal;
psprite_std_palettes [1] [2] = (int *)modesixteen;
psprite_std_palettes [1] [3] = (int *)hardmode_defpal;
}
static int Current_Palette [256];
......@@ -577,13 +553,6 @@ static int Current_Palette [256];
main_ttab *psprite_ttab_for_sprite (main_sprite *sprite, int dmode,
int *dpal)
/*Non-cacheing version, also now builds both deep and byte-wide ttabs:
the first is for building the colours window, and is used by all shallow
sprites; the second is used for plotting sprites with no palette, or an
incomplete one. J R C 23rd Nov 1993*/
/*Cacheing put back to fix MED-2123. J R C 27th Jan 1994*/
{ main_ttab *tb = NULL;
int smode, slb_bpp, dlb_bpp, sbpp, dbpp, spal [256 /*no palette can be
larger than this*/], *destpal, spalsize;
......@@ -615,13 +584,15 @@ main_ttab *psprite_ttab_for_sprite (main_sprite *sprite, int dmode,
spalsize, 1 << 0 /*R1 -> sprite*/)) != NULL)
{ msg = error->errmess;
goto finish;
} }
}
}
else
{ /*Copy the relevant standard palette.*/
spalsize = sbpp != 8? 4 << sbpp: 4*16;
memcpy (spal, psprite_std_palettes
[sprite->file->use_current_palette? 0: 1] [slb_bpp], spalsize);
} }
}
}
else
spalsize = 0; /**/
......@@ -684,10 +655,19 @@ finish:
{ Trace_Ttab (tb);
ftracef0 ("psprite_ttab_for_sprite got no error\n");
return tb;
} }
}
}
main_ttab *psprite_ttab_new (main_sprite *sprite, int dmode, int *dpal)
{ main_ttab *tb = NULL;
int smode, slb_bpp, dlb_bpp, sbpp, dbpp, spal [256 /*no palette can
be larger than this*/], *destpal, spalsize;
os_error *error;
char *msg = NULL; /*this is our error indicator*/
BOOL done_tb = FALSE, done_spal = FALSE, done_dpal = FALSE,
done_table = FALSE, done_table2 = FALSE;
/* Returns NULL if something goes wrong, but in practice this can only be
* NoMem.
*/
......@@ -703,14 +683,6 @@ main_ttab *psprite_ttab_new (main_sprite *sprite, int dmode, int *dpal)
* extensively now.
*/
{ main_ttab *tb = NULL;
int smode, slb_bpp, dlb_bpp, sbpp, dbpp, spal [256 /*no palette can
be larger than this*/], *destpal, spalsize;
os_error *error;
char *msg = NULL; /*this is our error indicator*/
BOOL done_tb = FALSE, done_spal = FALSE, done_dpal = FALSE,
done_table = FALSE, done_table2 = FALSE;
ftracef3 ("psprite_ttab_new (\"%.12s\", dmode %d, dpal 0x%X)\n",
psprite_address (sprite)->name, dmode, dpal);
......@@ -736,13 +708,15 @@ main_ttab *psprite_ttab_new (main_sprite *sprite, int dmode, int *dpal)
4 << sbpp, 1 << 0 /*R1 -> sprite*/)) != NULL)
{ msg = error->errmess;
goto finish;
} }
}
}
else
{ /*Copy the relevant standard palette.*/
spalsize = sbpp != 8? 4 << sbpp: 4*16;
memcpy (spal, psprite_std_palettes
[sprite->file->use_current_palette? 0: 1] [slb_bpp], spalsize);
} }
}
}
else
spalsize = 0; /**/
......@@ -863,7 +837,8 @@ finish:
ftracef0 ("psprite_ttab_new got no error\n");
return tb;
} }
}
}
void psprite_drop_translation (main_ttab **tb)
......@@ -879,7 +854,9 @@ void psprite_drop_translation (main_ttab **tb)
psprite_ttab_delete (*tb);
*tb = NULL;
break;
} } }
}
}
}
void psprite_ttab_delete (main_ttab *tb)
......@@ -910,9 +887,8 @@ os_error *psprite_set_default_translations (void)
os_error *error = NULL;
ftracef0 ("psprite_set_default_translations\n");
#ifdef ModuleVersion
init_palettes ();
#endif
mode_bpp = 1 << bbc_modevar (-1, bbc_Log2BPP);
ftracef1 ("mode_bpp %d\n", mode_bpp);
......@@ -1084,13 +1060,13 @@ os_error *psprite_set_plot_info (main_file *file)
int psprite_palsize (main_sprite *sprite)
{ sprite_header *header = psprite_address (sprite);
int size, junk, lb_bpp = bbc_modevar (header->mode, bbc_Log2BPP);
int size, lb_bpp = bbc_modevar (header->mode, bbc_Log2BPP);
/*Find out the palette size*/
if (psprite_haspal (sprite))
os_swi6r (ColourTrans_ReadPalette,
sprite->file->spritearea, header, 0 /*read size*/, 0, 1 << 0 /*sprite
in R1*/, 0, &junk, &junk, &junk, &size, &junk, &junk);
in R1*/, 0, NULL, NULL, NULL, &size, NULL, NULL);
else
size = ENTRIES (lb_bpp)*sizeof (int);
ftracef1 ("psprite_palsize: palette size is %d\n", size);
......@@ -1150,7 +1126,8 @@ os_error *psprite_set_colour (main_sprite *sprite)
== NULL)
{ error = main_error ("PntEG");
goto finish;
} }
}
}
finish:
return error;
......@@ -1187,6 +1164,7 @@ os_error *psprite_plot_scaled (int x, int y, main_sprite *sprite,
{ main_scaling_block scaling;
os_error *error;
os_regset regs;
ftracef1 ("psprite_plot_scaled \"%.12s\"\n",
psprite_address (sprite)->name);
......@@ -1206,21 +1184,15 @@ os_error *psprite_plot_scaled (int x, int y, main_sprite *sprite,
scaling.scale_xdiv, scaling.scale_ymul, scaling.scale_ydiv);
ftracef1 ("table at 0x%X\n", sprite->transtab->table);
/*Black*/
error = _swix
( OS_SpriteOp,
_IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_IN(5)|_IN(6)|_IN(7),
512 | 52,
sprite->file->spritearea,
psprite_address (sprite),
x, y,
mode | 8 /*use mask if present*/ |
#if 0 /*9th Feb 1995*/
psprite_haspal (sprite) << 4 /*ignore ttab*/ |
#endif
1 << 5 /*ttab is wide*/,
&scaling,
sprite->transtab->table
);
regs.r[0] = 512 | 52;
regs.r[1] = (int)sprite->file->spritearea;
regs.r[2] = (int)psprite_address (sprite);
regs.r[3] = x;
regs.r[4] = y;
regs.r[5] = mode | 8 /*use mask if present*/ | 1 << 5 /*ttab is wide*/;
regs.r[6] = (int)&scaling;
regs.r[7] = (int)sprite->transtab->table;
error = os_swix (OS_SpriteOp, &regs);
ftracef0 ("putting sprite scaled ... done\n");
#ifdef DUMPING
......@@ -1271,6 +1243,7 @@ os_error *psprite_plot_scaled_m (int x, int y, main_sprite *sprite,
{
main_scaling_block scaling;
os_error *error = NULL;
os_regset regs;
int op, flags = 0;
char *table = NULL;
......@@ -1308,10 +1281,16 @@ os_error *psprite_plot_scaled_m (int x, int y, main_sprite *sprite,
ftracef1 ("R7 0x%X\n", table);
ftracef4 ("factors (%d:%d, %d:%d)\n", scaling.scale_xmul,
scaling.scale_xdiv, scaling.scale_ymul, scaling.scale_ydiv);
error = _swix (OS_SpriteOp,
_IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_IN(5)|_IN(6)|_IN(7), op,
sprite->file->spritearea, psprite_address (sprite),
x, y, flags, &scaling, table);
regs.r[0] = op;
regs.r[1] = (int)sprite->file->spritearea;
regs.r[2] = (int)psprite_address (sprite);
regs.r[3] = x;
regs.r[4] = y;
regs.r[5] = flags;
regs.r[6] = (int)&scaling;
regs.r[7] = (int)table;
error = os_swix (OS_SpriteOp, &regs);
ftracef0 ("putting sprite scaled ... done\n");
#ifdef DUMPING
......@@ -1335,6 +1314,7 @@ os_error *psprite_plot_scaled_centred (int x, int y, main_sprite *sprite,
{ sprite_info infoblock;
main_scaling_block scaling;
os_error *error = NULL;
os_regset regs;
int op, flags = 0;
char *table = NULL;
......@@ -1378,10 +1358,16 @@ os_error *psprite_plot_scaled_centred (int x, int y, main_sprite *sprite,
ftracef1 ("R7 0x%X\n", table);
ftracef4 ("factors (%d:%d, %d:%d)\n", scaling.scale_xmul,
scaling.scale_xdiv, scaling.scale_ymul, scaling.scale_ydiv);
error = _swix (OS_SpriteOp,
_IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_IN(5)|_IN(6)|_IN(7), op,
sprite->file->spritearea, psprite_address (sprite),
x - infoblock.width, y - infoblock.height, flags, &scaling, table);
regs.r[0] = op;
regs.r[1] = (int)sprite->file->spritearea;
regs.r[2] = (int)psprite_address (sprite);
regs.r[3] = x - infoblock.width;
regs.r[4] = y - infoblock.height;
regs.r[5] = flags;
regs.r[6] = (int)&scaling;
regs.r[7] = (int)table;
error = os_swix (OS_SpriteOp, &regs);
ftracef0 ("putting sprite scaled ... done\n");
#ifdef DUMPING
......@@ -1743,7 +1729,7 @@ void psprite_setup_ecf (main_sprite *sprite, int ECF,
if (os_swix4 (OS_SpriteOp, 37 | 0x200 /*create/remove palette*/,
ECFblock->sarea, (int) ECFblock->sarea + sizeof (sprite_area),
1 /*create*/ | 1U << 31) != NULL) main_NO_ROOM ("ECF palette");
_swix (ColourTrans_ReadPalette, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4),
os_swix5 (ColourTrans_ReadPalette,
sprite->file->spritearea, psprite_address (sprite),
(int) ECFblock->sarea + sizeof (sprite_area) +
sizeof (sprite_header), 8 << (1 << splb_bpp), 1 << 1);
......@@ -1782,6 +1768,7 @@ os_error *psprite_plot_ecf_sprite (main_sprite *sprite, int ECF, int x,
int y)
{ os_error *error;
os_regset regs;
main_scaling_block scaling;
ftracef0 ("psprite_plot_ecf_sprite\n");
......@@ -1791,18 +1778,17 @@ os_error *psprite_plot_ecf_sprite (main_sprite *sprite, int ECF, int x,
ftracef0 ("putting ecf sprite scaled ...\n");
/*bad translation a pain*/
error = _swix
( OS_SpriteOp,
_IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_IN(5)|_IN(6)|_IN(7),
512 | 52,
sprite->ECFs [ECF].sarea,
sprite->ECFs [ECF].sarea + 1,
x, y,
psprite_haspal (sprite) << 4 /*use ttab if there is no palette*/ |
1 << 5 /*ttab is wide*/,
&scaling,
sprite->transtab->table
);
regs.r[0] = 512 | 52;
regs.r[1] = (int)sprite->ECFs [ECF].sarea;
regs.r[2] = (int)(sprite->ECFs [ECF].sarea + 1);
regs.r[3] = x;
regs.r[4] = y;
regs.r[5] = psprite_haspal (sprite) << 4 /*use ttab if there is no palette*/ |
1 << 5 /*ttab is wide*/;
regs.r[6] = (int)&scaling;
regs.r[7] = (int)sprite->transtab->table;
error = os_swix (OS_SpriteOp, &regs);
ftracef0 ("putting ecf sprite scaled ... done\n");
#ifdef DUMPING
......@@ -1819,7 +1805,7 @@ os_error *psprite_plot_ecf_sprite (main_sprite *sprite, int ECF, int x,
* of MOS's file merging. *
***********************************************************/
BOOL psprite_merge_area (main_window* window,main_file *file, sprite_area **area)
BOOL psprite_merge_area (main_window *window, main_file *file, sprite_area **area)
{ sprite_area area_info;
char sname [NAME_LIMIT + 1];
......@@ -1950,18 +1936,12 @@ void Temporary_Name (sprite_area *sarea, char *name)
if (sprite_select (sarea, &sid))
{ ftracef1 ("temp sprite name generated is \"%s\"\n", name);
return;
} } }
/*FIX A-RO-???? JRC 7 Oct '91: In {rotate,scale,shear}_sprite(), replace
addresses by names in sprite id
blocks; use 'sprite->file->spritearea' instead of 'sarea;' recover from
errors better; remove '#if 0' ... '#endif' blocks; use
sprite_change_size() instead of Change_Size().*/
}
}
}
void psprite_rotate (main_sprite *sprite, int degrees)
/*Do not die on errors - report them and continue. J R C 25th Nov 1993*/
{ ftracef0 ("psprite_rotate\n");
if ((degrees %= 360) != 0) /* optimise 0! */
......@@ -2151,7 +2131,8 @@ void psprite_rotate (main_sprite *sprite, int degrees)
{ ftracef0 ("ERROR\n");
msg = error->errmess;
goto finish;
} }
}
}
finish:
if (switched_output) sprwindow_swap_output_to_screen ();
......@@ -2302,7 +2283,8 @@ void psprite_scale (main_sprite *sprite, double scale_x, double scale_y)
&sid2, NULL, &trans_mat)) != NULL)
{ msg = error->errmess;
goto finish;
} }
}
}
finish:
if (switched_output) sprwindow_swap_output_to_screen ();
......@@ -2462,7 +2444,8 @@ void psprite_shear (main_sprite *sprite, double factor)
NULL, &trans_mat)) != NULL)
{ msg = error->errmess;
goto finish;
} }
}
}
finish:
if (switched_output) sprwindow_swap_output_to_screen ();
......@@ -2705,7 +2688,7 @@ static void create_create_sprite (dbox d, main_window *window)
psprite_read_full_info (sprite, &info);
/*JRC 27 May 1991 Make the sprite white (rather than 0-pixels).*/
palette_white.word = 0xFFFFFF00;
palette_white.word = (int)0xFFFFFF00;
sprwindow_swap_output_to_sprite (sprite);
if (want_palette || lb_bpp > 3)
......@@ -2724,7 +2707,7 @@ static void create_create_sprite (dbox d, main_window *window)
}
sprwindow_swap_output_to_screen ();
/* Having filled with white,find the furthest colour from white and select it */
/* Having filled with white, find the furthest colour from white and select it */
palette_white.word = 0;
wimpt_noerr (colourtran_return_colourformode (palette_white, mode,
(wimp_paletteword *) psprite_std_palettes
......@@ -2735,10 +2718,9 @@ static void create_create_sprite (dbox d, main_window *window)
if (main_current_options.tools.show_tools)
toolwindow_display (/*at pointer?*/ FALSE);
#if FIX0553
/* force summary window to be updated */
window->data->file.lastwidth = 0;
#endif
/*JRC 12 June 1991*/
main_set_extent (window);
main_force_redraw (window->handle);
......@@ -2806,18 +2788,19 @@ static void Create_Cb (dbox d, void *handle)
if (i == d_Create_Ok || i == d_Create_Cancel || i == dbox_CLOSE)
{ dbox_dispose (&Create);
Create = NULL, Source = 0;
} }
}
}
static BOOL Grey_Scale (int lb_bpp)
/*Given that the current mode is 256 colours or less, is it a grey-scale
mode?*/
{ int colour_count = 1 << (1 << lb_bpp), palette [256], i, colour;
_kernel_swi_regs swi_regs;
_kernel_oserror *oserror;
os_regset swi_regs;
os_error *oserror;
BOOL incomplete;
/*Given that the current mode is 256 colours or less, is it a grey-scale
mode?*/
swi_regs.r [0] = 0;
swi_regs.r [1] = colour_count | 17 << 24;
swi_regs.r [2] = (int) palette;
......@@ -2825,7 +2808,7 @@ static BOOL Grey_Scale (int lb_bpp)
swi_regs.r [4] = 7 /*read block of palette entries*/;
swi_regs.r [9] = 35 /*PaletteV*/;
if ((oserror = _kernel_swi (OS_CallAVector, &swi_regs, &swi_regs)) != NULL)
if ((oserror = os_swix (OS_CallAVector, &swi_regs)) != NULL)
{ ftracef1 ("error %s\n", oserror->errmess);
return FALSE;
}
......@@ -2846,7 +2829,7 @@ static BOOL Grey_Scale (int lb_bpp)
swi_regs.r [4] = 1 /*read palette entry*/;
swi_regs.r [9] = 35 /*PaletteV*/;
if ((oserror = _kernel_swi (OS_CallAVector, &swi_regs, &swi_regs)) !=
if ((oserror = os_swix (OS_CallAVector, &swi_regs)) !=
NULL)
{ ftracef1 ("error %s\n", oserror->errmess);
return FALSE;
......@@ -2857,22 +2840,18 @@ static BOOL Grey_Scale (int lb_bpp)
if (incomplete)
{ /*Resort to OS_ReadPalette*/
swi_regs.r [0] = i;
swi_regs.r [1] = 17;
if ((oserror = _kernel_swi (OS_ReadPalette, &swi_regs, &swi_regs)) !=
if ((oserror = os_swix3r (OS_ReadPalette, i, 17, 0, NULL, NULL, &colour)) !=
NULL)
{ ftracef1 ("error %s\n", oserror->errmess);
return FALSE;
}
colour = swi_regs.r [2];
}
if ((colour ^ colour << 8) >> 16 != 0)
{ ftracef1 ("colour %d not grey\n", i);
return FALSE;
} }
}
}
ftracef0 ("all colours grey\n");
return TRUE;
......@@ -2896,6 +2875,16 @@ static void Create_Handler (wimp_eventstr *e, void *handle)
{ /*don't proceed if the window's gone*/
Decode (&lb_bpp, &mode);
if (dbox_getnumeric (Create, d_Create_Palette_Colour) ||
dbox_getnumeric (Create, d_Create_Palette_Mono))
{ dbox_fadefield (Create, d_Create_Colours_32k);
dbox_fadefield (Create, d_Create_Colours_16M);
}
else
{ dbox_unfadefield (Create, d_Create_Colours_32k);
dbox_unfadefield (Create, d_Create_Colours_16M);
}
if (mode != Mode)
{ /*This code altered to reflect new-format shallow sprites with
palette. JRC 5th Dec 1994*/
......@@ -2920,7 +2909,9 @@ static void Create_Handler (wimp_eventstr *e, void *handle)
dbox_fadefield (Create, d_Create_Palette_Mono);
Mode = mode;
} } }
}
}
}
void psprite_create_show (main_window *window, BOOL auto_open,
char *sprite_name)
......@@ -3038,4 +3029,5 @@ void psprite_create_show (main_window *window, BOOL auto_open,
else
{ dbox_showstatic (Create);
dbox_eventhandler (Create, &Create_Cb, (void *) window);
} }
}
}
......@@ -14,9 +14,9 @@
*/
#include "PaintLib.h"
os_error* PaintLib_get_wind_info(wimp_winfo* winfo)
{
return wimp_get_wind_info((wimp_winfo*)(1 | (int)winfo));
os_error *paintlib_get_wind_info (wimp_winfo *winfo)
{ return wimp_get_wind_info ((wimp_winfo *)(1 | (int)winfo));
}
......@@ -24,6 +24,7 @@
*/
#include <swis.h>
#include "Global/FileTypes.h"
#include "akbd.h"
#include "bbc.h"
......@@ -43,9 +44,6 @@
#include "Colours.h"
#include "PaintLib.h"
#define MIN(a, b) ((a) < (b)? (a): (b))
#define MAX(a, b) ((a) > (b)? (a): (b))
/**************************************************************************
* *
* Static variables. *
......@@ -67,10 +65,10 @@ static wimp_w lastnullholder = -1;
* *
***************************************/
/* The open parameter avoid getting two open requests in some circumstances */
void sprwindow_set_work_extent (main_window *window, BOOL open)
{ wimp_wstate currinfo;
{ /* The open parameter avoid getting two open requests in some circumstances */
wimp_wstate currinfo;
wimp_redrawstr newext;
sprite_info sinfo;
......@@ -82,7 +80,7 @@ void sprwindow_set_work_extent (main_window *window, BOOL open)
sinfo.width = sinfo.width * window->data->sprite.blobsize.scale_xmul /
window->data->sprite.blobsize.scale_xdiv;
sinfo.height= sinfo.height* window->data->sprite.blobsize.scale_ymul /
sinfo.height= sinfo.height * window->data->sprite.blobsize.scale_ymul /
window->data->sprite.blobsize.scale_ydiv;
sinfo.width &= ~((1 << bbc_modevar (-1, bbc_XEigFactor)) - 1);
......@@ -190,8 +188,8 @@ int sprwindow_swap_output_to_mask (main_sprite *sprite, int statesaved)
state->r[2] = (int) psprite_address (sprite);
state->r[3] = 0;
wimpt_complain (os_swix (OS_SpriteOp, state));
os_swix1 (OS_ChangedBox+os_X, 2);
os_swix1 (OS_ChangedBox+os_X, 1); /* enable changed box calcs */
os_swix1 (OS_ChangedBox, 2);
os_swix1 (OS_ChangedBox, 1); /* enable changed box calcs */
return 1;
}
else return 0;
......@@ -205,8 +203,7 @@ int sprwindow_swap_output_to_mask (main_sprite *sprite, int statesaved)
void sprwindow_swap_output_to_screen (void)
{
ftracef0 ("sprwindow_swap_output_to_screen\n");
{ ftracef0 ("sprwindow_swap_output_to_screen\n");
wimpt_complain (os_swix (OS_SpriteOp, &savedVDUstate));
}
......@@ -226,7 +223,7 @@ void sprwindow_redisplay (main_sprite *sprite, wimp_box *area)
ftracef0 ("sprwindow_redisplay\n");
for (window = sprite->windows; window != NULL; window = window->link)
{ curr.w = window->window->handle;
wimpt_noerr (PaintLib_get_wind_info (&curr));
wimpt_noerr (paintlib_get_wind_info (&curr));
if (area != NULL)
{ redraw.box.x0 = area->x0*window->blobsize.scale_xmul/
......@@ -251,7 +248,7 @@ void sprwindow_redisplay (main_sprite *sprite, wimp_box *area)
/* now invalidate area in filer window */
curr.w = sprite->file->window->handle;
wimpt_noerr (PaintLib_get_wind_info (&curr));
wimpt_noerr (paintlib_get_wind_info (&curr));
if (sprite->file->fullinfo)
{ redraw.box.x0 = 0; redraw.box.x1 = 3*main_FILER_TextHeight;
......@@ -324,7 +321,7 @@ void sprwindow_release_idle_events (main_sprite *sprite)
}
}
static BOOL cant_extend_stack_buffer (char** b, int* s)
static BOOL cant_extend_stack_buffer (char **b, int *s)
{ ftracef0 ("cant_extend_stack_buffer\n");
b = b; s = s;
......@@ -332,14 +329,14 @@ static BOOL cant_extend_stack_buffer (char** b, int* s)
return 0;
}
static BOOL Check_Palette_Type (int type, char *name)
static BOOL check_palette_type (int type, char *name)
{ ftracef0 ("Check_Palette_Type\n");
if (type != 0xFED && type != -1)
{ ftracef0 ("check_palette_type\n");
if (type != FileType_Palette && type != -1)
{ werr (FALSE, msgs_lookup (name == NULL? "PntE2": "PntE3"), name);
return FALSE;
}
return type == 0xFED;
return type == FileType_Palette;
}
void sprwindow_event_handler (wimp_eventstr *e, void *handle)
......@@ -377,14 +374,14 @@ void sprwindow_event_handler (wimp_eventstr *e, void *handle)
psprite_read_size (sprite, &sinfo);
sinfo.width = sinfo.width* scale->scale_xmul/scale->scale_xdiv;
sinfo.height = sinfo.height*scale->scale_ymul/scale->scale_ydiv;
sinfo.width = sinfo.width * scale->scale_xmul/scale->scale_xdiv;
sinfo.height = sinfo.height * scale->scale_ymul/scale->scale_ydiv;
rds.w = e->data.o.w;
wimpt_noerr (wimp_redraw_wind (&rds, &more));
curr.w = e->data.o.w;
wimpt_noerr (PaintLib_get_wind_info (&curr));
wimpt_noerr (paintlib_get_wind_info (&curr));
/*Screen coords of work area origin*/
x = rds.box.x0 - rds.scx;
......@@ -514,7 +511,7 @@ void sprwindow_event_handler (wimp_eventstr *e, void *handle)
mode = psprite_address (window->data->sprite.sprite)->mode;
if (Check_Palette_Type (xferrecv_checkinsert (&name), name))
if (check_palette_type (xferrecv_checkinsert (&name), name))
{ /*Load the file if it's not too big.*/
os_filestr file_str;
......@@ -545,7 +542,7 @@ void sprwindow_event_handler (wimp_eventstr *e, void *handle)
ftracef0 ("Read palette\n");
}
else if (Check_Palette_Type (xferrecv_checkimport (&size), NULL))
else if (check_palette_type (xferrecv_checkimport (&size), NULL))
{ size = xferrecv_doimport (palfile, 6*256 + 1,
&cant_extend_stack_buffer);
ftracef1 ("Imported %d byte palette\n", size);
......@@ -609,7 +606,7 @@ void sprwindow_event_handler (wimp_eventstr *e, void *handle)
break;
default:
ftracef1 ("Sprite window event %d\n",e->e);
ftracef1 ("Sprite window event %d\n", e->e);
break;
}
......
......@@ -49,10 +49,10 @@ wimp_w toolwindow_handle;
toolwindow_block *toolwindow_current_tool;
int toolwindow_current_mode = 0;
#ifdef ModuleVersion
static toolwindow_block *toolarray [tools_COUNT];
static void init_toolarray (void)
{ toolarray [0] = NULL;
{ /* Required to generate relocatable code */
toolarray [0] = NULL;
toolarray [1] = &tools_pixelpaint;
toolarray [2] = &tools_spraycanpaint;
toolarray [3] = &tools_floodfillpaint;
......@@ -75,32 +75,6 @@ static void init_toolarray (void)
toolarray [20] = &tools_parallelogramoutlinepaint;
toolarray [21] = &tools_brushpaint;
}
#else
static toolwindow_block *toolarray [tools_COUNT] =
{ NULL, /* zeroth icon n'existe pas */
&pixelpaint, /* 1 */
&spraycanpaint, /* 2 */
&floodfillpaint, /* 3 */
&linepaint, /* 4 */
&ellipseoutlinepaint, /* 5 */
&ellipsepaint, /* 6 */
&circleoutlinepaint, /* 7 */
&circlepaint, /* 8 */
&trianglepaint, /* 9 */
&arcpaint, /* 10 */
&segmentpaint, /* 11 */
&sectorpaint, /* 12 */
&camerapaint, /* 13 */
&scissorpaint, /* 14 */
&textpaint, /* 15 */
&grabberpaint, /* 16 */
&rectanglepaint, /* 17 */
&rectangleoutlinepaint, /* 18 */
&parallelogrampaint, /* 19 */
&parallelogramoutlinepaint, /* 20 */
&brushpaint /* 21 */
};
#endif
static char
*onlydigits = "A0-9";
......@@ -438,7 +412,8 @@ static void sprite_tool_event_handler (wimp_eventstr *e, void *handle)
tools_brush_use_gcol = (i.flags & wimp_ISELECTED) != 0;
performbrushGOaction ();
} }
}
}
else if (toolwindow_current_tool == &tools_floodfillpaint)
{ wimp_icon i;
wimpt_noerr (wimp_get_icon_info (toolwindow_handle,
......@@ -621,7 +596,5 @@ void toolwindow_init (void)
{ toolwindow_handle = 0;
toolwindow_current_tool = &tools_pixelpaint;
#ifdef ModuleVersion
init_toolarray ();
#endif
}
......@@ -45,7 +45,6 @@
#include "Colours.h"
#include "Menus.h"
#include "guard.h"
#include "writepixel.h"
#include "PaintLib.h"
#define MUNGE_PIXEL(x, y, c, sa, sp, sb) \
......@@ -121,7 +120,7 @@ static char parallelogramdata [] = {bbc_SolidBoth + bbc_DrawAbsFore,
static char rectangledata [] = {bbc_RectangleFill + bbc_DrawAbsFore, 0 };
static int tools_extent_to_pixel_x(const main_sprite_window* window,int x)
static int tools_extent_to_pixel_x(const main_sprite_window *window, int x)
{
x *= window->blobsize.scale_xdiv;
x /= window->blobsize.scale_xmul;
......@@ -129,7 +128,7 @@ static int tools_extent_to_pixel_x(const main_sprite_window* window,int x)
return x;
}
static int tools_pixel_to_extent_x(const main_sprite_window* window,int x)
static int tools_pixel_to_extent_x(const main_sprite_window *window, int x)
{
x *= window->sprite->mode.scale_xmul;
x *= window->blobsize.scale_xmul;
......@@ -137,7 +136,7 @@ static int tools_pixel_to_extent_x(const main_sprite_window* window,int x)
return x;
}
static int tools_pixel_to_extent_centre_x(const main_sprite_window* window,int x)
static int tools_pixel_to_extent_centre_x(const main_sprite_window *window, int x)
{
x *= window->sprite->mode.scale_xmul;
x *= window->blobsize.scale_xmul;
......@@ -146,7 +145,7 @@ static int tools_pixel_to_extent_centre_x(const main_sprite_window* window,int
return x;
}
static int tools_extent_to_pixel_y(const main_sprite_window* window,int y)
static int tools_extent_to_pixel_y(const main_sprite_window *window, int y)
{
y *= window->blobsize.scale_ydiv;
y /= window->blobsize.scale_ymul;
......@@ -155,7 +154,7 @@ static int tools_extent_to_pixel_y(const main_sprite_window* window,int y)
}
static int tools_pixel_to_extent_y(const main_sprite_window* window,int y)
static int tools_pixel_to_extent_y(const main_sprite_window *window, int y)
{
y *= window->blobsize.scale_ymul;
y *= window->sprite->mode.scale_ymul;
......@@ -163,7 +162,7 @@ static int tools_pixel_to_extent_y(const main_sprite_window* window,int y)
return y;
}
static int tools_pixel_to_extent_centre_y(const main_sprite_window* window,int y)
static int tools_pixel_to_extent_centre_y(const main_sprite_window *window, int y)
{
y *= window->sprite->mode.scale_ymul;
y *= window->blobsize.scale_ymul;
......@@ -172,19 +171,19 @@ static int tools_pixel_to_extent_centre_y(const main_sprite_window* window,int
return y;
}
static int tools_pixel_to_point_x(const main_sprite_window* window,int x)
static int tools_pixel_to_point_x(const main_sprite_window *window, int x)
{
x *= window->sprite->mode.scale_xmul;
return x;
}
static int tools_pixel_to_point_y(const main_sprite_window* window,int y)
static int tools_pixel_to_point_y(const main_sprite_window *window, int y)
{
y *= window->sprite->mode.scale_ymul;
return y;
}
static void tools_get_sprite_info_pixels(main_sprite* sprite,sprite_info* sin)
static void tools_get_sprite_info_pixels(main_sprite *sprite, sprite_info *sin)
{
sprite_id sid;
sid.tag = sprite_id_addr;
......@@ -206,13 +205,13 @@ void tools_mouse_to_pixel(main_window *window, wimp_mousestr *mpos,
ftracef0 ("tools_mouse_to_pixel\n");
curr.w = window->handle;
wimpt_noerr (PaintLib_get_wind_info (&curr));
wimpt_noerr (paintlib_get_wind_info (&curr));
tools_get_sprite_info_pixels(sprite,&sin);
if (cx)
{
int x=tools_extent_to_pixel_x(&window->data->sprite,mpos->x - curr.info.box.x0 + curr.info.scx);
int x=tools_extent_to_pixel_x(&window->data->sprite, mpos->x - curr.info.box.x0 + curr.info.scx);
if (x>=sin.width) x=sin.width-1;
if (x<0) x=0;
*cx=x;
......@@ -234,12 +233,12 @@ void tools_mouse_to_pixel(main_window *window, wimp_mousestr *mpos,
and output from wimp_wind_update.
*************************************/
static void sprite_update_window(main_sprite_window* swind,int* x0,int* y0,wimp_redrawstr* rds, int *more)
static void sprite_update_window(main_sprite_window *swind, int *x0, int *y0, wimp_redrawstr *rds, int *more)
{
wimp_winfo curr;
curr.w = swind->window->handle;
wimpt_noerr (PaintLib_get_wind_info (&curr));
wimpt_noerr (paintlib_get_wind_info (&curr));
rds->w = swind->window->handle;
rds->box = main_big_extent;
......@@ -253,7 +252,7 @@ static void sprite_update_window(main_sprite_window* swind,int* x0,int* y0,wimp_
* EORed table-driven plotter *
********************************/
static void tabledriven_drawEOR(main_sprite_window* swind,int* toolspace,int x0, int y0)
static void tabledriven_drawEOR(main_sprite_window *swind, int *toolspace, int x0, int y0)
{
int i, *coords = &toolspace [2];
......@@ -266,14 +265,14 @@ static void tabledriven_drawEOR(main_sprite_window* swind,int* toolspace,int x0,
for (i = toolspace [0] & 0xFF; i; i--)
{
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind,coords [0]),
y0 + tools_pixel_to_extent_centre_y(swind,coords [1]));
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind, coords [0]),
y0 + tools_pixel_to_extent_centre_y(swind, coords [1]));
coords += 2;
}
bbc_plot (((char *) toolspace [1]) [(toolspace [0] & 0xFF) - 1],
x0 + tools_pixel_to_extent_centre_x(swind,coords [0]),
y0 + tools_pixel_to_extent_centre_y(swind,coords [1]));
x0 + tools_pixel_to_extent_centre_x(swind, coords [0]),
y0 + tools_pixel_to_extent_centre_y(swind, coords [1]));
}
......@@ -290,7 +289,7 @@ static void tabledrivenEOR (main_sprite *sprite)
sprite_update_window(swind,&x0,&y0,&rds,&more);
while (more)
{
tabledriven_drawEOR(swind,sprite->toolspace,x0,y0);
tabledriven_drawEOR(swind, sprite->toolspace, x0, y0);
wimpt_noerr (wimp_get_rectangle (&rds, &more));
}
}
......@@ -340,7 +339,7 @@ static void tabledriven_redraw (main_window *window, int x0, int y0)
ftracef0 ("tabledriven_redraw\n");
if (sprite->needsnull)
tabledriven_drawEOR(&window->data->sprite,sprite->toolspace,x0,y0);
tabledriven_drawEOR(&window->data->sprite, sprite->toolspace, x0, y0);
}
/**************
......@@ -405,7 +404,8 @@ static void tabledriven_click (main_window *window,
if (state*2 + 5 < toolspacesize)
{ sprite->toolspace [state*2 + 4] = x;
sprite->toolspace [state*2 + 5] = y;
} }
}
}
sprite->toolspace [0]++;
ftracef2 ("0x%X->toolspace [0]: 0x%X\n",
......@@ -416,7 +416,7 @@ static void tabledriven_click (main_window *window,
{ int ncolours = colours_count (sprite);
int gcol = sprite->gcol;
int *c = &sprite->toolspace [2];
main_sprite_window* swind=&window->data->sprite;
main_sprite_window *swind=&window->data->sprite;
sprwindow_release_idle_events (sprite);
tabledrivenEOR (sprite); /* unplot old */
......@@ -430,13 +430,13 @@ static void tabledriven_click (main_window *window,
for (scopy = state; scopy; scopy--)
{
bbc_move (tools_pixel_to_point_x(swind,coords [0]),
tools_pixel_to_point_y(swind,coords [1]));
bbc_move (tools_pixel_to_point_x(swind, coords [0]),
tools_pixel_to_point_y(swind, coords [1]));
coords += 2;
}
bbc_plot (table [sprite->toolspace [0] - 1],
tools_pixel_to_point_x(swind,x),
tools_pixel_to_point_y(swind,y));
tools_pixel_to_point_x(swind, x),
tools_pixel_to_point_y(swind, y));
}
if (sprwindow_swap_output_to_mask (sprite, gcol != ncolours))
......@@ -445,13 +445,13 @@ static void tabledriven_click (main_window *window,
colours_set_gcol (gcol != ncolours? 255: 0, 0, 0);
for (; state; state--)
{ bbc_move (tools_pixel_to_point_x(swind,coords [0]),
tools_pixel_to_point_y(swind,coords [1]));
{ bbc_move (tools_pixel_to_point_x(swind, coords [0]),
tools_pixel_to_point_y(swind, coords [1]));
coords += 2;
}
bbc_plot (table [sprite->toolspace [0] - 1],
tools_pixel_to_point_x(swind,x),
tools_pixel_to_point_y(swind,y));
tools_pixel_to_point_x(swind, x),
tools_pixel_to_point_y(swind, y));
}
sprite->toolspace [0] = 0;
......@@ -606,7 +606,7 @@ static void domungepixel (int x, int y, sprite_colour *c,
static void pixelpaint_splot (main_window *window, wimp_mousestr *mpos)
{ main_sprite *sprite = window->data->sprite.sprite;
int x,y, ncolours = colours_count (sprite),
int x, y, ncolours = colours_count (sprite),
gcol = mpos->bbits == 1? sprite->gcol2: sprite->gcol;
/* adjust clears to 0, select uses current gcol */
......@@ -655,10 +655,10 @@ static void pixelpaint_splot (main_window *window, wimp_mousestr *mpos)
}
redraw_area.x0=tools_pixel_to_point_x(&window->data->sprite,x);
redraw_area.x1=tools_pixel_to_point_x(&window->data->sprite,x+1);
redraw_area.y0=tools_pixel_to_point_y(&window->data->sprite,y);
redraw_area.y1=tools_pixel_to_point_y(&window->data->sprite,y+1);
redraw_area.x0=tools_pixel_to_point_x(&window->data->sprite, x);
redraw_area.x1=tools_pixel_to_point_x(&window->data->sprite, x+1);
redraw_area.y0=tools_pixel_to_point_y(&window->data->sprite, y);
redraw_area.y1=tools_pixel_to_point_y(&window->data->sprite, y+1);
sprwindow_redisplay (sprite, &redraw_area);
}
......@@ -702,11 +702,11 @@ static void pixelpaint_null (main_window *window, wimp_mousestr *mpos)
* EORed parallelogram plotter *
********************************/
static void parallelogram_drawEOR(main_sprite_window* swind,int* toolspace,int x0,int y0)
static void parallelogram_drawEOR(main_sprite_window *swind, int *toolspace, int x0, int y0)
{
os_swi2 (OS_SetColour, 3, -1);
int drawline=0;
int* point=&toolspace[2];
int *point=&toolspace[2];
#if 0
/*replaces the following, avoiding need to check full-palette bit*/
bbc_gcol (3, 127);
......@@ -739,48 +739,48 @@ static void parallelogram_drawEOR(main_sprite_window* swind,int* toolspace,int x
if (drawline)
{
int i,xa,ya,xb,yb;
int i, xa, ya, xb, yb;
/* find endpoints */
if (drawline==1)
{
xa=point[4] + point[0] - point[2];
ya=point[5] + point[1] - point[3];
for (i=0;i<6;i+=2) {if (point[i]<xa) xa=point[i],ya=point[i+1];}
for (i=0;i<6;i+=2) {if (point[i]<xa) xa=point[i], ya=point[i+1];}
xb=point[4] + point[0] - point[2];
yb=point[5] + point[1] - point[3];
for (i=0;i<6;i+=2) {if (point[i]>xb) xb=point[i],yb=point[i+1];}
for (i=0;i<6;i+=2) {if (point[i]>xb) xb=point[i], yb=point[i+1];}
}
else
{
xa=point[4] + point[0] - point[2];
ya=point[5] + point[1] - point[3];
for (i=0;i<6;i+=2) {if (point[i+1]<ya) xa=point[i],ya=point[i+1];}
for (i=0;i<6;i+=2) {if (point[i+1]<ya) xa=point[i], ya=point[i+1];}
xb=point[4] + point[0] - point[2];
yb=point[5] + point[1] - point[3];
for (i=0;i<6;i+=2) {if (point[i+1]>yb) xb=point[i],yb=point[i+1];}
for (i=0;i<6;i+=2) {if (point[i+1]>yb) xb=point[i], yb=point[i+1];}
}
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind,xa),
y0 + tools_pixel_to_extent_centre_y(swind,ya));
bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind,xb),
y0 + tools_pixel_to_extent_centre_y(swind,yb));
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind, xa),
y0 + tools_pixel_to_extent_centre_y(swind, ya));
bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind, xb),
y0 + tools_pixel_to_extent_centre_y(swind, yb));
}
else
{
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind,point[0]),
y0 + tools_pixel_to_extent_centre_y(swind,point[1]));
bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind,point[2]),
y0 + tools_pixel_to_extent_centre_y(swind,point[3]));
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind, point[0]),
y0 + tools_pixel_to_extent_centre_y(swind, point[1]));
bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind, point[2]),
y0 + tools_pixel_to_extent_centre_y(swind, point[3]));
if ((toolspace [0] & 0xFF) == 2)
{ bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind,point[4]),
y0 + tools_pixel_to_extent_centre_y(swind,point[5]));
bbc_drawby (tools_pixel_to_extent_x(swind,point[0] - point[2]),
tools_pixel_to_extent_y(swind,point[1] - point[3]));
bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind,point[0]),
y0 + tools_pixel_to_extent_centre_y(swind,point[1]));
{ bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind, point[4]),
y0 + tools_pixel_to_extent_centre_y(swind, point[5]));
bbc_drawby (tools_pixel_to_extent_x(swind, point[0] - point[2]),
tools_pixel_to_extent_y(swind, point[1] - point[3]));
bbc_draw (x0 + tools_pixel_to_extent_centre_x(swind, point[0]),
y0 + tools_pixel_to_extent_centre_y(swind, point[1]));
}
}
}
......@@ -797,7 +797,7 @@ static void parallelogramEOR (main_sprite *sprite)
sprite_update_window(swind,&x0,&y0,&rds,&more);
while (more)
{
parallelogram_drawEOR(swind,sprite->toolspace,x0,y0);
parallelogram_drawEOR(swind, sprite->toolspace, x0, y0);
wimpt_noerr (wimp_get_rectangle (&rds, &more));
}
}
......@@ -850,7 +850,7 @@ static void parallelogramoutlinepaint_redraw (main_window *window,
ftracef0 ("parallelogramoutlinepaint_redraw\n");
if (sprite->needsnull)
parallelogram_drawEOR(&window->data->sprite,window->data->sprite.sprite->toolspace,x0,y0);
parallelogram_drawEOR(&window->data->sprite, window->data->sprite.sprite->toolspace, x0, y0);
}
/**************
......@@ -917,7 +917,7 @@ static void parallelogramoutlinepaint_click (main_window *window,
case 2:
{ int ncolours = colours_count (sprite);
main_sprite_window* swind=&window->data->sprite;
main_sprite_window *swind=&window->data->sprite;
int gcol = sprite->gcol;
......@@ -928,31 +928,31 @@ static void parallelogramoutlinepaint_click (main_window *window,
{ sprwindow_swap_output_to_sprite (sprite);
colours_set_sprite_gcol (gcol, sprite, 0);
bbc_move (tools_pixel_to_point_x(swind,sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [3]));
bbc_draw (tools_pixel_to_point_x(swind,sprite->toolspace [4]),
tools_pixel_to_point_y(swind,sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind,sprite->toolspace [6]),
tools_pixel_to_point_y(swind,sprite->toolspace [7]));
bbc_drawby (tools_pixel_to_point_x(swind,sprite->toolspace [2] - sprite->toolspace [4]),
tools_pixel_to_point_y(swind,sprite->toolspace [3] - sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind,sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [3]));
bbc_move (tools_pixel_to_point_x(swind, sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [3]));
bbc_draw (tools_pixel_to_point_x(swind, sprite->toolspace [4]),
tools_pixel_to_point_y(swind, sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind, sprite->toolspace [6]),
tools_pixel_to_point_y(swind, sprite->toolspace [7]));
bbc_drawby (tools_pixel_to_point_x(swind, sprite->toolspace [2] - sprite->toolspace [4]),
tools_pixel_to_point_y(swind, sprite->toolspace [3] - sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind, sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [3]));
}
if (sprwindow_swap_output_to_mask (sprite, gcol != ncolours))
{ colours_set_gcol (gcol != ncolours? 255: 0, 0, 0);
bbc_move (tools_pixel_to_point_x(swind,sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [3]));
bbc_draw (tools_pixel_to_point_x(swind,sprite->toolspace [4]),
tools_pixel_to_point_y(swind,sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind,sprite->toolspace [6]),
tools_pixel_to_point_y(swind,sprite->toolspace [7]));
bbc_drawby (tools_pixel_to_point_x(swind,sprite->toolspace [2] - sprite->toolspace [4]),
tools_pixel_to_point_y(swind,sprite->toolspace [3] - sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind,sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [3]));
bbc_move (tools_pixel_to_point_x(swind, sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [3]));
bbc_draw (tools_pixel_to_point_x(swind, sprite->toolspace [4]),
tools_pixel_to_point_y(swind, sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind, sprite->toolspace [6]),
tools_pixel_to_point_y(swind, sprite->toolspace [7]));
bbc_drawby (tools_pixel_to_point_x(swind, sprite->toolspace [2] - sprite->toolspace [4]),
tools_pixel_to_point_y(swind, sprite->toolspace [3] - sprite->toolspace [5]));
bbc_draw (tools_pixel_to_point_x(swind, sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [3]));
}
sprite->toolspace [0] = 0;
......@@ -974,7 +974,7 @@ static void parallelogramoutlinepaint_click (main_window *window,
* EORed rectangle plotter *
********************************/
static void rectangle_drawEOR(main_sprite_window* swind,int* points,int x0, int y0)
static void rectangle_drawEOR(main_sprite_window *swind, int *points, int x0, int y0)
{
os_swi2 (OS_SetColour, 3, -1);
#if 0
......@@ -987,16 +987,16 @@ static void rectangle_drawEOR(main_sprite_window* swind,int* points,int x0, int
if (points[0] == points[2] || points[1] == points[3])
{
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind,points [0]),
y0 + tools_pixel_to_extent_centre_y(swind,points [1]));
bbc_drawby (tools_pixel_to_extent_x(swind,points [2] - points [0]),
tools_pixel_to_extent_y(swind,points [3] - points [1]));
bbc_move (x0 + tools_pixel_to_extent_centre_x(swind, points [0]),
y0 + tools_pixel_to_extent_centre_y(swind, points [1]));
bbc_drawby (tools_pixel_to_extent_x(swind, points [2] - points [0]),
tools_pixel_to_extent_y(swind, points [3] - points [1]));
}
else
bbc_rectangle (x0 + tools_pixel_to_extent_centre_x(swind,points [0]),
y0 + tools_pixel_to_extent_centre_y(swind,points [1]),
tools_pixel_to_extent_x(swind,points [2] - points [0]),
tools_pixel_to_extent_y(swind,points [3] - points [1]));
bbc_rectangle (x0 + tools_pixel_to_extent_centre_x(swind, points [0]),
y0 + tools_pixel_to_extent_centre_y(swind, points [1]),
tools_pixel_to_extent_x(swind, points [2] - points [0]),
tools_pixel_to_extent_y(swind, points [3] - points [1]));
}
......@@ -1012,7 +1012,7 @@ static void rectangleEOR (main_sprite *sprite, int coord)
sprite_update_window(swind,&x0,&y0,&rds,&more);
while (more)
{
rectangle_drawEOR(swind,&sprite->toolspace [coord],x0,y0);
rectangle_drawEOR(swind,&sprite->toolspace [coord], x0, y0);
wimpt_noerr (wimp_get_rectangle (&rds, &more));
}
}
......@@ -1063,7 +1063,7 @@ static void rectangleoutlinepaint_redraw (main_window *window,
ftracef0 ("rectangleoutlinepaint_redraw\n");
if (sprite->needsnull)
rectangle_drawEOR(&window->data->sprite,&sprite->toolspace [2],x0,y0);
rectangle_drawEOR(&window->data->sprite,&sprite->toolspace [2], x0, y0);
}
/**************
......@@ -1122,7 +1122,7 @@ static void rectangleoutlinepaint_click (main_window *window,
case 1:
{ int ncolours = colours_count (sprite);
main_sprite_window* swind=&window->data->sprite;
main_sprite_window *swind=&window->data->sprite;
int gcol = sprite->gcol;
sprwindow_release_idle_events (sprite);
......@@ -1132,19 +1132,19 @@ static void rectangleoutlinepaint_click (main_window *window,
{ sprwindow_swap_output_to_sprite (sprite);
colours_set_sprite_gcol (gcol, sprite, 0);
bbc_rectangle (tools_pixel_to_point_x(swind,sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [3]),
tools_pixel_to_point_x(swind,sprite->toolspace [4] - sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [5] - sprite->toolspace [3]));
bbc_rectangle (tools_pixel_to_point_x(swind, sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [3]),
tools_pixel_to_point_x(swind, sprite->toolspace [4] - sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [5] - sprite->toolspace [3]));
}
if (sprwindow_swap_output_to_mask (sprite, gcol != ncolours))
{ colours_set_gcol (gcol != ncolours? 255: 0, 0, 0);
bbc_rectangle (tools_pixel_to_point_x(swind,sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [3]),
tools_pixel_to_point_x(swind,sprite->toolspace [4] - sprite->toolspace [2]),
tools_pixel_to_point_y(swind,sprite->toolspace [5] - sprite->toolspace [3]));
bbc_rectangle (tools_pixel_to_point_x(swind, sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [3]),
tools_pixel_to_point_x(swind, sprite->toolspace [4] - sprite->toolspace [2]),
tools_pixel_to_point_y(swind, sprite->toolspace [5] - sprite->toolspace [3]));
}
sprite->toolspace [0] = 0;
......@@ -1225,8 +1225,8 @@ static void floodfillpaint_click (main_window *window,
{ /* IF flood global */
int x, y, r1, r2;
int sx = tools_pixel_to_point_x(&window->data->sprite,1);
int sy = tools_pixel_to_point_y(&window->data->sprite,1);
int sx = tools_pixel_to_point_x(&window->data->sprite, 1);
int sy = tools_pixel_to_point_y(&window->data->sprite, 1);
sprite_info sin;
sprite_maskstate sms =
from_transparent? sprite_masksolid: sprite_masktransparent;
......@@ -1292,8 +1292,8 @@ static void floodfillpaint_click (main_window *window,
int x, y;
tools_mouse_to_pixel (window, mpos, &x, &y);
x=tools_pixel_to_point_x(&window->data->sprite,x);
y=tools_pixel_to_point_y(&window->data->sprite,y);
x=tools_pixel_to_point_x(&window->data->sprite, x);
y=tools_pixel_to_point_y(&window->data->sprite, y);
ftracef2 ("Point Coords: x %d, y %d\n", x, y);
if (!to_transparent)
......@@ -1335,7 +1335,7 @@ static void floodfillpaint_click (main_window *window,
}
ftracef0 ("flooding to non-bg ...\n");
bbc_plot (bbc_FloodToBack | bbc_DrawAbsFore, x,y);
bbc_plot (bbc_FloodToBack | bbc_DrawAbsFore, x, y);
ftracef0 ("flooding to non-bg ... done\n");
}
}
......@@ -1366,7 +1366,7 @@ static void floodfillpaint_click (main_window *window,
sprwindow_swap_output_to_mask (sprite, 0);
os_swi2 (OS_SetColour, 4, 0);
bbc_plot (bbc_FloodToFore | bbc_DrawAbsFore, x,y);
bbc_plot (bbc_FloodToFore | bbc_DrawAbsFore, x, y);
os_swi2 (OS_SetColour, 4 | 1 << 4, 0);
bbc_clg (); /*invert back again*/
......@@ -1376,11 +1376,11 @@ static void floodfillpaint_click (main_window *window,
{ /* local to_transparent */
/* Always trying to change to transparent so there are two cases:
changing from transparent - no action required,flooding nothing with nothing leaves nothing
changing from transparent - no action required, flooding nothing with nothing leaves nothing
changing to transparent - remember what the sprite currently looks like
and local flood fill the foreground using the OS flood fill routine (no point
reinventing the wheel).
Diff the resulting sprites,and for each changed pixel poke the mask with a
Diff the resulting sprites, and for each changed pixel poke the mask with a
see through blob */
char tempname [NAME_LIMIT + 1], realname [NAME_LIMIT + 1], *msg = NULL;
......@@ -1421,9 +1421,9 @@ static void floodfillpaint_click (main_window *window,
visdelay_begin ();
hourglass = TRUE;
/* Not really bothered what colour is locally filled with,so long as it's different
/* Not really bothered what colour is locally filled with, so long as it's different
to the one under the mouse */
ftracef2("was colour %d %d\n",col.colour,col.tint);
ftracef2("was colour %d %d\n", col.colour, col.tint);
if (nc != 256 || psprite_hastruecolpal (sprite))
now.colour = col.colour;
else
......@@ -1434,7 +1434,7 @@ static void floodfillpaint_click (main_window *window,
now.colour--;
if (now.colour < 0) now.colour = now.colour +2;
colours_set_sprite_gcol (now.colour, sprite, 0);
ftracef2("now colour %d %d\n",now.colour,now.tint);
ftracef2("now colour %d %d\n", now.colour, now.tint);
/* Set the bg colour for the OS to flood up to */
if (nc != 256 || psprite_hastruecolpal (sprite))
......@@ -1533,10 +1533,10 @@ static void scissorpaint_null (main_window *window, wimp_mousestr *mpos)
smode = psprite_address (sprite)->mode;
dx = bbc_modevar (smode, bbc_XEigFactor);
x0 = tools_pixel_to_point_x(&window->data->sprite,sprite->toolspace [1]) &
x0 = tools_pixel_to_point_x(&window->data->sprite, sprite->toolspace [1]) &
~(((32 >> bbc_modevar (smode, bbc_Log2BPC)) << dx) - 1);
/* round down to word boundary */
width = ((tools_pixel_to_point_x(&window->data->sprite,sprite->toolspace [3]) - x0) >> dx) + 2;
width = ((tools_pixel_to_point_x(&window->data->sprite, sprite->toolspace [3]) - x0) >> dx) + 2;
if ((height = sprite->toolspace [4]-sprite->toolspace [2]) < 0)
height = -height;
height += 2;
......@@ -1559,10 +1559,10 @@ static void scissorpaint_null (main_window *window, wimp_mousestr *mpos)
sprwindow_swap_output_to_sprite (sprite);
error = sprite_get_given (file.spritearea, "Export",
psprite_haspal (sprite),
tools_pixel_to_point_x(&window->data->sprite,sprite->toolspace [1]),
tools_pixel_to_point_y(&window->data->sprite,sprite->toolspace [2]),
tools_pixel_to_point_x(&window->data->sprite,sprite->toolspace [3]),
tools_pixel_to_point_y(&window->data->sprite,sprite->toolspace [4]));
tools_pixel_to_point_x(&window->data->sprite, sprite->toolspace [1]),
tools_pixel_to_point_y(&window->data->sprite, sprite->toolspace [2]),
tools_pixel_to_point_x(&window->data->sprite, sprite->toolspace [3]),
tools_pixel_to_point_y(&window->data->sprite, sprite->toolspace [4]));
sprwindow_swap_output_to_screen ();
wimpt_noerr (error);
sid.tag = sprite_id_name;
......@@ -1591,8 +1591,8 @@ static void scissorpaint_null (main_window *window, wimp_mousestr *mpos)
bbc_gcol (0, 255);
bbc_gcol (3, 3); /* set solid gcol */
error = sprite_put_mask_given (sprite->file->spritearea,
&ssid, -tools_pixel_to_point_x(&window->data->sprite,sprite->toolspace [1]),
-tools_pixel_to_point_y(&window->data->sprite,sprite->toolspace [2]));
&ssid, -tools_pixel_to_point_x(&window->data->sprite, sprite->toolspace [1]),
-tools_pixel_to_point_y(&window->data->sprite, sprite->toolspace [2]));
sprwindow_swap_output_to_screen ();
wimpt_noerr (error);
}
......@@ -1682,10 +1682,10 @@ static void scissorpaint_redraw (main_window *window, int x0, int y0)
if (sprite->needsnull)
{
if (sprite->toolspace [0] != 3)
rectangle_drawEOR(&window->data->sprite,&sprite->toolspace [1],x0,y0);
rectangle_drawEOR(&window->data->sprite,&sprite->toolspace [1], x0, y0);
if (sprite->toolspace [0] >= 2)
rectangle_drawEOR(&window->data->sprite,&sprite->toolspace [5],x0,y0);
rectangle_drawEOR(&window->data->sprite,&sprite->toolspace [5], x0, y0);
}
}
......@@ -1735,7 +1735,7 @@ static void copymovepaint_click (main_window *window, wimp_mousestr *mpos,
case 3:
{ int code = move? bbc_BMoveRectAbs: bbc_BCopyRectAbs;
int x, y;
main_sprite_window* swind=&window->data->sprite;
main_sprite_window *swind=&window->data->sprite;
if (move) sprwindow_release_idle_events (sprite);
rectangleEOR (sprite, 5);
......@@ -1745,21 +1745,21 @@ static void copymovepaint_click (main_window *window, wimp_mousestr *mpos,
y = sprite->toolspace [6];
if (y>sprite->toolspace [8]) y = sprite->toolspace [8];
bbc_move (tools_pixel_to_point_x(swind,sprite->toolspace [1]),
tools_pixel_to_point_y(swind,sprite->toolspace [2]));
bbc_move (tools_pixel_to_point_x(swind,sprite->toolspace [3]),
tools_pixel_to_point_y(swind,sprite->toolspace [4]));
bbc_plot (bbc_Block + code, tools_pixel_to_point_x(swind,x),
tools_pixel_to_point_y(swind,y));
bbc_move (tools_pixel_to_point_x(swind, sprite->toolspace [1]),
tools_pixel_to_point_y(swind, sprite->toolspace [2]));
bbc_move (tools_pixel_to_point_x(swind, sprite->toolspace [3]),
tools_pixel_to_point_y(swind, sprite->toolspace [4]));
bbc_plot (bbc_Block + code, tools_pixel_to_point_x(swind, x),
tools_pixel_to_point_y(swind, y));
if (sprwindow_swap_output_to_mask (sprite, 1))
{
bbc_move (tools_pixel_to_point_x(swind,sprite->toolspace [1]),
tools_pixel_to_point_y(swind,sprite->toolspace [2]));
bbc_move (tools_pixel_to_point_x(swind,sprite->toolspace [3]),
tools_pixel_to_point_y(swind,sprite->toolspace [4]));
bbc_plot (bbc_Block + code, tools_pixel_to_point_x(swind,x),
tools_pixel_to_point_y(swind,y));
bbc_move (tools_pixel_to_point_x(swind, sprite->toolspace [1]),
tools_pixel_to_point_y(swind, sprite->toolspace [2]));
bbc_move (tools_pixel_to_point_x(swind, sprite->toolspace [3]),
tools_pixel_to_point_y(swind, sprite->toolspace [4]));
bbc_plot (bbc_Block + code, tools_pixel_to_point_x(swind, x),
tools_pixel_to_point_y(swind, y));
}
Set_Marked_Extent (sprite);
......@@ -1873,10 +1873,10 @@ static int saved_tys;
extern void tools_get_default_text_size ( void )
{
#if (1)
int text_x;
int text_y;
int text_xs;
#if 1
int text_x;
int text_y;
int text_xs;
ftracef0 ("get_default_text_size\n");
text_x = bbc_vduvar (162);
......@@ -1921,17 +1921,17 @@ static void restore_text_size (void)
bbc_vduq (23, 17, 7, 4, saved_txs, saved_txs>>8, saved_tys, saved_tys>>8, 0, 0);
}
static void text_drawEOR(main_sprite_window* swind,int* toolspace,int x0,int y0)
static void text_drawEOR(main_sprite_window *swind, int *toolspace, int x0, int y0)
{
int tx, ty, txs;
tx = tools_pixel_to_extent_x(swind,textxsize)/swind->sprite->mode.scale_xdiv;
txs = tools_pixel_to_extent_x(swind,textxspace)/swind->sprite->mode.scale_xdiv;
ty = tools_pixel_to_extent_y(swind,textysize)/swind->sprite->mode.scale_ydiv;
tx = tools_pixel_to_extent_x(swind, textxsize)/swind->sprite->mode.scale_xdiv;
txs = tools_pixel_to_extent_x(swind, textxspace)/swind->sprite->mode.scale_xdiv;
ty = tools_pixel_to_extent_y(swind, textysize)/swind->sprite->mode.scale_ydiv;
set_text_size (tx, ty, txs);
x0 += tools_pixel_to_extent_x(swind,toolspace[3]-((strlen(curr_text_buffer)-1)*textxspace+textxsize)/2);
y0 += tools_pixel_to_extent_y(swind,toolspace[4]+textysize/2+1)-1;
x0 += tools_pixel_to_extent_x(swind, toolspace[3]-((strlen(curr_text_buffer)-1)*textxspace+textxsize)/2);
y0 += tools_pixel_to_extent_y(swind, toolspace[4]+textysize/2+1)-1;
os_swi2 (OS_SetColour, 3, -1);
#if 0
......@@ -1958,7 +1958,7 @@ static void textEOR (main_sprite *sprite)
sprite_update_window(swind,&x0,&y0,&rds,&more);
while (more)
{
text_drawEOR(swind,sprite->toolspace,x0,y0);
text_drawEOR(swind, sprite->toolspace, x0, y0);
wimpt_noerr (wimp_get_rectangle (&rds, &more));
}
......@@ -2002,7 +2002,7 @@ static void set_text_parameters (void)
{ main_sprite *sprite;
for (sprite = window->data->file.sprites;
sprite != NULL;
sprite=sprite->link)
sprite = sprite->link)
if (sprite->toolspace [0] == 1) textEOR (sprite);
}
......@@ -2017,7 +2017,7 @@ static void set_text_parameters (void)
if (window->tag == main_window_is_file)
{ main_sprite *sprite;
for (sprite = window->data->file.sprites;
sprite != NULL; sprite=sprite->link)
sprite != NULL; sprite = sprite->link)
if (sprite->toolspace [0] == 1) textEOR (sprite);
}
}
......@@ -2040,8 +2040,8 @@ static void textpaint_splot (main_window *window, wimp_mousestr *mpos)
sprite->toolspace [3]=x0;
sprite->toolspace [4]=y1;
x0 = tools_pixel_to_point_x(spritew,x0 - ((strlen (curr_text_buffer)-1)*textxspace + textxsize)/2);
y1 = tools_pixel_to_point_y(spritew,y1 + textysize/2+1)-1;
x0 = tools_pixel_to_point_x(spritew, x0 - ((strlen (curr_text_buffer)-1)*textxspace + textxsize)/2);
y1 = tools_pixel_to_point_y(spritew, y1 + textysize/2+1)-1;
if (gcol != ncolours) /* if not "transparent" */
{ restore = 1;
......@@ -2129,13 +2129,13 @@ static void stoptext (main_sprite *sprite)
static void textredraw (main_window *window, int x0, int y0)
{ main_sprite_window *swind = &window->data->sprite;
main_sprite* sprite=window->data->sprite.sprite;
main_sprite *sprite=window->data->sprite.sprite;
ftracef0 ("textredraw\n");
/* set_text_parameters (); don't do this as it may lead to calls which
invalidate the surrounding get_rectangle calls! */
if (sprite->toolspace [0] == 1)
text_drawEOR(swind,sprite->toolspace,x0,y0);
text_drawEOR(swind, sprite->toolspace, x0, y0);
}
static void textpaint_click (main_window *window, wimp_mousestr *mpos)
......@@ -2194,8 +2194,8 @@ static void spraycanpaint_splot (main_window *window, wimp_mousestr *mpos)
{
int pxs, pys;
tools_mouse_to_pixel (window, mpos, &x, &y);
pxs=tools_pixel_to_point_x(&window->data->sprite,1);
pys=tools_pixel_to_point_y(&window->data->sprite,1);
pxs=tools_pixel_to_point_x(&window->data->sprite, 1);
pys=tools_pixel_to_point_y(&window->data->sprite, 1);
if (ncolours != 256 || psprite_hastruecolpal (sprite))
colour.colour = gcol;
......@@ -2240,23 +2240,19 @@ static void spraycanpaint_splot (main_window *window, wimp_mousestr *mpos)
MUNGE_PIXEL (nx, ny, &newcolour, sarea, &sid, sprite)
ftracef2 ("sprite_writepixel (GCOL 0x%X, TINT 0x%X)\n",
newcolour.colour, newcolour.tint);
(void) xosspriteop_write_pixel_colour (512, sarea, sid.s.addr, nx,
ny, newcolour.colour, newcolour.tint); /*was 'sprite_writepixel
(sarea, &sid, nx, ny, &newcolour);' JRC 5th Dec 1994*/
sprite_writepixel (sarea, &sid, nx, ny, &newcolour);
}
if (domask)
(void) xosspriteop_write_pixel_mask (512, sarea, sid.s.addr, nx, ny,
mask); /*was 'sprite_writemask (sarea, &sid, nx, ny, &mask);' JRC
5th Dec 1994*/
sprite_writemask (sarea, &sid, nx, ny, &mask);
}
visdelay_end ();
redraw_area.x0=tools_pixel_to_point_x(&window->data->sprite,x) - sprayradius;
redraw_area.y0=tools_pixel_to_point_y(&window->data->sprite,y) - sprayradius;
redraw_area.x1=tools_pixel_to_point_x(&window->data->sprite,x+1) + sprayradius + 1;
redraw_area.y1=tools_pixel_to_point_y(&window->data->sprite,y+1) + sprayradius + 1;
redraw_area.x0=tools_pixel_to_point_x(&window->data->sprite, x) - sprayradius;
redraw_area.y0=tools_pixel_to_point_y(&window->data->sprite, y) - sprayradius;
redraw_area.x1=tools_pixel_to_point_x(&window->data->sprite, x+1) + sprayradius + 1;
redraw_area.y1=tools_pixel_to_point_y(&window->data->sprite, y+1) + sprayradius + 1;
sprwindow_redisplay (sprite, &redraw_area);
}
......@@ -2289,7 +2285,8 @@ static void spraycanpaint_click (main_window *window, wimp_mousestr *mpos)
sprite, sprite->toolspace [0]);
spraycanpaint_splot (window, mpos);
} }
}
}
/***********************************************************
* Null events: if pointer is over a window on the sprite, *
......@@ -2324,8 +2321,8 @@ static void brushpaint_splot (main_window *window, wimp_mousestr *mpos)
int smyd = tools_brushsprite_ptr->mode.scale_ydiv;
sprite_info sbi;
sprite_id sid;
int mul,div;
main_sprite_window* swind=&window->data->sprite;
int mul, div;
main_sprite_window *swind=&window->data->sprite;
sid.s.addr = psprite_address (tools_brushsprite_ptr);
sid.tag = sprite_id_addr;
......@@ -2341,12 +2338,12 @@ static void brushpaint_splot (main_window *window, wimp_mousestr *mpos)
sprite->toolspace [3] = x;
sprite->toolspace [4] = y;
x = tools_pixel_to_point_x(swind,sprite->toolspace [3]);
x = tools_pixel_to_point_x(swind, sprite->toolspace [3]);
mul=tools_brushsprite_ptr->mode.scale_xmul*tools_brushscale.scale_xmul;
div=swind->sprite->mode.scale_xmul*tools_brushscale.scale_xdiv;
x-=tools_pixel_to_point_x(swind,(sbi.width*mul/div)/2);
y = tools_pixel_to_point_y(swind,sprite->toolspace [4]);
y = tools_pixel_to_point_y(swind, sprite->toolspace [4]);
mul=tools_brushsprite_ptr->mode.scale_ymul*tools_brushscale.scale_ymul;
div=swind->sprite->mode.scale_ymul*tools_brushscale.scale_ydiv;
y -= tools_pixel_to_point_y(swind,(sbi.height*mul/div)/2);
......@@ -2390,13 +2387,13 @@ static void brushpaint_splot (main_window *window, wimp_mousestr *mpos)
}
}
static void brush_drawEOR(main_sprite_window* swind,int* toolspace,int x0, int y0)
static void brush_drawEOR(main_sprite_window *swind, int *toolspace, int x0, int y0)
{
int x, y;
main_scaling_block scale;
sprite_info sbi;
sprite_id sid;
int mul,div;
int mul, div;
sid.s.addr = psprite_address (tools_brushsprite_ptr);
sid.tag = sprite_id_addr;
......@@ -2415,12 +2412,12 @@ static void brush_drawEOR(main_sprite_window* swind,int* toolspace,int x0, int y
/* find bottom left of brush. Pixel over pointer is aligned
to pixel grid. */
x = tools_pixel_to_extent_x(swind,toolspace [3]);
x = tools_pixel_to_extent_x(swind, toolspace [3]);
mul=tools_brushsprite_ptr->mode.scale_xmul*tools_brushscale.scale_xmul;
div=swind->sprite->mode.scale_xmul*tools_brushscale.scale_xdiv;
x-=tools_pixel_to_extent_x(swind,(sbi.width*mul/div)/2);
y = tools_pixel_to_extent_y(swind,toolspace [4]);
y = tools_pixel_to_extent_y(swind, toolspace [4]);
mul=tools_brushsprite_ptr->mode.scale_ymul*tools_brushscale.scale_ymul;
div=swind->sprite->mode.scale_ymul*tools_brushscale.scale_ydiv;
y -= tools_pixel_to_extent_y(swind,(sbi.height*mul/div)/2);
......@@ -2442,7 +2439,7 @@ static void brushEOR (main_sprite *sprite)
sprite_update_window(swind,&x0,&y0,&rds,&more);
while (more)
{
brush_drawEOR(swind,sprite->toolspace,x0,y0);
brush_drawEOR(swind, sprite->toolspace, x0, y0);
wimpt_noerr (wimp_get_rectangle (&rds, &more));
}
}
......@@ -2528,7 +2525,7 @@ void tools_remove_brush (void)
{ main_sprite *sprite;
for (sprite = window->data->file.sprites;
sprite != NULL;
sprite=sprite->link)
sprite = sprite->link)
if (sprite->toolspace [0] == 1) brushEOR (sprite);
}
}
......@@ -2548,7 +2545,7 @@ static void brushredraw (main_window *window, int x0, int y0)
if (sprite->toolspace [0] == 1)
{
brush_drawEOR(swind,sprite->toolspace,x0,y0);
brush_drawEOR(swind, sprite->toolspace, x0, y0);
}
}
}
......
| Copyright 1996 Acorn Computers Ltd
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
|
Set Alias$@RunType_FF9 /<Obey$Dir>
Set Alias$@PrintType_FF9 /<Obey$Dir> -print
The Paint application allows you to create and edit
sprite files. A sprite file contains one or more
graphic images, each stored as a bitmap.
| Copyright 1996 Acorn Computers Ltd
|
| Licensed under the Apache License, Version 2.0 (the "License");
| you may not use this file except in compliance with the License.
| You may obtain a copy of the License at
|
| http://www.apache.org/licenses/LICENSE-2.0
|
| Unless required by applicable law or agreed to in writing, software
| distributed under the License is distributed on an "AS IS" BASIS,
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
| See the License for the specific language governing permissions and
| limitations under the License.
|
RMEnsure UtilityModule 3.50 Error This version of Paint requires RISC OS 3.50
RMEnsure SpriteExtend 0.80 Error This version of Paint requires Sprite Extend 0.80
If "<Wimp$ScrapDir>"="" then Error Paint requires a scrap directory: open a directory that contains the Scrap application
Set Paint$Dir <Obey$Dir>
Set Paint$Path <Obey$Dir>.,Resources:$.Resources.Paint.
/<Paint$Dir>.!Boot
WIMPSlot -min 384K
WIMPSlot -max 352K
/<Paint$Dir>.!RunImage %*0
No preview for this file type
File deleted
File deleted
......@@ -18,8 +18,8 @@
#include "main.h"
#include "wimp.h"
void AltRename_start(main_window*, main_sprite*);
void AltRename_delete(void);
BOOL AltRename_claim_event(wimp_eventstr *e,main_window* window);
void altrename_start(main_window *, main_sprite *);
void altrename_delete(void);
BOOL altrename_claim_event(wimp_eventstr *, main_window *);
#endif
......@@ -26,18 +26,12 @@
#include "menu.h"
#include "print.h"
typedef struct sprite_tosort
{
char tosort[(NAME_LIMIT + 4) & 0xFFFFFFFC];
main_sprite *tojumble;
} sprite_tosort;
/*FIX G-RO-7139 JRC 17 Oct '91 New function to do real printing.*/
extern BOOL menus_do_print (main_sprite *);
extern void menus_file_handler (void *, char *hit);
extern void menus_file_handler (void *, char *);
extern void menus_sprite_handler (void *, char *hit);
extern void menus_sprite_handler (void *, char *);
extern menu menus_file_maker (void *);
......@@ -65,7 +59,7 @@ extern int menus_files_modified (void);
extern int menus_quit_okayed (int);
extern void menus_print_sprite (main_sprite *sprite, int ask);
extern void menus_print_sprite (main_sprite *, int);
extern print_positionstr menus_print_where, menus_print_last_where;
......
......@@ -41,7 +41,7 @@ extern int psprite_next (sprite_area **, int);
extern main_sprite *psprite_new (int offset, int, main_file *);
extern void psprite_delete (main_window*,main_sprite *);
extern void psprite_delete (main_window*, main_sprite *);
extern os_error *psprite_set_plot_info (main_file *);
......@@ -51,14 +51,14 @@ extern os_error *psprite_set_colour (main_sprite *);
extern os_error *psprite_set_default_translations (void);
extern os_error *psprite_plot_scaled (int x, int y, main_sprite *,
extern os_error *psprite_plot_scaled (int, int, main_sprite *,
main_scaling_block *, int);
extern os_error *psprite_plot_scaled_m (int x, int y, main_sprite *,
extern os_error *psprite_plot_scaled_m (int, int, main_sprite *,
main_scaling_block *, int, int maskreally);
extern os_error *psprite_plot_scaled_centred (int x, int y,
main_sprite *, main_scaling_block *, int, int maskreally);
extern os_error *psprite_plot_scaled_centred (int, int,
main_sprite *, main_scaling_block *, int, int);
extern int psprite_read_size (main_sprite *, sprite_info *);
......@@ -72,8 +72,7 @@ extern int psprite_palsize (main_sprite *);
extern BOOL psprite_hasmask (main_sprite *);
extern int psprite_size (int width, int height, int mode, BOOL mask,
int palette);
extern int psprite_size (int, int, int, BOOL, int);
extern void psprite_read_full_info (main_sprite *, psprite_info *);
......@@ -99,17 +98,17 @@ extern void psprite_set_ecf (main_sprite *, int, int);
extern os_error *psprite_plot_ecf_sprite (main_sprite *, int, int, int);
extern BOOL psprite_merge_area (main_window*, main_file *, sprite_area **);
extern BOOL psprite_merge_area (main_window *, main_file *, sprite_area **);
extern void psprite_rotate (main_sprite *, int);
extern os_error *psprite_build_palette (main_sprite *, int **);
extern main_ttab *psprite_ttab_for_sprite (main_sprite *sprite,
int dmode, int *dpal);
extern main_ttab *psprite_ttab_for_sprite (main_sprite *,
int, int *);
extern main_ttab *psprite_ttab_new (main_sprite *sprite,
int dmode, int *dpal);
extern main_ttab *psprite_ttab_new (main_sprite *,
int, int *);
extern void psprite_drop_translation (main_ttab **);
......
/* Copyright 1996 Acorn Computers Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* > h.Paint */
/*
* Main header for the Paint program
*
* DAHE, 04 Sep 89: heap allocation added
* 07 Sep 89: symbolic SWI numbers
* JAB, 23 Jan 91: Added structure 'snapshotstr' for snapshot
* implementation
* CDP, 27 Jan 92: Added include for fixes.h.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "ftrace.h"
#include "fixes.h"
#include "os.h"
#include "wimp.h"
#include "wimpt.h"
#include "bbc.h"
#include "res.h"
#include "sprite.h"
#include "resspr.h"
#include "win.h"
#include "menu.h"
#include "event.h"
#include "dbox.h"
#include "werr.h"
#include "flex.h"
#include "baricon.h"
#include "msgs.h"
#include "colourpick.h"
#if TRACE
#define spencer(s) s;
#define spencer2(s) s
#define WHETHER(c) ((c)? "true": "false")
#else
#define spencer(s) ;
#define spencer2(s)
#endif
#define ModuleVersion 1 /*don't bother with separate code for disc version*/
#define USEHEAP 0 /* 1 => Use heap (rather than C memory allocation) */
#define entries(l) ((l) < 3? 1 << (1 << (l)): 16)
#if USEHEAP
#include "heap.h"
/* Dynamic memory allocation */
#define Alloc(s) heap_alloc(s)
#define Free(p) heap_free(p)
#define Realloc(p, s) heap_realloc(p, s)
#else
#define Alloc(s) malloc(s)
#define Free(p) free(p)
#define Realloc(p, s) realloc(p, s)
#endif
#define toolspacesize 9
/* amount of scratchspace a tool is given */
#define NAME_LIMIT 12 /*not defined in sprite.h!*/
#define SPRITE_FILE 0xFF9
typedef int sprite_offset;
typedef struct
{
int scale_xmul;
int scale_ymul;
int scale_xdiv;
int scale_ydiv;
} scaling_block; /* ready for use by sprite scaling ops */
typedef struct
{
char set[20];
sprite_area *sarea;
} ECF_block;
typedef struct ttab_block
{
struct ttab_block *link;
int refcount;
int ttab_size;
char *table; /* flex'ed real translation table */
/*int spalsize, dpalsize; J R C 23rd Nov 1993*/
int ttab2_size;
char *table2; /* flex'ed real GCOL translation table */
} ttab_block;
typedef struct sprite_window_info_block
{
struct sprite_window_info_block *link;
struct active_window *window;
struct sprite_info_block *sprite;
char *title;
scaling_block blobsize;
char gridcol;
BOOL read_only;
} sprite_window_info_block;
typedef struct sprite_info_block
{
struct sprite_info_block *link;
struct spritefile_info_block *file; /* parent file info */
sprite_window_info_block *windows; /* windows onto sprite */
sprite_offset offset; /* of sprite in file */
int spriteno; /* index of sprite in file */
ttab_block *transtab; /* colour translation table */
scaling_block mode; /* mode conversion */
scaling_block iconsize;
wimp_w colourhandle;
ECF_block ECFs[4];
int gcol; /* current painting colour */
int toolspace [toolspacesize];
/* tool scratch space */
colourpicker_d colourdialogue;
char *colourtitle; /* indirected colour title */
/* handle of colourpicker */
char needsnull; /* set if tracking pointer */
char coloursize;
} sprite_info_block;
typedef struct spritefile_info_block
{
sprite_info_block *sprites; /* linked list of sprites */
char *filename; /* flex array */
sprite_area *spritearea; /* flex array of bytes */
char *title; /* indirected title space */
char fullinfo; /* big icons or full info */
char modified;
char use_current_palette;
char lastwidth;
struct active_window *window;
} spritefile_info_block;
typedef union
{
spritefile_info_block file;
sprite_window_info_block sprite;
} paint_info_block;
typedef enum
{
paint_window_is_file,
paint_window_is_sprite
} paint_window_tag;
typedef struct active_window
{
struct active_window *link;
wimp_w handle;
paint_window_tag tag;
paint_info_block *data;
} active_window;
typedef
struct
{ struct {BOOL full_info, use_desktop_colours;} display;
struct {BOOL show_colours, small_colours;} colours;
struct {BOOL show_tools;} tools;
struct {int mul, div;} zoom;
struct {BOOL show; int colour;} grid;
struct {BOOL on;} extended;
}
paint_options;
typedef
struct
{ wimp_wind t;
char ind [128];
}
other_template; /*Fix overwriting store bugs. J R C 14th Oct 1993*/
extern paint_options paint_current_options;
/*Set at start up from initial_options and <Paint$Options>. Maintained
by the routines that change state.*/
extern active_window *paint_windows;
extern wimp_box bigextent;
extern void snapshot_show(void);
extern int my_create_wind(wimp_wind *, wimp_w *, win_event_handler,
void *);
extern void my_delete_wind(wimp_w);
extern void delete_paint_window(active_window *);
extern int __root_stack_size;
#if TRACE
extern void noroom (char *);
#else
extern void noroom (void);
#endif
extern void set_work_extent(active_window *);
extern void set_window_title(active_window *, char *);
extern int LoadFile(active_window *, char *, int, int);
extern sprite_info_block *pick_sprite(active_window *, wimp_mousestr *);
extern void forceredraw(wimp_w);
extern void help_message(char *tag, wimp_eventstr *);
extern void set_printer_data(void);
extern void set_modified(spritefile_info_block *);
extern void allocate_position(wimp_box *);
extern void check_position(active_window *);
/*************************************************************
* Manifests for the size sprites appear in the file window *
*************************************************************/
#define SpriteFiler_TextHeight 32
#define SpriteFiler_TextWidth 20
#define SpriteFiler_XSize (12*(SpriteFiler_TextWidth - 4))
#define SpriteFiler_YSize SpriteFiler_XSize
#define SpriteFiler_Border (SpriteFiler_TextWidth - 4)
#define SpriteFiler_TotalHeight \
(SpriteFiler_YSize + SpriteFiler_TextHeight + SpriteFiler_Border)
#define SpriteFiler_TotalWidth (SpriteFiler_XSize + SpriteFiler_Border)
#define SpriteFiler_FullInfoWidth \
(SpriteFiler_XSize/2 + 55*SpriteFiler_TextWidth)
#define SpriteFiler_FullInfoHeight (3*SpriteFiler_TextHeight)
/* Macro to do source clipping:
provide graphics window wimp_box *, bounding box of object */
#define CLIPS(g, myx0, myy0, myx1, myy1) (!((myx0) > (g)->x1 || \
(myx1) < (g)->x0 || (myy0)>(g)->y1 || (myy1)<(g)->y0))
/* Claim idle events */
extern void paint_claim_idle(wimp_w window);
/* Report error via msgs */
extern void paint_error(int level, char *tag);
extern void paint_error1(char *tag, char *rest);
extern void iprintf (int flags, int x, int y, char *format, ...);
extern int modevar (int, int);
......@@ -17,13 +17,13 @@
#include "wimp.h"
/* ptr is a wimp_openstr* , wimp_wstate* or a wimp_redrawstr* */
#define SCREEN_TO_WORKAREA_X(ptr,cx) ((cx)-(((wimp_openstr*)(ptr))->box.x0-((wimp_openstr*)(ptr))->x))
#define SCREEN_TO_WORKAREA_Y(ptr,cy) ((cy)-(((wimp_openstr*)(ptr))->box.y1-((wimp_openstr*)(ptr))->y))
#define WORKAREA_TO_SCREEN_X(ptr,cx) ((cx)+(((wimp_openstr*)(ptr))->box.x0-((wimp_openstr*)(ptr))->x))
#define WORKAREA_TO_SCREEN_Y(ptr,cy) ((cy)+(((wimp_openstr*)(ptr))->box.y1-((wimp_openstr*)(ptr))->y))
/* ptr is a wimp_openstr, wimp_wstate or a wimp_redrawstr */
#define SCREEN_TO_WORKAREA_X(ptr,cx) ((cx)-(((wimp_openstr *)(ptr))->box.x0-((wimp_openstr *)(ptr))->x))
#define SCREEN_TO_WORKAREA_Y(ptr,cy) ((cy)-(((wimp_openstr *)(ptr))->box.y1-((wimp_openstr *)(ptr))->y))
#define WORKAREA_TO_SCREEN_X(ptr,cx) ((cx)+(((wimp_openstr *)(ptr))->box.x0-((wimp_openstr *)(ptr))->x))
#define WORKAREA_TO_SCREEN_Y(ptr,cy) ((cy)+(((wimp_openstr *)(ptr))->box.y1-((wimp_openstr *)(ptr))->y))
/* doesn't fetch sprites */
os_error* PaintLib_get_wind_info(wimp_winfo* winfo);
os_error *paintlib_get_wind_info (wimp_winfo *);
#endif
......@@ -24,7 +24,7 @@
extern main_template sprwindow_template;
extern void sprwindow_new (main_sprite *);
extern void sprwindow_delete (main_window *);
extern void sprwindow_set_work_extent(main_window *window, BOOL open);
extern void sprwindow_set_work_extent(main_window *, BOOL);
extern void sprwindow_swap_output_to_sprite (main_sprite *);
extern void sprwindow_remove_wastage (main_sprite *);
extern int sprwindow_swap_output_to_mask (main_sprite *, int);
......
/* Copyright 1996 Acorn Computers Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* fixes.h
*
* #defines for various bug fixes
*
* Change record
* =============
*
* CDP - Christopher Partington (Cambridge Systems Design)
* TMD - Tim Dobson
*
*
* 27-Feb-92 17:04 CDP
* File created.
* 11-Mar-92 21:06 TMD
* Added FIX1764
* 23-Mar-92 20:40 TMD
* Removed FIX8482 (code rewritten anyway)
*
**end of change record*
*/
#define FIX0553 1
/* FIX0553: fixes RP-0553 (create sprite, new sprite not shown in summary
* window in full-info mode). (psprite.c, menus.c).
*/
#define FIX0770 1
/* FIX0770: fixes RP-0770 (adjust size smaller causes crash).
* Substantial changes to ensure_size (flex de/allocator). (menus.c)
*/
#define FIX0780 1
/* FIX0780: fixes RP-0780 (incorrect selection of sprite in 2-column
* full-info display mode). (main.c)
*/
#define FIX7631 1
/* FIX7631: fixes G-RO-7631 (incorrect error message and empty window when
* loaded file does not exist). (main.c)
*/
#define FIX8490 1
/* FIX8490: fixes RO-8482 (crash when scale factor < 1).
* Calculates deletion row/column correctly. Also avoids calling
* SpriteExtend when count = 0 as for FIX8482 (psprite.c).
*/
#define FIX9544 1
/* FIX9544: fixes G-RO-9544 (large shear factor causes arithmetic exception).
* Enables checks for float becoming too big for an int (psprite.c).
* Enables checks on flex requests (menus.c).
*/
#define FIX1764 1
/* FIX1764: fixes RP-1764 (can copy sprite with same name)
*/
/*************************** end of numbered bugs *****************************/
#define FIXSIGNAL 1
/* FIXSIGNAL: ensures that signal causes the error text to be printed rather
* than just "(%s)". (main.c)
*/
#define FIXDELSPR 1
/* FIXDELSPR: fixes deletion of sprites causing crash, a bug that only showed
* up when the flex routine was sorted out (menus.c).
*/
/******************************************************************************/
/*end of fixes.h*/
......@@ -31,7 +31,7 @@ conditional compilation statements around all tracing code. */
/* --------------------------- ftracef ----------------------------------
* Description: Outputs tracing info.
*
* Parameters: char* -- printf-style format string
* Parameters: char *-- printf-style format string
* ... -- variable argument list
* Returns: void.
* Other Info: called by ftracef0,ftracef1 etc.
......@@ -69,7 +69,7 @@ conditional compilation statements around all tracing code. */
#define ftrace_paint(s) ((void) 0)
/* ftracef itself cannot be done as a macro. */
extern void ftracef (char *file, int line, char *, ...);
extern void ftracef (char *, int, char *, ...);
#define ftracef0(a) ((void) 0)
#define ftracef1(a,b) ((void) 0)
......
......@@ -41,11 +41,11 @@
extern void guard_check (void);
extern void *guard_alloc (char *file, int line, size_t);
extern void *guard_alloc (char *, int, size_t);
extern void *guard_realloc (char *file, int line, void *, size_t);
extern void *guard_realloc (char *, int, void *, size_t);
extern void guard_free (char *file, int line, void *, size_t);
extern void guard_free (char *, int, void *, size_t);
#define malloc(size) guard_alloc (__FILE__, __LINE__, size)
......