#ifndef drwFn26_H
 #define  drwFn26_H

#include "DRW/drwwh.h"

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif

typedef int (*drw_autofn_hasselection_fn)(wimp_w whan,
                                          wimp_i icon,
                                          wimp_mouse_state buttons,
                                          drw_wcaretseln *cseln,
                                          int mousex,
                                          int mousey,
                                          int x,
                                          int y,
                                          void *userdata);

typedef int (*drw_hasselection_ufn)(wimp_w whan,
                                    wimp_i icon,
                                    wimp_mouse_state buttons,
                                    drw_wcaretseln *cseln,
                                    int mousex,
                                    int mousey,
                                    int x,
                                    int y);

typedef int (*drw_autofn_replaceselection_fn)(wimp_w whan,
                                              wimp_i icon,
                                              wimp_key_no wkey,
                                          drw_wcaretseln *cseln,
                                              void *userdata);

typedef int (*drw_replaceselection_ufn)(wimp_w whan,
                                        wimp_i icon,
                                        wimp_key_no wkey,
                                        drw_wcaretseln *cseln);

typedef int (*drw_autofn_inselection_fn)(wimp_w whan,
                                         wimp_i icon,
                                         wimp_mouse_state buttontype,
                                         drw_wcaretseln *cseln,
                                         os_coord *scrpos,
                                         os_coord *workpos,
                                         int x,
                                         int y,
                                         void *userdata);
typedef int (*drw_inselection_ufn)(wimp_w whan,
                                   wimp_i icon,
                                   wimp_mouse_state buttontype,
                                   drw_wcaretseln *cseln,
                                   os_coord *scrpos,
                                   os_coord *workpos,
                                   int x,
                                   int y);

typedef int (*drw_autofn_gainfocus_fn)(wimp_w whan,
                                       wimp_i icon,
                                       wimp_mouse_state buttons,
                                       drw_wcaretseln *cseln,
                                       int mousex,
                                       int mousey,
                                       int x,
                                       int y,
                                       void *userdata);

typedef int (*drw_gainfocus_ufn)(wimp_w whan,
                                 wimp_i icon,
                                 wimp_mouse_state buttons,
                                 drw_wcaretseln *cseln,
                                 int mousex,
                                 int mousey,
                                 int x,
                                 int y);

typedef int (*drw_autofn_removecaret_fn)(drw_wcaretseln *cseln,
                                         void *userdata);

typedef void (*drw_removecaret_ufn)(drw_wcaretseln *cseln);

typedef int (*drw_autofn_clearselection_fn)(drw_wcaretseln *cseln,
                                            void *userdata);

typedef void (*drw_clearselection_ufn)(drw_wcaretseln *cseln);

typedef int (*drw_autofn_startselndrag_fn)(wimp_w whan,
                                           wimp_i icon,
                                           wimp_mouse_state buttontype,
                                           drw_wcaretseln *cseln,
                                           os_coord *pos,
                                           os_coord *workpos,
                                           os_box *bbox,
                                           os_box *initial,
                                           os_t *dragdelay,
                                      wimp_dragging_flags *draggingflags,
                                           bits *filetypes,
                                           void *userdata);

typedef int (*drw_startselndrag_ufn)(wimp_w whan,
                                     wimp_i icon,
                                     wimp_mouse_state buttontype,
                                     drw_wcaretseln *cseln,
                                     os_coord *pos,
                                     os_coord *workpos,
                                     os_box *bbox,
                                     os_box *initial,
                                     os_t *dragdelay,
                                wimp_dragging_flags *draggingflags,
                                     bits *filetypes);

typedef int (*drw_autofn_startrbanddrag_fn)(wimp_w whan,
                                            wimp_i icon,
                                            wimp_mouse_state buttontype,
                                            drw_wcaretseln *cseln,
                                            os_coord *pos,
                                            os_coord *workpos,
                                            os_box *bbox,
                                            os_box *initial,
                                            void *userdata);

typedef int (*drw_startrbanddrag_ufn)(wimp_w whan,
                                      wimp_i icon,
                                      wimp_mouse_state buttontype,
                                      drw_wcaretseln *cseln,
                                      os_coord *pos,
                                      os_coord *workpos,
                                      os_box *bbox,
                                      os_box *initial);

typedef int (*drw_autofn_startpointdrag_fn)(wimp_w whan,
                                            wimp_i icon,
                                            wimp_mouse_state buttontype,
                                            drw_wcaretseln *cseln,
                                            os_coord *pos,
                                            os_coord *workpos,
                                            os_box *bbox,
                                            os_box *initial,
                                            void *userdata);

typedef int (*drw_startpointdrag_ufn)(wimp_w whan,
                                      wimp_i icon,
                                      wimp_mouse_state buttontype,
                                      drw_wcaretseln *cseln,
                                      os_coord *pos,
                                      os_coord *workpos,
                                      os_box *bbox,
                                      os_box *initial);

typedef int (*drw_autofn_claimdrag_fn)(wimp_w w,
                                       wimp_i i,
                                       int x,
                                       int y,
                                       wimp_drag_claim_flags claimflags,
                                       os_box *bbox,
                                       bits *sender_file_types,
                                       int *autoscroll,
                                       int *delete_source,
                                       bits *receiver_file_types,
                                       void *userdata);

