REVIEWED: Naming: length vs size
This commit is contained in:
parent
6e76baa6a9
commit
9362eaf9c6
6 changed files with 63 additions and 63 deletions
|
@ -277,8 +277,8 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
// Draw the info text below the main message
|
// Draw the info text below the main message
|
||||||
int size = (int)strlen(messages[message].text);
|
int size = (int)strlen(messages[message].text);
|
||||||
int len = GetCodepointCount(messages[message].text);
|
int length = GetCodepointCount(messages[message].text);
|
||||||
const char *info = TextFormat("%s %u characters %i bytes", messages[message].language, len, size);
|
const char *info = TextFormat("%s %u characters %i bytes", messages[message].language, length, size);
|
||||||
sz = MeasureTextEx(GetFontDefault(), info, 10, 1.0f);
|
sz = MeasureTextEx(GetFontDefault(), info, 10, 1.0f);
|
||||||
Vector2 pos = { textRect.x + textRect.width - sz.x, msgRect.y + msgRect.height - sz.y - 2 };
|
Vector2 pos = { textRect.x + textRect.width - sz.x, msgRect.y + msgRect.height - sz.y - 2 };
|
||||||
DrawText(info, (int)pos.x, (int)pos.y, 10, RAYWHITE);
|
DrawText(info, (int)pos.x, (int)pos.y, 10, RAYWHITE);
|
||||||
|
|
|
@ -2767,9 +2767,9 @@ const char *GetFileNameWithoutExt(const char *filePath)
|
||||||
|
|
||||||
if (filePath != NULL) strcpy(fileName, GetFileName(filePath)); // Get filename with extension
|
if (filePath != NULL) strcpy(fileName, GetFileName(filePath)); // Get filename with extension
|
||||||
|
|
||||||
int len = (int)strlen(fileName);
|
int size = (int)strlen(fileName); // Get size in bytes
|
||||||
|
|
||||||
for (int i = 0; (i < len) && (i < MAX_FILENAMEWITHOUTEXT_LENGTH); i++)
|
for (int i = 0; (i < size) && (i < MAX_FILENAMEWITHOUTEXT_LENGTH); i++)
|
||||||
{
|
{
|
||||||
if (fileName[i] == '.')
|
if (fileName[i] == '.')
|
||||||
{
|
{
|
||||||
|
|
|
@ -1336,7 +1336,7 @@ RLAPI int *LoadCodepoints(const char *text, int *count); // Load al
|
||||||
RLAPI void UnloadCodepoints(int *codepoints); // Unload codepoints data from memory
|
RLAPI void UnloadCodepoints(int *codepoints); // Unload codepoints data from memory
|
||||||
RLAPI int GetCodepointCount(const char *text); // Get total number of codepoints in a UTF-8 encoded string
|
RLAPI int GetCodepointCount(const char *text); // Get total number of codepoints in a UTF-8 encoded string
|
||||||
RLAPI int GetCodepoint(const char *text, int *bytesProcessed); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
|
RLAPI int GetCodepoint(const char *text, int *bytesProcessed); // Get next codepoint in a UTF-8 encoded string, 0x3f('?') is returned on failure
|
||||||
RLAPI const char *CodepointToUTF8(int codepoint, int *byteLength); // Encode one codepoint into UTF-8 byte array (array length returned as parameter)
|
RLAPI const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode one codepoint into UTF-8 byte array (array length returned as parameter)
|
||||||
RLAPI char *TextCodepointsToUTF8(int *codepoints, int length); // Encode text as codepoints array into UTF-8 text string (WARNING: memory must be freed!)
|
RLAPI char *TextCodepointsToUTF8(int *codepoints, int length); // Encode text as codepoints array into UTF-8 text string (WARNING: memory must be freed!)
|
||||||
|
|
||||||
// Text strings management functions (no UTF-8 strings, only byte chars)
|
// Text strings management functions (no UTF-8 strings, only byte chars)
|
||||||
|
|
70
src/rlgl.h
70
src/rlgl.h
|
@ -321,7 +321,7 @@ typedef struct rlRenderBatch {
|
||||||
rlVertexBuffer *vertexBuffer; // Dynamic buffer(s) for vertex data
|
rlVertexBuffer *vertexBuffer; // Dynamic buffer(s) for vertex data
|
||||||
|
|
||||||
rlDrawCall *draws; // Draw calls array, depends on textureId
|
rlDrawCall *draws; // Draw calls array, depends on textureId
|
||||||
int drawCounterer; // Draw calls counter
|
int drawCounter; // Draw calls counter
|
||||||
float currentDepth; // Current depth value for next draw
|
float currentDepth; // Current depth value for next draw
|
||||||
} rlRenderBatch;
|
} rlRenderBatch;
|
||||||
|
|
||||||
|
@ -1210,34 +1210,34 @@ void rlBegin(int mode)
|
||||||
{
|
{
|
||||||
// Draw mode can be RL_LINES, RL_TRIANGLES and RL_QUADS
|
// Draw mode can be RL_LINES, RL_TRIANGLES and RL_QUADS
|
||||||
// NOTE: In all three cases, vertex are accumulated over default internal vertex buffer
|
// NOTE: In all three cases, vertex are accumulated over default internal vertex buffer
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].mode != mode)
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode != mode)
|
||||||
{
|
{
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount > 0)
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount > 0)
|
||||||
{
|
{
|
||||||
// Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4,
|
// Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4,
|
||||||
// that way, following QUADS drawing will keep aligned with index processing
|
// that way, following QUADS drawing will keep aligned with index processing
|
||||||
// It implies adding some extra alignment vertex at the end of the draw,
|
// It implies adding some extra alignment vertex at the end of the draw,
|
||||||
// those vertex are not processed but they are considered as an additional offset
|
// those vertex are not processed but they are considered as an additional offset
|
||||||
// for the next set of vertex to be drawn
|
// for the next set of vertex to be drawn
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].mode == RL_LINES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount < 4)? RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount : RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount%4);
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_LINES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount : RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4);
|
||||||
else if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].mode == RL_TRIANGLES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount < 4)? 1 : (4 - (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount%4)));
|
else if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4)));
|
||||||
else RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment = 0;
|
else RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = 0;
|
||||||
|
|
||||||
if (!rlCheckRenderBatchLimit(RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment))
|
if (!rlCheckRenderBatchLimit(RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment))
|
||||||
{
|
{
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment;
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].cCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].cCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment;
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].tcCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].tcCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment;
|
||||||
|
|
||||||
RLGL.currentBatch->drawCounterer++;
|
RLGL.currentBatch->drawCounter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RLGL.currentBatch->drawCounterer >= RL_DEFAULT_BATCH_DRAWCALLS) rlDrawRenderBatch(RLGL.currentBatch);
|
if (RLGL.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) rlDrawRenderBatch(RLGL.currentBatch);
|
||||||
|
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].mode = mode;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode = mode;
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount = 0;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount = 0;
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].textureId = RLGL.State.defaultTextureId;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = RLGL.State.defaultTextureId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1319,7 +1319,7 @@ void rlVertex3f(float x, float y, float z)
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vertices[3*RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter + 2] = tz;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vertices[3*RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter + 2] = tz;
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter++;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter++;
|
||||||
|
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount++;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount++;
|
||||||
}
|
}
|
||||||
else TRACELOG(RL_LOG_ERROR, "RLGL: Batch elements overflow");
|
else TRACELOG(RL_LOG_ERROR, "RLGL: Batch elements overflow");
|
||||||
}
|
}
|
||||||
|
@ -1401,33 +1401,33 @@ void rlSetTexture(unsigned int id)
|
||||||
#if defined(GRAPHICS_API_OPENGL_11)
|
#if defined(GRAPHICS_API_OPENGL_11)
|
||||||
rlEnableTexture(id);
|
rlEnableTexture(id);
|
||||||
#else
|
#else
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].textureId != id)
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId != id)
|
||||||
{
|
{
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount > 0)
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount > 0)
|
||||||
{
|
{
|
||||||
// Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4,
|
// Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4,
|
||||||
// that way, following QUADS drawing will keep aligned with index processing
|
// that way, following QUADS drawing will keep aligned with index processing
|
||||||
// It implies adding some extra alignment vertex at the end of the draw,
|
// It implies adding some extra alignment vertex at the end of the draw,
|
||||||
// those vertex are not processed but they are considered as an additional offset
|
// those vertex are not processed but they are considered as an additional offset
|
||||||
// for the next set of vertex to be drawn
|
// for the next set of vertex to be drawn
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].mode == RL_LINES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount < 4)? RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount : RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount%4);
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_LINES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount : RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4);
|
||||||
else if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].mode == RL_TRIANGLES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount < 4)? 1 : (4 - (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount%4)));
|
else if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode == RL_TRIANGLES) RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = ((RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount < 4)? 1 : (4 - (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount%4)));
|
||||||
else RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment = 0;
|
else RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment = 0;
|
||||||
|
|
||||||
if (!rlCheckRenderBatchLimit(RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment))
|
if (!rlCheckRenderBatchLimit(RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment))
|
||||||
{
|
{
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].vCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment;
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].cCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].cCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment;
|
||||||
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].tcCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexAlignment;
|
RLGL.currentBatch->vertexBuffer[RLGL.currentBatch->currentBuffer].tcCounter += RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexAlignment;
|
||||||
|
|
||||||
RLGL.currentBatch->drawCounterer++;
|
RLGL.currentBatch->drawCounter++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RLGL.currentBatch->drawCounterer >= RL_DEFAULT_BATCH_DRAWCALLS) rlDrawRenderBatch(RLGL.currentBatch);
|
if (RLGL.currentBatch->drawCounter >= RL_DEFAULT_BATCH_DRAWCALLS) rlDrawRenderBatch(RLGL.currentBatch);
|
||||||
|
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].textureId = id;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = id;
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounterer - 1].vertexCount = 0;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1910,12 +1910,12 @@ void rlLoadExtensions(void *loader)
|
||||||
const char *extensions = (const char *)glGetString(GL_EXTENSIONS); // One big const string
|
const char *extensions = (const char *)glGetString(GL_EXTENSIONS); // One big const string
|
||||||
|
|
||||||
// NOTE: We have to duplicate string because glGetString() returns a const string
|
// NOTE: We have to duplicate string because glGetString() returns a const string
|
||||||
int len = strlen(extensions) + 1;
|
int size = strlen(extensions) + 1; // Get extensions string size in bytes
|
||||||
char *extensionsDup = (char *)RL_CALLOC(len, sizeof(char));
|
char *extensionsDup = (char *)RL_CALLOC(size, sizeof(char));
|
||||||
strcpy(extensionsDup, extensions);
|
strcpy(extensionsDup, extensions);
|
||||||
extList[numExt] = extensionsDup;
|
extList[numExt] = extensionsDup;
|
||||||
|
|
||||||
for (int i = 0; i < len; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
if (extensionsDup[i] == ' ')
|
if (extensionsDup[i] == ' ')
|
||||||
{
|
{
|
||||||
|
@ -2275,7 +2275,7 @@ rlRenderBatch rlLoadRenderBatch(int numBuffers, int bufferElements)
|
||||||
}
|
}
|
||||||
|
|
||||||
batch.bufferCount = numBuffers; // Record buffer count
|
batch.bufferCount = numBuffers; // Record buffer count
|
||||||
batch.drawCounterer = 1; // Reset draws counter
|
batch.drawCounter = 1; // Reset draws counter
|
||||||
batch.currentDepth = -1.0f; // Reset depth value
|
batch.currentDepth = -1.0f; // Reset depth value
|
||||||
//--------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------
|
||||||
#endif
|
#endif
|
||||||
|
@ -2447,7 +2447,7 @@ void rlDrawRenderBatch(rlRenderBatch *batch)
|
||||||
// NOTE: Batch system accumulates calls by texture0 changes, additional textures are enabled for all the draw calls
|
// NOTE: Batch system accumulates calls by texture0 changes, additional textures are enabled for all the draw calls
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
|
||||||
for (int i = 0, vertexOffset = 0; i < batch->drawCounterer; i++)
|
for (int i = 0, vertexOffset = 0; i < batch->drawCounter; i++)
|
||||||
{
|
{
|
||||||
// Bind current draw call texture, activated as GL_TEXTURE0 and binded to sampler2D texture0 by default
|
// Bind current draw call texture, activated as GL_TEXTURE0 and binded to sampler2D texture0 by default
|
||||||
glBindTexture(GL_TEXTURE_2D, batch->draws[i].textureId);
|
glBindTexture(GL_TEXTURE_2D, batch->draws[i].textureId);
|
||||||
|
@ -2510,7 +2510,7 @@ void rlDrawRenderBatch(rlRenderBatch *batch)
|
||||||
for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) RLGL.State.activeTextureId[i] = 0;
|
for (int i = 0; i < RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS; i++) RLGL.State.activeTextureId[i] = 0;
|
||||||
|
|
||||||
// Reset draws counter to one draw for the batch
|
// Reset draws counter to one draw for the batch
|
||||||
batch->drawCounterer = 1;
|
batch->drawCounter = 1;
|
||||||
//------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Change to next buffer in the list (in case of multi-buffering)
|
// Change to next buffer in the list (in case of multi-buffering)
|
||||||
|
|
40
src/text.c
40
src/text.c
|
@ -851,14 +851,14 @@ void DrawTextEx(Font font, const char *text, Vector2 position, float fontSize, f
|
||||||
{
|
{
|
||||||
if (font.texture.id == 0) font = GetFontDefault(); // Security check in case of not valid font
|
if (font.texture.id == 0) font = GetFontDefault(); // Security check in case of not valid font
|
||||||
|
|
||||||
int length = TextLength(text); // Total length in bytes of the text, scanned by codepoints in loop
|
int size = TextLength(text); // Total size in bytes of the text, scanned by codepoints in loop
|
||||||
|
|
||||||
int textOffsetY = 0; // Offset between lines (on line break '\n')
|
int textOffsetY = 0; // Offset between lines (on line break '\n')
|
||||||
float textOffsetX = 0.0f; // Offset X to next character to draw
|
float textOffsetX = 0.0f; // Offset X to next character to draw
|
||||||
|
|
||||||
float scaleFactor = fontSize/font.baseSize; // Character quad scaling factor
|
float scaleFactor = fontSize/font.baseSize; // Character quad scaling factor
|
||||||
|
|
||||||
for (int i = 0; i < length;)
|
for (int i = 0; i < size;)
|
||||||
{
|
{
|
||||||
// Get next codepoint from byte string and glyph index in font
|
// Get next codepoint from byte string and glyph index in font
|
||||||
int codepointByteCount = 0;
|
int codepointByteCount = 0;
|
||||||
|
@ -950,9 +950,9 @@ int MeasureText(const char *text, int fontSize)
|
||||||
// Measure string size for Font
|
// Measure string size for Font
|
||||||
Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing)
|
Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing)
|
||||||
{
|
{
|
||||||
int len = TextLength(text);
|
int size = TextLength(text); // Get size in bytes of text
|
||||||
int tempLen = 0; // Used to count longer text line num chars
|
int tempByteCounter = 0; // Used to count longer text line num chars
|
||||||
int lenCounter = 0;
|
int byteCounter = 0;
|
||||||
|
|
||||||
float textWidth = 0.0f;
|
float textWidth = 0.0f;
|
||||||
float tempTextWidth = 0.0f; // Used to count longer text line width
|
float tempTextWidth = 0.0f; // Used to count longer text line width
|
||||||
|
@ -963,9 +963,9 @@ Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing
|
||||||
int letter = 0; // Current character
|
int letter = 0; // Current character
|
||||||
int index = 0; // Index position in sprite font
|
int index = 0; // Index position in sprite font
|
||||||
|
|
||||||
for (int i = 0; i < len; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
lenCounter++;
|
byteCounter++;
|
||||||
|
|
||||||
int next = 0;
|
int next = 0;
|
||||||
letter = GetCodepoint(&text[i], &next);
|
letter = GetCodepoint(&text[i], &next);
|
||||||
|
@ -984,18 +984,18 @@ Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (tempTextWidth < textWidth) tempTextWidth = textWidth;
|
if (tempTextWidth < textWidth) tempTextWidth = textWidth;
|
||||||
lenCounter = 0;
|
byteCounter = 0;
|
||||||
textWidth = 0;
|
textWidth = 0;
|
||||||
textHeight += ((float)font.baseSize*1.5f); // NOTE: Fixed line spacing of 1.5 lines
|
textHeight += ((float)font.baseSize*1.5f); // NOTE: Fixed line spacing of 1.5 lines
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tempLen < lenCounter) tempLen = lenCounter;
|
if (tempByteCounter < byteCounter) tempByteCounter = byteCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tempTextWidth < textWidth) tempTextWidth = textWidth;
|
if (tempTextWidth < textWidth) tempTextWidth = textWidth;
|
||||||
|
|
||||||
Vector2 vec = { 0 };
|
Vector2 vec = { 0 };
|
||||||
vec.x = tempTextWidth*scaleFactor + (float)((tempLen - 1)*spacing); // Adds chars spacing to measure
|
vec.x = tempTextWidth*scaleFactor + (float)((tempByteCounter - 1)*spacing); // Adds chars spacing to measure
|
||||||
vec.y = textHeight*scaleFactor;
|
vec.y = textHeight*scaleFactor;
|
||||||
|
|
||||||
return vec;
|
return vec;
|
||||||
|
@ -1429,28 +1429,28 @@ char *TextCodepointsToUTF8(int *codepoints, int length)
|
||||||
|
|
||||||
// Encode codepoint into utf8 text (char array length returned as parameter)
|
// Encode codepoint into utf8 text (char array length returned as parameter)
|
||||||
// NOTE: It uses a static array to store UTF-8 bytes
|
// NOTE: It uses a static array to store UTF-8 bytes
|
||||||
RLAPI const char *CodepointToUTF8(int codepoint, int *byteLength)
|
RLAPI const char *CodepointToUTF8(int codepoint, int *byteSize)
|
||||||
{
|
{
|
||||||
static char utf8[6] = { 0 };
|
static char utf8[6] = { 0 };
|
||||||
int length = 0;
|
int size = 0; // Byte size of codepoint
|
||||||
|
|
||||||
if (codepoint <= 0x7f)
|
if (codepoint <= 0x7f)
|
||||||
{
|
{
|
||||||
utf8[0] = (char)codepoint;
|
utf8[0] = (char)codepoint;
|
||||||
length = 1;
|
size = 1;
|
||||||
}
|
}
|
||||||
else if (codepoint <= 0x7ff)
|
else if (codepoint <= 0x7ff)
|
||||||
{
|
{
|
||||||
utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0);
|
utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0);
|
||||||
utf8[1] = (char)((codepoint & 0x3f) | 0x80);
|
utf8[1] = (char)((codepoint & 0x3f) | 0x80);
|
||||||
length = 2;
|
size = 2;
|
||||||
}
|
}
|
||||||
else if (codepoint <= 0xffff)
|
else if (codepoint <= 0xffff)
|
||||||
{
|
{
|
||||||
utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0);
|
utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0);
|
||||||
utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80);
|
utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80);
|
||||||
utf8[2] = (char)((codepoint & 0x3f) | 0x80);
|
utf8[2] = (char)((codepoint & 0x3f) | 0x80);
|
||||||
length = 3;
|
size = 3;
|
||||||
}
|
}
|
||||||
else if (codepoint <= 0x10ffff)
|
else if (codepoint <= 0x10ffff)
|
||||||
{
|
{
|
||||||
|
@ -1458,10 +1458,10 @@ RLAPI const char *CodepointToUTF8(int codepoint, int *byteLength)
|
||||||
utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80);
|
utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80);
|
||||||
utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80);
|
utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80);
|
||||||
utf8[3] = (char)((codepoint & 0x3f) | 0x80);
|
utf8[3] = (char)((codepoint & 0x3f) | 0x80);
|
||||||
length = 4;
|
size = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
*byteLength = length;
|
*byteSize = size;
|
||||||
|
|
||||||
return utf8;
|
return utf8;
|
||||||
}
|
}
|
||||||
|
@ -1502,7 +1502,7 @@ void UnloadCodepoints(int *codepoints)
|
||||||
// NOTE: If an invalid UTF-8 sequence is encountered a '?'(0x3f) codepoint is counted instead
|
// NOTE: If an invalid UTF-8 sequence is encountered a '?'(0x3f) codepoint is counted instead
|
||||||
int GetCodepointCount(const char *text)
|
int GetCodepointCount(const char *text)
|
||||||
{
|
{
|
||||||
unsigned int len = 0;
|
unsigned int length = 0;
|
||||||
char *ptr = (char *)&text[0];
|
char *ptr = (char *)&text[0];
|
||||||
|
|
||||||
while (*ptr != '\0')
|
while (*ptr != '\0')
|
||||||
|
@ -1513,10 +1513,10 @@ int GetCodepointCount(const char *text)
|
||||||
if (letter == 0x3f) ptr += 1;
|
if (letter == 0x3f) ptr += 1;
|
||||||
else ptr += next;
|
else ptr += next;
|
||||||
|
|
||||||
len++;
|
length++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return length;
|
||||||
}
|
}
|
||||||
#endif // SUPPORT_TEXT_MANIPULATION
|
#endif // SUPPORT_TEXT_MANIPULATION
|
||||||
|
|
||||||
|
|
|
@ -547,7 +547,7 @@ bool ExportImageAsCode(Image image, const char *fileName)
|
||||||
for (int i = 0; i < dataSize - 1; i++) byteCount += sprintf(txtData + byteCount, ((i%TEXT_BYTES_PER_LINE == 0)? "0x%x,\n" : "0x%x, "), ((unsigned char *)image.data)[i]);
|
for (int i = 0; i < dataSize - 1; i++) byteCount += sprintf(txtData + byteCount, ((i%TEXT_BYTES_PER_LINE == 0)? "0x%x,\n" : "0x%x, "), ((unsigned char *)image.data)[i]);
|
||||||
byteCount += sprintf(txtData + byteCount, "0x%x };\n", ((unsigned char *)image.data)[dataSize - 1]);
|
byteCount += sprintf(txtData + byteCount, "0x%x };\n", ((unsigned char *)image.data)[dataSize - 1]);
|
||||||
|
|
||||||
// NOTE: Text data length exported is determined by '\0' (NULL) character
|
// NOTE: Text data size exported is determined by '\0' (NULL) character
|
||||||
success = SaveFileText(fileName, txtData);
|
success = SaveFileText(fileName, txtData);
|
||||||
|
|
||||||
RL_FREE(txtData);
|
RL_FREE(txtData);
|
||||||
|
@ -1147,7 +1147,7 @@ Image ImageText(const char *text, int fontSize, Color color)
|
||||||
// Create an image from text (custom sprite font)
|
// Create an image from text (custom sprite font)
|
||||||
Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint)
|
Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint)
|
||||||
{
|
{
|
||||||
int length = (int)strlen(text);
|
int size = (int)strlen(text); // Get size in bytes of text
|
||||||
|
|
||||||
int textOffsetX = 0; // Image drawing position X
|
int textOffsetX = 0; // Image drawing position X
|
||||||
int textOffsetY = 0; // Offset between lines (on line break '\n')
|
int textOffsetY = 0; // Offset between lines (on line break '\n')
|
||||||
|
@ -1158,7 +1158,7 @@ Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Co
|
||||||
// Create image to store text
|
// Create image to store text
|
||||||
Image imText = GenImageColor((int)imSize.x, (int)imSize.y, BLANK);
|
Image imText = GenImageColor((int)imSize.x, (int)imSize.y, BLANK);
|
||||||
|
|
||||||
for (int i = 0; i < length; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
// Get next codepoint from byte string and glyph index in font
|
// Get next codepoint from byte string and glyph index in font
|
||||||
int codepointByteCount = 0;
|
int codepointByteCount = 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue