mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
gg: update sokol and stb_truetype
This commit is contained in:
parent
da452c9c7e
commit
94c3a912ba
179
thirdparty/fontstash/stb_truetype.h
vendored
179
thirdparty/fontstash/stb_truetype.h
vendored
@ -1,5 +1,14 @@
|
|||||||
// stb_truetype.h - v1.21 - public domain
|
// stb_truetype.h - v1.24 - public domain
|
||||||
// authored from 2009-2016 by Sean Barrett / RAD Game Tools
|
// authored from 2009-2020 by Sean Barrett / RAD Game Tools
|
||||||
|
//
|
||||||
|
// =======================================================================
|
||||||
|
//
|
||||||
|
// NO SECURITY GUARANTEE -- DO NOT USE THIS ON UNTRUSTED FONT FILES
|
||||||
|
//
|
||||||
|
// This library does no range checking of the offsets found in the file,
|
||||||
|
// meaning an attacker can use it to read arbitrary memory.
|
||||||
|
//
|
||||||
|
// =======================================================================
|
||||||
//
|
//
|
||||||
// This library processes TrueType files:
|
// This library processes TrueType files:
|
||||||
// parse files
|
// parse files
|
||||||
@ -32,11 +41,11 @@
|
|||||||
// Daniel Ribeiro Maciel
|
// Daniel Ribeiro Maciel
|
||||||
//
|
//
|
||||||
// Bug/warning reports/fixes:
|
// Bug/warning reports/fixes:
|
||||||
// "Zer" on mollyrocket Fabian "ryg" Giesen
|
// "Zer" on mollyrocket Fabian "ryg" Giesen github:NiLuJe
|
||||||
// Cass Everitt Martins Mozeiko
|
// Cass Everitt Martins Mozeiko github:aloucks
|
||||||
// stoiko (Haemimont Games) Cap Petschulat
|
// stoiko (Haemimont Games) Cap Petschulat github:oyvindjam
|
||||||
// Brian Hook Omar Cornut
|
// Brian Hook Omar Cornut github:vassvik
|
||||||
// Walter van Niftrik github:aloucks
|
// Walter van Niftrik Ryan Griege
|
||||||
// David Gow Peter LaValle
|
// David Gow Peter LaValle
|
||||||
// David Given Sergey Popov
|
// David Given Sergey Popov
|
||||||
// Ivan-Assen Ivanov Giumo X. Clanjor
|
// Ivan-Assen Ivanov Giumo X. Clanjor
|
||||||
@ -44,11 +53,14 @@
|
|||||||
// Johan Duparc Thomas Fields
|
// Johan Duparc Thomas Fields
|
||||||
// Hou Qiming Derek Vinyard
|
// Hou Qiming Derek Vinyard
|
||||||
// Rob Loach Cort Stratton
|
// Rob Loach Cort Stratton
|
||||||
// Kenney Phillis Jr. github:oyvindjam
|
// Kenney Phillis Jr. Brian Costabile
|
||||||
// Brian Costabile github:vassvik
|
// Ken Voskuil (kaesve)
|
||||||
//
|
//
|
||||||
// VERSION HISTORY
|
// VERSION HISTORY
|
||||||
//
|
//
|
||||||
|
// 1.24 (2020-02-05) fix warning
|
||||||
|
// 1.23 (2020-02-02) query SVG data for glyphs; query whole kerning table (but only kern not GPOS)
|
||||||
|
// 1.22 (2019-08-11) minimize missing-glyph duplication; fix kerning if both 'GPOS' and 'kern' are defined
|
||||||
// 1.21 (2019-02-25) fix warning
|
// 1.21 (2019-02-25) fix warning
|
||||||
// 1.20 (2019-02-07) PackFontRange skips missing codepoints; GetScaleFontVMetrics()
|
// 1.20 (2019-02-07) PackFontRange skips missing codepoints; GetScaleFontVMetrics()
|
||||||
// 1.19 (2018-02-11) GPOS kerning, STBTT_fmod
|
// 1.19 (2018-02-11) GPOS kerning, STBTT_fmod
|
||||||
@ -702,7 +714,7 @@ struct stbtt_fontinfo
|
|||||||
|
|
||||||
int numGlyphs; // number of glyphs, needed for range checking
|
int numGlyphs; // number of glyphs, needed for range checking
|
||||||
|
|
||||||
int loca,head,glyf,hhea,hmtx,kern,gpos; // table locations as offset from start of .ttf
|
int loca,head,glyf,hhea,hmtx,kern,gpos,svg; // table locations as offset from start of .ttf
|
||||||
int index_map; // a cmap mapping for our chosen character encoding
|
int index_map; // a cmap mapping for our chosen character encoding
|
||||||
int indexToLocFormat; // format needed to map from glyph index to glyph
|
int indexToLocFormat; // format needed to map from glyph index to glyph
|
||||||
|
|
||||||
@ -785,6 +797,18 @@ STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int glyph1,
|
|||||||
STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1);
|
STBTT_DEF int stbtt_GetGlyphBox(const stbtt_fontinfo *info, int glyph_index, int *x0, int *y0, int *x1, int *y1);
|
||||||
// as above, but takes one or more glyph indices for greater efficiency
|
// as above, but takes one or more glyph indices for greater efficiency
|
||||||
|
|
||||||
|
typedef struct stbtt_kerningentry
|
||||||
|
{
|
||||||
|
int glyph1; // use stbtt_FindGlyphIndex
|
||||||
|
int glyph2;
|
||||||
|
int advance;
|
||||||
|
} stbtt_kerningentry;
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetKerningTableLength(const stbtt_fontinfo *info);
|
||||||
|
STBTT_DEF int stbtt_GetKerningTable(const stbtt_fontinfo *info, stbtt_kerningentry* table, int table_length);
|
||||||
|
// Retrieves a complete list of all of the kerning pairs provided by the font
|
||||||
|
// stbtt_GetKerningTable never writes more than table_length entries and returns how many entries it did write.
|
||||||
|
// The table will be sorted by (a.glyph1 == b.glyph1)?(a.glyph2 < b.glyph2):(a.glyph1 < b.glyph1)
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@ -829,6 +853,11 @@ STBTT_DEF int stbtt_GetGlyphShape(const stbtt_fontinfo *info, int glyph_index, s
|
|||||||
STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *vertices);
|
STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *vertices);
|
||||||
// frees the data allocated above
|
// frees the data allocated above
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetCodepointSVG(const stbtt_fontinfo *info, int unicode_codepoint, const char **svg);
|
||||||
|
STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char **svg);
|
||||||
|
// fills svg with the character's SVG data.
|
||||||
|
// returns data size or 0 if SVG not found.
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// BITMAP RENDERING
|
// BITMAP RENDERING
|
||||||
@ -1330,6 +1359,22 @@ static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict)
|
|||||||
return stbtt__cff_get_index(&cff);
|
return stbtt__cff_get_index(&cff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// since most people won't use this, find this table the first time it's needed
|
||||||
|
static int stbtt__get_svg(stbtt_fontinfo *info)
|
||||||
|
{
|
||||||
|
stbtt_uint32 t;
|
||||||
|
if (info->svg < 0) {
|
||||||
|
t = stbtt__find_table(info->data, info->fontstart, "SVG ");
|
||||||
|
if (t) {
|
||||||
|
stbtt_uint32 offset = ttULONG(info->data + t + 2);
|
||||||
|
info->svg = t + offset;
|
||||||
|
} else {
|
||||||
|
info->svg = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return info->svg;
|
||||||
|
}
|
||||||
|
|
||||||
static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart)
|
static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, int fontstart)
|
||||||
{
|
{
|
||||||
stbtt_uint32 cmap, t;
|
stbtt_uint32 cmap, t;
|
||||||
@ -1409,6 +1454,8 @@ static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *data, in
|
|||||||
else
|
else
|
||||||
info->numGlyphs = 0xffff;
|
info->numGlyphs = 0xffff;
|
||||||
|
|
||||||
|
info->svg = -1;
|
||||||
|
|
||||||
// find a cmap encoding table we understand *now* to avoid searching
|
// find a cmap encoding table we understand *now* to avoid searching
|
||||||
// later. (todo: could make this installable)
|
// later. (todo: could make this installable)
|
||||||
// the same regardless of glyph.
|
// the same regardless of glyph.
|
||||||
@ -1757,7 +1804,7 @@ static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy);
|
num_vertices = stbtt__close_shape(vertices, num_vertices, was_off, start_off, sx,sy,scx,scy,cx,cy);
|
||||||
} else if (numberOfContours == -1) {
|
} else if (numberOfContours < 0) {
|
||||||
// Compound shapes.
|
// Compound shapes.
|
||||||
int more = 1;
|
int more = 1;
|
||||||
stbtt_uint8 *comp = data + g + 10;
|
stbtt_uint8 *comp = data + g + 10;
|
||||||
@ -1834,9 +1881,6 @@ static int stbtt__GetGlyphShapeTT(const stbtt_fontinfo *info, int glyph_index, s
|
|||||||
// More components ?
|
// More components ?
|
||||||
more = flags & (1<<5);
|
more = flags & (1<<5);
|
||||||
}
|
}
|
||||||
} else if (numberOfContours < 0) {
|
|
||||||
// @TODO other compound variations?
|
|
||||||
STBTT_assert(0);
|
|
||||||
} else {
|
} else {
|
||||||
// numberOfCounters == 0, do nothing
|
// numberOfCounters == 0, do nothing
|
||||||
}
|
}
|
||||||
@ -2265,6 +2309,48 @@ STBTT_DEF void stbtt_GetGlyphHMetrics(const stbtt_fontinfo *info, int glyph_inde
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetKerningTableLength(const stbtt_fontinfo *info)
|
||||||
|
{
|
||||||
|
stbtt_uint8 *data = info->data + info->kern;
|
||||||
|
|
||||||
|
// we only look at the first table. it must be 'horizontal' and format 0.
|
||||||
|
if (!info->kern)
|
||||||
|
return 0;
|
||||||
|
if (ttUSHORT(data+2) < 1) // number of tables, need at least 1
|
||||||
|
return 0;
|
||||||
|
if (ttUSHORT(data+8) != 1) // horizontal flag must be set in format
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return ttUSHORT(data+10);
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetKerningTable(const stbtt_fontinfo *info, stbtt_kerningentry* table, int table_length)
|
||||||
|
{
|
||||||
|
stbtt_uint8 *data = info->data + info->kern;
|
||||||
|
int k, length;
|
||||||
|
|
||||||
|
// we only look at the first table. it must be 'horizontal' and format 0.
|
||||||
|
if (!info->kern)
|
||||||
|
return 0;
|
||||||
|
if (ttUSHORT(data+2) < 1) // number of tables, need at least 1
|
||||||
|
return 0;
|
||||||
|
if (ttUSHORT(data+8) != 1) // horizontal flag must be set in format
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
length = ttUSHORT(data+10);
|
||||||
|
if (table_length < length)
|
||||||
|
length = table_length;
|
||||||
|
|
||||||
|
for (k = 0; k < length; k++)
|
||||||
|
{
|
||||||
|
table[k].glyph1 = ttUSHORT(data+18+(k*6));
|
||||||
|
table[k].glyph2 = ttUSHORT(data+20+(k*6));
|
||||||
|
table[k].advance = ttSHORT(data+22+(k*6));
|
||||||
|
}
|
||||||
|
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
static int stbtt__GetGlyphKernInfoAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2)
|
static int stbtt__GetGlyphKernInfoAdvance(const stbtt_fontinfo *info, int glyph1, int glyph2)
|
||||||
{
|
{
|
||||||
stbtt_uint8 *data = info->data + info->kern;
|
stbtt_uint8 *data = info->data + info->kern;
|
||||||
@ -2540,8 +2626,7 @@ STBTT_DEF int stbtt_GetGlyphKernAdvance(const stbtt_fontinfo *info, int g1, int
|
|||||||
|
|
||||||
if (info->gpos)
|
if (info->gpos)
|
||||||
xAdvance += stbtt__GetGlyphGPOSInfoAdvance(info, g1, g2);
|
xAdvance += stbtt__GetGlyphGPOSInfoAdvance(info, g1, g2);
|
||||||
|
else if (info->kern)
|
||||||
if (info->kern)
|
|
||||||
xAdvance += stbtt__GetGlyphKernInfoAdvance(info, g1, g2);
|
xAdvance += stbtt__GetGlyphKernInfoAdvance(info, g1, g2);
|
||||||
|
|
||||||
return xAdvance;
|
return xAdvance;
|
||||||
@ -2602,6 +2687,45 @@ STBTT_DEF void stbtt_FreeShape(const stbtt_fontinfo *info, stbtt_vertex *v)
|
|||||||
STBTT_free(v, info->userdata);
|
STBTT_free(v, info->userdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STBTT_DEF stbtt_uint8 *stbtt_FindSVGDoc(const stbtt_fontinfo *info, int gl)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
stbtt_uint8 *data = info->data;
|
||||||
|
stbtt_uint8 *svg_doc_list = data + stbtt__get_svg((stbtt_fontinfo *) info);
|
||||||
|
|
||||||
|
int numEntries = ttUSHORT(svg_doc_list);
|
||||||
|
stbtt_uint8 *svg_docs = svg_doc_list + 2;
|
||||||
|
|
||||||
|
for(i=0; i<numEntries; i++) {
|
||||||
|
stbtt_uint8 *svg_doc = svg_docs + (12 * i);
|
||||||
|
if ((gl >= ttUSHORT(svg_doc)) && (gl <= ttUSHORT(svg_doc + 2)))
|
||||||
|
return svg_doc;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetGlyphSVG(const stbtt_fontinfo *info, int gl, const char **svg)
|
||||||
|
{
|
||||||
|
stbtt_uint8 *data = info->data;
|
||||||
|
stbtt_uint8 *svg_doc;
|
||||||
|
|
||||||
|
if (info->svg == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
svg_doc = stbtt_FindSVGDoc(info, gl);
|
||||||
|
if (svg_doc != NULL) {
|
||||||
|
*svg = (char *) data + info->svg + ttULONG(svg_doc + 4);
|
||||||
|
return ttULONG(svg_doc + 8);
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
STBTT_DEF int stbtt_GetCodepointSVG(const stbtt_fontinfo *info, int unicode_codepoint, const char **svg)
|
||||||
|
{
|
||||||
|
return stbtt_GetGlyphSVG(info, stbtt_FindGlyphIndex(info, unicode_codepoint), svg);
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// antialiasing software rasterizer
|
// antialiasing software rasterizer
|
||||||
@ -2978,7 +3102,7 @@ static void stbtt__fill_active_edges_new(float *scanline, float *scanline_fill,
|
|||||||
float x_top, x_bottom;
|
float x_top, x_bottom;
|
||||||
float sy0,sy1;
|
float sy0,sy1;
|
||||||
float dy = e->fdy;
|
float dy = e->fdy;
|
||||||
// STBTT_assert(e->sy <= y_bottom && e->ey >= y_top);
|
STBTT_assert(e->sy <= y_bottom && e->ey >= y_top);
|
||||||
|
|
||||||
// compute endpoints of line segment clipped to this scanline (if the
|
// compute endpoints of line segment clipped to this scanline (if the
|
||||||
// line segment starts on this scanline. x0 is the intersection of the
|
// line segment starts on this scanline. x0 is the intersection of the
|
||||||
@ -3968,6 +4092,7 @@ static float stbtt__oversample_shift(int oversample)
|
|||||||
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 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;
|
||||||
|
int missing_glyph_added = 0;
|
||||||
|
|
||||||
k=0;
|
k=0;
|
||||||
for (i=0; i < num_ranges; ++i) {
|
for (i=0; i < num_ranges; ++i) {
|
||||||
@ -3979,7 +4104,7 @@ STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stb
|
|||||||
int x0,y0,x1,y1;
|
int x0,y0,x1,y1;
|
||||||
int codepoint = ranges[i].array_of_unicode_codepoints == NULL ? ranges[i].first_unicode_codepoint_in_range + j : ranges[i].array_of_unicode_codepoints[j];
|
int codepoint = ranges[i].array_of_unicode_codepoints == NULL ? ranges[i].first_unicode_codepoint_in_range + j : ranges[i].array_of_unicode_codepoints[j];
|
||||||
int glyph = stbtt_FindGlyphIndex(info, codepoint);
|
int glyph = stbtt_FindGlyphIndex(info, codepoint);
|
||||||
if (glyph == 0 && spc->skip_missing) {
|
if (glyph == 0 && (spc->skip_missing || missing_glyph_added)) {
|
||||||
rects[k].w = rects[k].h = 0;
|
rects[k].w = rects[k].h = 0;
|
||||||
} else {
|
} else {
|
||||||
stbtt_GetGlyphBitmapBoxSubpixel(info,glyph,
|
stbtt_GetGlyphBitmapBoxSubpixel(info,glyph,
|
||||||
@ -3989,6 +4114,8 @@ STBTT_DEF int stbtt_PackFontRangesGatherRects(stbtt_pack_context *spc, const stb
|
|||||||
&x0,&y0,&x1,&y1);
|
&x0,&y0,&x1,&y1);
|
||||||
rects[k].w = (stbrp_coord) (x1-x0 + spc->padding + spc->h_oversample-1);
|
rects[k].w = (stbrp_coord) (x1-x0 + spc->padding + spc->h_oversample-1);
|
||||||
rects[k].h = (stbrp_coord) (y1-y0 + spc->padding + spc->v_oversample-1);
|
rects[k].h = (stbrp_coord) (y1-y0 + spc->padding + spc->v_oversample-1);
|
||||||
|
if (glyph == 0)
|
||||||
|
missing_glyph_added = 1;
|
||||||
}
|
}
|
||||||
++k;
|
++k;
|
||||||
}
|
}
|
||||||
@ -4023,7 +4150,7 @@ STBTT_DEF void stbtt_MakeGlyphBitmapSubpixelPrefilter(const stbtt_fontinfo *info
|
|||||||
// 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, const 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, missing_glyph = -1, return_value = 1;
|
||||||
|
|
||||||
// save current values
|
// save current values
|
||||||
int old_h_over = spc->h_oversample;
|
int old_h_over = spc->h_oversample;
|
||||||
@ -4088,6 +4215,13 @@ STBTT_DEF int stbtt_PackFontRangesRenderIntoRects(stbtt_pack_context *spc, const
|
|||||||
bc->yoff = (float) y0 * recip_v + sub_y;
|
bc->yoff = (float) y0 * recip_v + sub_y;
|
||||||
bc->xoff2 = (x0 + r->w) * recip_h + sub_x;
|
bc->xoff2 = (x0 + r->w) * recip_h + sub_x;
|
||||||
bc->yoff2 = (y0 + r->h) * recip_v + sub_y;
|
bc->yoff2 = (y0 + r->h) * recip_v + sub_y;
|
||||||
|
|
||||||
|
if (glyph == 0)
|
||||||
|
missing_glyph = j;
|
||||||
|
} else if (spc->skip_missing) {
|
||||||
|
return_value = 0;
|
||||||
|
} else if (r->was_packed && r->w == 0 && r->h == 0 && missing_glyph >= 0) {
|
||||||
|
ranges[i].chardata_for_range[j] = ranges[i].chardata_for_range[missing_glyph];
|
||||||
} else {
|
} else {
|
||||||
return_value = 0; // if any fail, report failure
|
return_value = 0; // if any fail, report failure
|
||||||
}
|
}
|
||||||
@ -4389,12 +4523,7 @@ STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float sc
|
|||||||
int w,h;
|
int w,h;
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
|
|
||||||
// if one scale is 0, use same scale for both
|
if (scale == 0) return NULL;
|
||||||
if (scale_x == 0) scale_x = scale_y;
|
|
||||||
if (scale_y == 0) {
|
|
||||||
if (scale_x == 0) return NULL; // if both scales are 0, return NULL
|
|
||||||
scale_y = scale_x;
|
|
||||||
}
|
|
||||||
|
|
||||||
stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale, scale, 0.0f,0.0f, &ix0,&iy0,&ix1,&iy1);
|
stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale, scale, 0.0f,0.0f, &ix0,&iy0,&ix1,&iy1);
|
||||||
|
|
||||||
|
7447
thirdparty/sokol/sokol_app.h
vendored
7447
thirdparty/sokol/sokol_app.h
vendored
File diff suppressed because it is too large
Load Diff
6726
thirdparty/sokol/sokol_gfx.h
vendored
6726
thirdparty/sokol/sokol_gfx.h
vendored
File diff suppressed because it is too large
Load Diff
1789
thirdparty/sokol/util/sokol_fontstash.h
vendored
1789
thirdparty/sokol/util/sokol_fontstash.h
vendored
File diff suppressed because it is too large
Load Diff
1809
thirdparty/sokol/util/sokol_gl.h
vendored
1809
thirdparty/sokol/util/sokol_gl.h
vendored
File diff suppressed because it is too large
Load Diff
19
vlib/gg/gg.v
19
vlib/gg/gg.v
@ -74,6 +74,24 @@ pub:
|
|||||||
|
|
||||||
fn gg_init_sokol_window(user_data voidptr) {
|
fn gg_init_sokol_window(user_data voidptr) {
|
||||||
mut g := &Context(user_data)
|
mut g := &Context(user_data)
|
||||||
|
mtl_desc := C.sg_mtl_context_desc {
|
||||||
|
device: sapp.metal_get_device()
|
||||||
|
renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor
|
||||||
|
drawable_cb: sapp.metal_get_drawable
|
||||||
|
}
|
||||||
|
d3d11_desc := C.sg_d3d11_context_desc {
|
||||||
|
device: sapp.d3d11_get_device()
|
||||||
|
device_context: sapp.d3d11_get_device_context()
|
||||||
|
render_target_view_cb: sapp.d3d11_get_render_target_view
|
||||||
|
depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view
|
||||||
|
}
|
||||||
|
desc := C.sg_desc{
|
||||||
|
context: C.sg_context_desc{
|
||||||
|
metal: mtl_desc
|
||||||
|
d3d11: d3d11_desc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
desc := C.sg_desc{
|
desc := C.sg_desc{
|
||||||
mtl_device: sapp.metal_get_device()
|
mtl_device: sapp.metal_get_device()
|
||||||
mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor
|
mtl_renderpass_descriptor_cb: sapp.metal_get_renderpass_descriptor
|
||||||
@ -83,6 +101,7 @@ fn gg_init_sokol_window(user_data voidptr) {
|
|||||||
d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view
|
d3d11_render_target_view_cb: sapp.d3d11_get_render_target_view
|
||||||
d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view
|
d3d11_depth_stencil_view_cb: sapp.d3d11_get_depth_stencil_view
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
gfx.setup(&desc)
|
gfx.setup(&desc)
|
||||||
sgl_desc := C.sgl_desc_t{}
|
sgl_desc := C.sgl_desc_t{}
|
||||||
sgl.setup(&sgl_desc)
|
sgl.setup(&sgl_desc)
|
||||||
|
@ -6,7 +6,6 @@ pub const (
|
|||||||
used_import = 1 + fontstash.used_import
|
used_import = 1 + fontstash.used_import
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
|
||||||
#flag windows -I @VROOT/thirdparty/freetype/include
|
#flag windows -I @VROOT/thirdparty/freetype/include
|
||||||
#flag windows -L @VROOT/thirdparty/freetype/win64
|
#flag windows -L @VROOT/thirdparty/freetype/win64
|
||||||
|
|
||||||
@ -23,7 +22,11 @@ pub const (
|
|||||||
#flag darwin -lfreetype
|
#flag darwin -lfreetype
|
||||||
|
|
||||||
#flag darwin -lpng -lbz2 -lz
|
#flag darwin -lpng -lbz2 -lz
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#flag linux -I.
|
#flag linux -I.
|
||||||
|
|
||||||
|
@ -8,22 +8,60 @@ pub struct C.sg_desc {
|
|||||||
pipeline_pool_size int
|
pipeline_pool_size int
|
||||||
pass_pool_size int
|
pass_pool_size int
|
||||||
context_pool_size int
|
context_pool_size int
|
||||||
/* GL specific */
|
context C.sg_context_desc
|
||||||
|
/*
|
||||||
|
// GL specific
|
||||||
gl_force_gles2 bool
|
gl_force_gles2 bool
|
||||||
/* Metal-specific */
|
// Metal-specific
|
||||||
mtl_device voidptr
|
mtl_device voidptr
|
||||||
mtl_renderpass_descriptor_cb fn() voidptr
|
mtl_renderpass_descriptor_cb fn() voidptr
|
||||||
mtl_drawable_cb fn() voidptr
|
mtl_drawable_cb fn() voidptr
|
||||||
mtl_global_uniform_buffer_size int
|
mtl_global_uniform_buffer_size int
|
||||||
mtl_sampler_cache_size int
|
mtl_sampler_cache_size int
|
||||||
/* D3D11-specific */
|
// D3D11-specific
|
||||||
d3d11_device voidptr
|
d3d11_device voidptr
|
||||||
d3d11_device_context voidptr
|
d3d11_device_context voidptr
|
||||||
d3d11_render_target_view_cb fn() voidptr
|
d3d11_render_target_view_cb fn() voidptr
|
||||||
d3d11_depth_stencil_view_cb fn() voidptr
|
d3d11_depth_stencil_view_cb fn() voidptr
|
||||||
|
*/
|
||||||
_end_canary u32
|
_end_canary u32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub struct C.sg_context_desc {
|
||||||
|
/*
|
||||||
|
sg_pixel_format color_format;
|
||||||
|
sg_pixel_format depth_format;
|
||||||
|
int sample_count;
|
||||||
|
sg_wgpu_context_desc wgpu;
|
||||||
|
*/
|
||||||
|
sample_count int
|
||||||
|
gl C.sg_gl_context_desc
|
||||||
|
metal C.sg_mtl_context_desc
|
||||||
|
d3d11 C.sg_d3d11_context_desc
|
||||||
|
|
||||||
|
color_format PixelFormat
|
||||||
|
depth_format PixelFormat
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct C.sg_gl_context_desc {
|
||||||
|
gl_force_gles2 bool
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct C.sg_mtl_context_desc {
|
||||||
|
device voidptr
|
||||||
|
renderpass_descriptor_cb fn() voidptr
|
||||||
|
drawable_cb fn() voidptr
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct C.sg_d3d11_context_desc {
|
||||||
|
device voidptr
|
||||||
|
device_context voidptr
|
||||||
|
render_target_view_cb fn() voidptr
|
||||||
|
depth_stencil_view_cb fn() voidptr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pub struct C.sg_pipeline_desc {
|
pub struct C.sg_pipeline_desc {
|
||||||
pub mut:
|
pub mut:
|
||||||
_start_canary u32
|
_start_canary u32
|
||||||
|
Loading…
x
Reference in New Issue
Block a user