warning fixes + just give in to stdlib
parent
8e6c6adf54
commit
b0a7d81412
|
@ -46,19 +46,6 @@
|
|||
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/* TODO: ifndefs here? */
|
||||
#define Cram_assert assert
|
||||
#define Cram_qsort qsort
|
||||
#define Cram_malloc malloc
|
||||
#define Cram_realloc realloc
|
||||
#define Cram_free free
|
||||
#define Cram_memcpy memcpy
|
||||
#define Cram_memset memset
|
||||
#define Cram_strdup strdup
|
||||
#define Cram_abs abs
|
||||
#define Cram_min min
|
||||
#define Cram_max max
|
||||
|
||||
#ifdef _WIN32
|
||||
#define SEPARATOR '\\'
|
||||
#endif
|
||||
|
@ -90,7 +77,7 @@ typedef struct Cram_Context Cram_Context;
|
|||
|
||||
typedef struct Cram_ContextCreateInfo
|
||||
{
|
||||
const char *name;
|
||||
char *name;
|
||||
uint32_t maxDimension;
|
||||
int32_t padding;
|
||||
uint8_t trim;
|
||||
|
@ -119,8 +106,8 @@ CRAMAPI void Cram_AddFile(Cram_Context *context, const char *path);
|
|||
|
||||
CRAMAPI int8_t Cram_Pack(Cram_Context *context);
|
||||
|
||||
CRAMAPI void Cram_GetPixelData(Cram_Context *context, uint8_t **pPixelData, uint32_t *pWidth, uint32_t *pHeight);
|
||||
CRAMAPI void Cram_GetMetadata(Cram_Context *context, Cram_ImageData **pImage, uint32_t *pImageCount);
|
||||
CRAMAPI void Cram_GetPixelData(Cram_Context *context, uint8_t **pPixelData, int32_t *pWidth, int32_t *pHeight);
|
||||
CRAMAPI void Cram_GetMetadata(Cram_Context *context, Cram_ImageData **pImage, int32_t *pImageCount);
|
||||
|
||||
CRAMAPI void Cram_Destroy(Cram_Context *context);
|
||||
|
||||
|
|
104
src/cram.c
104
src/cram.c
|
@ -26,10 +26,10 @@
|
|||
|
||||
#include "cram.h"
|
||||
|
||||
#define STBI_ASSERT Cram_assert
|
||||
#define STBI_MALLOC Cram_malloc
|
||||
#define STBI_REALLOC Cram_realloc
|
||||
#define STBI_FREE Cram_free
|
||||
#define STBI_ASSERT assert
|
||||
#define STBI_MALLOC malloc
|
||||
#define STBI_REALLOC realloc
|
||||
#define STBI_FREE free
|
||||
|
||||
#define STBI_ONLY_PNG
|
||||
#define STB_IMAGE_IMPLEMENTATION
|
||||
|
@ -68,9 +68,9 @@ struct Cram_Image
|
|||
|
||||
typedef struct Cram_Internal_Context
|
||||
{
|
||||
const char *name;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
char *name;
|
||||
int32_t width;
|
||||
int32_t height;
|
||||
|
||||
int32_t padding;
|
||||
uint8_t trim;
|
||||
|
@ -78,17 +78,17 @@ typedef struct Cram_Internal_Context
|
|||
uint8_t *pixels;
|
||||
|
||||
Cram_Image **images;
|
||||
uint32_t imageCount;
|
||||
uint32_t imageCapacity;
|
||||
int32_t imageCount;
|
||||
int32_t imageCapacity;
|
||||
|
||||
Cram_ImageData *imageDatas;
|
||||
uint32_t imageDataCount;
|
||||
int32_t imageDataCount;
|
||||
} Cram_Internal_Context;
|
||||
|
||||
typedef struct RectPackContext
|
||||
{
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
int32_t width;
|
||||
int32_t height;
|
||||
|
||||
Rect *freeRectangles;
|
||||
int32_t freeRectangleCount;
|
||||
|
@ -141,12 +141,12 @@ static uint8_t Cram_Internal_IsImageEqual(Cram_Image *a, Cram_Image *b)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline uint32_t Cram_Internal_GetPixelIndex(uint32_t x, uint32_t y, uint32_t width)
|
||||
static inline int32_t Cram_Internal_GetPixelIndex(int32_t x, int32_t y, int32_t width)
|
||||
{
|
||||
return x + y * width;
|
||||
}
|
||||
|
||||
static uint8_t Cram_Internal_IsRowClear(uint32_t* pixels, uint32_t rowIndex, uint32_t width)
|
||||
static uint8_t Cram_Internal_IsRowClear(int32_t* pixels, int32_t rowIndex, int32_t width)
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
|
@ -161,7 +161,7 @@ static uint8_t Cram_Internal_IsRowClear(uint32_t* pixels, uint32_t rowIndex, uin
|
|||
return 1;
|
||||
}
|
||||
|
||||
static uint8_t Cram_Internal_IsColumnClear(uint32_t* pixels, uint32_t columnIndex, uint32_t width, uint32_t height)
|
||||
static uint8_t Cram_Internal_IsColumnClear(int32_t* pixels, int32_t columnIndex, int32_t width, int32_t height)
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
|
@ -210,13 +210,13 @@ static int8_t Cram_Internal_CopyPixels(
|
|||
|
||||
RectPackContext* Cram_Internal_InitRectPacker(uint32_t width, uint32_t height)
|
||||
{
|
||||
RectPackContext *context = Cram_malloc(sizeof(RectPackContext));
|
||||
RectPackContext *context = malloc(sizeof(RectPackContext));
|
||||
|
||||
context->width = width;
|
||||
context->height = height;
|
||||
|
||||
context->freeRectangleCapacity = INITIAL_FREE_RECTANGLE_CAPACITY;
|
||||
context->freeRectangles = Cram_malloc(sizeof(Rect) * context->freeRectangleCapacity);
|
||||
context->freeRectangles = malloc(sizeof(Rect) * context->freeRectangleCapacity);
|
||||
|
||||
context->freeRectangles[0].x = 0;
|
||||
context->freeRectangles[0].y = 0;
|
||||
|
@ -225,7 +225,7 @@ RectPackContext* Cram_Internal_InitRectPacker(uint32_t width, uint32_t height)
|
|||
context->freeRectangleCount = 1;
|
||||
|
||||
context->newFreeRectangleCapacity = INITIAL_FREE_RECTANGLE_CAPACITY;
|
||||
context->newFreeRectangles = Cram_malloc(sizeof(Rect) * context->freeRectangleCapacity);
|
||||
context->newFreeRectangles = malloc(sizeof(Rect) * context->freeRectangleCapacity);
|
||||
context->newFreeRectangleCount = 0;
|
||||
|
||||
return context;
|
||||
|
@ -254,7 +254,7 @@ void Cram_Internal_Score(
|
|||
if (freeRect->w >= width && freeRect->h >= height)
|
||||
{
|
||||
areaFit = freeRect->w * freeRect->h - width * height;
|
||||
shortestSide = Cram_min(freeRect->w - width, freeRect->h - height);
|
||||
shortestSide = min(freeRect->w - width, freeRect->h - height);
|
||||
|
||||
if (areaFit < scoreInfo->score || (areaFit == scoreInfo->score && shortestSide < scoreInfo->secondaryScore))
|
||||
{
|
||||
|
@ -295,8 +295,8 @@ void Cram_Internal_PruneRects(RectPackContext* context)
|
|||
|
||||
if (context->freeRectangleCapacity < context->freeRectangleCount + context->newFreeRectangleCount)
|
||||
{
|
||||
context->freeRectangleCapacity = Cram_max(context->freeRectangleCapacity * 2, context->freeRectangleCount + context->newFreeRectangleCount);
|
||||
context->freeRectangles = Cram_realloc(context->freeRectangles, sizeof(Rect) * context->freeRectangleCapacity);
|
||||
context->freeRectangleCapacity = max(context->freeRectangleCapacity * 2, context->freeRectangleCount + context->newFreeRectangleCount);
|
||||
context->freeRectangles = realloc(context->freeRectangles, sizeof(Rect) * context->freeRectangleCapacity);
|
||||
}
|
||||
|
||||
for (i = 0; i < context->newFreeRectangleCount; i += 1)
|
||||
|
@ -329,7 +329,7 @@ static inline void Cram_Internal_AddNewFreeRect(RectPackContext *context, Rect r
|
|||
if (context->newFreeRectangleCount == context->newFreeRectangleCapacity)
|
||||
{
|
||||
context->newFreeRectangleCapacity *= 2;
|
||||
context->newFreeRectangles = Cram_realloc(context->newFreeRectangles, sizeof(Rect) * context->newFreeRectangleCapacity);
|
||||
context->newFreeRectangles = realloc(context->newFreeRectangles, sizeof(Rect) * context->newFreeRectangleCapacity);
|
||||
}
|
||||
|
||||
context->newFreeRectangles[context->newFreeRectangleCount] = rect;
|
||||
|
@ -416,9 +416,9 @@ void Cram_Internal_PlaceRect(RectPackContext *context, Rect *rect)
|
|||
}
|
||||
|
||||
/* Given rects with width and height, modifies rects with packed x and y positions. */
|
||||
int8_t Cram_Internal_PackRects(RectPackContext *context, Rect *rects, uint32_t numRects)
|
||||
int8_t Cram_Internal_PackRects(RectPackContext *context, Rect *rects, int32_t numRects)
|
||||
{
|
||||
Rect **rectsToPack = Cram_malloc(sizeof(Rect*) * numRects);
|
||||
Rect **rectsToPack = malloc(sizeof(Rect*) * numRects);
|
||||
int32_t rectsToPackCount = numRects;
|
||||
Rect *rectPtr;
|
||||
int32_t bestScore = INT32_MAX;
|
||||
|
@ -468,7 +468,7 @@ int8_t Cram_Internal_PackRects(RectPackContext *context, Rect *rects, uint32_t n
|
|||
rectsToPackCount -= 1;
|
||||
}
|
||||
|
||||
Cram_free(rectsToPack);
|
||||
free(rectsToPack);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -481,9 +481,9 @@ uint32_t Cram_LinkedVersion(void)
|
|||
|
||||
Cram_Context* Cram_Init(Cram_ContextCreateInfo *createInfo)
|
||||
{
|
||||
Cram_Internal_Context *context = Cram_malloc(sizeof(Cram_Internal_Context));
|
||||
Cram_Internal_Context *context = malloc(sizeof(Cram_Internal_Context));
|
||||
|
||||
context->name = Cram_strdup(createInfo->name);
|
||||
context->name = strdup(createInfo->name);
|
||||
|
||||
context->width = createInfo->maxDimension;
|
||||
context->height = createInfo->maxDimension;
|
||||
|
@ -491,7 +491,7 @@ Cram_Context* Cram_Init(Cram_ContextCreateInfo *createInfo)
|
|||
context->padding = createInfo->padding;
|
||||
context->trim = createInfo->trim;
|
||||
|
||||
context->images = Cram_malloc(INITIAL_DATA_CAPACITY * sizeof(Cram_Image*));
|
||||
context->images = malloc(INITIAL_DATA_CAPACITY * sizeof(Cram_Image*));
|
||||
context->imageCapacity = INITIAL_DATA_CAPACITY;
|
||||
context->imageCount = 0;
|
||||
|
||||
|
@ -506,7 +506,7 @@ static char* Cram_Internal_GetImageName(const char *path)
|
|||
{
|
||||
char *lastSeparator = strrchr(path, SEPARATOR) + 1;
|
||||
size_t returnBytes = strlen(lastSeparator) + 1;
|
||||
char *name = Cram_malloc(returnBytes);
|
||||
char *name = malloc(returnBytes);
|
||||
int32_t i;
|
||||
|
||||
for (i = 0; i < returnBytes; i += 1)
|
||||
|
@ -529,10 +529,10 @@ void Cram_AddFile(Cram_Context *context, const char *path)
|
|||
if (internalContext->imageCapacity == internalContext->imageCount)
|
||||
{
|
||||
internalContext->imageCapacity *= 2;
|
||||
internalContext->images = Cram_realloc(internalContext->images, internalContext->imageCapacity * sizeof(Cram_Image*));
|
||||
internalContext->images = realloc(internalContext->images, internalContext->imageCapacity * sizeof(Cram_Image*));
|
||||
}
|
||||
|
||||
image = Cram_malloc(sizeof(Cram_Image));
|
||||
image = malloc(sizeof(Cram_Image));
|
||||
|
||||
image->name = Cram_Internal_GetImageName(path);
|
||||
|
||||
|
@ -603,7 +603,7 @@ void Cram_AddFile(Cram_Context *context, const char *path)
|
|||
}
|
||||
|
||||
/* copy and free source pixels */
|
||||
image->pixels = Cram_malloc(image->trimmedRect.w * image->trimmedRect.h * 4);
|
||||
image->pixels = malloc(image->trimmedRect.w * image->trimmedRect.h * 4);
|
||||
|
||||
Rect dstRect;
|
||||
dstRect.x = 0;
|
||||
|
@ -626,7 +626,7 @@ void Cram_AddFile(Cram_Context *context, const char *path)
|
|||
{
|
||||
/* this is duplicate data! */
|
||||
image->duplicateOf = internalContext->images[i];
|
||||
Cram_free(image->pixels);
|
||||
free(image->pixels);
|
||||
image->pixels = NULL;
|
||||
break;
|
||||
}
|
||||
|
@ -647,12 +647,12 @@ int8_t Cram_Pack(Cram_Context *context)
|
|||
Rect *packerRect;
|
||||
Rect dstRect, srcRect;
|
||||
Cram_Image *image;
|
||||
uint32_t maxWidth = 0;
|
||||
uint32_t maxHeight = 0;
|
||||
int32_t maxWidth = 0;
|
||||
int32_t maxHeight = 0;
|
||||
int32_t i;
|
||||
|
||||
internalContext->imageDataCount = internalContext->imageCount;
|
||||
internalContext->imageDatas = Cram_realloc(internalContext->imageDatas, sizeof(Cram_ImageData) * internalContext->imageDataCount);
|
||||
internalContext->imageDatas = realloc(internalContext->imageDatas, sizeof(Cram_ImageData) * internalContext->imageDataCount);
|
||||
|
||||
rectPackContext = Cram_Internal_InitRectPacker(internalContext->width, internalContext->height);
|
||||
|
||||
|
@ -664,7 +664,7 @@ int8_t Cram_Pack(Cram_Context *context)
|
|||
}
|
||||
}
|
||||
|
||||
packerRects = Cram_malloc(sizeof(Rect) * numRects);
|
||||
packerRects = malloc(sizeof(Rect) * numRects);
|
||||
|
||||
numRects = 0;
|
||||
for (i = 0; i < internalContext->imageCount; i += 1)
|
||||
|
@ -697,8 +697,8 @@ int8_t Cram_Pack(Cram_Context *context)
|
|||
internalContext->images[i]->packedRect.w = internalContext->images[i]->trimmedRect.w;
|
||||
internalContext->images[i]->packedRect.h = internalContext->images[i]->trimmedRect.h;
|
||||
|
||||
maxWidth = Cram_max(maxWidth, packerRect->x + packerRect->w);
|
||||
maxHeight = Cram_max(maxHeight, packerRect->y + packerRect->h);
|
||||
maxWidth = max(maxWidth, packerRect->x + packerRect->w);
|
||||
maxHeight = max(maxHeight, packerRect->y + packerRect->h);
|
||||
|
||||
numRects += 1;
|
||||
}
|
||||
|
@ -707,8 +707,8 @@ int8_t Cram_Pack(Cram_Context *context)
|
|||
internalContext->width = Cram_Internal_NextPowerOfTwo(maxWidth);
|
||||
internalContext->height = Cram_Internal_NextPowerOfTwo(maxHeight);
|
||||
|
||||
internalContext->pixels = Cram_realloc(internalContext->pixels, internalContext->width * internalContext->height * 4);
|
||||
Cram_memset(internalContext->pixels, 0, internalContext->width * internalContext->height * 4);
|
||||
internalContext->pixels = realloc(internalContext->pixels, internalContext->width * internalContext->height * 4);
|
||||
memset(internalContext->pixels, 0, internalContext->width * internalContext->height * 4);
|
||||
|
||||
for (i = 0; i < internalContext->imageCount; i += 1)
|
||||
{
|
||||
|
@ -756,12 +756,12 @@ int8_t Cram_Pack(Cram_Context *context)
|
|||
internalContext->imageDatas[i].name = strdup(internalContext->images[i]->name);
|
||||
}
|
||||
|
||||
Cram_free(packerRects);
|
||||
free(packerRects);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Cram_GetPixelData(Cram_Context *context, uint8_t **pPixels, uint32_t *pWidth, uint32_t *pHeight)
|
||||
void Cram_GetPixelData(Cram_Context *context, uint8_t **pPixels, int32_t *pWidth, int32_t *pHeight)
|
||||
{
|
||||
Cram_Internal_Context *internalContext = (Cram_Internal_Context*) context;
|
||||
*pPixels = internalContext->pixels;
|
||||
|
@ -769,7 +769,7 @@ void Cram_GetPixelData(Cram_Context *context, uint8_t **pPixels, uint32_t *pWidt
|
|||
*pHeight = internalContext->height;
|
||||
}
|
||||
|
||||
void Cram_GetMetadata(Cram_Context *context, Cram_ImageData **pImage, uint32_t *pImageCount)
|
||||
void Cram_GetMetadata(Cram_Context *context, Cram_ImageData **pImage, int32_t *pImageCount)
|
||||
{
|
||||
Cram_Internal_Context *internalContext = (Cram_Internal_Context*) context;
|
||||
|
||||
|
@ -784,22 +784,22 @@ void Cram_Destroy(Cram_Context *context)
|
|||
|
||||
if (internalContext->pixels != NULL)
|
||||
{
|
||||
Cram_free(internalContext->pixels);
|
||||
free(internalContext->pixels);
|
||||
}
|
||||
|
||||
for (i = 0; i < internalContext->imageCount; i += 1)
|
||||
{
|
||||
if (!internalContext->images[i]->duplicateOf)
|
||||
{
|
||||
Cram_free(internalContext->images[i]->pixels);
|
||||
free(internalContext->images[i]->pixels);
|
||||
}
|
||||
|
||||
Cram_free(internalContext->images[i]->name);
|
||||
Cram_free(internalContext->images[i]);
|
||||
free(internalContext->images[i]->name);
|
||||
free(internalContext->images[i]);
|
||||
}
|
||||
|
||||
Cram_free(internalContext->name);
|
||||
Cram_free(internalContext->images);
|
||||
Cram_free(internalContext->imageDatas);
|
||||
Cram_free(internalContext);
|
||||
free(internalContext->name);
|
||||
free(internalContext->images);
|
||||
free(internalContext->imageDatas);
|
||||
free(internalContext);
|
||||
}
|
||||
|
|
|
@ -120,7 +120,7 @@ int main(int argc, char *argv[])
|
|||
char *metadataFilename;
|
||||
JsonBuilder *jsonBuilder;
|
||||
Cram_ImageData *imageDatas;
|
||||
uint32_t imageCount;
|
||||
int32_t imageCount;
|
||||
int32_t i;
|
||||
|
||||
/* Set defaults */
|
||||
|
@ -217,7 +217,7 @@ int main(int argc, char *argv[])
|
|||
/* output pixel data */
|
||||
|
||||
Cram_GetPixelData(context, &pixelData, &width, &height);
|
||||
imageOutputFilename = Cram_malloc(strlen(createInfo.name) + 5);
|
||||
imageOutputFilename = malloc(strlen(createInfo.name) + 5);
|
||||
strcpy(imageOutputFilename, createInfo.name);
|
||||
strcat(imageOutputFilename, ".png");
|
||||
|
||||
|
@ -256,7 +256,7 @@ int main(int argc, char *argv[])
|
|||
JsonBuilder_FinishArrayProperty(jsonBuilder);
|
||||
JsonBuilder_Finish(jsonBuilder);
|
||||
|
||||
metadataFilename = Cram_malloc(strlen(createInfo.name) + 6);
|
||||
metadataFilename = malloc(strlen(createInfo.name) + 6);
|
||||
strcpy(metadataFilename, createInfo.name);
|
||||
strcat(metadataFilename, ".json");
|
||||
|
||||
|
@ -272,8 +272,8 @@ int main(int argc, char *argv[])
|
|||
JsonBuilder_Destroy(jsonBuilder);
|
||||
fclose(jsonOutput);
|
||||
|
||||
Cram_free(imageOutputFilename);
|
||||
Cram_free(metadataFilename);
|
||||
free(imageOutputFilename);
|
||||
free(metadataFilename);
|
||||
Cram_Destroy(context);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue