diff --git a/src/modules/image/doc/image.html b/src/modules/image/doc/image.html index deb62fd637b8b81889f7a54f5ae27922d6095371..9c65500ac01872c13570651fd0ee3cc30a83522e 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 62172bd7ed44fbfd1f7db98789fd2c869b97ee71..a79178bc22b2094d628ac92c356f9ce18bb6671d 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,