home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
graphics
/
a090_1
/
c
/
euclid
< prev
next >
Wrap
Text File
|
1992-04-18
|
5KB
|
140 lines
/**** euclid.c ****/
/* By Paul Field
* See !ReadMe file for distribution/modification restrictions
*/
#include "euclid.h"
#include "euclidswis.h"
#include "os.h"
#pragma no_check_stack
void euclid_getcolour(unsigned int c, unsigned int *m,
unsigned int *r, unsigned int *g, unsigned int *b)
{ *m = c>>24;
*r = c & 0xff;
*g = (c>>8) & 0xff;
*b = (c>>16) & 0xff;
}
void euclid_setname(char *name, const char *cstring)
{ while(*cstring)
{ *name++ = *cstring++;
}
*name = '\r';
}
void euclid_getname(char *cstring, const char *name)
{ while(*name != '\r')
{ *cstring++ = *name++;
}
*cstring = NULL;
}
/**** Main interface functions for euclid module ****/
os_error *euclid_initialise(euclid_initflags flags, euclid_header *structure,
size_t size, int *version)
{ return(os_swi3r(os_X|Euclid_Initialise, flags, (int)structure, size,
NULL, NULL, version));
}
os_error *euclid_draw(euclid_drawstyle style, euclid_header *structure,
int xoffset, int yoffset, const char *camera, void *vduvars,
BOOL *timedout, euclid_drawinfo **infoblock)
{ return(os_swi6r(os_X|Euclid_Draw, style, (int)structure, xoffset, yoffset,
(int)camera, (int)vduvars,
timedout, NULL, (int *)infoblock, NULL, NULL, NULL));
}
os_error *euclid_load(BOOL postprocess, euclid_header *structure, const char *filename)
{ return(os_swi3(os_X|Euclid_Load, postprocess, (int)structure, (int)filename));
}
os_error *euclid_save(euclid_header *structure, const char *filename)
{ return(os_swi3(os_X|Euclid_Save, NULL, (int)structure, (int)filename));
}
os_error *euclid_append(BOOL postprocess, euclid_header *structure,const char *filename)
{ return(os_swi3(os_X|Euclid_Append, postprocess, (int)structure, (int)filename));
}
os_error *euclid_find(euclid_header *structure, const char *name,
char **leaf, euclid_transformation **transformation,
euclid_matrixtransformation **matrix,
euclid_matrixtransformation **inverse,
void **entry,
euclid_group **group)
{ return(os_swi6r(os_X|Euclid_Find, NULL, (int)structure, (int)name, NULL, NULL, NULL,
(int *)leaf, (int *)transformation, (int *)matrix,
(int *)inverse, (int *) entry, (int *)group));
}
os_error *euclid_create(unsigned int children, euclid_header *structure, euclid_id id,
void *newobject)
{ return(os_swi3r(os_X|Euclid_Create, children, (int)structure, id,
(int *)newobject, NULL, NULL));
}
os_error *euclid_destroy(euclid_header *structure, void *object)
{ return(os_swi3(os_X|Euclid_Destroy, NULL, (int)structure, (int)object));
}
os_error *euclid_insert(unsigned int entry, euclid_header *structure, void *object,
void *newentry)
{ return(os_swi3r(os_X|Euclid_Insert, entry, (int)structure, (int)object,
(int *)newentry, NULL, NULL));
}
os_error *euclid_delete(unsigned int entry, euclid_header *structure, void *object)
{ return(os_swi3(os_X|Euclid_Delete, entry, (int)structure, (int)object));
}
os_error *euclid_getsystemmaterials(euclid_material **materials)
{ return(os_swi1r(os_X|Euclid_MiscOp, 2, (int *)materials));
}
os_error *euclid_imagesmooth(int reserved)
{ return(os_swi2(os_X|Euclid_MiscOp, 3, reserved));
}
os_error *euclid_blocksize(euclid_id id, unsigned *headersize, unsigned *variablesize)
{ return(os_swi2r(os_X|Euclid_MiscOp, 4, id, (int *)headersize, (int *)variablesize));
}
os_error *euclid_ditherpattern(unsigned colour, unsigned *bytes)
{ return(os_swi2r(os_X|Euclid_MiscOp, 5, colour, (int *)bytes, NULL));
}
os_error *euclid_invalidatepalettecache(void)
{ return(os_swi1(os_X|Euclid_MiscOp, 6));
}
os_error *euclid_setdrawparams(char depth, char simplicity, char maxrecursion,
euclid_drawflags flags, fix14 cutoff)
{ return(os_swi3(os_X|Euclid_MiscOp, 7,
((char)flags<<24)|(maxrecursion<<16)|(simplicity<<8)|depth, cutoff));
}
os_error *euclid_closedown(void)
{ return(os_swi0(os_X|Euclid_CloseDown));
}
os_error *euclid_compress(euclid_compression type, void **data, void **screenbase)
{ return(os_swi3r(os_X|Euclid_Compress, type, (int)*data, (int)*screenbase,
NULL, (int *)data, (int *)screenbase));
}
os_error *euclid_expand(euclid_compression type, void **data, void **screenbase)
{ return(os_swi3r(os_X|Euclid_Expand, type, (int)*data, (int)*screenbase,
NULL, (int *)data, (int *)screenbase));
}