Browse Source

Apllied vs2010 compiler fixes from fontstash.

shared-context
Mikko Mononen 11 years ago
parent
commit
9f4993e6ff
1 changed files with 30 additions and 26 deletions
  1. +30
    -26
      src/fontstash.h

+ 30
- 26
src/fontstash.h View File

@@ -241,6 +241,8 @@ static void* fons__tmpalloc(size_t size, void* up)

static void fons__tmpfree(void* ptr, void* up)
{
(void)ptr;
(void)up;
// empty
}

@@ -314,7 +316,7 @@ static struct FONSatlas* fons__allocAtlas(int w, int h, int nnodes)
// Init root node.
atlas->nodes[0].x = 0;
atlas->nodes[0].y = 0;
atlas->nodes[0].width = w;
atlas->nodes[0].width = (short)w;
atlas->nnodes++;

return atlas;
@@ -336,9 +338,9 @@ static int fons__atlasInsertNode(struct FONSatlas* atlas, int idx, int x, int y,
}
for (i = atlas->nnodes; i > idx; i--)
atlas->nodes[i] = atlas->nodes[i-1];
atlas->nodes[idx].x = x;
atlas->nodes[idx].y = y;
atlas->nodes[idx].width = w;
atlas->nodes[idx].x = (short)x;
atlas->nodes[idx].y = (short)y;
atlas->nodes[idx].width = (short)w;
atlas->nnodes++;

return 1;
@@ -365,8 +367,8 @@ static int fons__atlasAddSkylineLevel(struct FONSatlas* atlas, int idx, int x, i
for (i = idx+1; i < atlas->nnodes; i++) {
if (atlas->nodes[i].x < atlas->nodes[i-1].x + atlas->nodes[i-1].width) {
int shrink = atlas->nodes[i-1].x + atlas->nodes[i-1].width - atlas->nodes[i].x;
atlas->nodes[i].x += shrink;
atlas->nodes[i].width -= shrink;
atlas->nodes[i].x += (short)shrink;
atlas->nodes[i].width -= (short)shrink;
if (atlas->nodes[i].width <= 0) {
fons__atlasRemoveNode(atlas, i);
i--;
@@ -397,9 +399,10 @@ static int fons__atlasRectFits(struct FONSatlas* atlas, int i, int w, int h)
// (think tetris block being dropped at that position). Or -1 if no space found.
int x = atlas->nodes[i].x;
int y = atlas->nodes[i].y;
int spaceLeft;
if (x + w > atlas->width)
return -1;
int spaceLeft = w;
spaceLeft = w;
while (spaceLeft > 0) {
if (i == atlas->nnodes) return -1;
y = fons__maxi(y, atlas->nodes[i].y);
@@ -413,10 +416,10 @@ static int fons__atlasRectFits(struct FONSatlas* atlas, int i, int w, int h)
static int fons__atlasAddRect(struct FONSatlas* atlas, int rw, int rh, int* rx, int* ry)
{
int besth = atlas->height, bestw = atlas->width, besti = -1;
int bestx, besty, i;
int bestx = -1, besty = -1, i;

// Bottom left fit heuristic.
for (i = 0; i < atlas->nnodes; i++) {
for (i = 0; i < atlas->nnodes; i++) {
int y = fons__atlasRectFits(atlas, i, rw, rh);
if (y != -1) {
if (y + rh < besth || (y + rh == besth && atlas->nodes[i].width < bestw)) {
@@ -635,7 +638,7 @@ int fonsAddFontMem(struct FONScontext* stash, const char* name, unsigned char* d
// Read in the font data.
font->dataSize = dataSize;
font->data = data;
font->freeData = freeData;
font->freeData = (unsigned char)freeData;

// Init stb_truetype
stash->nscratch = 0;
@@ -731,6 +734,7 @@ static void fons__blur(struct FONScontext* stash, unsigned char* dst, int w, int
{
int alpha;
float sigma;
(void)stash;

if (blur < 1)
return;
@@ -791,13 +795,13 @@ static struct FONSglyph* fons__getGlyph(struct FONScontext* stash, struct FONSfo
glyph->size = isize;
glyph->blur = iblur;
glyph->index = g;
glyph->x0 = gx;
glyph->y0 = gy;
glyph->x1 = glyph->x0+gw;
glyph->y1 = glyph->y0+gh;
glyph->x0 = (short)gx;
glyph->y0 = (short)gy;
glyph->x1 = (short)(glyph->x0+gw);
glyph->y1 = (short)(glyph->y0+gh);
glyph->xadv = (short)(scale * advance * 10.0f);
glyph->xoff = x0 - pad;
glyph->yoff = y0 - pad;
glyph->xoff = (short)(x0 - pad);
glyph->yoff = (short)(y0 - pad);
glyph->next = 0;

// Insert char to hash lookup.
@@ -858,16 +862,16 @@ static void fons__getQuad(struct FONScontext* stash, struct FONSfont* font,
// Each glyph has 2px border to allow good interpolation,
// one pixel to prevent leaking, and one to allow good interpolation for rendering.
// Inset the texture region by one pixel for corret interpolation.
xoff = glyph->xoff+1;
yoff = glyph->yoff+1;
x0 = glyph->x0+1;
y0 = glyph->y0+1;
x1 = glyph->x1-1;
y1 = glyph->y1-1;
xoff = (short)(glyph->xoff+1);
yoff = (short)(glyph->yoff+1);
x0 = (float)(glyph->x0+1);
y0 = (float)(glyph->y0+1);
x1 = (float)(glyph->x1-1);
y1 = (float)(glyph->y1-1);

if (stash->params.flags & FONS_ZERO_TOPLEFT) {
rx = (int)(*x + xoff);
ry = (int)(*y + yoff);
rx = (float)(int)(*x + xoff);
ry = (float)(int)(*y + yoff);

q->x0 = rx;
q->y0 = ry;
@@ -879,8 +883,8 @@ static void fons__getQuad(struct FONScontext* stash, struct FONSfont* font,
q->s1 = x1 * stash->itw;
q->t1 = y1 * stash->ith;
} else {
rx = (int)(*x + xoff);
ry = (int)(*y - yoff);
rx = (float)(int)(*x + xoff);
ry = (float)(int)(*y - yoff);

q->x0 = rx;
q->y0 = ry;


Loading…
Cancel
Save