mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 11:57:00 +00:00
Updated stb_truetype.h, stb_rect_pack.h primarily to reduce warnings (#883)
This commit is contained in:
parent
8553bab241
commit
379533f661
@ -1,4 +1,4 @@
|
|||||||
// stb_rect_pack.h - v0.08 - public domain - rectangle packing
|
// stb_rect_pack.h - v0.10 - public domain - rectangle packing
|
||||||
// Sean Barrett 2014
|
// Sean Barrett 2014
|
||||||
//
|
//
|
||||||
// Useful for e.g. packing rectangular textures into an atlas.
|
// Useful for e.g. packing rectangular textures into an atlas.
|
||||||
@ -32,6 +32,8 @@
|
|||||||
//
|
//
|
||||||
// Version history:
|
// Version history:
|
||||||
//
|
//
|
||||||
|
// 0.10 (2016-10-25) remove cast-away-const to avoid warnings
|
||||||
|
// 0.09 (2016-08-27) fix compiler warnings
|
||||||
// 0.08 (2015-09-13) really fix bug with empty rects (w=0 or h=0)
|
// 0.08 (2015-09-13) really fix bug with empty rects (w=0 or h=0)
|
||||||
// 0.07 (2015-09-13) fix bug with empty rects (w=0 or h=0)
|
// 0.07 (2015-09-13) fix bug with empty rects (w=0 or h=0)
|
||||||
// 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort
|
// 0.06 (2015-04-15) added STBRP_SORT to allow replacing qsort
|
||||||
@ -41,9 +43,9 @@
|
|||||||
//
|
//
|
||||||
// LICENSE
|
// LICENSE
|
||||||
//
|
//
|
||||||
// This software is in the public domain. Where that dedication is not
|
// This software is dual-licensed to the public domain and under the following
|
||||||
// recognized, you are granted a perpetual, irrevocable license to copy,
|
// license: you are granted a perpetual, irrevocable license to copy, modify,
|
||||||
// distribute, and modify this file as you see fit.
|
// publish, and distribute this file as you see fit.
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@ -198,6 +200,12 @@ struct stbrp_context
|
|||||||
#define STBRP_ASSERT assert
|
#define STBRP_ASSERT assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define STBRP__NOTUSED(v) (void)(v)
|
||||||
|
#else
|
||||||
|
#define STBRP__NOTUSED(v) (void)sizeof(v)
|
||||||
|
#endif
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
STBRP__INIT_skyline = 1
|
STBRP__INIT_skyline = 1
|
||||||
@ -268,12 +276,14 @@ STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int height,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// find minimum y position if it starts at x1
|
// find minimum y position if it starts at x1
|
||||||
static int stbrp__skyline_find_min_y(stbrp_context *, stbrp_node *first, int x0, int width, int *pwaste)
|
static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first, int x0, int width, int *pwaste)
|
||||||
{
|
{
|
||||||
//(void)c;
|
|
||||||
stbrp_node *node = first;
|
stbrp_node *node = first;
|
||||||
int x1 = x0 + width;
|
int x1 = x0 + width;
|
||||||
int min_y, visited_width, waste_area;
|
int min_y, visited_width, waste_area;
|
||||||
|
|
||||||
|
STBRP__NOTUSED(c);
|
||||||
|
|
||||||
STBRP_ASSERT(first->x <= x0);
|
STBRP_ASSERT(first->x <= x0);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -501,8 +511,8 @@ static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *context, i
|
|||||||
|
|
||||||
static int rect_height_compare(const void *a, const void *b)
|
static int rect_height_compare(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
stbrp_rect *p = (stbrp_rect *) a;
|
const stbrp_rect *p = (const stbrp_rect *) a;
|
||||||
stbrp_rect *q = (stbrp_rect *) b;
|
const stbrp_rect *q = (const stbrp_rect *) b;
|
||||||
if (p->h > q->h)
|
if (p->h > q->h)
|
||||||
return -1;
|
return -1;
|
||||||
if (p->h < q->h)
|
if (p->h < q->h)
|
||||||
@ -512,8 +522,8 @@ static int rect_height_compare(const void *a, const void *b)
|
|||||||
|
|
||||||
static int rect_width_compare(const void *a, const void *b)
|
static int rect_width_compare(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
stbrp_rect *p = (stbrp_rect *) a;
|
const stbrp_rect *p = (const stbrp_rect *) a;
|
||||||
stbrp_rect *q = (stbrp_rect *) b;
|
const stbrp_rect *q = (const stbrp_rect *) b;
|
||||||
if (p->w > q->w)
|
if (p->w > q->w)
|
||||||
return -1;
|
return -1;
|
||||||
if (p->w < q->w)
|
if (p->w < q->w)
|
||||||
@ -523,8 +533,8 @@ static int rect_width_compare(const void *a, const void *b)
|
|||||||
|
|
||||||
static int rect_original_order(const void *a, const void *b)
|
static int rect_original_order(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
stbrp_rect *p = (stbrp_rect *) a;
|
const stbrp_rect *p = (const stbrp_rect *) a;
|
||||||
stbrp_rect *q = (stbrp_rect *) b;
|
const stbrp_rect *q = (const stbrp_rect *) b;
|
||||||
return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed);
|
return (p->was_packed < q->was_packed) ? -1 : (p->was_packed > q->was_packed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
110
stb_truetype.h
110
stb_truetype.h
@ -1,5 +1,5 @@
|
|||||||
// stb_truetype.h - v1.10 - public domain
|
// stb_truetype.h - v1.12 - public domain
|
||||||
// authored from 2009-2015 by Sean Barrett / RAD Game Tools
|
// authored from 2009-2016 by Sean Barrett / RAD Game Tools
|
||||||
//
|
//
|
||||||
// This library processes TrueType files:
|
// This library processes TrueType files:
|
||||||
// parse files
|
// parse files
|
||||||
@ -51,6 +51,8 @@
|
|||||||
//
|
//
|
||||||
// VERSION HISTORY
|
// VERSION HISTORY
|
||||||
//
|
//
|
||||||
|
// 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual
|
||||||
|
// 1.11 (2016-04-02) fix unused-variable warning
|
||||||
// 1.10 (2016-04-02) user-defined fabs(); rare memory leak; remove duplicate typedef
|
// 1.10 (2016-04-02) user-defined fabs(); rare memory leak; remove duplicate typedef
|
||||||
// 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use allocation userdata properly
|
// 1.09 (2016-01-16) warning fix; avoid crash on outofmem; use allocation userdata properly
|
||||||
// 1.08 (2015-09-13) document stbtt_Rasterize(); fixes for vertical & horizontal edges
|
// 1.08 (2015-09-13) document stbtt_Rasterize(); fixes for vertical & horizontal edges
|
||||||
@ -59,12 +61,6 @@
|
|||||||
// fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?);
|
// fix stbtt_GetFontOFfsetForIndex (never worked for non-0 input?);
|
||||||
// fixed an assert() bug in the new rasterizer
|
// fixed an assert() bug in the new rasterizer
|
||||||
// replace assert() with STBTT_assert() in new rasterizer
|
// replace assert() with STBTT_assert() in new rasterizer
|
||||||
// 1.06 (2015-07-14) performance improvements (~35% faster on x86 and x64 on test machine)
|
|
||||||
// also more precise AA rasterizer, except if shapes overlap
|
|
||||||
// remove need for STBTT_sort
|
|
||||||
// 1.05 (2015-04-15) fix misplaced definitions for STBTT_STATIC
|
|
||||||
// 1.04 (2015-04-15) typo in example
|
|
||||||
// 1.03 (2015-04-12) STBTT_STATIC, fix memory leak in new packing, various fixes
|
|
||||||
//
|
//
|
||||||
// Full history can be found at the end of this file.
|
// Full history can be found at the end of this file.
|
||||||
//
|
//
|
||||||
@ -592,9 +588,9 @@ STBTT_DEF void stbtt_GetPackedQuad(stbtt_packedchar *chardata, int pw, int ph,
|
|||||||
stbtt_aligned_quad *q, // output: quad to draw
|
stbtt_aligned_quad *q, // output: quad to draw
|
||||||
int align_to_integer);
|
int align_to_integer);
|
||||||
|
|
||||||
STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
|
STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
|
||||||
STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects);
|
STBTT_DEF void stbtt_PackFontRangesPackRects(stbtt_pack_context *spc, stbrp_rect *rects, int num_rects);
|
||||||
STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
|
STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects);
|
||||||
// Calling these functions in sequence is roughly equivalent to calling
|
// Calling these functions in sequence is roughly equivalent to calling
|
||||||
// stbtt_PackFontRanges(). If you more control over the packing of multiple
|
// stbtt_PackFontRanges(). If you more control over the packing of multiple
|
||||||
// fonts, or if you want to pack custom data into a font texture, take a look
|
// fonts, or if you want to pack custom data into a font texture, take a look
|
||||||
@ -949,6 +945,12 @@ typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERS
|
|||||||
#define STBTT_RASTERIZER_VERSION 2
|
#define STBTT_RASTERIZER_VERSION 2
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define STBTT__NOTUSED(v) (void)(v)
|
||||||
|
#else
|
||||||
|
#define STBTT__NOTUSED(v) (void)sizeof(v)
|
||||||
|
#endif
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// accessors to parse data from file
|
// accessors to parse data from file
|
||||||
@ -961,26 +963,15 @@ typedef int stbtt__test_oversample_pow2[(STBTT_MAX_OVERSAMPLE & (STBTT_MAX_OVERS
|
|||||||
#define ttCHAR(p) (* (stbtt_int8 *) (p))
|
#define ttCHAR(p) (* (stbtt_int8 *) (p))
|
||||||
#define ttFixed(p) ttLONG(p)
|
#define ttFixed(p) ttLONG(p)
|
||||||
|
|
||||||
#if defined(STB_TRUETYPE_BIGENDIAN) && !defined(ALLOW_UNALIGNED_TRUETYPE)
|
static stbtt_uint16 ttUSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
|
||||||
|
static stbtt_int16 ttSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
|
||||||
#define ttUSHORT(p) (* (stbtt_uint16 *) (p))
|
static stbtt_uint32 ttULONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
|
||||||
#define ttSHORT(p) (* (stbtt_int16 *) (p))
|
static stbtt_int32 ttLONG(stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
|
||||||
#define ttULONG(p) (* (stbtt_uint32 *) (p))
|
|
||||||
#define ttLONG(p) (* (stbtt_int32 *) (p))
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static stbtt_uint16 ttUSHORT(const stbtt_uint8 *p) { return p[0]*256 + p[1]; }
|
|
||||||
static stbtt_int16 ttSHORT(const stbtt_uint8 *p) { return p[0]*256 + p[1]; }
|
|
||||||
static stbtt_uint32 ttULONG(const stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
|
|
||||||
static stbtt_int32 ttLONG(const stbtt_uint8 *p) { return (p[0]<<24) + (p[1]<<16) + (p[2]<<8) + p[3]; }
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define stbtt_tag4(p,c0,c1,c2,c3) ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3))
|
#define stbtt_tag4(p,c0,c1,c2,c3) ((p)[0] == (c0) && (p)[1] == (c1) && (p)[2] == (c2) && (p)[3] == (c3))
|
||||||
#define stbtt_tag(p,str) stbtt_tag4(p,str[0],str[1],str[2],str[3])
|
#define stbtt_tag(p,str) stbtt_tag4(p,str[0],str[1],str[2],str[3])
|
||||||
|
|
||||||
static int stbtt__isfont(const stbtt_uint8 *font)
|
static int stbtt__isfont(stbtt_uint8 *font)
|
||||||
{
|
{
|
||||||
// check the version number
|
// check the version number
|
||||||
if (stbtt_tag4(font, '1',0,0,0)) return 1; // TrueType 1
|
if (stbtt_tag4(font, '1',0,0,0)) return 1; // TrueType 1
|
||||||
@ -1004,7 +995,7 @@ static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fontstart,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *font_collection, int index)
|
static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_collection, int index)
|
||||||
{
|
{
|
||||||
// if it's just a font, there's only one valid index
|
// if it's just a font, there's only one valid index
|
||||||
if (stbtt__isfont(font_collection))
|
if (stbtt__isfont(font_collection))
|
||||||
@ -1023,9 +1014,8 @@ STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *font_collection,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data2, int fontstart)
|
static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart)
|
||||||
{
|
{
|
||||||
stbtt_uint8 *data = (stbtt_uint8 *) data2;
|
|
||||||
stbtt_uint32 cmap, t;
|
stbtt_uint32 cmap, t;
|
||||||
stbtt_int32 i,numTables;
|
stbtt_int32 i,numTables;
|
||||||
|
|
||||||
@ -2073,12 +2063,13 @@ static void stbtt__fill_active_edges_new(float *scanline, float *scanline_fill,
|
|||||||
// directly AA rasterize edges w/o supersampling
|
// directly AA rasterize edges w/o supersampling
|
||||||
static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata)
|
static void stbtt__rasterize_sorted_edges(stbtt__bitmap *result, stbtt__edge *e, int n, int vsubsample, int off_x, int off_y, void *userdata)
|
||||||
{
|
{
|
||||||
(void)vsubsample;
|
|
||||||
stbtt__hheap hh = { 0, 0, 0 };
|
stbtt__hheap hh = { 0, 0, 0 };
|
||||||
stbtt__active_edge *active = NULL;
|
stbtt__active_edge *active = NULL;
|
||||||
int y,j=0, i;
|
int y,j=0, i;
|
||||||
float scanline_data[129], *scanline, *scanline2;
|
float scanline_data[129], *scanline, *scanline2;
|
||||||
|
|
||||||
|
STBTT__NOTUSED(vsubsample);
|
||||||
|
|
||||||
if (result->w > 64)
|
if (result->w > 64)
|
||||||
scanline = (float *) STBTT_malloc((result->w*2+1) * sizeof(float), userdata);
|
scanline = (float *) STBTT_malloc((result->w*2+1) * sizeof(float), userdata);
|
||||||
else
|
else
|
||||||
@ -2524,7 +2515,7 @@ STBTT_DEF void stbtt_MakeCodepointBitmap(const stbtt_fontinfo *info, unsigned ch
|
|||||||
//
|
//
|
||||||
// This is SUPER-CRAPPY packing to keep source code small
|
// This is SUPER-CRAPPY packing to keep source code small
|
||||||
|
|
||||||
STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset, // font location (use offset=0 for plain .ttf)
|
static int stbtt_BakeFontBitmap_internal(unsigned char *data, int offset, // font location (use offset=0 for plain .ttf)
|
||||||
float pixel_height, // height of font in pixels
|
float pixel_height, // height of font in pixels
|
||||||
unsigned char *pixels, int pw, int ph, // bitmap to be filled in
|
unsigned char *pixels, int pw, int ph, // bitmap to be filled in
|
||||||
int first_char, int num_chars, // characters to bake
|
int first_char, int num_chars, // characters to bake
|
||||||
@ -2597,11 +2588,6 @@ STBTT_DEF void stbtt_GetBakedQuad(stbtt_bakedchar *chardata, int pw, int ph, int
|
|||||||
//
|
//
|
||||||
|
|
||||||
#ifndef STB_RECT_PACK_VERSION
|
#ifndef STB_RECT_PACK_VERSION
|
||||||
#ifdef _MSC_VER
|
|
||||||
#define STBTT__NOTUSED(v) (void)(v)
|
|
||||||
#else
|
|
||||||
#define STBTT__NOTUSED(v) (void)sizeof(v)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef int stbrp_coord;
|
typedef int stbrp_coord;
|
||||||
|
|
||||||
@ -2859,7 +2845,7 @@ static float stbtt__oversample_shift(int oversample)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rects array must be big enough to accommodate all characters in the given ranges
|
// rects array must be big enough to accommodate all characters in the given ranges
|
||||||
STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
|
STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
|
||||||
{
|
{
|
||||||
int i,j,k;
|
int i,j,k;
|
||||||
|
|
||||||
@ -2888,7 +2874,7 @@ STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, stbtt_fon
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rects array must be big enough to accommodate all characters in the given ranges
|
// rects array must be big enough to accommodate all characters in the given ranges
|
||||||
STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
|
STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const stbtt_fontinfo *info, stbtt_pack_range *ranges, int num_ranges, stbrp_rect *rects)
|
||||||
{
|
{
|
||||||
int i,j,k, return_value = 1;
|
int i,j,k, return_value = 1;
|
||||||
|
|
||||||
@ -3057,7 +3043,7 @@ STBTT_DEF void stbtt_GetPackedQuad(stbtt_packedchar *chardata, int pw, int ph, i
|
|||||||
//
|
//
|
||||||
|
|
||||||
// check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string
|
// check if a utf8 string contains a prefix which is the utf16 string; if so return length of matching utf8 string
|
||||||
static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(const stbtt_uint8 *s1, stbtt_int32 len1, const stbtt_uint8 *s2, stbtt_int32 len2)
|
static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(stbtt_uint8 *s1, stbtt_int32 len1, stbtt_uint8 *s2, stbtt_int32 len2)
|
||||||
{
|
{
|
||||||
stbtt_int32 i=0;
|
stbtt_int32 i=0;
|
||||||
|
|
||||||
@ -3096,9 +3082,9 @@ static stbtt_int32 stbtt__CompareUTF8toUTF16_bigendian_prefix(const stbtt_uint8
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2)
|
static int stbtt_CompareUTF8toUTF16_bigendian_internal(char *s1, int len1, char *s2, int len2)
|
||||||
{
|
{
|
||||||
return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((const stbtt_uint8*) s1, len1, (const stbtt_uint8*) s2, len2);
|
return len1 == stbtt__CompareUTF8toUTF16_bigendian_prefix((stbtt_uint8*) s1, len1, (stbtt_uint8*) s2, len2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns results in whatever encoding you request... but note that 2-byte encodings
|
// returns results in whatever encoding you request... but note that 2-byte encodings
|
||||||
@ -3154,7 +3140,7 @@ static int stbtt__matchpair(stbtt_uint8 *fc, stbtt_uint32 nm, stbtt_uint8 *name,
|
|||||||
return 1;
|
return 1;
|
||||||
} else if (matchlen < nlen && name[matchlen] == ' ') {
|
} else if (matchlen < nlen && name[matchlen] == ' ') {
|
||||||
++matchlen;
|
++matchlen;
|
||||||
if (stbtt_CompareUTF8toUTF16_bigendian((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen))
|
if (stbtt_CompareUTF8toUTF16_bigendian_internal((char*) (name+matchlen), nlen-matchlen, (char*)(fc+stringOffset+off),slen))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -3200,7 +3186,7 @@ static int stbtt__matches(stbtt_uint8 *fc, stbtt_uint32 offset, stbtt_uint8 *nam
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *font_collection, const char *name_utf8, stbtt_int32 flags)
|
static int stbtt_FindMatchingFont_internal(unsigned char *font_collection, char *name_utf8, stbtt_int32 flags)
|
||||||
{
|
{
|
||||||
stbtt_int32 i;
|
stbtt_int32 i;
|
||||||
for (i=0;;++i) {
|
for (i=0;;++i) {
|
||||||
@ -3211,11 +3197,49 @@ STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *font_collection, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wcast-qual"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_BakeFontBitmap(const unsigned char *data, int offset,
|
||||||
|
float pixel_height, unsigned char *pixels, int pw, int ph,
|
||||||
|
int first_char, int num_chars, stbtt_bakedchar *chardata)
|
||||||
|
{
|
||||||
|
return stbtt_BakeFontBitmap_internal((unsigned char *) data, offset, pixel_height, pixels, pw, ph, first_char, num_chars, chardata);
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetFontOffsetForIndex(const unsigned char *data, int index)
|
||||||
|
{
|
||||||
|
return stbtt_GetFontOffsetForIndex_internal((unsigned char *) data, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_InitFont(stbtt_fontinfo *info, const unsigned char *data, int offset)
|
||||||
|
{
|
||||||
|
return stbtt_InitFont_internal(info, (unsigned char *) data, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_FindMatchingFont(const unsigned char *fontdata, const char *name, int flags)
|
||||||
|
{
|
||||||
|
return stbtt_FindMatchingFont_internal((unsigned char *) fontdata, (char *) name, flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_CompareUTF8toUTF16_bigendian(const char *s1, int len1, const char *s2, int len2)
|
||||||
|
{
|
||||||
|
return stbtt_CompareUTF8toUTF16_bigendian_internal((char *) s1, len1, (char *) s2, len2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // STB_TRUETYPE_IMPLEMENTATION
|
#endif // STB_TRUETYPE_IMPLEMENTATION
|
||||||
|
|
||||||
|
|
||||||
// FULL VERSION HISTORY
|
// FULL VERSION HISTORY
|
||||||
//
|
//
|
||||||
|
// 1.12 (2016-10-25) suppress warnings about casting away const with -Wcast-qual
|
||||||
|
// 1.11 (2016-04-02) fix unused-variable warning
|
||||||
// 1.10 (2016-04-02) allow user-defined fabs() replacement
|
// 1.10 (2016-04-02) allow user-defined fabs() replacement
|
||||||
// fix memory leak if fontsize=0.0
|
// fix memory leak if fontsize=0.0
|
||||||
// fix warning from duplicate typedef
|
// fix warning from duplicate typedef
|
||||||
|
Loading…
Reference in New Issue
Block a user