From 95a0eba37e28218738f319607972e5c91fffcd9d Mon Sep 17 00:00:00 2001
From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org>
Date: Sun, 27 Oct 1996 18:14:11 +0100
Subject: [PATCH] getpixel...

Rev: src/modules/image/doc/image.html:1.5
Rev: src/modules/image/image.c:1.20
---
 src/modules/image/doc/image.html |  7 +++++++
 src/modules/image/image.c        | 29 +++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/src/modules/image/doc/image.html b/src/modules/image/doc/image.html
index deb62fd637..9c65500ac0 100644
--- a/src/modules/image/doc/image.html
+++ b/src/modules/image/doc/image.html
@@ -544,4 +544,11 @@ int main()
    write(o->togif_fs());
    return 0;
 }
+</pre>
+
+<h2>Undocumented, yet:</h2>
+<pre>
+object image->select_from(int x,int y);
+object image->distancesq(int r,int g,int b);
+array(int) image->getpixel(int x,int y);
 </pre>
\ No newline at end of file
diff --git a/src/modules/image/image.c b/src/modules/image/image.c
index 62172bd7ed..a79178bc22 100644
--- a/src/modules/image/image.c
+++ b/src/modules/image/image.c
@@ -1131,6 +1131,33 @@ void image_setpixel(INT32 args)
    push_object(THISOBJ);
 }
 
+void image_getpixel(INT32 args)
+{
+   INT32 x,y;
+   rgb_group rgb;
+
+   if (args<2||
+       sp[-args].type!=T_INT||
+       sp[1-args].type!=T_INT)
+      error("Illegal arguments to image->getpixel()\n");
+
+   if (!THIS->img) error("No image.\n");
+
+   x=sp[-args].u.integer;
+   y=sp[1-args].u.integer;
+   if (!THIS->img) return;
+   if(x<0||y<0||x>=THIS->xsize||y>=THIS->ysize)
+      rgb=THIS->rgb;
+   else
+      rgb=pixel(THIS,x,y);
+
+   pop_n_elems(args);
+   push_int(rgb.r);
+   push_int(rgb.g);
+   push_int(rgb.b);
+   f_aggregate(3);
+}
+
 void image_line(INT32 args)
 {
    if (args<4||
@@ -2239,6 +2266,8 @@ void init_image_programs()
 		"function(int,int,int:object)",0);
    add_function("setpixel",image_setpixel,
 		"function(int,int,"RGB_TYPE":object)",0);
+   add_function("getpixel",image_getpixel,
+		"function(int,int:array(int))",0);
    add_function("line",image_line,
 		"function(int,int,int,int,"RGB_TYPE":object)",0);
    add_function("circle",image_circle,
-- 
GitLab