Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenfont/intern/blf_internal_types.h')
-rw-r--r--source/blender/blenfont/intern/blf_internal_types.h47
1 files changed, 10 insertions, 37 deletions
diff --git a/source/blender/blenfont/intern/blf_internal_types.h b/source/blender/blenfont/intern/blf_internal_types.h
index 45086de0f61..bb1697d7860 100644
--- a/source/blender/blenfont/intern/blf_internal_types.h
+++ b/source/blender/blenfont/intern/blf_internal_types.h
@@ -33,13 +33,13 @@ typedef struct BatchBLF {
struct FontBLF *font; /* can only batch glyph from the same font */
struct GPUBatch *batch;
struct GPUVertBuf *verts;
- struct GPUVertBufRaw pos_step, tex_step, col_step;
- unsigned int pos_loc, tex_loc, col_loc;
+ struct GPUVertBufRaw pos_step, col_step, offset_step, glyph_size_step;
+ unsigned int pos_loc, col_loc, offset_loc, glyph_size_loc;
unsigned int glyph_len;
float ofs[2]; /* copy of font->pos */
float mat[4][4]; /* previous call modelmatrix. */
bool enabled, active, simple_shader;
- GPUTexture *tex_bind_state;
+ struct GlyphCacheBLF *glyph_cache;
} BatchBLF;
extern BatchBLF g_batch;
@@ -72,30 +72,16 @@ typedef struct GlyphCacheBLF {
struct GlyphBLF *glyph_ascii_table[256];
/* texture array, to draw the glyphs. */
- GPUTexture **textures;
-
- /* size of the array. */
- unsigned int textures_len;
-
- /* and the last texture, aka. the current texture. */
- unsigned int texture_current;
-
- /* We draw every glyph in a big texture, so this is the
- * current position inside the texture. */
- int offset_x;
- int offset_y;
-
- /* and the space from one to other. */
- int pad;
+ GPUTexture *texture;
+ char *bitmap_result;
+ int bitmap_len;
+ int bitmap_len_landed;
+ int bitmap_len_alloc;
/* and the bigger glyph in the font. */
int glyph_width_max;
int glyph_height_max;
- /* next two integer power of two, to build the texture. */
- int p2_width;
- int p2_height;
-
/* number of glyphs in the font. */
int glyphs_len_max;
@@ -125,12 +111,8 @@ typedef struct GlyphBLF {
/* avoid conversion to int while drawing */
int advance_i;
- /* texture id where this glyph is store. */
- GPUTexture *tex;
-
/* position inside the texture where this glyph is store. */
- int offset_x;
- int offset_y;
+ int offset;
/* Bitmap data, from freetype. Take care that this
* can be NULL.
@@ -142,9 +124,6 @@ typedef struct GlyphBLF {
int height;
int pitch;
- /* uv coords. */
- float uv[2][2];
-
/* X and Y bearing of the glyph.
* The X bearing is from the origin to the glyph left bbox edge.
* The Y bearing is from the baseline to the top of the glyph edge.
@@ -152,8 +131,7 @@ typedef struct GlyphBLF {
float pos_x;
float pos_y;
- /* with value of zero mean that we need build the texture. */
- char build_tex;
+ bool cached;
} GlyphBLF;
typedef struct FontBufInfoBLF {
@@ -239,9 +217,6 @@ typedef struct FontBLF {
/* max texture size. */
int tex_size_max;
- /* cache current OpenGL texture to save calls into the API */
- GPUTexture *tex_bind_state;
-
/* font options. */
int flags;
@@ -286,6 +261,4 @@ typedef struct DirBLF {
char *path;
} DirBLF;
-#define BLF_TEXTURE_UNSET ((unsigned int)-1)
-
#endif /* __BLF_INTERNAL_TYPES_H__ */