mirror of
https://github.com/microsoft/Microsoft-3D-Movie-Maker.git
synced 2024-11-22 10:22:40 +01:00
882 lines
33 KiB
C++
882 lines
33 KiB
C++
|
/*
|
||
|
* Copyright (c) 1993-1995 by Argonaut Technologies Limited. All rights reserved.
|
||
|
*
|
||
|
* $Id: fwproto.h 1.42 1995/06/30 16:08:49 sam Exp $
|
||
|
* $Locker: sam $
|
||
|
*
|
||
|
* Function prototypes for brender framework
|
||
|
*/
|
||
|
#ifndef _FWPROTO_H_
|
||
|
#define _FWPROTO_H_
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#ifndef _NO_PROTOTYPES
|
||
|
/**
|
||
|
** Fixed Point
|
||
|
**/
|
||
|
|
||
|
/* result = abs(a)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedAbs(br_fixed_ls a);
|
||
|
|
||
|
/* result = a*b
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMul(br_fixed_ls a, br_fixed_ls b);
|
||
|
|
||
|
/* result = a*b + c*d
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMac2(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d);
|
||
|
|
||
|
/* result = a*b + c*d + e*f
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMac3(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d,
|
||
|
br_fixed_ls e, br_fixed_ls f);
|
||
|
|
||
|
/* result = a*b + c*d + e*f + g*h
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMac4(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d,
|
||
|
br_fixed_ls e, br_fixed_ls f,
|
||
|
br_fixed_ls g, br_fixed_ls h);
|
||
|
|
||
|
/* result = a*a
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedSqr(br_fixed_ls a);
|
||
|
|
||
|
/* result = a*a + b*b
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedSqr2(br_fixed_ls a,
|
||
|
br_fixed_ls b);
|
||
|
|
||
|
/* result = a*a + b*b + c*c
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedSqr3(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c);
|
||
|
/* result = a*a + b*b + c*c + d*d
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedSqr4(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c,
|
||
|
br_fixed_ls d);
|
||
|
|
||
|
|
||
|
/* result = sqrt(a*a + b*b)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedLength2(br_fixed_ls a, br_fixed_ls b);
|
||
|
|
||
|
/* result = sqrt(a*a + b*b + c*c)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedLength3(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c);
|
||
|
|
||
|
/* result = sqrt(a*a + b*b + c*c + d*d)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedLength4(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c,
|
||
|
br_fixed_ls d);
|
||
|
|
||
|
/* result = 1/sqrt(a*a + b*b) (low precision)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedRLength2(br_fixed_ls a, br_fixed_ls b);
|
||
|
|
||
|
/* result = 1/sqrt(a*a + b*b + c*c) (low precision)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedRLength3(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c);
|
||
|
|
||
|
/* result = 1/sqrt(a*a + b*b + c*c + d*d) (low precision)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedRLength4(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c,
|
||
|
br_fixed_ls d);
|
||
|
|
||
|
/* result = a/b
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedDiv(br_fixed_ls a, br_fixed_ls b);
|
||
|
|
||
|
/* result = a/b * 2^31
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedDivF(br_fixed_ls a, br_fixed_ls b);
|
||
|
|
||
|
/* result = a/b (rounded towards 0)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedDivR(br_fixed_ls a, br_fixed_ls b);
|
||
|
|
||
|
|
||
|
/* result = a*b/c
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMulDiv(br_fixed_ls a,
|
||
|
br_fixed_ls b,
|
||
|
br_fixed_ls c);
|
||
|
|
||
|
/* result = (a*b + c*d)/e
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMac2Div(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d,
|
||
|
br_fixed_ls e);
|
||
|
|
||
|
/* result = (a*b + c*d + e*f)/g
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMac3Div(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d,
|
||
|
br_fixed_ls e, br_fixed_ls f,
|
||
|
br_fixed_ls g);
|
||
|
|
||
|
/* result = (a*b + c*d + e*f + g*h)/i
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedMac4Div(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d,
|
||
|
br_fixed_ls e, br_fixed_ls f,
|
||
|
br_fixed_ls g, br_fixed_ls h,
|
||
|
br_fixed_ls i);
|
||
|
/* result = 1.0/a
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedRcp(br_fixed_ls a);
|
||
|
|
||
|
/*
|
||
|
* Various combinations whith fractions
|
||
|
*/
|
||
|
|
||
|
/* result = a*b + c*d - a & c are fractions
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedFMac2(br_fixed_lsf a, br_fixed_ls b,
|
||
|
br_fixed_lsf c, br_fixed_ls d);
|
||
|
|
||
|
/* result = a*b + c*d + e*f - a,c & e are fractions
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedFMac3(br_fixed_lsf a, br_fixed_ls b,
|
||
|
br_fixed_lsf c, br_fixed_ls d,
|
||
|
br_fixed_lsf e, br_fixed_ls f);
|
||
|
|
||
|
/* result = a*b + c*d + e*f + g*h (a,c,e,g are fractions)
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedFMac4(br_fixed_ls a, br_fixed_ls b,
|
||
|
br_fixed_ls c, br_fixed_ls d,
|
||
|
br_fixed_ls e, br_fixed_ls f,
|
||
|
br_fixed_ls g, br_fixed_ls h);
|
||
|
|
||
|
/*
|
||
|
* Misc. support functions
|
||
|
*/
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedSin(br_angle a);
|
||
|
|
||
|
br_fixed_ls BR_ASM_CALL BrFixedCos(br_angle a);
|
||
|
|
||
|
br_angle BR_ASM_CALL BrFixedASin(br_fixed_ls s);
|
||
|
|
||
|
br_angle BR_ASM_CALL BrFixedACos(br_fixed_ls c);
|
||
|
|
||
|
br_angle BR_ASM_CALL BrFixedATan2(br_fixed_ls x, br_fixed_ls y);
|
||
|
|
||
|
br_angle BR_ASM_CALL BrFixedATan2Fast(br_fixed_ls x, br_fixed_ls y);
|
||
|
|
||
|
br_fixed_ls BR_PUBLIC_ENTRY BrFixedSqrt(br_fixed_ls a);
|
||
|
br_fixed_ls BR_PUBLIC_ENTRY BrFixedPow(br_fixed_ls a,br_fixed_ls b);
|
||
|
|
||
|
/*
|
||
|
* Integer sqrt functions
|
||
|
*/
|
||
|
br_uint_32 BR_ASM_CALL BrSqrt(br_uint_32 a);
|
||
|
br_uint_32 BR_ASM_CALL BrFastSqrt(br_uint_32 a);
|
||
|
br_uint_32 BR_ASM_CALL BrFastRSqrt(br_uint_32 a);
|
||
|
|
||
|
/*
|
||
|
* Optional inline fixed point maths
|
||
|
*/
|
||
|
#ifndef NO_PROTOTYPES
|
||
|
#if INLINE_FIXED
|
||
|
|
||
|
#ifdef __GNUC__
|
||
|
#include "g386ifix.h"
|
||
|
#endif
|
||
|
|
||
|
#ifdef __WATCOMC__
|
||
|
#include "wtcifix.h"
|
||
|
#endif
|
||
|
|
||
|
#ifdef _MSC_VER
|
||
|
#include "mscifix.h"
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Setup
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrBegin(void);
|
||
|
void BR_PUBLIC_ENTRY BrEnd(void);
|
||
|
|
||
|
/*
|
||
|
* XXX - All the Add/Remove/Find/Count/Enum calls could ( when !(DEBUG | PARANOID))
|
||
|
* be #defined in terms of the core Registry fns. with appropriate casts.
|
||
|
*/
|
||
|
/*
|
||
|
* Material Handling
|
||
|
*/
|
||
|
br_material * BR_PUBLIC_ENTRY BrMaterialAdd(br_material *material);
|
||
|
br_material * BR_PUBLIC_ENTRY BrMaterialRemove(br_material *material);
|
||
|
br_material * BR_PUBLIC_ENTRY BrMaterialFind(char *pattern);
|
||
|
typedef br_material * BR_CALLBACK br_material_find_cbfn(char *name);
|
||
|
br_material_find_cbfn * BR_PUBLIC_ENTRY BrMaterialFindHook(br_material_find_cbfn *hook);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialAddMany(br_material **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialRemoveMany(br_material **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialFindMany(char *pattern, br_material **items, int max);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialCount(char *pattern);
|
||
|
|
||
|
typedef br_uint_32 BR_CALLBACK br_material_enum_cbfn(br_material *item, void *arg);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialEnum(char *pattern,
|
||
|
br_material_enum_cbfn *callback, void *arg);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMaterialUpdate(br_material *material, br_uint_16 flags);
|
||
|
|
||
|
br_material * BR_PUBLIC_ENTRY BrMaterialAllocate(char *name);
|
||
|
void BR_PUBLIC_ENTRY BrMaterialFree(br_material *m);
|
||
|
|
||
|
/*
|
||
|
* Model Handling
|
||
|
*/
|
||
|
br_model * BR_PUBLIC_ENTRY BrModelAdd(br_model *model);
|
||
|
br_model * BR_PUBLIC_ENTRY BrModelRemove(br_model *model);
|
||
|
br_model * BR_PUBLIC_ENTRY BrModelFind(char *pattern);
|
||
|
typedef br_model * BR_CALLBACK br_model_find_cbfn(char *name);
|
||
|
br_model_find_cbfn * BR_PUBLIC_ENTRY BrModelFindHook(br_model_find_cbfn *hook);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelAddMany(br_model **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelRemoveMany(br_model **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelFindMany(char *pattern, br_model **items, int max);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelCount(char *pattern);
|
||
|
|
||
|
typedef br_uint_32 BR_CALLBACK br_model_enum_cbfn(br_model *item, void *arg);
|
||
|
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelEnum(char *pattern,
|
||
|
br_model_enum_cbfn *callback, void *arg);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrModelUpdate(br_model *model, br_uint_16 flags);
|
||
|
void BR_PUBLIC_ENTRY BrModelApplyMap(br_model *model,int map_type, br_matrix34 *xform);
|
||
|
br_matrix34 * BR_PUBLIC_ENTRY BrModelFitMap(br_model *model, int axis_0, int axis_1, br_matrix34 *transform);
|
||
|
|
||
|
br_model * BR_PUBLIC_ENTRY BrModelAllocate(char *name, int nvertices, int nfaces);
|
||
|
void BR_PUBLIC_ENTRY BrModelFree(br_model *m);
|
||
|
|
||
|
/*
|
||
|
* Texture handling
|
||
|
*/
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrMapAdd(br_pixelmap *pixelmap);
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrMapRemove(br_pixelmap *pixelmap);
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrMapFind(char *pattern);
|
||
|
typedef br_pixelmap * BR_CALLBACK br_map_find_cbfn(char *name);
|
||
|
br_map_find_cbfn * BR_PUBLIC_ENTRY BrMapFindHook(br_map_find_cbfn *hook);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMapAddMany(br_pixelmap **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMapRemoveMany(br_pixelmap **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMapFindMany(char *pattern, br_pixelmap **items, int max);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMapCount(char *pattern);
|
||
|
|
||
|
typedef br_uint_32 BR_CALLBACK br_map_enum_cbfn(br_pixelmap *item, void *arg);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMapEnum(char *pattern,
|
||
|
br_map_enum_cbfn *callback, void *arg);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMapUpdate(br_pixelmap *item, br_uint_16 flags);
|
||
|
|
||
|
/*
|
||
|
* Table handling
|
||
|
*/
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrTableAdd(br_pixelmap *pixelmap);
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrTableRemove(br_pixelmap *pixelmap);
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrTableFind(char *pattern);
|
||
|
typedef br_pixelmap * BR_CALLBACK br_table_find_cbfn(char *name);
|
||
|
br_table_find_cbfn *BR_PUBLIC_ENTRY BrTableFindHook(br_table_find_cbfn *hook);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrTableAddMany(br_pixelmap **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrTableRemoveMany(br_pixelmap **items, int n);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrTableFindMany(char *pattern, br_pixelmap **items, int max);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrTableCount(char *pattern);
|
||
|
|
||
|
typedef br_uint_32 BR_CALLBACK br_table_enum_cbfn(br_pixelmap *item, void *arg);
|
||
|
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrTableEnum(char *pattern,
|
||
|
br_table_enum_cbfn *callback, void *arg);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrTableUpdate(br_pixelmap *item, br_uint_16 flags);
|
||
|
|
||
|
/*
|
||
|
* 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);
|
||
|
|
||
|
/*
|
||
|
* Actor Handling
|
||
|
*/
|
||
|
typedef br_uint_32 BR_CALLBACK br_actor_enum_cbfn(br_actor *mat, void *arg);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrActorEnum(br_actor *parent, br_actor_enum_cbfn *callback , void *arg);
|
||
|
|
||
|
br_actor * BR_PUBLIC_ENTRY BrActorAdd(br_actor *parent, br_actor *a);
|
||
|
br_actor * BR_PUBLIC_ENTRY BrActorRemove(br_actor *a);
|
||
|
void BR_PUBLIC_ENTRY BrActorRelink(br_actor *parent,br_actor *actor);
|
||
|
br_uint_8 BR_PUBLIC_ENTRY BrActorToActorMatrix34(br_matrix34 *m, br_actor *a, br_actor *b);
|
||
|
void BR_PUBLIC_ENTRY BrActorToScreenMatrix4(br_matrix4 *m, br_actor *a, br_actor *camera);
|
||
|
|
||
|
br_actor * BR_PUBLIC_ENTRY BrActorAllocate(br_uint_8 actor_type, void * type_data);
|
||
|
void BR_PUBLIC_ENTRY BrActorFree(br_actor *a);
|
||
|
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrActorSearchMany(br_actor *root, char *pattern, br_actor **actors, int max);
|
||
|
br_actor * BR_PUBLIC_ENTRY BrActorSearch(br_actor *root, char *pattern);
|
||
|
|
||
|
br_bounds * BR_PUBLIC_ENTRY BrActorToBounds( br_bounds *b, br_actor *ap);
|
||
|
br_matrix34 * BR_PUBLIC_ENTRY BrBoundsToMatrix34( br_matrix34 *mat, br_bounds *bounds);
|
||
|
|
||
|
/*
|
||
|
* Pixelmap management
|
||
|
*/
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrPixelmapAllocate(br_uint_8 type,br_uint_16 w,br_uint_16 h, void *pixels, int flags);
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrPixelmapAllocateSub(br_pixelmap *pm,
|
||
|
br_uint_16 x, br_uint_16 y,
|
||
|
br_uint_16 w, br_uint_16 h);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapFree(br_pixelmap *pm);
|
||
|
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrPixelmapMatch(br_pixelmap *src, br_uint_8 match_type);
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrPixelmapClone(br_pixelmap *src);
|
||
|
|
||
|
br_uint_16 BR_PUBLIC_ENTRY BrPixelmapPixelSize(br_pixelmap *pm);
|
||
|
br_uint_16 BR_PUBLIC_ENTRY BrPixelmapChannels(br_pixelmap *pm);
|
||
|
|
||
|
/*
|
||
|
* Pixelmap operations
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapFill(br_pixelmap *dst, br_uint_32 colour);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapRectangle(br_pixelmap *dst,br_int_16 x,br_int_16 y,br_uint_16 w,br_uint_16 h,br_uint_32 colour);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapRectangle2(br_pixelmap *dst,br_int_16 x,br_int_16 y,br_uint_16 w,br_uint_16 h,br_uint_32 colour1, br_uint_32 colour2);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapRectangleCopy(br_pixelmap *dst,br_int_16 dx,br_int_16 dy,br_pixelmap *src,br_int_16 sx,br_int_16 sy,br_uint_16 w,br_uint_16 h);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapRectangleFill(br_pixelmap *dst,br_int_16 x,br_int_16 y,br_uint_16 w,br_uint_16 h,br_uint_32 colour);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapDirtyRectangleCopy(br_pixelmap *dst,br_pixelmap *src,br_int_16 x,br_int_16 y,br_uint_16 w,br_uint_16 h);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapDirtyRectangleFill(br_pixelmap *dst,br_int_16 x,br_int_16 y,br_uint_16 w,br_uint_16 h,br_uint_32 colour);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapPixelSet(br_pixelmap *dst,br_int_16 x,br_int_16 y,br_uint_32 colour);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrPixelmapPixelGet(br_pixelmap *dst,br_int_16 x,br_int_16 y);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapCopy(br_pixelmap *dst,br_pixelmap *src);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapLine(br_pixelmap *dst,br_int_16 x1, br_int_16 y1, br_int_16 x2, br_int_16 y2, br_uint_32 colour);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapText(br_pixelmap *dst, br_int_16 x, br_int_16 y,br_uint_32 colour, br_font *font, char *text);
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapTextF(br_pixelmap *dst,br_int_16 x, br_int_16 y,br_uint_32 colour, br_font *font, char *fmt,...);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapCopyBits(br_pixelmap *dst,
|
||
|
br_int_16 x,br_int_16 y,
|
||
|
br_uint_8 *src,br_uint_16 s_stride,
|
||
|
br_uint_16 start_bit,br_uint_16 end_bit,
|
||
|
br_uint_16 nrows,br_uint_32 colour);
|
||
|
|
||
|
br_uint_16 BR_PUBLIC_ENTRY BrPixelmapTextWidth(br_pixelmap *dst, br_font *font, char *text);
|
||
|
br_uint_16 BR_PUBLIC_ENTRY BrPixelmapTextHeight(br_pixelmap *dst, br_font *font);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrPixelmapDoubleBuffer(br_pixelmap *dst,br_pixelmap *src);
|
||
|
|
||
|
/*
|
||
|
* Backwards compatibility
|
||
|
*/
|
||
|
#define BrPixelmapPlot BrPixelmapPixelSet
|
||
|
|
||
|
/*
|
||
|
* File operations
|
||
|
*/
|
||
|
br_model * BR_PUBLIC_ENTRY BrModelLoad(char *filename);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelSave(char *filename,br_model *model);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelLoadMany(char *filename,br_model **models,br_uint_16 num);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrModelSaveMany(char *filename,br_model **models,br_uint_16 num);
|
||
|
|
||
|
br_material * BR_PUBLIC_ENTRY BrMaterialLoad(char *filename);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialSave(char *filename,br_material *material);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialLoadMany(char *filename,br_material **materials,br_uint_16 num);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrMaterialSaveMany(char *filename,br_material **materials,br_uint_16 num);
|
||
|
|
||
|
br_pixelmap * BR_PUBLIC_ENTRY BrPixelmapLoad(char *filename);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrPixelmapSave(char *filename,br_pixelmap *pixelmap);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrPixelmapLoadMany(char *filename,br_pixelmap **pixelmaps,br_uint_16 num);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrPixelmapSaveMany(char *filename,br_pixelmap **pixelmaps,br_uint_16 num);
|
||
|
|
||
|
br_actor * BR_PUBLIC_ENTRY BrActorLoad(char *filename);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrActorSave(char *filename, br_actor *actor);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrActorLoadMany(char *filename,br_actor **actors,br_uint_16 num);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrActorSaveMany(char *filename,br_actor **actors,br_uint_16 num);
|
||
|
|
||
|
/*
|
||
|
* Lights
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrLightEnable(br_actor *l);
|
||
|
void BR_PUBLIC_ENTRY BrLightDisable(br_actor *l);
|
||
|
|
||
|
/*
|
||
|
* Environment
|
||
|
*/
|
||
|
br_actor * BR_PUBLIC_ENTRY BrEnvironmentSet(br_actor *a);
|
||
|
|
||
|
/*
|
||
|
* Clip planes
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrClipPlaneEnable(br_actor *cp);
|
||
|
void BR_PUBLIC_ENTRY BrClipPlaneDisable(br_actor *cp);
|
||
|
|
||
|
/*
|
||
|
* 3x4 Matrix ops.
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Copy(br_matrix34 *A, br_matrix34 *b);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Mul(br_matrix34 *A, br_matrix34 *B, br_matrix34 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Pre(br_matrix34 *mat , br_matrix34 *A);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Post(br_matrix34 *mat , br_matrix34 *A);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Identity(br_matrix34 *mat);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34RotateX(br_matrix34 *mat, br_angle rx);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreRotateX(br_matrix34 *mat, br_angle rx);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostRotateX(br_matrix34 *mat, br_angle rx);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34RotateY(br_matrix34 *mat, br_angle ry);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreRotateY(br_matrix34 *mat, br_angle ry);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostRotateY(br_matrix34 *mat, br_angle ry);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34RotateZ(br_matrix34 *mat, br_angle rz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreRotateZ(br_matrix34 *mat, br_angle rz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostRotateZ(br_matrix34 *mat, br_angle rz);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Rotate(br_matrix34 *mat, br_angle r, br_vector3 *axis);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreRotate(br_matrix34 *mat, br_angle r, br_vector3 *axis);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostRotate(br_matrix34 *mat, br_angle r, br_vector3 *axis);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Translate(br_matrix34 *mat, br_scalar x, br_scalar y, br_scalar z);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreTranslate(br_matrix34 *mat, br_scalar x, br_scalar y, br_scalar z);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostTranslate(br_matrix34 *mat, br_scalar x, br_scalar y, br_scalar z);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Scale(br_matrix34 *mat, br_scalar sx, br_scalar sy, br_scalar sz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreScale(br_matrix34 *mat, br_scalar sx, br_scalar sy, br_scalar sz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostScale(br_matrix34 *mat, br_scalar sx, br_scalar sy, br_scalar sz);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34ShearX(br_matrix34 *mat, br_scalar sy, br_scalar sz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreShearX(br_matrix34 *mat, br_scalar sy, br_scalar sz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostShearX(br_matrix34 *mat, br_scalar sy, br_scalar sz);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34ShearY(br_matrix34 *mat, br_scalar sx, br_scalar sz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreShearY(br_matrix34 *mat, br_scalar sx, br_scalar sz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostShearY(br_matrix34 *mat, br_scalar sx, br_scalar sz);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34ShearZ(br_matrix34 *mat, br_scalar sx, br_scalar sy);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreShearZ(br_matrix34 *mat, br_scalar sx, br_scalar sy);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostShearZ(br_matrix34 *mat, br_scalar sx, br_scalar sy);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34ApplyV(br_vector3 *A, br_vector3 *B, br_matrix34 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34ApplyP(br_vector3 *A, br_vector3 *B, br_matrix34 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Apply(br_vector3 *A, br_vector4 *B, br_matrix34 *C);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34TApplyV(br_vector3 *A, br_vector3 *B, br_matrix34 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34TApplyP(br_vector3 *A, br_vector3 *B, br_matrix34 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34TApply(br_vector4 *A, br_vector4 *B, br_matrix34 *C);
|
||
|
|
||
|
br_scalar BR_PUBLIC_ENTRY BrMatrix34Inverse(br_matrix34 *out, br_matrix34 *in);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34LPInverse(br_matrix34 *A, br_matrix34 *B);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34LPNormalise(br_matrix34 *A, br_matrix34 *B);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34RollingBall(br_matrix34 *mat, int dx,int dy, int radius);
|
||
|
|
||
|
/*
|
||
|
* 4x4 Matrix ops.
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Copy(br_matrix4 *A, br_matrix4 *B);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Mul(br_matrix4 *A, br_matrix4 *B, br_matrix4 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Identity(br_matrix4 *mat);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Scale(br_matrix4 *mat, br_scalar sx, br_scalar sy, br_scalar sz);
|
||
|
|
||
|
br_scalar BR_PUBLIC_ENTRY BrMatrix4Inverse(br_matrix4 *A, br_matrix4 *B);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Adjoint(br_matrix4 *A, br_matrix4 *B);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrMatrix4Determinant(br_matrix4 *mat);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Perspective(br_matrix4 *mat,
|
||
|
br_angle field_of_view,
|
||
|
br_scalar aspect,
|
||
|
br_scalar hither,
|
||
|
br_scalar yon);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4ApplyV(br_vector4 *A, br_vector3 *B, br_matrix4 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4ApplyP(br_vector4 *A, br_vector3 *B, br_matrix4 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Apply(br_vector4 *A, br_vector4 *B, br_matrix4 *C);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4TApplyV(br_vector4 *A, br_vector3 *B, br_matrix4 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4TApplyP(br_vector4 *A, br_vector3 *B, br_matrix4 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4TApply(br_vector4 *A, br_vector4 *B, br_matrix4 *C);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Pre34(br_matrix4 *A, br_matrix34 *B);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4Copy34(br_matrix4 *A, br_matrix34 *B);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34Copy4(br_matrix34 *A, br_matrix4 *B);
|
||
|
|
||
|
/**
|
||
|
** 2D Vectors
|
||
|
**/
|
||
|
void BR_PUBLIC_ENTRY BrVector2Copy(br_vector2 *v1,br_vector2 * v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector2Set(br_vector2 *v1, br_scalar s1, br_scalar s2);
|
||
|
void BR_PUBLIC_ENTRY BrVector2SetInt(br_vector2 *v1, int i1, int i2);
|
||
|
void BR_PUBLIC_ENTRY BrVector2SetFloat(br_vector2 *v1, float f1, float f2);
|
||
|
void BR_PUBLIC_ENTRY BrVector2Negate(br_vector2 *v1, br_vector2 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector2Add(br_vector2 *v1, br_vector2 *v2, br_vector2 *v3);
|
||
|
void BR_PUBLIC_ENTRY BrVector2Accumulate(br_vector2 *v1, br_vector2 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector2Sub(br_vector2 *v1, br_vector2 *v2, br_vector2 *v3);
|
||
|
void BR_PUBLIC_ENTRY BrVector2Scale(br_vector2 *v1, br_vector2 *v2, br_scalar s);
|
||
|
void BR_PUBLIC_ENTRY BrVector2InvScale(br_vector2 *v1, br_vector2 *v2, br_scalar s);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector2Dot(br_vector2 *v1, br_vector2 *v2);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector2Length(br_vector2 *v1);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector2LengthSquared(br_vector2 *v1);
|
||
|
|
||
|
/**
|
||
|
** 3D VECTORS
|
||
|
**/
|
||
|
void BR_PUBLIC_ENTRY BrVector3Copy(br_vector3 *v1, br_vector2 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Set(br_vector3 *v1, br_scalar s1, br_scalar s2, br_scalar s3);
|
||
|
void BR_PUBLIC_ENTRY BrVector3SetInt(br_vector3 *v1, int i1, int i2, int i3);
|
||
|
void BR_PUBLIC_ENTRY BrVector3SetFloat(br_vector3 *v1, float f1, float f2, float f3);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Negate(br_vector3 *v1,br_vector3 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Add(br_vector3 *v1, br_vector3 *v2, br_vector3 *v3);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Accumulate(br_vector3 *v1, br_vector3 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Sub(br_vector3 *v1, br_vector3 *v2, br_vector3 *v3);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Scale(br_vector3 *v1, br_vector3 *v2, br_scalar s);
|
||
|
void BR_PUBLIC_ENTRY BrVector3InvScale(br_vector3 *v1, br_vector3 *v2, br_scalar s);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector3Dot(br_vector3 *v1, br_vector3 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector3Cross(br_vector3 *v1,br_vector3 *v2,br_vector3 *v3);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector3Length(br_vector3 *v1);
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector3LengthSquared(br_vector3 *v1);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrVector3Normalise(br_vector3 *v1,br_vector3 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector3NormaliseQuick(br_vector3 *v1,br_vector3 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector3NormaliseLP(br_vector3 *v1,br_vector3 *v2);
|
||
|
|
||
|
/*
|
||
|
* 2D vectors
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrVector2Normalise(br_vector2 *v1,br_vector2 *v2);
|
||
|
|
||
|
/**
|
||
|
** 4D Vectors
|
||
|
**/
|
||
|
br_scalar BR_PUBLIC_ENTRY BrVector4Dot(br_vector4 *v1, br_vector4 *v2);
|
||
|
void BR_PUBLIC_ENTRY BrVector4Copy(br_vector4 *v1, br_vector4 *v2);
|
||
|
|
||
|
/*
|
||
|
* Euler Angles
|
||
|
*/
|
||
|
br_matrix34 * BR_PUBLIC_ENTRY BrEulerToMatrix34(br_matrix34 *mat,br_euler *euler);
|
||
|
br_euler * BR_PUBLIC_ENTRY BrMatrix34ToEuler(br_euler *euler,br_matrix34 *mat);
|
||
|
|
||
|
br_matrix4 * BR_PUBLIC_ENTRY BrEulerToMatrix4(br_matrix4 *mat,br_euler *src);
|
||
|
br_euler * BR_PUBLIC_ENTRY BrMatrix4ToEuler(br_euler *dest,br_matrix4 *mat);
|
||
|
|
||
|
br_quat * BR_PUBLIC_ENTRY BrEulerToQuat(br_quat *quat,br_euler *euler);
|
||
|
br_euler * BR_PUBLIC_ENTRY BrQuatToEuler(br_euler *euler,br_quat *quat);
|
||
|
|
||
|
/*
|
||
|
* Quaternions
|
||
|
*/
|
||
|
br_quat * BR_PUBLIC_ENTRY BrQuatMul(br_quat *q,br_quat *l,br_quat *r);
|
||
|
br_quat * BR_PUBLIC_ENTRY BrQuatNormalise(br_quat *q,br_quat *qq);
|
||
|
br_quat * BR_PUBLIC_ENTRY BrQuatInvert(br_quat *q,br_quat *qq);
|
||
|
|
||
|
br_quat * BR_PUBLIC_ENTRY BrQuatSlerp(br_quat *q,br_quat *l,br_quat *r,br_scalar t, br_int_16 spins);
|
||
|
|
||
|
br_matrix34 * BR_PUBLIC_ENTRY BrQuatToMatrix34(br_matrix34 *mat,br_quat *q);
|
||
|
br_quat * BR_PUBLIC_ENTRY BrMatrix34ToQuat(br_quat *q,br_matrix34 *mat);
|
||
|
|
||
|
br_matrix4 * BR_PUBLIC_ENTRY BrQuatToMatrix4(br_matrix4 *mat,br_quat *q);
|
||
|
br_quat * BR_PUBLIC_ENTRY BrMatrix4ToQuat(br_quat *q,br_matrix4 *mat);
|
||
|
|
||
|
/*
|
||
|
* 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);
|
||
|
|
||
|
/*
|
||
|
* Transforms
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrTransformToMatrix34(br_matrix34 *mat,br_transform *xform);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34ToTransform(br_transform *xform,br_matrix34 *mat);
|
||
|
void BR_PUBLIC_ENTRY BrTransformToTransform(br_transform *dest,br_transform *src);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PreTransform(br_matrix34 *mat,br_transform *xform);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix34PostTransform(br_matrix34 *mat,br_transform *xform);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix4PreTransform(br_matrix4 *mat,br_transform *xform);
|
||
|
|
||
|
/*
|
||
|
* 2x3 Matrix ops.
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Copy(br_matrix23 *A, br_matrix23 *b);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Mul(br_matrix23 *A, br_matrix23 *B, br_matrix23 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Pre(br_matrix23 *mat , br_matrix23 *A);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Post(br_matrix23 *mat , br_matrix23 *A);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Identity(br_matrix23 *mat);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Rotate(br_matrix23 *mat, br_angle rz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PreRotate(br_matrix23 *mat, br_angle rz);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PostRotate(br_matrix23 *mat, br_angle rz);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Translate(br_matrix23 *mat, br_scalar x, br_scalar y);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PreTranslate(br_matrix23 *mat, br_scalar x, br_scalar y);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PostTranslate(br_matrix23 *mat, br_scalar x, br_scalar y);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23Scale(br_matrix23 *mat, br_scalar sx, br_scalar sy);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PreScale(br_matrix23 *mat, br_scalar sx, br_scalar sy);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PostScale(br_matrix23 *mat, br_scalar sx, br_scalar sy);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23ShearX(br_matrix23 *mat, br_scalar sy);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PreShearX(br_matrix23 *mat, br_scalar sy);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PostShearX(br_matrix23 *mat, br_scalar sy);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23ShearY(br_matrix23 *mat, br_scalar sx);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PreShearY(br_matrix23 *mat, br_scalar sx);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23PostShearY(br_matrix23 *mat, br_scalar sx);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23ApplyV(br_vector2 *A, br_vector2 *B, br_matrix23 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23ApplyP(br_vector2 *A, br_vector2 *B, br_matrix23 *C);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23TApplyV(br_vector2 *A, br_vector2 *B, br_matrix23 *C);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23TApplyP(br_vector2 *A, br_vector2 *B, br_matrix23 *C);
|
||
|
|
||
|
br_scalar BR_PUBLIC_ENTRY BrMatrix23Inverse(br_matrix23 *out, br_matrix23 *in);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23LPInverse(br_matrix23 *A, br_matrix23 *B);
|
||
|
void BR_PUBLIC_ENTRY BrMatrix23LPNormalise(br_matrix23 *A, br_matrix23 *B);
|
||
|
|
||
|
/*
|
||
|
* Backwards compatibility
|
||
|
*/
|
||
|
#define BrMatrix34Transform BrTransformToMatrix34
|
||
|
#define BrTransformTransfer BrTransformToTransform
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Picking
|
||
|
*/
|
||
|
typedef int BR_CALLBACK br_pick2d_cbfn(
|
||
|
br_actor *a,
|
||
|
br_model *model,
|
||
|
br_material *material,
|
||
|
br_vector3 *ray_pos, br_vector3 *ray_dir,
|
||
|
br_scalar t_near, br_scalar t_far,
|
||
|
void *arg);
|
||
|
|
||
|
int BR_PUBLIC_ENTRY BrScenePick2D(
|
||
|
br_actor *world,
|
||
|
br_actor *camera,
|
||
|
br_pixelmap *viewport,
|
||
|
int pick_x, int pick_y,
|
||
|
br_pick2d_cbfn *callback, void *arg );
|
||
|
|
||
|
typedef int BR_CALLBACK br_pick3d_cbfn(
|
||
|
br_actor *a,
|
||
|
br_model *model,
|
||
|
br_material *material,
|
||
|
br_matrix34 *transform,
|
||
|
br_bounds *bounds,
|
||
|
void *arg);
|
||
|
|
||
|
int BR_PUBLIC_ENTRY BrScenePick3D(
|
||
|
br_actor *world,
|
||
|
br_actor *actor,
|
||
|
br_bounds *bounds,
|
||
|
br_pick3d_cbfn *callback, void *arg );
|
||
|
|
||
|
typedef int BR_CALLBACK br_modelpick2d_cbfn(
|
||
|
br_model *model,
|
||
|
br_material *material,
|
||
|
br_vector3 *ray_pos, br_vector3 *ray_dir,
|
||
|
br_scalar t,
|
||
|
int face,
|
||
|
int edge,
|
||
|
int vertex,
|
||
|
br_vector3 *p,
|
||
|
br_vector2 *map,
|
||
|
void *arg);
|
||
|
|
||
|
int BR_PUBLIC_ENTRY BrModelPick2D(
|
||
|
br_model *model,
|
||
|
br_material *material,
|
||
|
br_vector3 *ray_pos, br_vector3 *ray_dir,
|
||
|
br_scalar t_near, br_scalar t_far,
|
||
|
br_modelpick2d_cbfn *callback,
|
||
|
void *arg);
|
||
|
|
||
|
/*
|
||
|
* Custom calback support
|
||
|
*/
|
||
|
br_uint_8 BR_PUBLIC_ENTRY BrOnScreenCheck(br_bounds *bounds);
|
||
|
|
||
|
br_uint_8 BR_PUBLIC_ENTRY BrOriginToScreenXY(br_vector2 *screen);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrOriginToScreenXYZO(br_vector3 *screen);
|
||
|
|
||
|
br_uint_8 BR_PUBLIC_ENTRY BrPointToScreenXY(br_vector2 *screen, br_vector3 *point);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrPointToScreenXYZO(br_vector3 *screen, br_vector3 *point);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrPointToScreenXYMany(br_vector2 *screens, br_vector3 *points, br_uint_32 npoints);
|
||
|
void BR_PUBLIC_ENTRY BrPointToScreenXYZOMany(br_vector3 *screens, br_uint_32 *outcodes, br_vector3 *points, br_uint_32 npoints);
|
||
|
|
||
|
void BR_PUBLIC_ENTRY BrSceneModelLight(br_model *model, br_material *default_material, br_actor *root, br_actor *a);
|
||
|
|
||
|
/*
|
||
|
* Byte swapping
|
||
|
*/
|
||
|
typedef float br_float;
|
||
|
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrSwap32(br_uint_32 l);
|
||
|
br_uint_16 BR_PUBLIC_ENTRY BrSwap16(br_uint_16 s);
|
||
|
br_float BR_PUBLIC_ENTRY BrSwapFloat(br_float f);
|
||
|
void *BR_PUBLIC_ENTRY BrSwapBlock(void *block, int count, int size);
|
||
|
|
||
|
/*
|
||
|
* Misc. support
|
||
|
*/
|
||
|
typedef int BR_CALLBACK br_qsort_cbfn(const void *, const void *);
|
||
|
void BR_PUBLIC_ENTRY BrQsort(void *basep, unsigned int nelems, unsigned int size,
|
||
|
br_qsort_cbfn *comp);
|
||
|
/*
|
||
|
* Diagnostic generation
|
||
|
*/
|
||
|
void BR_PUBLIC_ENTRY BrFailure(char *s,...);
|
||
|
void BR_PUBLIC_ENTRY BrWarning(char *s,...);
|
||
|
void BR_PUBLIC_ENTRY BrFatal(char *name, int line, char *s,...);
|
||
|
void BR_PUBLIC_ENTRY _BrAssert(char *condition, char *file, unsigned line);
|
||
|
void BR_PUBLIC_ENTRY _BrUAssert(char *condition, char *file, unsigned line);
|
||
|
|
||
|
/*
|
||
|
* 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, ...);
|
||
|
|
||
|
/*
|
||
|
* Data file output type (one of BR_FS_MODE_xxx)
|
||
|
*/
|
||
|
int BR_PUBLIC_ENTRY BrWriteModeSet(int text);
|
||
|
|
||
|
/*
|
||
|
* Generic memory allocation
|
||
|
*/
|
||
|
void * BR_PUBLIC_ENTRY BrMemAllocate(br_size_t size, br_uint_8 type);
|
||
|
void BR_PUBLIC_ENTRY BrMemFree(void *block);
|
||
|
br_size_t BR_PUBLIC_ENTRY BrMemInquire(br_uint_8 type);
|
||
|
|
||
|
char * BR_PUBLIC_ENTRY BrMemStrDup(char *str);
|
||
|
void * BR_PUBLIC_ENTRY BrMemCalloc(int nelems, br_size_t size, br_uint_8 type);
|
||
|
|
||
|
/*
|
||
|
* Resource allocation
|
||
|
*/
|
||
|
void * BR_PUBLIC_ENTRY BrResAllocate(void *vparent, br_size_t size, int res_class);
|
||
|
void BR_PUBLIC_ENTRY BrResFree(void *vres);
|
||
|
char * BR_PUBLIC_ENTRY BrResStrDup(void *vparent, char *str);
|
||
|
|
||
|
void * BR_PUBLIC_ENTRY BrResAdd(void *vparent, void *vres);
|
||
|
void * BR_PUBLIC_ENTRY BrResRemove(void *vres);
|
||
|
br_uint_8 BR_PUBLIC_ENTRY BrResClass(void * vres);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrResSize(void *vres);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrResSizeTotal(void *vres);
|
||
|
typedef br_uint_32 BR_CALLBACK br_resenum_cbfn(void *vres, void *arg);
|
||
|
br_uint_32 BR_PUBLIC_ENTRY BrResChildEnum(void *vres, br_resenum_cbfn *callback, void *arg);
|
||
|
|
||
|
/*
|
||
|
* Block operations
|
||
|
*/
|
||
|
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_PUBLIC_ENTRY BrScratchAllocate(br_size_t size);
|
||
|
void BR_PUBLIC_ENTRY BrScratchFree(void *scratch);
|
||
|
br_size_t BR_PUBLIC_ENTRY BrScratchInquire(void);
|
||
|
void BR_PUBLIC_ENTRY BrScratchFlush(void);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Utility "FindFailed" callbacks that can be used to automaticaly load
|
||
|
* models/materials/maps/tables from the filesystem
|
||
|
*/
|
||
|
br_pixelmap * BR_CALLBACK BrMapFindFailedLoad(char *name);
|
||
|
br_pixelmap * BR_CALLBACK BrTableFindFailedLoad(char *name);
|
||
|
br_model * BR_CALLBACK BrModelFindFailedLoad(char *name);
|
||
|
br_material * BR_CALLBACK BrMaterialFindFailedLoad(char *name);
|
||
|
|
||
|
/*
|
||
|
* Backwards comaptibility
|
||
|
*/
|
||
|
#define BrModelPrepare BrModelUpdate
|
||
|
#define BrMaterialPrepare BrMaterialUpdate
|
||
|
#define BrMapPrepare BrMapUpdate
|
||
|
#define BrTablePrepare BrTableUpdate
|
||
|
|
||
|
/*
|
||
|
* Error retrieval
|
||
|
*/
|
||
|
br_error BR_PUBLIC_ENTRY BrGetLastError(void **valuep);
|
||
|
|
||
|
#endif /* _NO_PROTOTYPES */
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
};
|
||
|
#endif
|
||
|
#endif
|
||
|
|