-/* $Id: js_gd.c,v 1.1 2006/10/24 12:42:43 mmondor Exp $ */
+/* $Id: js_gd.c,v 1.2 2006/10/24 20:29:26 mmondor Exp $ */
/*
* Copyright (c) 2006, Matthew Mondor
jsval *);
static JSBool gdimage_m_get_clip(JSContext *, JSObject *, uintN, jsval *,
jsval *);
+static JSBool gdimage_m_alpha(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_get_pixel(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_bounds_safe(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_blue(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_green(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_red(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_image_sx(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
+static JSBool gdimage_m_image_sy(JSContext *, JSObject *, uintN, jsval *,
+ jsval *);
static JSBool gdimage_m_color_allocate(JSContext *, JSObject *, uintN,
jsval *, jsval *);
{ "saveAlpha", gdimage_m_save_alpha, 1, 0, 0 },
{ "setClip", gdimage_m_set_clip, 4, 0, 0 },
{ "getClip", gdimage_m_get_clip, 0, 0, 0 },
+ { "alpha", gdimage_m_alpha, 1, 0, 0 },
+ { "getPixel", gdimage_m_get_pixel, 2, 0, 0 },
+ { "boundsSafe", gdimage_m_bounds_safe, 2, 0, 0 },
+ { "blue", gdimage_m_blue, 1, 0, 0 },
+ { "green", gdimage_m_green, 1, 0, 0 },
+ { "red", gdimage_m_red, 1, 0, 0 },
+ { "imageSX", gdimage_m_image_sx, 0, 0, 0 },
+ { "imageSY", gdimage_m_image_sy, 0, 0, 0 },
{ "colorAllocate", gdimage_m_color_allocate, 3, 0, 0 },
{ NULL, NULL, 0, 0, 0 }
return JS_FALSE;
}
+static JSBool
+gdimage_m_alpha(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 1) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[0])) {
+ QUEUE_EXCEPTION("Argument 1 not an Integer");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ /* A macro, so avoid side-effects */
+ v = JSVAL_TO_INT(argv[0]);
+ v = gdImageAlpha(img, v);
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_get_pixel(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 2) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[0])) {
+ QUEUE_EXCEPTION("Argument 1 not an Integer");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[1])) {
+ QUEUE_EXCEPTION("Argument 2 not an Integer");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ v = gdImageGetPixel(img, JSVAL_TO_INT(argv[0]), JSVAL_TO_INT(argv[1]));
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_bounds_safe(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 2) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[0])) {
+ QUEUE_EXCEPTION("Argument 1 not an Integer");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[1])) {
+ QUEUE_EXCEPTION("Argument 2 not an Integer");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ v = gdImageBoundsSafe(img, JSVAL_TO_INT(argv[0]),
+ JSVAL_TO_INT(argv[1]));
+ *rval = BOOLEAN_TO_JSVAL((JSBool)v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_blue(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 1) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[0])) {
+ QUEUE_EXCEPTION("Argument 1 not an Integer");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ /* A macro, so avoid side-effects */
+ v = JSVAL_TO_INT(argv[0]);
+ v = gdImageBlue(img, v);
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_green(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 1) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[0])) {
+ QUEUE_EXCEPTION("Argument 1 not an Integer");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ /* A macro, so avoid side-effects */
+ v = JSVAL_TO_INT(argv[0]);
+ v = gdImageGreen(img, v);
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_red(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 1) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+ if (!JSVAL_IS_INT(argv[0])) {
+ QUEUE_EXCEPTION("Argument 1 not an Integer");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ /* A macro, so avoid side-effects */
+ v = JSVAL_TO_INT(argv[0]);
+ v = gdImageRed(img, v);
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_image_sx(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 0) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ /* A macro, so avoid side-effects */
+ v = gdImageSX(img);
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
+static JSBool
+gdimage_m_image_sy(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
+ jsval *rval)
+{
+ gdImagePtr img;
+ int v;
+
+ if (argc != 0) {
+ QUEUE_EXCEPTION("Wrong number of arguments");
+ goto err;
+ }
+
+ img = JS_GetInstancePrivate(cx, obj, &gdimage_class, NULL);
+ assert(img != NULL);
+
+ /* A macro, so avoid side-effects */
+ v = gdImageSY(img);
+ *rval = INT_TO_JSVAL(v);
+
+ return JS_TRUE;
+
+err:
+ *rval = OBJECT_TO_JSVAL(NULL);
+
+ return JS_FALSE;
+}
+
static JSBool
gdimage_m_color_allocate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,