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