/* * Copyright (c) 1993-1995 by Argonaut Technologies Limited. All rights reserved. * * $Id: fw_p.h 1.2 1998/11/12 13:19:14 johng Exp $ * $Locker: $ * * Public function prototypes for BRender framework Last change: MIP 29 Nov 96 5:50 pm */ #ifndef _FW_P_H_ #define _FW_P_H_ #ifdef __cplusplus extern "C" { #endif #ifndef _NO_PROTOTYPES /* * Global setup */ br_error BR_PUBLIC_ENTRY BrBegin(void); br_error BR_PUBLIC_ENTRY BrEnd(void); /* * Framework Setup */ br_error BR_PUBLIC_ENTRY BrFwBegin(void); br_error BR_PUBLIC_ENTRY BrFwEnd(void); /* * Resource class handling */ br_resource_class * BR_PUBLIC_ENTRY BrResClassAdd(br_resource_class *pixelmap); br_resource_class * BR_PUBLIC_ENTRY BrResClassRemove(br_resource_class *pixelmap); br_resource_class * BR_PUBLIC_ENTRY BrResClassFind(char *pattern); typedef br_resource_class * BR_CALLBACK br_resclass_find_cbfn(char *name); br_resclass_find_cbfn *BR_PUBLIC_ENTRY BrResClassFindHook(br_resclass_find_cbfn *hook); br_uint_32 BR_PUBLIC_ENTRY BrResClassAddMany(br_resource_class **items, int n); br_uint_32 BR_PUBLIC_ENTRY BrResClassRemoveMany(br_resource_class **items, int n); br_uint_32 BR_PUBLIC_ENTRY BrResClassFindMany(char *pattern, br_resource_class **items, int max); br_uint_32 BR_PUBLIC_ENTRY BrResClassCount(char *pattern); typedef br_uint_32 BR_CALLBACK br_resclass_enum_cbfn(br_resource_class *item, void *arg); br_uint_32 BR_PUBLIC_ENTRY BrResClassEnum(char *pattern, br_resclass_enum_cbfn *callback, void *arg); char * BR_RESIDENT_ENTRY BrResClassIdentifier(br_uint_8 res_class); /* * Block pool allocator */ br_pool * BR_PUBLIC_ENTRY BrPoolAllocate(int block_size, int chunk_size, br_uint_8 mem_type); void BR_PUBLIC_ENTRY BrPoolFree(br_pool *pool); void * BR_PUBLIC_ENTRY BrPoolBlockAllocate(struct br_pool *pool); void BR_PUBLIC_ENTRY BrPoolBlockFree(struct br_pool *pool,void *block); void BR_PUBLIC_ENTRY BrPoolEmpty(struct br_pool *pool); /* * Byte swapping */ br_uint_32 BR_RESIDENT_ENTRY BrSwap32(br_uint_32 l); br_uint_16 BR_RESIDENT_ENTRY BrSwap16(br_uint_16 s); br_float BR_RESIDENT_ENTRY BrSwapFloat(br_float f); void *BR_RESIDENT_ENTRY BrSwapBlock(void *block, int count, int size); /* * Misc. support */ typedef int BR_CALLBACK br_qsort_cbfn(const void *, const void *); void BR_RESIDENT_ENTRY BrQsort(void *basep, unsigned int nelems, unsigned int size, br_qsort_cbfn *comp); /* * Diagnostic generation */ void BR_RESIDENT_ENTRY BrFailure(char *s,...); void BR_RESIDENT_ENTRY BrWarning(char *s,...); void BR_RESIDENT_ENTRY BrFatal(char *name, int line, char *s,...); /* * Set new handlers */ br_diaghandler * BR_PUBLIC_ENTRY BrDiagHandlerSet(br_diaghandler *newdh); br_filesystem * BR_PUBLIC_ENTRY BrFilesystemSet(br_filesystem *newfs); br_allocator * BR_PUBLIC_ENTRY BrAllocatorSet(br_allocator *newal); /* * Backwards compatibility */ #define BrErrorHandlerSet BrDiagHandlerSet /* * Generic file IO */ br_uint_32 BR_PUBLIC_ENTRY BrFileAttributes(void); void * BR_PUBLIC_ENTRY BrFileOpenRead(char *name, br_size_t n_magics, br_mode_test_cbfn *mode_test, int *mode_result); void * BR_PUBLIC_ENTRY BrFileOpenWrite(char *name, int text); void BR_PUBLIC_ENTRY BrFileClose(void *f); int BR_PUBLIC_ENTRY BrFileEof(void *f); int BR_PUBLIC_ENTRY BrFileGetChar(void *f); void BR_PUBLIC_ENTRY BrFilePutChar(int c, void *f); int BR_PUBLIC_ENTRY BrFileRead(void *buf, int size, int n,void *f); int BR_PUBLIC_ENTRY BrFileWrite(void *buf, int size, int n, void *f); int BR_PUBLIC_ENTRY BrFileGetLine(char *buf, br_size_t buf_len, void * f); void BR_PUBLIC_ENTRY BrFilePutLine(char *buf, void * f); void BR_PUBLIC_ENTRY BrFileAdvance(long int count, void *f); int BR_PUBLIC_ENTRY BrFilePrintf(void *f, char *fmt, ...); br_int_32 BR_RESIDENT_ENTRY BrSprintf(char *buf, char *fmt, ...); br_int_32 BR_RESIDENT_ENTRY BrSprintfN(char *buf, br_size_t buf_size, char *fmt, ...); br_int_32 BR_RESIDENT_ENTRY BrSScanf(char *str, char *fmt, ...); /* * Data file output type (one of BR_FS_MODE_xxx) */ int BR_PUBLIC_ENTRY BrWriteModeSet(int text); /* * Generic memory allocation */ void * BR_RESIDENT_ENTRY BrMemAllocate(br_size_t size, br_uint_8 type); void BR_RESIDENT_ENTRY BrMemFree(void *block); br_size_t BR_RESIDENT_ENTRY BrMemInquire(br_uint_8 type); br_int_32 BR_RESIDENT_ENTRY BrMemAlign(br_uint_8 type); #if 0 void * BR_RESIDENT_ENTRY BrMemAllocateAlign(br_size_t size, br_uint_8 type, br_int_32 align); #endif char * BR_RESIDENT_ENTRY BrMemStrDup(char *str); void * BR_RESIDENT_ENTRY BrMemCalloc(int nelems, br_size_t size, br_uint_8 type); /* * Resource allocation */ void * BR_RESIDENT_ENTRY BrResAllocate(void *vparent, br_size_t size, br_uint_8 res_class); void BR_RESIDENT_ENTRY BrResFree(void *vres); void BR_RESIDENT_ENTRY BrResFreeNoCallback(void *vres); char * BR_RESIDENT_ENTRY BrResStrDup(void *vparent, char *str); void * BR_RESIDENT_ENTRY BrResAdd(void *vparent, void *vres); void * BR_RESIDENT_ENTRY BrResRemove(void *vres); br_uint_8 BR_RESIDENT_ENTRY BrResClass(void * vres); br_uint_32 BR_RESIDENT_ENTRY BrResSize(void *vres); br_uint_32 BR_RESIDENT_ENTRY BrResSizeTotal(void *vres); typedef br_uint_32 BR_CALLBACK br_resenum_cbfn(void *vres, void *arg); br_uint_32 BR_RESIDENT_ENTRY BrResChildEnum(void *vres, br_resenum_cbfn *callback, void *arg); br_boolean BR_RESIDENT_ENTRY BrResIsChild(void *vparent, void *vchild); /* * Block operations (XXX should be made private) */ void BR_ASM_CALL BrBlockFill(void *dest_ptr, int value, int dwords); void BR_ASM_CALL BrBlockCopy(void *dest_ptr, void *src_ptr, int dwords); #if BR_HAS_FAR void BR_ASM_CALL BrFarBlockCopy(void __far *dest_ptr, void *src_ptr, int dwords); #endif /* * Scratchpad buffer allocation - Currenty, only one allocation * may be outstanding at any time */ void *BR_RESIDENT_ENTRY BrScratchAllocate(br_size_t size); void BR_RESIDENT_ENTRY BrScratchFree(void *scratch); br_size_t BR_RESIDENT_ENTRY BrScratchInquire(void); void BR_RESIDENT_ENTRY BrScratchFlush(void); /* * A seperate, fixed size scratch buffer, typically used as a scratch string workspace * * At least 512 bytes in size */ br_size_t BR_RESIDENT_ENTRY BrScratchStringSize(void); char* BR_RESIDENT_ENTRY BrScratchString(void); /* * Error retrieval */ br_error BR_RESIDENT_ENTRY BrGetLastError(void **valuep); /* * Device mangement */ struct br_device; typedef struct br_device * BR_EXPORT br_device_begin_fn(char *arguments); br_error BR_RESIDENT_ENTRY BrDevAdd(struct br_device **pdev, char * image, char *args); br_error BR_RESIDENT_ENTRY BrDevCheckAdd(struct br_device **pdev, char *image, char *args); br_error BR_RESIDENT_ENTRY BrDevAddStatic(struct br_device **pdev, br_device_begin_fn *begin, char *args); br_error BR_RESIDENT_ENTRY BrDevAddConfig(char *config); br_error BR_RESIDENT_ENTRY BrDevRemove(struct br_device *dev); br_error BR_RESIDENT_ENTRY BrDevicesQuery(struct br_device **devices, br_int_32 *ndevices, br_int_32 max_devices); br_error BR_RESIDENT_ENTRY BrDevFindMany(struct br_device **devices, br_int_32 *ndevices, br_int_32 max_devices, char *pattern); br_error BR_RESIDENT_ENTRY BrDevCount(br_int_32 *ndevices, char *pattern); br_error BR_RESIDENT_ENTRY BrDevFind(struct br_device **pdev, char *pattern); br_error BR_RESIDENT_ENTRY BrDevContainedFind(struct br_object **ph, br_token type, char *pattern, br_token_value *tv); br_error BR_RESIDENT_ENTRY BrDevContainedFindMany(struct br_object **objects, br_int_32 max_objects, br_int_32 *pnum_objects, br_token type, char *pattern, br_token_value *tv); br_error BR_RESIDENT_ENTRY BrDevContainedCount(br_int_32 *pcount, br_token type, char *pattern, br_token_value *tv); br_error BR_PUBLIC_ENTRY BrDevBegin(br_pixelmap **ppm, char *setup_string); br_error BR_PUBLIC_ENTRY BrDevBeginVar(br_pixelmap **ppm, char *device_name, ...); br_error BR_PUBLIC_ENTRY BrDevBeginTV(br_pixelmap **ppm, char *device_name, br_token_value *tv); br_pixelmap * BR_PUBLIC_ENTRY BrDevBeginOld(char *setup_string); void BR_PUBLIC_ENTRY BrDevEndOld(void); void BR_PUBLIC_ENTRY BrDevPaletteSetOld(br_pixelmap *pm); void BR_PUBLIC_ENTRY BrDevPaletteSetEntryOld(int i,br_colour colour); /* * Callback function invoked when a device is enumerated */ typedef br_boolean BR_CALLBACK br_device_enum_cbfn(char *identifer, br_uint_32 version, char *creator, char *title, char *product, char *product_version, void *args); /* * Callback function invoked when an output facility is enumerated */ typedef struct br_outfcty_desc { br_int_32 width; br_int_32 width_min; br_int_32 width_max; br_int_32 height; br_int_32 height_min; br_int_32 height_max; br_uint_8 pmtype; br_int_32 pmbits; br_boolean indexed; br_boolean fullscreen; /* * A pointer to the output facility. Note that this is only guaranteed * to remain valid within the callback routine, and is is strictly * for the purposes of gathering further information */ struct br_output_facility *output_facility; } br_outfcty_desc; typedef br_boolean BR_CALLBACK br_outfcty_enum_cbfn(char *identifier, br_outfcty_desc *desc, void *args); /* * Enumeration routines. */ br_error BR_PUBLIC_ENTRY BrDeviceEnum(br_device_enum_cbfn *cbfn, void *args); br_error BR_PUBLIC_ENTRY BrOutputFacilityEnum(char *name, br_outfcty_enum_cbfn *cbfn, void *args); struct br_renderer_facility; br_error BR_RESIDENT_ENTRY BrRendererFacilityFind(struct br_renderer_facility **prf, struct br_device_pixelmap *destination, br_token scalar_type); br_error BR_RESIDENT_ENTRY BrRendererFacilityListFind(struct br_renderer_facility **prf, br_int_32 *num_rf, br_int_32 max_rf, struct br_device_pixelmap *destination, br_token scalar_type); struct br_primitive_library; br_error BR_RESIDENT_ENTRY BrPrimitiveLibraryFind(struct br_primitive_library **ppl, struct br_device_pixelmap *destination, br_token scalar_type); br_error BR_RESIDENT_ENTRY BrPrimitiveLibraryListFind(struct br_primitive_library **ppl, br_int_32 *num_pl, br_int_32 max_pl, struct br_device_pixelmap *destination, br_token scalar_type); br_error BR_RESIDENT_ENTRY BrGeometryFormatFind(struct br_geometry **pgf, struct br_renderer *renderer, struct br_renderer_facility *renderer_facility, br_token scalar_type, br_token format_type); /* * lists */ void BR_RESIDENT_ENTRY BrNewList(br_list *list); void BR_RESIDENT_ENTRY BrAddHead(br_list *list, br_node *node); void BR_RESIDENT_ENTRY BrAddTail(br_list *list, br_node *node); br_node * BR_RESIDENT_ENTRY BrRemHead(br_list *list); br_node * BR_RESIDENT_ENTRY BrRemTail(br_list *list); void BR_RESIDENT_ENTRY BrInsert(br_list *list, br_node *here, br_node *node); br_node * BR_RESIDENT_ENTRY BrRemove(br_node *node); void BR_RESIDENT_ENTRY BrSimpleNewList(br_simple_list *list); void BR_RESIDENT_ENTRY BrSimpleAddHead(br_simple_list *list, br_simple_node *node); br_simple_node * BR_RESIDENT_ENTRY BrSimpleRemHead(br_simple_list *list); void BR_RESIDENT_ENTRY BrSimpleInsert(br_simple_list *list, br_simple_node *here, br_simple_node *node); br_simple_node * BR_RESIDENT_ENTRY BrSimpleRemove(br_simple_node *node); #endif /* _NO_PROTOTYPES */ #ifdef __cplusplus }; #endif #endif