]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - draw.h
Default scr_loadingscreen_background to 1, and also a fix for sRGB issues with the...
[xonotic/darkplaces.git] / draw.h
diff --git a/draw.h b/draw.h
index c7f1bc273245a7237f9d7b65a320f7e42be95b41..59470b6e76da9a2e07083f4841be2002f93fc862 100644 (file)
--- a/draw.h
+++ b/draw.h
@@ -24,29 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #ifndef DRAW_H
 #define DRAW_H
 
-// FIXME: move this stuff to cl_screen
-typedef struct cachepic_s
-{
-       // size of pic
-       int width, height;
-       // this flag indicates that it should be loaded and unloaded on demand
-       int autoload;
-       // texture flags to upload with
-       int texflags;
-       // texture may be freed after a while
-       int lastusedframe;
-       // renderer texture to use
-       rtexture_t *tex;
-       // used for hash lookups
-       struct cachepic_s *chain;
-       // flags - CACHEPICFLAG_NEWPIC for example
-       unsigned int flags;
-       // has alpha?
-       qboolean hasalpha;
-       // name of pic
-       char name[MAX_QPATH];
-}
-cachepic_t;
+typedef struct cachepic_s cachepic_t;
 
 typedef enum cachepicflags_e
 {
@@ -54,7 +32,10 @@ typedef enum cachepicflags_e
        CACHEPICFLAG_QUIET = 2,
        CACHEPICFLAG_NOCOMPRESSION = 4,
        CACHEPICFLAG_NOCLAMP = 8,
-       CACHEPICFLAG_NEWPIC = 16 // disables matching texflags check, because a pic created with Draw_NewPic should not be subject to that
+       CACHEPICFLAG_NEWPIC = 16, // disables matching texflags check, because a pic created with Draw_NewPic should not be subject to that
+       CACHEPICFLAG_MIPMAP = 32,
+       CACHEPICFLAG_NEAREST = 64, // force nearest filtering instead of linear
+       CACHEPICFLAG_FAILONMISSING = 128 // return NULL if the pic has no texture
 }
 cachepicflags_t;
 
@@ -63,8 +44,8 @@ void Draw_Frame (void);
 cachepic_t *Draw_CachePic_Flags (const char *path, unsigned int cachepicflags);
 cachepic_t *Draw_CachePic (const char *path); // standard function with no options, used throughout engine
 // create or update a pic's image
-cachepic_t *Draw_NewPic(const char *picname, int width, int height, int alpha, unsigned char *pixels);
-// free the texture memory used by a pic
+cachepic_t *Draw_NewPic(const char *picname, int width, int height, unsigned char *pixels, textype_t textype, int texflags);
+// free the texture memory used by a pic (the cachepic_t itself is eternal)
 void Draw_FreePic(const char *picname);
 
 // a triangle mesh..
@@ -92,9 +73,10 @@ DRAWFLAG_2XMODULATE,
 DRAWFLAG_SCREEN,
 DRAWFLAG_NUMFLAGS,
 DRAWFLAG_MASK = 0xFF,   // ONLY R_BeginPolygon()
-DRAWFLAG_MIPMAP = 0x100 // ONLY R_BeginPolygon()
+DRAWFLAG_MIPMAP = 0x100, // ONLY R_BeginPolygon()
+DRAWFLAG_NOGAMMA = 0x200 // ONLY R_DrawQSuperPic()
 };
-#define DRAWFLAGS_BLEND (DRAWFLAG_ADDITIVE + DRAWFLAG_MODULATE + DRAWFLAG_2XMODULATE + DRAWFLAG_SCREEN)
+#define DRAWFLAGS_BLEND 0xFF /* this matches all blending flags */
 
 typedef struct ft2_settings_s
 {
@@ -108,7 +90,7 @@ typedef struct ft2_settings_s
 #define MAX_FONT_FALLBACKS 3
 typedef struct dp_font_s
 {
-       rtexture_t *tex;
+       cachepic_t *pic;
        float width_of[256]; // width_of[0] == max width of any char; 1.0f is base width (1/16 of texture width); therefore, all widths have to be <= 1 (does not include scale)
        float maxwidth; // precalculated max width of the font (includes scale)
        char texpath[MAX_QPATH];
@@ -183,8 +165,8 @@ void DrawQ_SetClipArea(float x, float y, float width, float height);
 void DrawQ_ResetClipArea(void);
 // draw a line
 void DrawQ_Line(float width, float x1, float y1, float x2, float y2, float r, float g, float b, float alpha, int flags);
-// draw a lot of lines
-void DrawQ_Lines (float width, int numlines, const float *vertex3f, const float *color4f, int flags);
+// draw a lot of lines (call R_Mesh_PrepareVertices_Generic first)
+void DrawQ_Lines(float width, int numlines, int flags, qboolean hasalpha);
 // draw a line loop
 void DrawQ_LineLoop(drawqueuemesh_t *mesh, int flags);
 // resets r_refdef.draw2dstage
@@ -192,9 +174,12 @@ void DrawQ_Finish(void);
 void DrawQ_ProcessDrawFlag(int flags, qboolean alpha); // sets GL_DepthMask and GL_BlendFunc
 void DrawQ_RecalcView(void); // use this when changing r_refdef.view.* from e.g. csqc
 
-rtexture_t *Draw_GetPicTexture(cachepic_t *pic);
 
-void R_DrawGamma(void);
+const char *Draw_GetPicName(cachepic_t *pic);
+int Draw_GetPicWidth(cachepic_t *pic);
+int Draw_GetPicHeight(cachepic_t *pic);
+qboolean Draw_IsPicLoaded(cachepic_t *pic);
+rtexture_t *Draw_GetPicTexture(cachepic_t *pic);
 
 extern rtexturepool_t *drawtexturepool; // used by ft2.c