summaryrefslogtreecommitdiffhomepage
path: root/src/rtextures.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rtextures.c')
-rw-r--r--src/rtextures.c77
1 files changed, 47 insertions, 30 deletions
diff --git a/src/rtextures.c b/src/rtextures.c
index 9b823378..cad3545c 100644
--- a/src/rtextures.c
+++ b/src/rtextures.c
@@ -4,6 +4,9 @@
*
* CONFIGURATION:
*
+* #define SUPPORT_MODULE_RTEXTURES
+* rtextures module is included in the build
+*
* #define SUPPORT_FILEFORMAT_BMP
* #define SUPPORT_FILEFORMAT_PNG
* #define SUPPORT_FILEFORMAT_TGA
@@ -65,11 +68,13 @@
#include "config.h" // Defines module configuration flags
#endif
+#if defined(SUPPORT_MODULE_RTEXTURES)
+
#include "utils.h" // Required for: TRACELOG() and fopen() Android mapping
#include "rlgl.h" // OpenGL abstraction layer to OpenGL 1.1, 3.3 or ES2
#include <stdlib.h> // Required for: malloc(), free()
-#include <string.h> // Required for: strlen() [Used in ImageTextEx()]
+#include <string.h> // Required for: strlen() [Used in ImageTextEx()], strcmp() [Used in LoadImageFromMemory()]
#include <math.h> // Required for: fabsf()
#include <stdio.h> // Required for: sprintf() [Used in ExportImageAsCode()]
@@ -296,36 +301,33 @@ Image LoadImageAnim(const char *fileName, int *frames)
}
// Load image from memory buffer, fileType refers to extension: i.e. ".png"
+// WARNING: File extension must be provided in lower-case
Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, int dataSize)
{
Image image = { 0 };
- char fileExtLower[16] = { 0 };
- strcpy(fileExtLower, TextToLower(fileType));
-
#if defined(SUPPORT_FILEFORMAT_PNG)
- if ((TextIsEqual(fileExtLower, ".png"))
+ if ((strcmp(fileType, ".png") == 0)
#else
if ((false)
#endif
#if defined(SUPPORT_FILEFORMAT_BMP)
- || (TextIsEqual(fileExtLower, ".bmp"))
+ || (strcmp(fileType, ".bmp") == 0)
#endif
#if defined(SUPPORT_FILEFORMAT_TGA)
- || (TextIsEqual(fileExtLower, ".tga"))
+ || (strcmp(fileType, ".tga") == 0)
#endif
#if defined(SUPPORT_FILEFORMAT_JPG)
- || (TextIsEqual(fileExtLower, ".jpg") ||
- TextIsEqual(fileExtLower, ".jpeg"))
+ || ((strcmp(fileType, ".jpg") == 0) || (strcmp(fileType, ".jpeg") == 0))
#endif
#if defined(SUPPORT_FILEFORMAT_GIF)
- || (TextIsEqual(fileExtLower, ".gif"))
+ || (strcmp(fileType, ".gif") == 0)
#endif
#if defined(SUPPORT_FILEFORMAT_PIC)
- || (TextIsEqual(fileExtLower, ".pic"))
+ || (strcmp(fileType, ".pic") == 0)
#endif
#if defined(SUPPORT_FILEFORMAT_PSD)
- || (TextIsEqual(fileExtLower, ".psd"))
+ || (strcmp(fileType, ".psd") == 0)
#endif
)
{
@@ -350,7 +352,7 @@ Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, i
#endif
}
#if defined(SUPPORT_FILEFORMAT_HDR)
- else if (TextIsEqual(fileExtLower, ".hdr"))
+ else if (strcmp(fileType, ".hdr") == 0)
{
#if defined(STBI_REQUIRED)
if (fileData != NULL)
@@ -373,7 +375,7 @@ Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, i
}
#endif
#if defined(SUPPORT_FILEFORMAT_QOI)
- else if (TextIsEqual(fileExtLower, ".qoi"))
+ else if (strcmp(fileType, ".qoi") == 0)
{
qoi_desc desc = { 0 };
image.data = qoi_decode(fileData, dataSize, &desc, 4);
@@ -384,19 +386,19 @@ Image LoadImageFromMemory(const char *fileType, const unsigned char *fileData, i
}
#endif
#if defined(SUPPORT_FILEFORMAT_DDS)
- else if (TextIsEqual(fileExtLower, ".dds")) image = LoadDDS(fileData, dataSize);
+ else if (strcmp(fileType, ".dds") == 0) image = LoadDDS(fileData, dataSize);
#endif
#if defined(SUPPORT_FILEFORMAT_PKM)
- else if (TextIsEqual(fileExtLower, ".pkm")) image = LoadPKM(fileData, dataSize);
+ else if (strcmp(fileType, ".pkm") == 0) image = LoadPKM(fileData, dataSize);
#endif
#if defined(SUPPORT_FILEFORMAT_KTX)
- else if (TextIsEqual(fileExtLower, ".ktx")) image = LoadKTX(fileData, dataSize);
+ else if (strcmp(fileType, ".ktx") == 0) image = LoadKTX(fileData, dataSize);
#endif
#if defined(SUPPORT_FILEFORMAT_PVR)
- else if (TextIsEqual(fileExtLower, ".pvr")) image = LoadPVR(fileData, dataSize);
+ else if (strcmp(fileType, ".pvr") == 0) image = LoadPVR(fileData, dataSize);
#endif
#if defined(SUPPORT_FILEFORMAT_ASTC)
- else if (TextIsEqual(fileExtLower, ".astc")) image = LoadASTC(fileData, dataSize);
+ else if (strcmp(fileType, ".astc") == 0) image = LoadASTC(fileData, dataSize);
#endif
else TRACELOG(LOG_WARNING, "IMAGE: Data format not supported");
@@ -1133,35 +1135,41 @@ void ImageToPOT(Image *image, Color fill)
// Create an image from text (default font)
Image ImageText(const char *text, int fontSize, Color color)
{
+ Image imText = { 0 };
+#if defined(SUPPORT_MODULE_RTEXT)
int defaultFontSize = 10; // Default Font chars height in pixel
if (fontSize < defaultFontSize) fontSize = defaultFontSize;
int spacing = fontSize/defaultFontSize;
-
- Image imText = ImageTextEx(GetFontDefault(), text, (float)fontSize, (float)spacing, color);
-
+ imText = ImageTextEx(GetFontDefault(), text, (float)fontSize, (float)spacing, color); // WARNING: Module required: rtext
+#else
+ imText = GenImageColor(200, 60, BLACK); // Generating placeholder black image rectangle
+ TRACELOG(LOG_WARNING, "IMAGE: ImageTextEx() requires module: rtext");
+#endif
return imText;
}
// Create an image from text (custom sprite font)
Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Color tint)
{
+ Image imText = { 0 };
+#if defined(SUPPORT_MODULE_RTEXT)
int size = (int)strlen(text); // Get size in bytes of text
int textOffsetX = 0; // Image drawing position X
int textOffsetY = 0; // Offset between lines (on line break '\n')
// NOTE: Text image is generated at font base size, later scaled to desired font size
- Vector2 imSize = MeasureTextEx(font, text, (float)font.baseSize, spacing);
+ Vector2 imSize = MeasureTextEx(font, text, (float)font.baseSize, spacing); // WARNING: Module required: rtext
// Create image to store text
- Image imText = GenImageColor((int)imSize.x, (int)imSize.y, BLANK);
+ imText = GenImageColor((int)imSize.x, (int)imSize.y, BLANK);
for (int i = 0; i < size; i++)
{
// Get next codepoint from byte string and glyph index in font
int codepointByteCount = 0;
- int codepoint = GetCodepoint(&text[i], &codepointByteCount);
- int index = GetGlyphIndex(font, codepoint);
+ int codepoint = GetCodepoint(&text[i], &codepointByteCount); // WARNING: Module required: rtext
+ int index = GetGlyphIndex(font, codepoint); // WARNING: Module required: rtext
// NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f)
// but we need to draw all of the bad bytes using the '?' symbol moving one byte
@@ -1196,10 +1204,14 @@ Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Co
TRACELOG(LOG_INFO, "IMAGE: Text scaled by factor: %f", scaleFactor);
// Using nearest-neighbor scaling algorithm for default font
+ // WARNING: Module required: rtext
if (font.texture.id == GetFontDefault().texture.id) ImageResizeNN(&imText, (int)(imSize.x*scaleFactor), (int)(imSize.y*scaleFactor));
else ImageResize(&imText, (int)(imSize.x*scaleFactor), (int)(imSize.y*scaleFactor));
}
-
+#else
+ imText = GenImageColor(200, 60, BLACK); // Generating placeholder black image rectangle
+ TRACELOG(LOG_WARNING, "IMAGE: ImageTextEx() requires module: rtext");
+#endif
return imText;
}
@@ -2809,10 +2821,13 @@ void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color
// Draw text (default font) within an image (destination)
void ImageDrawText(Image *dst, const char *text, int posX, int posY, int fontSize, Color color)
{
+#if defined(SUPPORT_MODULE_RTEXT)
Vector2 position = { (float)posX, (float)posY };
-
- // NOTE: For default font, sapcing is set to desired font size / default font size (10)
- ImageDrawTextEx(dst, GetFontDefault(), text, position, (float)fontSize, (float)fontSize/10, color);
+ // NOTE: For default font, spacing is set to desired font size / default font size (10)
+ ImageDrawTextEx(dst, GetFontDefault(), text, position, (float)fontSize, (float)fontSize/10, color); // WARNING: Module required: rtext
+#else
+ TRACELOG(LOG_WARNING, "IMAGE: ImageDrawText() requires module: rtext");
+#endif
}
// Draw text (custom sprite font) within an image (destination)
@@ -4803,3 +4818,5 @@ static Vector4 *LoadImageDataNormalized(Image image)
return pixels;
}
+
+#endif // SUPPORT_MODULE_RTEXTURES