-#define FL_RGB2GRAY(r,g,b) (unsigned)((77*(r)+150*(g)+28*(b))>>8)
+#define FL_RGB2GRAY(r,g,b) (unsigned)((78*(r)+150*(g)+28*(b))>>8)
 
+struct flimage_src_;
+struct flimage_dest_;

 typedef struct flimage_
 {
  int type; /* image type */
@@ -279,8 +311,10 @@
  int isPixmap;
  FLIMAGESETUP setup;
  char *info;
- int internal_reserved[16];
+ struct flimage_src_ *src; /* src other than file */
+ struct flimage_dest_ *dest; /* destination other than file */
+ int internal_reserved[14];
 }
 FL_IMAGE;
 
-FL_EXPORT int flimage_display(FL_IMAGE *, unsigned long);
+FL_EXPORT int flimage_display(FL_IMAGE *, Window);

-FL_EXPORT int flimage_sdisplay(FL_IMAGE *, unsigned long);
+FL_EXPORT int flimage_sdisplay(FL_IMAGE *, Window);

+FL_EXPORT void flimage_enable_genesis(void);

+FL_EXPORT void flimage_enable_gzip(void);

-FL_EXPORT FLIMAGE_PS_OPTION* flimage_ps_options(void);
+FL_EXPORT FLPS_CONTROL *flimage_ps_options(void);

+/* Miscellaneous prototypes */

+FL_EXPORT void *fl_get_submatrix(void *, int, int, int, int, int, int, unsigned);

+FL_EXPORT int fl_j2pass_quantize_packed(unsigned int **, int, int, int, unsigned short **, int *, int *, int *, int *, FL_IMAGE *);

+FL_EXPORT int fl_j2pass_quantize_rgb(unsigned char **, unsigned char **, unsigned char **, int, int, int, unsigned short **, int *, int *, int *, int *, FL_IMAGE *);

+FL_EXPORT void *fl_make_submatrix(void *, int, int, int, int, int, int, unsigned);

+FL_EXPORT int fl_object_ps_dump(FL_OBJECT *, const char *);

+FL_EXPORT void fl_pack_bits(unsigned char *, unsigned short *, int);

+FL_EXPORT void fl_unpack_bits(unsigned short *, unsigned char *, int);

+FL_EXPORT unsigned int fl_value_to_bits(unsigned);

+FL_EXPORT void flimage_add_comments(FL_IMAGE *, const char *, int);

+FL_EXPORT unsigned long flimage_color_to_pixel(FL_IMAGE *, int, int, int, int *);

+FL_EXPORT FL_IMAGE *flimage_combine(FL_IMAGE *, FL_IMAGE *, double);

+FL_EXPORT int flimage_define_marker(const char *, void (*)(FLIMAGE_MARKER *), const char *);

+FL_EXPORT void flimage_display_markers(FL_IMAGE *);

+FL_EXPORT FL_IMAGE *flimage_dup_(FL_IMAGE *, int);

+FL_EXPORT void flimage_free_ci(FL_IMAGE *);

+FL_EXPORT void flimage_free_gray(FL_IMAGE *);

+FL_EXPORT void flimage_free_linearlut(FL_IMAGE *);

+FL_EXPORT void flimage_free_rgb(FL_IMAGE *);

+FL_EXPORT void flimage_freemem(FL_IMAGE *);

+FL_EXPORT int flimage_get_closest_color_from_map(FL_IMAGE *, unsigned);

+FL_EXPORT int flimage_get_linearlut(FL_IMAGE *);

+FL_EXPORT void flimage_invalidate_pixels(FL_IMAGE *);

+FL_EXPORT int flimage_read_annotation(FL_IMAGE *);

+FL_EXPORT void flimage_replace_image(FL_IMAGE *, int, int, void *, void *, void *);

+FL_EXPORT int flimage_swapbuffer(FL_IMAGE *);

+FL_EXPORT int flimage_to_ximage(FL_IMAGE *, FL_WINDOW win, XWindowAttributes *);

+FL_EXPORT int flimage_write_annotation(FL_IMAGE *);

+FL_EXPORT void flps_apply_gamma(float gamma);

+FL_EXPORT void flps_arc(int, int, int, int, int, int, long col);

+FL_EXPORT void flps_circ(int, int, int, int, long col);

+FL_EXPORT void flps_color(long color);

+FL_EXPORT void flps_draw_box(int, int, int, int, int, long col, int);

+FL_EXPORT void flps_draw_checkbox(int, int, int, int, int, long col, int);

+FL_EXPORT void flps_draw_frame(int, int, int, int, int, long col, int);

+FL_EXPORT int flps_draw_symbol(const char *, int, int, int, int, long col);

+FL_EXPORT void flps_draw_tbox(int, int, int, int, int, long col, int);

+FL_EXPORT void flps_draw_text(int, int, int, int, int, long col, int, int, const char *);

+FL_EXPORT void flps_draw_text_beside(int, int, int, int, int, long col, int, int, const char *);

+FL_EXPORT void flps_emit_header(const char *, int, int, int, int, int);

+FL_EXPORT void flps_emit_prolog(void);

+FL_EXPORT int flps_get_gray255(long color);

+FL_EXPORT int flps_get_linestyle(void);

+FL_EXPORT int flps_get_linewidth(void);

+FL_EXPORT int flps_get_namedcolor(const char *);

+FL_EXPORT FLPS_CONTROL *flps_init(void);

+FL_EXPORT void flps_invalidate_color_cache(void);

+FL_EXPORT void flps_invalidate_font_cache(void);

+FL_EXPORT void flps_invalidate_linewidth_cache(void);

+FL_EXPORT void flps_invalidate_symbol_cache(void);

+FL_EXPORT void flps_line(int, int, int, int, long col);

+FL_EXPORT void flps_lines(FL_POINT *, int, long col);

+FL_EXPORT void flps_linestyle(int);

+FL_EXPORT void flps_linewidth(int);

+FL_EXPORT void flps_log(const char *);

+FL_EXPORT void flps_output(const char *, ...);

+FL_EXPORT void flps_oval(int, int, int, int, int, long col);

+FL_EXPORT void flps_pieslice(int, int, int, int, int, int, int, long col);

+FL_EXPORT void flps_poly(int, FL_POINT *, int, long col);

+FL_EXPORT void flps_rectangle(int, int, int, int, int, long col);

+FL_EXPORT void flps_reset_cache(void);

+FL_EXPORT void flps_reset_linewidth(void);

+FL_EXPORT void flps_restore_flps(void);

+FL_EXPORT void flps_rgbcolor(int, int, int);

+FL_EXPORT void flps_roundrectangle(int, int, int, int, int, long col);

+FL_EXPORT void flps_set_clipping(int, int, int, int);

+FL_EXPORT void flps_set_font(int, int);

+FL_EXPORT void flps_unset_clipping(void);
