bugfixing
parent
6a86f5b533
commit
2fe40f7624
|
@ -161,6 +161,7 @@ WELLSPRINGAPI void Wellspring_DestroyPacker(Wellspring_Packer *packer);
|
|||
#define Wellspring_fabs SDL_fabs
|
||||
#define Wellspring_assert SDL_assert
|
||||
#define Wellspring_strlen SDL_strlen
|
||||
#define Wellspring_sort SDL_qsort
|
||||
|
||||
#else
|
||||
|
||||
|
@ -178,6 +179,7 @@ WELLSPRINGAPI void Wellspring_DestroyPacker(Wellspring_Packer *packer);
|
|||
#define Wellspring_fabs fabs
|
||||
#define Wellspring_assert assert
|
||||
#define Wellspring_strlen strlen
|
||||
#define Wellspring_sort qsort
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
*/
|
||||
|
||||
#include "Wellspring.h"
|
||||
#include "stb_rect_pack.h"
|
||||
|
||||
#define STBTT_malloc(x,u) ((void)(u),Wellspring_malloc(x))
|
||||
#define STBTT_free(x,u) ((void)(u),Wellspring_free(x))
|
||||
|
@ -42,6 +41,9 @@
|
|||
#define STBTT_assert Wellspring_assert
|
||||
#define STBTT_strlen Wellspring_strlen
|
||||
|
||||
#define STBRP_SORT Wellspring_sort
|
||||
#define STBRP_ASSERT Wellspring_assert
|
||||
|
||||
typedef uint8_t stbtt_uint8;
|
||||
typedef int8_t stbtt_int8;
|
||||
typedef uint16_t stbtt_uint16;
|
||||
|
@ -49,11 +51,18 @@ typedef int16_t stbtt_int16;
|
|||
typedef uint32_t stbtt_uint32;
|
||||
typedef int32_t stbtt_int32;
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wunused-function"
|
||||
|
||||
#define STBRP_STATIC
|
||||
#define STB_RECT_PACK_IMPLEMENTATION
|
||||
#include "stb_rect_pack.h"
|
||||
|
||||
#define STBTT_STATIC
|
||||
#define STB_TRUETYPE_IMPLEMENTATION
|
||||
#pragma GCC diagnostic ignored "-Wunused-function"
|
||||
#include "stb_truetype.h"
|
||||
|
||||
#pragma GCC diagnostic warning "-Wunused-function"
|
||||
|
||||
#define INITIAL_QUAD_CAPACITY 128
|
||||
|
||||
/* Structs */
|
||||
|
@ -200,8 +209,7 @@ uint32_t Wellspring_PackFontRanges(
|
|||
return 0;
|
||||
}
|
||||
|
||||
myPacker->rangeCount += numRanges;
|
||||
myPacker->ranges = Wellspring_realloc(myPacker->ranges, sizeof(CharRange) * myPacker->rangeCount);
|
||||
myPacker->ranges = Wellspring_realloc(myPacker->ranges, sizeof(CharRange) * (myPacker->rangeCount + numRanges));
|
||||
|
||||
for (i = 0; i < numRanges; i += 1)
|
||||
{
|
||||
|
@ -212,7 +220,6 @@ uint32_t Wellspring_PackFontRanges(
|
|||
}
|
||||
|
||||
myPacker->rangeCount += numRanges;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -267,7 +274,7 @@ uint8_t Wellspring_Draw(
|
|||
stbtt_aligned_quad charQuad;
|
||||
uint32_t vertexBufferIndex;
|
||||
uint32_t indexBufferIndex;
|
||||
uint32_t i;
|
||||
uint32_t i, j;
|
||||
|
||||
for (i = 0; i < strLength; i += 1)
|
||||
{
|
||||
|
@ -282,18 +289,27 @@ uint8_t Wellspring_Draw(
|
|||
continue;
|
||||
}
|
||||
|
||||
rangeData = NULL;
|
||||
|
||||
/* Find the packed char data */
|
||||
for (i = 0; i < myPacker->rangeCount; i += 1)
|
||||
for (j = 0; j < myPacker->rangeCount; j += 1)
|
||||
{
|
||||
if (
|
||||
codepoint >= myPacker->ranges[i].firstCodepoint &&
|
||||
codepoint < myPacker->ranges[i].firstCodepoint + myPacker->ranges[i].charCount
|
||||
codepoint >= myPacker->ranges[j].firstCodepoint &&
|
||||
codepoint < myPacker->ranges[j].firstCodepoint + myPacker->ranges[j].charCount
|
||||
) {
|
||||
rangeData = myPacker->ranges[i].data;
|
||||
glyphIndex = codepoint - myPacker->ranges[i].firstCodepoint;
|
||||
rangeData = myPacker->ranges[j].data;
|
||||
glyphIndex = codepoint - myPacker->ranges[j].firstCodepoint;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (rangeData == NULL)
|
||||
{
|
||||
/* Requested char wasn't packed! */
|
||||
return 0;
|
||||
}
|
||||
|
||||
stbtt_GetPackedQuad(
|
||||
rangeData,
|
||||
myPacker->width,
|
||||
|
@ -403,6 +419,8 @@ void Wellspring_DestroyPacker(Wellspring_Packer *packer)
|
|||
Packer* myPacker = (Packer*) packer;
|
||||
uint32_t i;
|
||||
|
||||
stbtt_PackEnd(myPacker->context);
|
||||
|
||||
for (i = 0; i < myPacker->rangeCount; i += 1)
|
||||
{
|
||||
Wellspring_free(myPacker->ranges[i].data);
|
||||
|
|
Loading…
Reference in New Issue