]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - draw.h
Configure all of the CL_MeshEntities* meshes the same, the material flags decide...
[xonotic/darkplaces.git] / draw.h
diff --git a/draw.h b/draw.h
index 317a0f76fde0a8c6748ac0cd8cd2538dd809f4f0..316a696dc6c6a14d41a207e1b4ba4335e7f8084a 100644 (file)
--- a/draw.h
+++ b/draw.h
@@ -39,10 +39,14 @@ typedef struct cachepic_s
        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];
+       // allow to override/free the texture
+       qboolean allow_free_tex;
 }
 cachepic_t;
 
@@ -51,7 +55,10 @@ typedef enum cachepicflags_e
        CACHEPICFLAG_NOTPERSISTENT = 1,
        CACHEPICFLAG_QUIET = 2,
        CACHEPICFLAG_NOCOMPRESSION = 4,
-       CACHEPICFLAG_NOCLAMP = 8
+       CACHEPICFLAG_NOCLAMP = 8,
+       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
 }
 cachepicflags_t;
 
@@ -89,8 +96,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 0xFF /* this matches all blending flags */
 
 typedef struct ft2_settings_s
 {
@@ -100,7 +109,7 @@ typedef struct ft2_settings_s
        float outline, blur, shadowx, shadowy, shadowz;
 } ft2_settings_t;
 
-#define MAX_FONT_SIZES 8
+#define MAX_FONT_SIZES 16
 #define MAX_FONT_FALLBACKS 3
 typedef struct dp_font_s
 {
@@ -162,6 +171,7 @@ void DrawQ_Fill(float x, float y, float width, float height, float red, float gr
 // if outcolor is provided the initial color is read from it, and it is updated at the end with the new value at the end of the text (not at the end of the clipped part)
 // the color is tinted by the provided base color
 // if r_textshadow is not zero, an additional instance of the text is drawn first at an offset with an inverted shade of gray (black text produces a white shadow, brightly colored text produces a black shadow)
+extern float DrawQ_Color[4];
 float DrawQ_String(float x, float y, const char *text, size_t maxlen, float scalex, float scaley, float basered, float basegreen, float baseblue, float basealpha, int flags, int *outcolor, qboolean ignorecolorcodes, const dp_font_t *fnt);
 float DrawQ_String_Scale(float x, float y, const char *text, size_t maxlen, float sizex, float sizey, float scalex, float scaley, float basered, float basegreen, float baseblue, float basealpha, int flags, int *outcolor, qboolean ignorecolorcodes, const dp_font_t *fnt);
 float DrawQ_TextWidth(const char *text, size_t maxlen, float w, float h, qboolean ignorecolorcodes, const dp_font_t *fnt);
@@ -178,8 +188,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
@@ -187,7 +197,11 @@ 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);
 
+extern rtexturepool_t *drawtexturepool; // used by ft2.c
+
 #endif