+/*----- from rgbimage.c -----*/
+
+#define MAXIMGIDENT 100
+
+typedef struct RgbImage {
+ int w, h;
+ unsigned char data[];
+ /* red = data[ y*w*3 + x*3 + 0 ] = RI_PIXEL(ri,x,y)[0]
+ * green = data[ y*w*3 + x*3 + 1 ] = RI_PIXEL(ri,x,y)[1]
+ * blue = data[ y*w*3 + x*3 + 2 ] = RI_PIXEL(ri,x,y)[2]
+ */
+} RgbImage;
+
+typedef unsigned long Rgb;
+
+void identify_rgbimage(const RgbImage *base, Rect portion,
+ char result[MAXIMGIDENT], const char *what);
+RgbImage *alloc_rgb_image(int w, int h);
+void fwrite_ppmraw(FILE *f, const RgbImage *ri);
+
+#define RI_PIXEL(ri,x,y) ((ri)->data + ((y)*(ri)->w + (x)) * 3)
+
+static inline Rgb ri_rgb(const RgbImage *ri, int x, int y) {
+ const unsigned char *rip= RI_PIXEL(ri,x,y);
+ return (rip[0] << 16) |
+ (rip[1] << 8) |
+ (rip[2] );
+}
+