*** empty log message ***
authorMatthew Mondor <mmondor@pulsar-zone.net>
Tue, 24 Oct 2006 20:29:26 +0000 (20:29 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Tue, 24 Oct 2006 20:29:26 +0000 (20:29 +0000)
mmsoftware/js/classes/js_gd.c

index 58375cc..7b3f626 100644 (file)
@@ -1,4 +1,4 @@
-/* $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
@@ -228,6 +228,22 @@ static JSBool      gdimage_m_set_clip(JSContext *, JSObject *, uintN, jsval *,
                    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 *);
@@ -377,6 +393,14 @@ static JSFunctionSpec gdimage_methods[] = {
        { "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 }
@@ -2657,6 +2681,257 @@ err:
        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,