-// Andreas Kirsch 07\r
-\r
-#include "quakedef.h"\r
-#include "cl_dyntexture.h"\r
-\r
-typedef struct dyntexture_s {\r
- // everything after DYNAMIC_TEXTURE_PATH_PREFIX\r
- char name[ MAX_QPATH + 32 ];\r
- // texture pointer (points to r_texture_white at first)\r
- rtexture_t *texture;\r
-} dyntexture_t;\r
-\r
-static dyntexture_t dyntextures[ MAX_DYNAMIC_TEXTURE_COUNT ];\r
-static unsigned dyntexturecount;\r
-\r
-#define DEFAULT_DYNTEXTURE r_texture_grey128\r
-\r
-static dyntexture_t * cl_finddyntexture( const char *name, qboolean warnonfailure ) {\r
- unsigned i;\r
- dyntexture_t *dyntexture = NULL;\r
-\r
- // sanity checks - make sure its actually a dynamic texture path\r
- if( !name || !*name || strncmp( name, CLDYNTEXTUREPREFIX, sizeof( CLDYNTEXTUREPREFIX ) - 1 ) != 0 ) {\r
- // TODO: print a warning or something\r
- if (warnonfailure)\r
- Con_Printf( "cl_finddyntexture: Bad dynamic texture name '%s'\n", name );\r
- return NULL;\r
- }\r
-\r
- for( i = 0 ; i < dyntexturecount ; i++ ) {\r
- dyntexture = &dyntextures[ i ];\r
- if( dyntexture->name && strcmp( dyntexture->name, name ) == 0 ) {\r
- return dyntexture;\r
- }\r
- }\r
-\r
- if( dyntexturecount == MAX_DYNAMIC_TEXTURE_COUNT ) {\r
- // TODO: warn or expand the array, etc.\r
- return NULL;\r
- }\r
- dyntexture = &dyntextures[ dyntexturecount++ ];\r
- strlcpy( dyntexture->name, name, sizeof( dyntexture->name ) );\r
- dyntexture->texture = DEFAULT_DYNTEXTURE;\r
- return dyntexture;\r
-}\r
-\r
-rtexture_t * CL_GetDynTexture( const char *name ) {\r
- dyntexture_t *dyntexture = cl_finddyntexture( name, false );\r
- if( dyntexture ) {\r
- return dyntexture->texture;\r
- } else {\r
- return NULL;\r
- }\r
-}\r
-\r
-void CL_LinkDynTexture( const char *name, rtexture_t *texture ) {\r
- dyntexture_t *dyntexture;\r
- cachepic_t *cachepic;\r
- skinframe_t *skinframe;\r
-\r
- dyntexture = cl_finddyntexture( name, true );\r
- if( !dyntexture ) {\r
- Con_Printf( "CL_LinkDynTexture: internal error in cl_finddyntexture!\n" );\r
- return;\r
- }\r
- // TODO: assert dyntexture != NULL!\r
- if( dyntexture->texture != texture ) {\r
- dyntexture->texture = texture;\r
-\r
- cachepic = Draw_CachePic_Flags( name, CACHEPICFLAG_NOTPERSISTENT );\r
- // TODO: assert cachepic and skinframe should be valid pointers...\r
- // TODO: assert cachepic->tex = dyntexture->texture\r
- cachepic->tex = texture;\r
- // update cachepic's size, too\r
- cachepic->width = R_TextureWidth( texture );\r
- cachepic->height = R_TextureHeight( texture );\r
-\r
- // update skinframes\r
- skinframe = NULL;\r
- while( (skinframe = R_SkinFrame_FindNextByName( skinframe, name )) != NULL ) {\r
- skinframe->base = texture;\r
- // simply reset the compare* attributes of skinframe\r
- skinframe->comparecrc = 0;\r
- skinframe->comparewidth = skinframe->compareheight = 0;\r
- // this is kind of hacky\r
- }\r
- }\r
-}\r
-\r
-void CL_UnlinkDynTexture( const char *name ) {\r
- CL_LinkDynTexture( name, DEFAULT_DYNTEXTURE );\r
-}\r
-\r
+// Andreas Kirsch 07
+
+#include "quakedef.h"
+#include "cl_dyntexture.h"
+
+typedef struct dyntexture_s {
+ // everything after DYNAMIC_TEXTURE_PATH_PREFIX
+ char name[ MAX_QPATH + 32 ];
+ // texture pointer (points to r_texture_white at first)
+ rtexture_t *texture;
+} dyntexture_t;
+
+static dyntexture_t dyntextures[ MAX_DYNAMIC_TEXTURE_COUNT ];
+static unsigned dyntexturecount;
+
+#define DEFAULT_DYNTEXTURE r_texture_grey128
+
+static dyntexture_t * cl_finddyntexture( const char *name, qboolean warnonfailure ) {
+ unsigned i;
+ dyntexture_t *dyntexture = NULL;
+
+ // sanity checks - make sure its actually a dynamic texture path
+ if( !name || !*name || strncmp( name, CLDYNTEXTUREPREFIX, sizeof( CLDYNTEXTUREPREFIX ) - 1 ) != 0 ) {
+ // TODO: print a warning or something
+ if (warnonfailure)
+ Con_Printf( "cl_finddyntexture: Bad dynamic texture name '%s'\n", name );
+ return NULL;
+ }
+
+ for( i = 0 ; i < dyntexturecount ; i++ ) {
+ dyntexture = &dyntextures[ i ];
+ if( dyntexture->name && strcmp( dyntexture->name, name ) == 0 ) {
+ return dyntexture;
+ }
+ }
+
+ if( dyntexturecount == MAX_DYNAMIC_TEXTURE_COUNT ) {
+ // TODO: warn or expand the array, etc.
+ return NULL;
+ }
+ dyntexture = &dyntextures[ dyntexturecount++ ];
+ strlcpy( dyntexture->name, name, sizeof( dyntexture->name ) );
+ dyntexture->texture = DEFAULT_DYNTEXTURE;
+ return dyntexture;
+}
+
+rtexture_t * CL_GetDynTexture( const char *name ) {
+ dyntexture_t *dyntexture = cl_finddyntexture( name, false );
+ if( dyntexture ) {
+ return dyntexture->texture;
+ } else {
+ return NULL;
+ }
+}
+
+void CL_LinkDynTexture( const char *name, rtexture_t *texture ) {
+ dyntexture_t *dyntexture;
+ cachepic_t *cachepic;
+ skinframe_t *skinframe;
+
+ dyntexture = cl_finddyntexture( name, true );
+ if( !dyntexture ) {
+ Con_Printf( "CL_LinkDynTexture: internal error in cl_finddyntexture!\n" );
+ return;
+ }
+ // TODO: assert dyntexture != NULL!
+ if( dyntexture->texture != texture ) {
+ dyntexture->texture = texture;
+
+ cachepic = Draw_CachePic_Flags( name, CACHEPICFLAG_NOTPERSISTENT );
+ // TODO: assert cachepic and skinframe should be valid pointers...
+ // TODO: assert cachepic->tex = dyntexture->texture
+ cachepic->tex = texture;
+ // update cachepic's size, too
+ cachepic->width = R_TextureWidth( texture );
+ cachepic->height = R_TextureHeight( texture );
+
+ // update skinframes
+ skinframe = NULL;
+ while( (skinframe = R_SkinFrame_FindNextByName( skinframe, name )) != NULL ) {
+ skinframe->base = texture;
+ // simply reset the compare* attributes of skinframe
+ skinframe->comparecrc = 0;
+ skinframe->comparewidth = skinframe->compareheight = 0;
+ // this is kind of hacky
+ }
+ }
+}
+
+void CL_UnlinkDynTexture( const char *name ) {
+ CL_LinkDynTexture( name, DEFAULT_DYNTEXTURE );
+}
+
-// Andreas 'Black' Kirsch 07\r
-#ifndef CL_DYNTEXTURE_H\r
-#define CL_DYNTEXTURE_H\r
-\r
-#define CLDYNTEXTUREPREFIX "_dynamic/"\r
-\r
-// always path fully specified names to the dynamic texture functions! (ie. with the _dynamic/ prefix, etc.!)\r
-\r
-// return a valid texture handle for a dynamic texture (might be filler texture if it hasnt been initialized yet)\r
-// or NULL if its not a valid dynamic texture name\r
-rtexture_t * CL_GetDynTexture( const char *name );\r
-\r
-// link a texture handle as dynamic texture and update texture handles in the renderer and draw_* accordingly\r
-void CL_LinkDynTexture( const char *name, rtexture_t *texture );\r
-\r
-// unlink a texture handle from its name\r
-void CL_UnlinkDynTexture( const char *name );\r
-\r
-#endif\r
-\r
+// Andreas 'Black' Kirsch 07
+#ifndef CL_DYNTEXTURE_H
+#define CL_DYNTEXTURE_H
+
+#define CLDYNTEXTUREPREFIX "_dynamic/"
+
+// always path fully specified names to the dynamic texture functions! (ie. with the _dynamic/ prefix, etc.!)
+
+// return a valid texture handle for a dynamic texture (might be filler texture if it hasnt been initialized yet)
+// or NULL if its not a valid dynamic texture name
+rtexture_t * CL_GetDynTexture( const char *name );
+
+// link a texture handle as dynamic texture and update texture handles in the renderer and draw_* accordingly
+void CL_LinkDynTexture( const char *name, rtexture_t *texture );
+
+// unlink a texture handle from its name
+void CL_UnlinkDynTexture( const char *name );
+
+#endif
+
-// Andreas Kirsch 07\r
-\r
-#ifndef CL_GECKO_H\r
-#define CL_GECKO_H\r
-\r
-#include "cl_dyntexture.h"\r
-\r
-#define CLGECKOPREFIX CLDYNTEXTUREPREFIX "gecko/"\r
-\r
-typedef enum clgecko_buttoneventtype_e {\r
- CLG_BET_DOWN,\r
- CLG_BET_UP,\r
- CLG_BET_DOUBLECLICK,\r
- // use for up + down (but dont use both)\r
- CLG_BET_PRESS\r
-} clgecko_buttoneventtype_t;\r
-\r
-typedef struct clgecko_s clgecko_t;\r
-\r
-void CL_Gecko_Frame( void );\r
-void CL_Gecko_Init( void );\r
-void CL_Gecko_Shutdown( void );\r
-\r
-clgecko_t * CL_Gecko_CreateBrowser( const char *name, int ownerProg );\r
-clgecko_t * CL_Gecko_FindBrowser( const char *name );\r
-void CL_Gecko_DestroyBrowser( clgecko_t *instance );\r
-\r
-void CL_Gecko_NavigateToURI( clgecko_t *instance, const char *URI );\r
-// x and y between 0.0 and 1.0 (0.0 is top-left?)\r
-void CL_Gecko_Event_CursorMove( clgecko_t *instance, float x, float y );\r
-\r
-// returns whether the key/button event was handled or not\r
-qboolean CL_Gecko_Event_Key( clgecko_t *instance, keynum_t key, clgecko_buttoneventtype_t eventtype );\r
-\r
-void CL_Gecko_Resize( clgecko_t *instance, int width, int height );\r
-// get the ratio between gecko instance's size in the texture and the actual texture size..\r
-void CL_Gecko_GetTextureExtent( clgecko_t *instance, float* pwidth, float* pheight );\r
-#endif\r
-\r
+// Andreas Kirsch 07
+
+#ifndef CL_GECKO_H
+#define CL_GECKO_H
+
+#include "cl_dyntexture.h"
+
+#define CLGECKOPREFIX CLDYNTEXTUREPREFIX "gecko/"
+
+typedef enum clgecko_buttoneventtype_e {
+ CLG_BET_DOWN,
+ CLG_BET_UP,
+ CLG_BET_DOUBLECLICK,
+ // use for up + down (but dont use both)
+ CLG_BET_PRESS
+} clgecko_buttoneventtype_t;
+
+typedef struct clgecko_s clgecko_t;
+
+void CL_Gecko_Frame( void );
+void CL_Gecko_Init( void );
+void CL_Gecko_Shutdown( void );
+
+clgecko_t * CL_Gecko_CreateBrowser( const char *name, int ownerProg );
+clgecko_t * CL_Gecko_FindBrowser( const char *name );
+void CL_Gecko_DestroyBrowser( clgecko_t *instance );
+
+void CL_Gecko_NavigateToURI( clgecko_t *instance, const char *URI );
+// x and y between 0.0 and 1.0 (0.0 is top-left?)
+void CL_Gecko_Event_CursorMove( clgecko_t *instance, float x, float y );
+
+// returns whether the key/button event was handled or not
+qboolean CL_Gecko_Event_Key( clgecko_t *instance, keynum_t key, clgecko_buttoneventtype_t eventtype );
+
+void CL_Gecko_Resize( clgecko_t *instance, int width, int height );
+// get the ratio between gecko instance's size in the texture and the actual texture size..
+void CL_Gecko_GetTextureExtent( clgecko_t *instance, float* pwidth, float* pheight );
+#endif
+