typedef int (*drw_claimdrag_ufn)(wimp_w w,
                                 wimp_i i,
                                 int x,
                                 int y,
                                 wimp_drag_claim_flags claimflags,
                                 os_box *box,
                                 bits *sender_file_types,
                                 int *autoscroll,
                                 int *delete_source,
                                 bits *receiver_file_types);

typedef int (*drw_autofn_drawptrghostcaret_fn)(wimp_caret *ghostcaret,
                                               wimp_w w,
                                               wimp_i i,
                                               int x,
                                               int y,
                                               os_box *box,
                                               int drawcaret,
                                               int *suppress_drag_box,
                                               void *userdata);

typedef int (*drw_drawptrghostcaret_ufn)(wimp_caret *ghostcaret,
                                         wimp_w w,
                                         wimp_i i,
                                         int x,
                                         int y,
                                         os_box *bbox,
                                         int drawcaret,
                                         int *suppress_drag_box);

typedef int (*drw_autofn_endrbanddrag_fn)(wimp_w w,
                                          wimp_i i,
                                          wimp_mouse_state wDragbutton,
                                          int wStartx,
                                          int wStarty,
                                          os_box *finalbox,
                                          wimp_w overwindow,
                                          wimp_i overicon,
                                          int atx,
                                          int aty,
                                          drw_wcaretseln *cseln,
                                          void *userdata);

typedef void (*drw_endrbanddrag_ufn)(wimp_w w,
                                     wimp_i i,
                                     wimp_mouse_state wDragbutton,
                                     int wStartx,
                                     int wStarty,
                                     os_box *finalbox,
                                     wimp_w overwindow,
                                     wimp_i overicon,
                                     int atx,
                                     int aty,
                                     drw_wcaretseln *cseln);

typedef int (*drw_autofn_endpointdrag_fn)(wimp_w w,
                                          wimp_i i,
                                          wimp_mouse_state wDragbutton,
                                          int wStartx,
                                          int wStarty,
                                          os_box *finalbox,
                                          wimp_w overwindow,
                                          wimp_i overicon,
                                          int atx,
                                          int aty,
                                          drw_wcaretseln *cseln,
                                          void *userdata);

typedef void (*drw_endpointdrag_ufn)(wimp_w w,
                                     wimp_i i,
                                     wimp_mouse_state wDragbutton,
                                     int wStartx,
                                     int wStarty,
                                     os_box *finalbox,
                                     wimp_w overwindow,
                                     wimp_i overicon,
                                     int atx,
                                     int aty,
                                     drw_wcaretseln *cseln);

typedef int (*drw_autofn_getnextselnobject_fn)(drw_wcaretseln *cseln,
                                               wimp_t dragclaimant,
                                               wimp_w destwhan,
                                               wimp_i destic,
                                               int destx,
                                               int desty,
                                 wimp_dragging_flags draggingflags,
                                               char *filename,
                                               bits *this_file_type,
                                               int *thisestsize,
                                               int objectno,
                                               void *userdata);

typedef int (*drw_getnextselnobject_ufn)(drw_wcaretseln *cseln,
                                         wimp_t dragclaimant,
                                         wimp_w destwhan,
                                         wimp_i destic,
                                         int destx,
                                         int desty,
                           wimp_dragging_flags finaldraggingflags,
                                         char *filename,
                                         bits *this_file_type,
                                         int *thisestsize,
                                         int objectno);

typedef int (*drw_autofn_deleteselnsource_fn)(drw_wcaretseln *cseln,
                                              int objectno,
                                              void *userdata);

typedef void (*drw_deleteselnsource_ufn)(drw_wcaretseln *cseln,
                                         int objectno);

typedef int (*drw_autofn_setinsertpoint_fn)(wimp_caret *ghostcaret,
                                            wimp_w destwhan,
                                            wimp_i destic,
                                            int destx,
                                            int desty,
                                            drw_wcaretseln *cseln,
                                            void *userdata);

typedef void (*drw_setinsertpoint_ufn)(wimp_caret *ghostcaret,
                                       wimp_w destwhan,
                                       wimp_i destic,
                                       int destx,
                                       int desty,
                                       drw_wcaretseln *cseln);

typedef struct drw_autofn_seln_data      drw_autofn_seln_data;


struct drw_autofn_seln_data {

wimp_mouse_state buttons;
drw_wcaretseln *cseln;
int mousex;
int mousey;
int x;
int y;
wimp_key_no wkey;
os_coord *scrpos;
os_coord *workpos;
os_box *bbox;
os_box *initial;
os_t *dragdelay;
wimp_dragging_flags *draggingflags;
wimp_dragging_flags finaldraggingflags;
bits *filetypes;
wimp_drag_claim_flags claimflags;
int *autoscroll;
int *delete_source;
bits *receiver_file_types;
wimp_caret *ghostcaret;
int drawcaret;
int *suppress_drag_box;
wimp_w overwindow;
wimp_i overicon;
wimp_t dragclaimant;
char *filename;
int *thisestsize;
int objectno;


};


#if defined NAMESPACE_DRWIMPC
  }
#endif

#ifndef drwFn00_H
 #include "DRW/drwFn00h.h"
#endif

#include "DRW/drwFn26.h"

#endif

