Skip to content

Commit

Permalink
updates to imagine
Browse files Browse the repository at this point in the history
  • Loading branch information
mcfriend99 committed Sep 18, 2024
1 parent 8aaccf4 commit 8484e9c
Show file tree
Hide file tree
Showing 9 changed files with 797 additions and 35 deletions.
47 changes: 12 additions & 35 deletions packages/imagine/imagine.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,9 @@ DECLARE_MODULE_METHOD(imagine__fromwtga) {

DECLARE_MODULE_METHOD(imagine__fromfile) {
ENFORCE_ARG_COUNT(fromfile, 1);
ENFORCE_ARG_TYPE(fromfile, 0, IS_FILE);
ENFORCE_ARG_TYPE(fromfile, 0, IS_STRING);

gdImagePtr image = gdImageCreateFromFile(AS_FILE(args[0])->path->chars);
gdImagePtr image = gdImageCreateFromFile(AS_C_STRING(args[0]));
CHECK_IMAGE(image);
RETURN_PTR(image);
}
Expand Down Expand Up @@ -947,19 +947,6 @@ DECLARE_MODULE_METHOD(imagine__colorreplace) {
RETURN_NUMBER(gdImageColorReplace(image, AS_NUMBER(args[1]), AS_NUMBER(args[2])));
}

DECLARE_MODULE_METHOD(imagine__colorreplacethreshold) {
ENFORCE_ARG_COUNT(colorreplacethreshold, 4);
ENFORCE_ARG_TYPE(colorreplacethreshold, 0, IS_PTR);
ENFORCE_ARG_TYPE(colorreplacethreshold, 1, IS_NUMBER);
ENFORCE_ARG_TYPE(colorreplacethreshold, 2, IS_NUMBER);
ENFORCE_ARG_TYPE(colorreplacethreshold, 3, IS_NUMBER);

gdImagePtr image = (gdImagePtr)AS_PTR(args[0])->pointer;
CHECK_IMAGE_PTR(image);

RETURN_NUMBER(gdImageColorReplaceThreshold(image, AS_NUMBER(args[1]), AS_NUMBER(args[2]), AS_NUMBER(args[3])));
}

DECLARE_MODULE_METHOD(imagine__gif) {
ENFORCE_ARG_COUNT(gif, 2);
ENFORCE_ARG_TYPE(gif, 0, IS_PTR);
Expand Down Expand Up @@ -1307,12 +1294,16 @@ DECLARE_MODULE_METHOD(imagine__setantialiased) {
gdImagePtr image = (gdImagePtr)AS_PTR(args[0])->pointer;
CHECK_IMAGE_PTR(image);

#ifndef _WIN32
if(arg_count == 3) {
ENFORCE_ARG_TYPE(setantialiased, 2, IS_NUMBER);
gdImageSetAntiAliasedDontBlend(image, AS_NUMBER(args[1]), AS_NUMBER(args[2]));
} else {
gdImageSetAntiAliased(image, AS_NUMBER(args[1]));
}
#else
gdImageSetAntiAliased(image, AS_NUMBER(args[1]));
#endif

RETURN;
}
Expand Down Expand Up @@ -1539,10 +1530,9 @@ DECLARE_MODULE_METHOD(imagine__meta) {
dict_set_entry(vm, dict, GC_L_STRING("colors", 6), NUMBER_VAL(color_totals > 0 ? color_totals : true_colors));
dict_set_entry(vm, dict, GC_L_STRING("res_x", 5), NUMBER_VAL(gdImageResolutionX(image)));
dict_set_entry(vm, dict, GC_L_STRING("res_y", 5), NUMBER_VAL(gdImageResolutionY(image)));
dict_set_entry(vm, dict, GC_L_STRING("interpolation", 13), NUMBER_VAL((int)image->interpolation));
dict_set_entry(vm, dict, GC_L_STRING("interpolation", 13), NUMBER_VAL((int)image->interpolation_id));
dict_set_entry(vm, dict, GC_L_STRING("true_color", 10), BOOL_VAL(true_colors > 0));
dict_set_entry(vm, dict, GC_L_STRING("interlaced", 10), BOOL_VAL(gdImageGetInterlaced(image) != 0));
dict_set_entry(vm, dict, GC_L_STRING("transparent", 11), BOOL_VAL(gdImageGetTransparent(image) > 0));

RETURN_OBJ(dict);
}
Expand Down Expand Up @@ -1598,7 +1588,7 @@ DECLARE_MODULE_METHOD(imagine__crop) {
.height = AS_NUMBER(args[4])
};

gdImagePtr *new_image = gdImageCrop(image, &rect);
gdImagePtr new_image = gdImageCrop(image, &rect);
if(NULL == new_image) {
RETURN_ERROR("Failed to crop image to rectangle.");
}
Expand All @@ -1614,25 +1604,14 @@ DECLARE_MODULE_METHOD(imagine__cropauto) {
gdImagePtr image = (gdImagePtr)AS_PTR(args[0])->pointer;
CHECK_IMAGE_PTR(image);

gdImagePtr *new_image = gdImageCropAuto(image, AS_NUMBER(args[1]));
gdImagePtr new_image = gdImageCropAuto(image, AS_NUMBER(args[1]));
if(NULL == new_image) {
RETURN_ERROR("Failed to crop image to rectangle.");
}

RETURN_CLOSABLE_NAMED_PTR(new_image, IMAGINE_IMAGE_PTR_NAME, imagine_free_image_ptrs);
}

DECLARE_MODULE_METHOD(imagine__setinterpolationmethod) {
ENFORCE_ARG_COUNT(setinterpolationmethod, 2);
ENFORCE_ARG_TYPE(setinterpolationmethod, 0, IS_PTR);
ENFORCE_ARG_TYPE(setinterpolationmethod, 1, IS_NUMBER);

gdImagePtr image = (gdImagePtr)AS_PTR(args[0])->pointer;
CHECK_IMAGE_PTR(image);

RETURN_BOOL(gdImageSetInterpolationMethod(image, (gdInterpolationMethod)AS_NUMBER(args[1])) != 0);
}

DECLARE_MODULE_METHOD(imagine__scale) {
ENFORCE_ARG_COUNT(scale, 2);
ENFORCE_ARG_TYPE(scale, 0, IS_PTR);
Expand All @@ -1642,7 +1621,7 @@ DECLARE_MODULE_METHOD(imagine__scale) {
gdImagePtr image = (gdImagePtr)AS_PTR(args[0])->pointer;
CHECK_IMAGE_PTR(image);

gdImagePtr *new_image = gdImageScale(image, AS_NUMBER(args[1]), AS_NUMBER(args[2]));
gdImagePtr new_image = gdImageScale(image, AS_NUMBER(args[1]), AS_NUMBER(args[2]));
if(NULL == new_image) {
RETURN_ERROR("Failed to scale image to (%d, %d).", (int)AS_NUMBER(args[1]), (int)AS_NUMBER(args[2]));
}
Expand All @@ -1659,7 +1638,7 @@ DECLARE_MODULE_METHOD(imagine__rotate) {
gdImagePtr image = (gdImagePtr)AS_PTR(args[0])->pointer;
CHECK_IMAGE_PTR(image);

gdImagePtr *new_image = gdImageRotateInterpolated(image, AS_NUMBER(args[1]), AS_NUMBER(args[2]));
gdImagePtr new_image = gdImageRotateInterpolated(image, AS_NUMBER(args[1]), AS_NUMBER(args[2]));
if(NULL == new_image) {
RETURN_ERROR("Failed to rotate image to angle %.16g.", AS_NUMBER(args[1]));
}
Expand All @@ -1683,7 +1662,7 @@ CREATE_MODULE_LOADER(imagine) {
GET_IMAGINE_CONST(QUANT_LIQ),

// Interpolation Methods
GET_IMAGINE_CONST(DEFAULT ),
GET_IMAGINE_CONST(DEFAULT),
GET_IMAGINE_CONST(BELL),
GET_IMAGINE_CONST(BESSEL),
GET_IMAGINE_CONST(BILINEAR_FIXED),
Expand Down Expand Up @@ -1793,7 +1772,6 @@ CREATE_MODULE_LOADER(imagine) {
{"colortransparent", true, GET_MODULE_METHOD(imagine__colortransparent)},
{"palettecopy", true, GET_MODULE_METHOD(imagine__palettecopy)},
{"colorreplace", true, GET_MODULE_METHOD(imagine__colorreplace)},
{"colorreplacethreshold", true, GET_MODULE_METHOD(imagine__colorreplacethreshold)},

// export
{"gif", true, GET_MODULE_METHOD(imagine__gif)},
Expand Down Expand Up @@ -1848,7 +1826,6 @@ CREATE_MODULE_LOADER(imagine) {
{"setresolution", true, GET_MODULE_METHOD(imagine__setresolution)},
{"truecolortopalette", true, GET_MODULE_METHOD(imagine__truecolortopalette)},
{"palettetotruecolor", true, GET_MODULE_METHOD(imagine__palettetotruecolor)},
{"setinterpolationmethod", true, GET_MODULE_METHOD(imagine__setinterpolationmethod)},

// Blade extras
{"meta", true, GET_MODULE_METHOD(imagine__meta)},
Expand Down
55 changes: 55 additions & 0 deletions packages/imagine/imagine/comparisons.b
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import _imagine


/**
* Actual image IS different
*/
var CMP_IMAGE = _imagine.CMP_IMAGE


/**
* Number of colors in pallette differ
*/
var CMP_NUM_COLORS = _imagine.CMP_NUM_COLORS


/**
* Image colors differ
*/
var CMP_COLOR = _imagine.CMP_COLOR


/**
* Image width differs
*/
var CMP_SIZE_X = _imagine.CMP_SIZE_X


/**
* Image heights differ
*/
var CMP_SIZE_Y = _imagine.CMP_SIZE_Y


/**
* Transparent color differs
*/
var CMP_TRANSPARENT = _imagine.CMP_TRANSPARENT


/**
* Background color differs
*/
var CMP_BACKGROUND = _imagine.CMP_BACKGROUND


/**
* Interlaced setting differs
*/
var CMP_INTERLACE = _imagine.CMP_INTERLACE


/**
* Truecolor vs palette differs
*/
var CMP_TRUECOLOR = _imagine.CMP_TRUECOLOR
31 changes: 31 additions & 0 deletions packages/imagine/imagine/crops.b
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import _imagine


/**
* Same as CROP_TRANSPARENT
*/
var CROP_DEFAULT = _imagine.CROP_DEFAULT


/**
* Crop using the transparent color
*/
var CROP_TRANSPARENT = _imagine.CROP_TRANSPARENT


/**
* Crop black borders
*/
var CROP_BLACK = _imagine.CROP_BLACK


/**
* Crop white borders
*/
var CROP_WHITE = _imagine.CROP_WHITE


/**
* Crop using colors of the 4 corners
*/
var CROP_SIDES = _imagine.CROP_SIDES
26 changes: 26 additions & 0 deletions packages/imagine/imagine/fonts.b
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import _imagine

/**
* A small ISO-8859-2 raster font (5x8 pixels).
*/
var FONT_SMALL = _imagine.tinyfont

/**
* The regular ISO-8859-2 raster font (6x13 pixels)
*/
var FONT_REGULAR = _imagine.smallfont

/**
* A medium bold ISO-8859-2 raster font (7x13 pixels).
*/
var FONT_MEDIUM = _imagine.mediumfont

/**
* A large ISO-8859-2 raster font (8x16 pixels).
*/
var FONT_LARGE = _imagine.largefont

/**
* An extra-large ISO-8859-2 raster font (9x15 pixels).
*/
var FONT_EXTRALARGE = _imagine.giantfont
Loading

0 comments on commit 8484e9c

Please sign in to comment.