misc fixes
parent
b919917b21
commit
812d142aa0
10
src/cram.c
10
src/cram.c
|
@ -68,7 +68,7 @@ typedef struct Cram_Internal_Context
|
|||
uint32_t width;
|
||||
uint32_t height;
|
||||
|
||||
uint32_t padding;
|
||||
int32_t padding;
|
||||
uint8_t trim;
|
||||
|
||||
uint8_t *pixels;
|
||||
|
@ -262,6 +262,7 @@ void Cram_Internal_Score(
|
|||
}
|
||||
}
|
||||
|
||||
/* Check if a contains b */
|
||||
static inline uint8_t Cram_Internal_Contains(Rect* a, Rect* b)
|
||||
{
|
||||
return b->x >= a->x &&
|
||||
|
@ -289,7 +290,7 @@ void Cram_Internal_PruneRects(RectPackContext* context)
|
|||
|
||||
if (context->freeRectangleCapacity < context->freeRectangleCount + context->newFreeRectangleCount)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -298,6 +299,8 @@ void Cram_Internal_PruneRects(RectPackContext* context)
|
|||
context->freeRectangles[context->freeRectangleCount] = context->newFreeRectangles[i];
|
||||
context->freeRectangleCount += 1;
|
||||
}
|
||||
|
||||
context->newFreeRectangleCount = 0;
|
||||
}
|
||||
|
||||
static inline void Cram_Internal_AddNewFreeRect(RectPackContext *context, Rect rect)
|
||||
|
@ -405,8 +408,6 @@ void Cram_Internal_PlaceRect(RectPackContext *context, Rect *rect)
|
|||
}
|
||||
|
||||
Cram_Internal_PruneRects(context);
|
||||
|
||||
context->newFreeRectangleCount = 0;
|
||||
}
|
||||
|
||||
/* Given rects with width and height, modifies rects with packed x and y positions. */
|
||||
|
@ -654,7 +655,6 @@ int8_t Cram_Pack(Cram_Context *context)
|
|||
|
||||
if (Cram_Internal_PackRects(rectPackContext, packerRects, numRects) < 0)
|
||||
{
|
||||
fprintf(stderr, "Not enough room! Packing aborted!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ static void dirwalk(char *dir)
|
|||
|
||||
void print_help()
|
||||
{
|
||||
fprintf(stdout, "Usage: cram input_dir output_dir atlas_name [--padding padding_value] [--trim] [--dimension max_dimension]");
|
||||
fprintf(stdout, "Usage: cram input_dir output_dir atlas_name [--padding padding_value] [--notrim] [--dimension max_dimension]");
|
||||
}
|
||||
|
||||
uint8_t check_dir_exists(char *path)
|
||||
|
@ -123,20 +123,21 @@ int main(int argc, char *argv[])
|
|||
if (strcmp(arg, "--padding") == 0)
|
||||
{
|
||||
i += 1;
|
||||
createInfo.padding = atoi(argv[argc]);
|
||||
createInfo.padding = atoi(argv[i]);
|
||||
if (createInfo.padding < 0)
|
||||
{
|
||||
fprintf(stderr, "Padding must be equal to or greater than 0!");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (strcmp(arg, "--trim") == 0)
|
||||
else if (strcmp(arg, "--notrim") == 0)
|
||||
{
|
||||
createInfo.trim = 1;
|
||||
createInfo.trim = 0;
|
||||
}
|
||||
else if (strcmp(arg, "--dimension") == 0)
|
||||
{
|
||||
createInfo.maxDimension = atoi(argv[argc]);
|
||||
i += 1;
|
||||
createInfo.maxDimension = atoi(argv[i]);
|
||||
if (createInfo.maxDimension < 0 || createInfo.maxDimension > 8192)
|
||||
{
|
||||
fprintf(stderr, "Padding must be between 0 and 8192!");
|
||||
|
@ -188,7 +189,11 @@ int main(int argc, char *argv[])
|
|||
|
||||
dirwalk(inputDirPath);
|
||||
|
||||
Cram_Pack(context);
|
||||
if (Cram_Pack(context) < 0)
|
||||
{
|
||||
fprintf(stderr, "Not enough room! Packing aborted!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
Cram_GetPixelData(context, &pixelData, &width, &height);
|
||||
|
||||
|
|
Loading…
Reference in New Issue