/* Clipboard Interface function definitions. */

#ifndef drwClipfnh_H
 #define drwClipfnh_H

#if defined NAMESPACE_DRWIMPC
  namespace DrWimpC {
#endif

#if defined NAMESPACE_OSLIB
  using namespace OSLib;
#endif

typedef void (*drw_show_clipbd_savebox_fn)(void);
typedef void (*drw_load_clipbd_data_fn)(char *filename,
                                        wimp_w whan,
                                        wimp_i icon,
                                        bits ftype2,
                                        int workx,
                                        int worky,
                                        int do_paste);
typedef int (*drw_clipbd_quicksave_fn)(void);
typedef int (*drw_save_clipbd_fn)(char *filename,
                                  void *clipdata,
                                  int clipdatasize,
                                  bits clipftype);
typedef int (*drw_wint_save_clipbd_fn)(char *filename);
typedef int (*drw_releasing_clipbd_fn)(wimp_w whan, wimp_i icon);
typedef void (*drw_mselclipitem_fn)(wimp_menu *menu, int itemno);
typedef void (*drw_clipbd_change_mstate_fn)(int new_copy_item_state,
                                            int new_cut_item_state,
                                            int new_paste_item_state,
                                            int new_clear_item_state);
typedef int (*drw_clip_key_press_fn)(wimp_key_no wkey,
                                     int dkinuse,
                                     drw_dk_flags dkflagwd);
typedef void (*drw_dealloc_clipbd_fn)(void);
typedef void (*drw_clip_paste_data_exists_fn)(bits ftype);
typedef drwGP (*drw_allocate_clipbd_fn)(int newsize, int convdata);
typedef void *(*drw_new_clipbd_size_fn)(int newsize,
                                        int convdata);
typedef bits (*drw_find_clipbd_ftype_fn)(bits *inlist,
                                         bits currcliptype,
                                         bits *cliptypes);
typedef void (*drw_post_paste_fn)(bits msgtype,
                                  char *path,
                                  char *leafname,
                                  wimp_w whandle,
                                  wimp_i iconno,
                                  char *ftype,
                                  bits filetype,
                                  int workx,
                                  int worky);


typedef struct   drw_clipfn_str         drw_clipfn_str;
typedef struct drw_clipbd_str           drw_clipbd_str;

struct drw_clipfn_str {

drw_show_clipbd_savebox_fn    showclipsave;
drw_load_clipbd_data_fn       loadclip;
drw_clipbd_quicksave_fn       qsaveclip;
drw_save_clipbd_fn            saveclip;
drw_wint_save_clipbd_fn       wsaveclip;
drw_releasing_clipbd_fn       releasingclipbd;
drw_mselclipitem_fn           mselclipitem;
drw_clipbd_change_mstate_fn   changemenustate;
drw_clip_key_press_fn         clipkeypress;
drw_dealloc_clipbd_fn         deallocclip;
drw_clip_paste_data_exists_fn clipdataexists;
drw_find_clipbd_ftype_fn      findclipbdftype;
drw_allocate_clipbd_fn        allocateclipbd;
drw_new_clipbd_size_fn        newclipbdsize;
drw_post_paste_fn             postpaste;

};


struct drw_clipbd_str {

drwGP clipbdptr;
drw_mem_type clipbdmemtype;
int clipbdsize;
int allocsize;
int extendby;
int extendfactor;
bits clipbdftype;
bits clipbdftypes[54];
bits convclipbdftype;
drw_mem_type convclipbdmemtype;
drwGP convclipbd_data;
int convclipbd_datasize;
int convalloc_datasize;
wimp_menu *clipmenu;
int clipentryno;
int incclearoption;
wimp_key_no copytoclip;
wimp_key_no pastefromclip;
wimp_key_no cuttoclip;
wimp_key_no clearclip;
bits copytoclipflags;
bits pastefromclipflags;
bits cuttoclipflags;
bits clearclipflags;

};

#if defined NAMESPACE_DRWIMPC
  }
#endif

#include "DRW/drwClipfn.h"

#endif

/* End of Clipboard Interface function definitions. */

