| /* |
| * |
| * R : A Computer Language for Statistical Data Analysis |
| * file ga.h |
| * Copyright (C) 1998--1999 Guido Masarotto |
| * Copyright (C) 2004--2008 The R Foundation |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, a copy is available at |
| * https://www.R-project.org/Licenses/ |
| */ |
| |
| /* |
| New declarations. |
| */ |
| |
| #ifndef __GA__VERSION |
| #define __GA__VERSION 2.45(1) |
| #include "graphapp.h" |
| |
| /* renamed functions */ |
| void gamainloop(void); |
| void gabeep(void); |
| |
| #define DblClick 0x0010/* added for buttons.c*/ |
| |
| |
| /* windows.c */ |
| #define Border 0x10100000L |
| void app_cleanup(void); |
| int ismdi(void); |
| int isUnicodeWindow(control c); |
| int isiconic(window w); |
| rect screen_coords(control c); |
| |
| /* gmenus.c */ |
| typedef struct { |
| char *nm; |
| menufn fn; |
| int key; |
| menuitem m; |
| } MenuItem; |
| |
| #define STARTMENU {"#STARTMENU", 0, 0} |
| #define ENDMENU {"#ENDMENU", 0, 0} |
| #define STARTSUBMENU {"#STARTSUBMENU", 0, 0} |
| #define ENDSUBMENU {"#ENDSUBMENU", 0, 0} |
| #define MDIMENU {"#MDIMENU", 0, 0} |
| #define LASTMENUITEM {0, 0, 0} |
| menu newmdimenu(void); |
| typedef menu popup; |
| popup newpopup(actionfn fn); |
| menubar gmenubar(actionfn fn, MenuItem []); |
| popup gpopup(actionfn fn, MenuItem []); |
| void gchangepopup(window w, popup p); |
| /* next is limited to current window... */ |
| void gchangemenubar(menubar mb); |
| |
| |
| /* tooltips.c */ |
| int addtooltip(control c, const char *tp); |
| |
| /* status.c */ |
| int addstatusbar(void); |
| int delstatusbar(void); |
| void setstatus(const char *text); |
| |
| /* dialogs.c */ |
| void setuserfilter(const char *); |
| void askchangedir(void); |
| char * askcdstring(const char *question, const char *default_string); |
| char * askfilesavewithdir(const char *title, const char *default_name, |
| const char *dir); |
| char * askfilenames(const char *title, const char *default_name, int multi, |
| const char *filters, int filterindex, char *strbuf, |
| int bufsize, const char *dir); |
| int countFilenames(const char *strbuf); /* Note that first name is path when there are multiple names */ |
| |
| void setuserfilterW(const wchar_t *); |
| wchar_t *askfilenameW(const char *title, const char *default_name); |
| wchar_t *askfilenamesW(const wchar_t *title, const wchar_t *default_name, |
| int multi, |
| const wchar_t *filters, int filterindex, |
| const wchar_t *dir); |
| wchar_t *askfilesaveW(const char *title, const char *default_name); |
| |
| |
| |
| /* rgb.c */ |
| rgb nametorgb(const char *colourname); |
| const char * rgbtoname(rgb in); |
| int rgbtonum(rgb in); |
| rgb myGetSysColor(int); |
| rgb dialog_bg(void); |
| |
| |
| /* clipboard.c */ |
| void copytoclipboard(drawing src); |
| int copystringtoclipboard(const char *str); |
| int getstringfromclipboard(char * str, int n); |
| int clipboardhastext(void); |
| |
| /* gimage.c */ |
| image bitmaptoimage(bitmap bm); |
| |
| /* printer.c */ |
| typedef objptr printer; |
| printer newprinter(double w, double h, const char *name); |
| void nextpage(printer p); |
| |
| /* metafile.c */ |
| typedef objptr metafile; |
| metafile newmetafile(const char *name, double width, double height, |
| double xpinch, double ypinch); |
| |
| |
| /* thread safe and extended drawing functions (gdraw.c) */ |
| #define lSolid 0 |
| #define lDash (5 | (4<<4)) |
| #define lShortDash (3 | (4<<4)) |
| #define lLongDash (8 | (4<<4)) |
| #define lDot (1 | (4<<4)) |
| #define lDashDot (5 | (4<<4) | (1<<8) | (4<<12)) |
| #define lShortDashDot (3 | (4<<4) | (1<<8) | (4<<12)) |
| #define lLongDashDot (8 | (4<<4) | (1<<8) | (4<<12)) |
| #define lDashDotDot (5 | (4<<4) | (1<<8) | (3<<12) | (1<<16) | (4<< 20)) |
| #define lShortDashDotDot (3 | (4<<4) | (1<<8) | (3<<12) | (1<<16) | (4<< 20)) |
| #define lLongDashDotDot (8 | (4<<4) | (1<<8) | (3<<12) | (1<<16) | (4<< 20)) |
| |
| rect ggetcliprect(drawing d); |
| void gsetcliprect(drawing d, rect r); |
| void gbitblt(bitmap db, bitmap sb, point p, rect r); |
| void gscroll(drawing d, point dp, rect r); |
| void ginvert(drawing d, rect r); |
| rgb ggetpixel(drawing d, point p); |
| void gsetpixel(drawing d, point p, rgb c); |
| void gdrawline(drawing d, int width, int style, rgb c, point p1, point p2, |
| int fast, int lend, int ljoin, float lmitre); |
| void gdrawrect(drawing d, int width, int style, rgb c, rect r, int fast, |
| int lend, int ljoin, float lmitre); |
| void gfillrect(drawing d, rgb fill, rect r); |
| void gcopy(drawing d, drawing d2, rect r); |
| void gcopyalpha(drawing d, drawing d2, rect r, int alpha); |
| void gcopyalpha2(drawing d, image src, rect r); |
| void gdrawellipse(drawing d, int width, rgb border, rect r, int fast, |
| int lend, int ljoin, float lmitre); |
| void gfillellipse(drawing d, rgb fill, rect r); |
| void gdrawpolyline(drawing d, int width, int style, rgb c, |
| point *p, int n, int closepath, int fast, |
| int lend, int ljoin, float lmitre); |
| #define gdrawpolygon(d,w,s,c,p,n,f,e,j,m) gdrawpolyline(d,w,s,c,p,n,1,f,e,j,m) |
| void gsetpolyfillmode(drawing d, int oddeven); |
| void gfillpolygon(drawing d, rgb fill, point *p, int n); |
| void gfillpolypolygon(drawing d, rgb fill, point *p, int npoly, int *nper); |
| void gdrawimage(drawing d, image img, rect dr, rect sr); |
| void gmaskimage(drawing d, image img, rect dr, rect sr, image mask); |
| int gdrawstr(drawing d, font f, rgb c, point p, const char *s); |
| void gdrawstr1(drawing d, font f, rgb c, point p, const char *s, double hadj); |
| rect gstrrect(drawing d, font f, const char *s); |
| point gstrsize(drawing d, font f, const char *s); |
| int gstrwidth(drawing d ,font f, const char *s); |
| void gcharmetric(drawing d, font f, int c, int *ascent, int *descent, |
| int *width); |
| font gnewfont(drawing d, const char *face, int style, int size, |
| double rot, int usePoints); |
| font gnewfont2(drawing d, const char *face, int style, int size, |
| double rot, int usePoints, int quality); |
| int ghasfixedwidth(font f); |
| field newfield_no_border(const char *text, rect r); |
| |
| int gdrawwcs(drawing d, font f, rgb c, point p, const wchar_t *s); |
| int gwcswidth(drawing d, font f, const wchar_t *s); |
| |
| void gwcharmetric(drawing d, font f, int c, int *ascent, int *descent, |
| int *width); |
| void gwdrawstr1(drawing d, font f, rgb c, point p, const wchar_t *s, int cnt, |
| double hadj); |
| int gstrwidth1(drawing d ,font f, const char *s, int enc); |
| |
| /* pixels */ |
| int devicewidth(drawing dev); |
| int deviceheight(drawing dev); |
| /* mm */ |
| int devicewidthmm(drawing dev); |
| int deviceheightmm(drawing dev); |
| /* pixels per inch */ |
| int devicepixelsx(drawing dev); |
| int devicepixelsy(drawing dev); |
| |
| int isTopmost(window w); |
| void BringToTop(window w, int stay); /* stay=0 for regular, 1 for topmost, 2 for toggle */ |
| void * getHandle(window w); |
| void GA_msgWindow(window c, int type); |
| |
| |
| /* gbuttons.c */ |
| /* horizontal, vertical and control scrollbar */ |
| #define HWINSB 0 |
| #define VWINSB 1 |
| #define CONTROLSB 2 |
| void gchangescrollbar(scrollbar sb, int which, int where, int max, |
| int pagesize, int disablenoscroll); |
| void gsetcursor(drawing d, cursor c); |
| control newtoolbar(int height); |
| button newtoolbutton(image img, rect r, actionfn fn); |
| void scrolltext(textbox c, int lines); |
| int ggetkeystate(void); |
| |
| void scrollcaret(textbox c, int lines); |
| void gsetmodified(textbox c, int modified); |
| int ggetmodified(textbox c); |
| int getlinelength(textbox c); |
| void getcurrentline(textbox c, char *line, int length); |
| void getseltext(textbox c, char *text); |
| void setlimittext(textbox t, long limit); |
| long getlimittext(textbox t); |
| void checklimittext(textbox t, long n); |
| long getpastelength(void); |
| void textselectionex(control obj, long *start, long *end); |
| void selecttextex(control obj, long start, long end); |
| |
| void finddialog(textbox t); |
| void replacedialog(textbox t); |
| int modeless_active(void); |
| |
| |
| /* menus.c */ |
| void remove_menu_item(menuitem obj); |
| |
| /* events.c */ |
| void toolbar_show(void); |
| void toolbar_hide(void); |
| |
| #endif /* __GA__VERSION */ |