/***************************************************************/ /* */ /* Copyright (c) Quinn-Curtis, 1991, 1992 */ /* */ /* Filename: RTGSUBS.H */ /* Revision: 3.0 */ /* Date: 2/3/92 */ /* */ /* Description: - Core real-time graphics routines */ /* Real-time graph type structure definition */ /***************************************************************/ #ifdef __cplusplus extern "C" { #endif #ifndef realtype #include "rtstdhdr.h" #endif #ifndef rtgsdef #define rtgsdef typedef struct { realtype left, bottom, right, top; } rtwrect; typedef struct { int left, bottom, right, top; } rtprect; typedef struct { int x, y; } rtp2d; typedef struct { float x, y; } rtw2d; typedef rtp2d *poly2dtype; typedef rtw2d *polyw2dtype; typedef char tagtype[40]; typedef char titletype[80]; typedef char alarmstrtype[40]; typedef char messagetype[80]; #define _mrtt 16 /* max number of rt traces per record */ /* rtscrolltype structure used in scrolling line plots, sweep graphs, xy graphs and scrolling bargraphs */ typedef struct { poly2dtype xydata[_mrtt]; /* array of pointer to integer scroll buffer */ polyw2dtype xywdata[_mrtt]; /* array of pointer to real scroll buffer */ int rwflag, /* flag to save real world values */ ly[_mrtt], /* previous integer last values */ ratchetflag, /* control staircase step mode */ vh,vw, /* window viewport height and width */ resetfrom, /* scroll graph resets when rtindex hits resetfrom */ resetto, /* scroll graph resets rtindex to reset to after scroll reset */ rtindex, /* current new value index */ rtfp, /* first pass through flag */ rtgrid,gridcntr, /* grid value, and grid counter */ lapix, hapix, spntpix; /* store alarm values by actual pixels */ realtype minyvalue, maxyvalue, minxvalue, maxxvalue, /* min and max x and y value scaling */ minxlab, /* starting point for time axis labeling */ highalarmlimit, /* high alarm limit */ lowalarmlimit, /* low alarm limit */ setpointvalue, /* setpoint value */ xcf; /* intersample spacing */ } rtscrolltype; /* rtlogictype structure used for logic graphs only */ typedef struct { poly2dtype xydata[_mrtt]; /* array of pointer to logic buffer */ polyw2dtype xywdata[_mrtt]; /* array of pointer to real logic buffer */ int rwflag, /* flag to save real world values */ ly[_mrtt], /* previous integer last values */ ratchetflag, /* controls staircase step mode */ vh,vw, /* viewport height and width */ resetfrom, /* logic graph resets when rtindex hits resetfrom */ resetto, /* logic graph resets rtindex to resetto */ rtindex, /* current newvalue index */ rtgrid,gridcntr, /* grid value and grid counter */ rtfp; /* first pass through flag */ realtype minxvalue, maxxvalue, minyvalue, maxyvalue, /* min and max x and y value scaling */ minxlab, /* starting point for x axis scaling */ xcf; /* intersample spacing */ } rtlogictype; /* rtbgtype structure used for horizontal and vertical bargraphs */ typedef struct { alarmstrtype alarmstrs[3]; /* strings for high, low and OK alarm messages */ realtype minvalue, centervalue, maxvalue, /* min, max and center value for bargraph scaling */ highalarmlimit, lowalarmlimit, setpointvalue; /* alarm limits and setpoint value */ int barwidth; /* barwidth in pixels */ int vw, vh; /* window viewport height and width */ int flagarray[_mrtt]; /* unused */ } rtbgtype; /* rtpcbgtype structure used for PID bargraphs */ typedef struct { alarmstrtype alarmstrs1[3]; /* Left axis strings for high, low and OK alarm messages */ int decs1; /* number of decimal points for left y axis */ char units1[_mrtt]; /* units for left axis */ realtype minvalue1, centervalue1, maxvalue1, /* min, max and center value for left axis */ highalarmlimit1, lowalarmlimit1; /* high and low alarm limits for left axis */ alarmstrtype alarmstrs2[3]; /* right axis strings for high, low and OK alarm messages */ int decs2; /* number of decimal points for right y axis */ char units2[_mrtt]; /* units for right axis */ realtype minvalue2, centervalue2, maxvalue2, highalarmlimit2, lowalarmlimit2; /* high and low alarm limits for right axis */ int barwidth, /* bar width in pixels */ vw, vh; /* window viewport height and width */ int flagarray[_mrtt]; /* unused */ } rtpcbgtype; /* rttexttype structure used for the real-time text displays */ typedef struct {realtype lowalarmlimits[_mrtt], /* array of low alarm limits */ highalarmlimits[_mrtt], /* array of high alarm limits */ setpoints[_mrtt]; /* array of setpoints */ tagtype highalarmstrs[_mrtt], /* array of high alarm strings */ lowalarmstrs[_mrtt], /* array of low alarm strings */ noalarmstrs[_mrtt], /* array of strings for when there are no alarms */ eunitstrs[_mrtt]; /* string holding engineering units */ messagetype messagestrs[_mrtt]; /* array of message strings */ int flagarray[10]; /* holds flags about which columns to print */ int lsdelta; /* line spacing increment for text */ } rttexttype; /* rtannuntype structure used for the real-time annunciator displays */ typedef struct { realtype lowalarmlimits[_mrtt], /* array of low alarm limits */ highalarmlimits[_mrtt], /* array of high alarm limits */ setpoints[_mrtt]; /* array of setpoints */ tagtype highalarmstrs[_mrtt], /* array of high alarm strings */ lowalarmstrs[_mrtt], /* array of low alarm strings */ noalarmstrs[_mrtt], /* array of strings for when there are no alarms */ eunitstrs[_mrtt]; /* string holding engineering units */ int cellw, cellh, /* cell width and height */ columns, rows; /* number of cell columns and rows */ int flagarray[16]; /* holds flags about which items in a cell to print */ int lsdelta; /* line spacing increment for text */ } rtannuntype; /* rtpaneltype structure used for the real-time panel meter displays */ typedef struct { int secfontsize; /* second font size, allowing 2 different sizes in cell */ tagtype eunitstrs[_mrtt]; /* string holding engineering units */ int cellw, cellh, /* cell width and height */ columns, rows; /* number of cell columns and rows */ } rtpaneltype; /* rtslidertype structure used for the real-time slider displays */ typedef struct { int secfontsize; /* second font size, allowing 2 different sizes in cell */ tagtype eunitstrs[_mrtt]; /* string holding engineering units */ realtype minvalue[_mrtt], /* min value for slider */ incrvalue[_mrtt], /* min increment for slider */ maxvalue[_mrtt]; /* max value for slider */ int cellw, cellh, /* cell width and height */ columns, rows; /* number of cell columns and rows */ rtprect cellrect[_mrtt]; /* cell viewport coordinates for fast lookup */ } rtslidertype; /* rtmetertype structure used for the real-time meter displays , including needle meters, arc meters and pie meters */ typedef struct { alarmstrtype alarmstrs[3]; /* strings for high, low and OK alarm messages */ int clockflag, /* clock flag */ cpxi,cpyi, /* meter centerpoint x & y coords in pixels */ starti ,stopi, /* meter arc start and stop points in degrees */ spani, /* meter arc range in degrees */ radiusi, /* meter arc radius in pixels */ numsegs, /* number of tic marks */ nthticlab; /* label every nth tic mark */ realtype cpxr, cpyr, cpradr, /* centerpoint and radius */ yr1, yr2, /* min and max scaling values for meter arc */ ar, /* aspect ratio of screen */ ticlen, /* length of meter tic marks */ minvalue, /* unused */ centervalue, /* center value for arc and pie meters */ maxvalue, /* min, max and centerpoint scaling values for meter arc */ highalarmlimit, /* high alarm limit */ lowalarmlimit, /* low alarm limit */ setpointvalue; /* setpoint value */ } rtmetertype; /* rtgtexttype structure used for the real-time graphics text displays */ typedef struct { messagetype messagestrs[_mrtt]; /* array of text, one string for each cell */ int cellw, cellh, /* cell width and height */ columns, rows; /* number of cell columns and rows */ } rtgtexttype; /* rtgraphtypes */ #define notrt 0 /* window which has not been assigned a type yet */ #define rtscroll 1 /* scrolling line graph */ #define rtsweep 2 /* sweep line graph */ #define rtlogic 3 /* logic graph */ #define rtxyg 4 /* xy plot graph */ #define rtscrollbar 5 /* scrolling bar graph */ #define rtvbg 6 /* vertical bar graph */ #define rthbg 7 /* horizontal bar graph */ #define rtpcbg 8 /* process control bar graph */ #define rtnmeter 9 /* needle meter */ #define rtclock 10 /* clock */ #define rtpmeter 11 /* pie meter */ #define rtameter 12 /* arc meter */ #define rtpctext 13 /* process control text */ #define rtannun 14 /* annunciator panel */ #define rtpanel 15 /* panel meter */ #define rtgtext 16 /* graphics text display */ #define rtslider 17 /* slider display */ /* union of all of the real-time window types to allow any window to be any type */ typedef union { rtscrolltype rtscrollstat; rtscrolltype rtsweepstat; rtlogictype rtlogicstat; rtscrolltype rtxygstat; rtscrolltype rtscrollbarstat; rtbgtype rtvbgstat; rtbgtype rthbgstat; rtpcbgtype rtpcbgstat; rtmetertype rtmeterstat; rttexttype rttextstat; rtannuntype rtannunstat; rtpaneltype rtpanelstat; rtgtexttype rtgtextstat; rtslidertype rtsliderstat; } rtstatunion; /* rtstattype window structure which contains the union of the specific real-time window types and parameters which are common across all of the windows */ typedef struct { int valid, /* window has been initialized */ numticx, numticy, /* number of tic marks for x and y axes */ pbgcolor, vbgcolor, /* plot background color, viewport background color */ hacolor, lacolor, /* high alarm color, low alarm color */ okcolor, labcolor, /* no alarm color, label color */ axiscolor, /* axes color */ numtraces, /* number of traces, channels */ xdecimals,ydecimals, /* number of decimals for x and y axes */ rtfirstpass, /* first pass flag */ borderflag, bordercolor, /* 1 = border for window */ printerflag, /* 1 = printer driver in effect */ curfont, curfontsize; /* primary font and primary font size */ rtprect pr, dr; /* viewport of plotting rectangle and drawing rectangle in pixels */ rtwrect w2pr, /* win to plot ratio values for plotting and drawing rect */ pw, pc, /* world coordinates of plotting rect and drawing rect */ mm, /* world coordinates of plotting rect */ nwp; /* window postion in normalized (0-1) coordinates */ realtype xint, yint, /* x and y intercept of axes */ tsx, tsy, /* tic mark label spacing */ ticspacex, ticspacey; /* tic mark spacing */ realtype lastvalues[_mrtt]; /* last values in engineering units */ int linecolor[_mrtt],linefill[_mrtt]; /* line color and line fill attributes */ char titlestr[80]; /* title for window */ tagtype tagstrs[_mrtt]; /* an array of strings holding one string for every trace */ char eunitstr[_mrtt]; /* primary engineering units string */ char eunitstr2[_mrtt]; /* secondary engineeing units string */ int xscaledir, yscaledir, /* unused */ hvflag, scrolldir; /* horiz/vert flag, scroll direction flag */ int rtwintype; /* current window type */ rtstatunion rtws; /* window specific data */ } rtstattype; typedef rtstattype *rtstatpntr; /* define a pointer type to rtstattype */ typedef struct { int left, bottom, right, top, clip; } viewporttype; /* structure to hold global variables for the rtgsubs module */ typedef struct { int gdr, /* graphics driver # */ gmd, /* graphics mode */ rtprnon, /* printer on flag */ rtnumwin, /* number of initialized rt windows */ ginit, /* flag if rtinitgraphics called */ introffmask,intronmask, /* masks used to mask mouse interrupt on/off */ maxcolor, /* holds maximum color for current video mode */ vph, vpl, /* current viewport height and width */ clipflag, /* clipflag = 1 clipping on */ texthcell, textwcell, /* height and width of graphics text character */ txtbc, txtfc, /* graphics text background and foreground color */ intrmskf; /* 1 = mask interrupts when doing graphics calls */ realtype wx, wy, /* viewport origin in world coordinates */ wh, wl, /* height and width of viewport in world coordinates */ tx,ty; /* scaling factors for conversion from world coordinates to pixel coordinates */ char ts[80]; /* general purpose string */ /* microsoft c only */ viewporttype vp; /* current viewport */ int crtpat , crtc;} rtgvtype; /* MSC Start */ enum line_styles { /* Line styles for get/setlinestyle */ SOLID_LINE = 0, DOTTED_LINE = 1, CENTER_LINE = 2, DASHED_LINE = 3, USERBIT_LINE = 4, /* User defined line style */ }; enum fill_patterns { /* Fill patterns for get/setfillstyle */ EMPTY_FILL, /* fills area in background color */ SOLID_FILL, /* fills area in solid fill color */ LINE_FILL, /* --- fill */ LTSLASH_FILL, /* /// fill */ SLASH_FILL, /* /// fill with thick lines */ BKSLASH_FILL, /* \\\ fill with thick lines */ LTBKSLASH_FILL, /* \\\ fill */ HATCH_FILL, /* light hatch fill */ XHATCH_FILL, /* heavy cross hatch fill */ }; enum line_widths { /* Line widths for get/setlinestyle */ NORM_WIDTH = 1, THICK_WIDTH = 3, }; enum text_just { /* Horizontal and vertical justification for settextjustify */ LEFT_TEXT = 0, CENTER_TEXT = 1, RIGHT_TEXT = 2, BOTTOM_TEXT = 0, /* CENTER_TEXT = 1, already defined above */ TOP_TEXT = 2 }; struct linesettingstype { int linestyle; unsigned upattern; int thickness; }; struct textsettingstype { int font; int direction; int charsize; int horiz; int vert; }; struct fillsettingstype { int pattern; int color; }; #define HORIZ_DIR 0 #define VERT_DIR 1 #define outportb outp #define inportb inp #endif /* start of progotypes for rtgsubs */ void arc(int x,int y, int starta, int enda, int r); void moveto(int x, int y); void clearviewport(void); int getmaxx(void); int getx(void); int gety(void); int textheight(char *s); int textwidth(char *s); void moverel( int x1, int y1 ); void line(int x1, int y1, int x2, int y2); void linerel( int x1, int y1 ); int getmaxy(void); void getaspectratio(int *x, int *y); void bar(int x1, int y1, int x2, int y2); void rectangle(int x1, int y1, int x2, int y2); void setviewport(int x1, int y1, int x2, int y2, int clipflag); void rtgetviewsettings(viewporttype *view); void setfillstyle( int pat,int c ); void gettextsettings(struct textsettingstype *t); void setlinestyle( int ls, int pat,int thick ); void closegraph(void); char *getdrivername(void); int getmaxcolor(void); int testmode(void); void showdetecterror(void); void settextjustify(int xjust, int yjust); void settextstyle(int font, int orient, int size); void drawpoly (int n, int *pnts); int getcolor(void); void outtext (char far *s); /* END MSC */ int rtth(realtype n); int rtround( realtype x ); int rttrunc( realtype x ); void copyrealarray(realtype *target, realtype *source, int n); void copyintarray(int *target, int *source, int n); void rtsetintrmaskflag(int f); void rtintroff(void); void rtintron(void); int rtingraphmode(void); void rtsetfgbgcolors(int fg,int bg); void rtinitgraphtextstuff(void); void rtgraphgotoxy(int x,int y); int rtgraphwherex(void); int rtgraphwherey(void); void rtgraphbox(int x,int y,int numcharx); void rtgraphtextbox(int left, int top, int w, int h); void rtgraphclreol(void); void rtgraphwritelj(char *s, int ww); void rtgraphwriterj(char *s, int ww); void rtgraphwrite(char *s, int ww, int just); void rtgraphwritechar(char c, int ww, int just); void rtgraphwriteint(int i, int w); void rtgraphwritereal(realtype r, int ww, int decs); void rtsetgraphtextcolors(int fg, int bg); void rtreversevideoon(void); void rtreversevideooff(void); void rtgraphreadln(char *s); void rtgraphreadreal(realtype *r); void rtgraphreadint(int *i); int rtviewportwidth(void); int rtviewportheight(void); void rtclipon(void); void rtclipoff(void); void rtsetgraphviewport(int x1,int y1,int x2,int y2); void rtonetimeinit(int mode, char *direct); void rtsetmouseintrnum(int intnum); void rtbarni(int x1, int y1, int x2, int y2); void rtarcni(int x1,int y1, int starta, int enda, int radius); void rtfatarcni(int x1, int y1, int starta, int enda,int radius1, int radius2); void rtsetcolor(int c); void rtfatarc(int x1, int y1, int starta, int enda, int radius1, int radius2,int lcolor); void rtpiesliceni(int x1, int y1,int starta,int enda, int radius); void rtpieslice(int x1, int y1, int starta, int spana, int radius,int piecolor, int piefill); void rtrectangleni(int x1, int y1,int x2,int y2); void rtlinetoni(int x1,int y1); void rtlineni(int x1,int y1, int x2, int y2); void rtlinerelni(int x1, int y1); void rtouttextni(char *s); void rtdrawpolyni(int n, int *pnts); void rtbarxx(int x1, int y1, int x2, int y2); void rtbarxy( int xx1, int yy1,int w,int h, int oc,int gc,int gh ); void rtrectanglexx(realtype x1, realtype y1, realtype x2, realtype y2); void rtgetmaxcoords(int *x,int *y); void rtlinetoxx(int x,int y); void rtlinerelxx(int x,int y); void rtmovetoxx(int x, int y); void rtmoverelxx(int x, int y); void rtsetrtworldrect( rtwrect *r, realtype a, realtype b,realtype c,realtype d); void rtgetviewport( int *xx1, int *yy1, int *xx2, int *yy2 ); void rtsetworldcoordinates(realtype x1,realtype y1, realtype x2,realtype y2); void checkoor(realtype *ylow, realtype *yhigh, realtype minrange); int rtclamprealtoint( realtype r, int l, int h); realtype rtclampreal( realtype r, realtype l,realtype h); int rtconvertx1( realtype xx1); int rtconverty1(realtype yy1); int rtconvertx2( realtype xx1 ); int rtconverty2( realtype yy1 ); void rtmoveworldabs( realtype xx1, realtype yy1); void rtmoveworldrel(realtype xx1, realtype yy1); void rtlineworldabs( realtype xx1, realtype yy1); void rtlineworldrel( realtype xx1, realtype yy1 ); void rtbarworld( realtype xx1, realtype yy1, realtype h,realtype w, int gc, int gh); void rtvbar(int xx1, realtype yy1, realtype h,int w, int gc, int gh); void rthbar(realtype xx1, int yy1, int h,realtype w, int gc, int gh); void rtbartextworld( realtype xx1, realtype yy1,realtype h,realtype w, char *s, int bc,int tc ); void rtcircletextworld( realtype xx1, realtype yy1,realtype r, char *s, int bc, int tc ); void rtpolylineworldabs( realtype *x, realtype *y, int numdat); void rtpolylineworldrel( realtype *x, realtype *y, int numdat); void rtpolyfillworldabs( realtype *x, realtype *y, int fillstyle, int fillcolor, int numdat); realtype rtlog(realtype realnum); void rtrswap(realtype *xx1, realtype *xx2); void rtiswap(int *x1, int *x2); int rtnumexp( realtype realnum ); void rtfindminmax(realtype *dataset, int numdat,realtype *minval, realtype *maxval); void rtsortdata(realtype *x, realtype *y, int n, int d ); void rtsortdatax( realtype *x, realtype *y, int n, int d); void rtsortdatay( realtype *x, realtype *y,int n, int d); int rtwinpwidth(rtstattype *win); realtype rtwinwidth(rtstattype *win); int rtwinpheight(rtstattype *win); realtype rtwinwheight(rtstattype *win); int rtplotareapwidth(rtstattype *win); realtype rtplotareawwidth(rtstattype *win); int rtplotareapheight(rtstattype *win); realtype rtplotareawheight(rtstattype *win); int rtcalcticxpix(int majmin); int rtcalcticypix(int majmin); realtype rtcalcticx(rtstattype *win, int majmin); realtype rtcalcticy(rtstattype *win, int majmin); void rtsetwin2plotratio(rtstattype *win, realtype l, realtype t, realtype r,realtype b); void rtsetrect(rtprect *r,int xx1,int yy1,int xx2,int yy2); void rtsdrvp(rtstattype *win); void rtsprvp(rtstattype *win); void rtspcw(rtstattype *win); void rtspww(rtstattype *win); int rtcheckrange(realtype minval,realtype maxval, realtype inval); void rttitlewin(rtstattype *win,char *title); void rtsetwintextstyle(rtstattype *win, int font, int size ); void rtpidtagwindow(rtstattype *win, tagtype *tags,int y1,int n); void rtunitswindow(rtstattype *win, char *units, int x,int y,int orient); void rthtagwindow(rtstattype *win, tagtype *tags,int y1,int n); void rtvtagwindow(rtstattype *win, tagtype *tags,int n, int side); int rtcalctagwidth(tagtype *tags, int n); int rtcalclabelwidth(realtype minval, realtype maxval, int decimals); void rtlineratchetni(int x1,int y1,int x2,int y2, int mode); void rtdrawratchetpoly(int n, rtp2d *data, int mode); void rtdrawalarmline(realtype min, realtype max, realtype alarmval, int hvmode, int color); int rtcalcylabtics(int min,int max); int rtinregion(int x,int y, int x1,int y1,int x2,int y2); int rtfindwindow(rtstattype *win, int x,int y); void rtsetgraphareaworld(rtstattype *win, realtype a,realtype b,realtype c,realtype d); void rtsetwindow(rtstattype *win); void rtdefgraphwindow(rtstattype *win, int xx1,int yy1, int xx2, int yy2); void rtborderwindow(rtstattype *win, int c); void rtsetviewbackground(rtstattype *win, int c); void rtsetplotbackground(rtstattype *win, int c); void rtsetaxisdirection(rtstattype *w, int axdir); void rtscaleplotarea(rtstattype *win, realtype xx1,realtype yy1, realtype xx2, realtype yy2); void rtclearwindow(rtstattype *win); void rtcleargraph(rtstattype *win); void rtsetxyintercepts(rtstattype *win, realtype xx1, realtype yy1); void rtdrawticx(rtstattype *win, realtype x,realtype y,realtype l ); void rtdrawticy(rtstattype *win, realtype x,realtype y,realtype l); void rtdrawxaxis(rtstattype *win, realtype ticspace, int dir); void rtdrawyaxis(rtstattype *win, realtype ticspace, int dir); int rtcalcdecs(realtype a1, realtype a2); void rtconvertnum( realtype innum, realtype a1, realtype a2, realtype ticspace, char *outstr); void rtlabelticystring(rtstattype *win, realtype xx, realtype yy, char *ticlabel, int dir); void rtlabelticy(rtstattype *win, realtype x, realtype y, realtype yval, int decs, int dir); void rtlabelyaxis(rtstattype *win, int nthtic, int decs, int dir); void rtlableticxstring(rtstattype *win, realtype x, realtype y, char *ticlabel, int dir); void rtlabelticx(rtstattype *win, realtype x, realtype y, realtype xval, int decs, int dir); void rtlabelxaxismod(rtstattype *win, realtype start, int nthtic, int decs, int dir); void rtlabelxaxis(rtstattype *win, int nthtic, int decs, int dir); void rtlabelxaxisrt(rtstattype *win,int nthtic, int decs, int dir, realtype startv); void rtlabelyaxisrt(rtstattype *win,int nthtic, int decs, int dir, realtype startv); void rtdrawgridx(rtstattype *win, int nthtic ); void rtdrawgridy(rtstattype *win, int nthtic); void rtdrawgrid(rtstattype *win, int nthtic); realtype rtsign(realtype i); void rtinitwindowcolors(rtstattype *win, int pbgcol, int vbgcol, int lacol, int hacol, int okcol,int labcol,int axiscol); void setrtcomvars(rtstattype *win,int rttype,int *lcolor,int *lfill, char *titstr,tagtype *tags,char *eunits,int numt, int xdecs,int ydecs); int rtcalcalarmstate(realtype la, realtype ha,realtype cv); int rtdeltabar(realtype old, realtype rtnew, realtype center); void rtwriteitext(int x, int y,realtype lastval, realtype newval, int fc,int bc,int decimals); void rtwritestr(int x,int y,char *oldstr,char *newstr,int fc, int bc); int rtcalcalarmcolor(rtstattype *win, int alarmstate); void rtsetpercentwindow(rtstattype *win, realtype x1, realtype y1, realtype x2, realtype y2); void rtpixtoworld(rtstattype *win, int xp, int yp, realtype *xw, realtype *yw); void rtpixtoviewport(rtstattype *win,int drpr,int xp,int yp,int *xvp, int *yvp); int rtgethtagchannel(rtstattype *win,int xp, int yp); int rtgetvtagchannel(rtstattype *win, int xp, int yp,int side); void rtinitwindow(rtstattype *win); void rtgetgraphmode(int *gdriver, int *gmode); int rtcheckprnon(void); void rtgetbgidir(char *direct); void rtforcegraphicsdriver(int gdriver,int gmode, char *userbgi); void rtsetrealbufferflag(rtstattype *win, int f); void rtinitgraphics(int gmode, char *direct, int numwin,rtstatpntr *rtsp, int dowinint); void rtfreewindow(rtstatpntr *rtsp); void rtclearwindowdata(rtstatpntr *rtsp); void rtclosegraphics(rtstatpntr *rtsp, int freewin); #ifdef __cplusplus } #endif