blob: 2b2cc3b7aaa26fb83472b00c2cfde983104e44ce [file] [log] [blame]
/*
*
* 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 */