dfsubs.c
来自「gsac程序包」· C语言 代码 · 共 322 行
C
322 行
#include <stdlib.h>#include <stddef.h>#include <string.h>#include "dosubs.h"#define LSTR 100static char str1[LSTR];static char str2[LSTR];void clospl(int mode );void openpl(int ls,char *s, int lc, char *c);#ifdef MSDOSvoid dfclip(INT *cmd, INT *X0,INT *Y0,INT *X1,INT *Y1)#elsevoid dfclip_(INT *cmd, INT *X0,INT *Y0,INT *X1,INT *Y1)#endif{ (*do_clip)( *cmd, *X0, *Y0, *X1, *Y1);}#ifdef MSDOSvoid dfcont(INT *X0,INT *Y0)#elsevoid dfcont_(INT *X0,INT *Y0)#endif{ (*do_cont)( *X0, *Y0);}#ifdef MSDOSvoid dfcontrol(int *type, int *i1, int *i2, int *i3, int *i4)#elsevoid dfcontrol_(int *type, int *i1, int *i2, int *i3, int *i4)#endif{ (*do_control)( *type, *i1, *i2, *i3, *i4);}#ifdef MSDOSvoid dfcros(int *X0,int *Y0, char *c)#elsevoid dfcros_(int *X0,int *Y0, char *c, long lc)#endif{ (*do_cross)( X0, Y0, c);}#ifdef MSDOSvoid dfcurs(INT *curstyp)#elsevoid dfcurs_(INT *curstyp)#endif{ (*do_cursor)( *curstyp);}#ifdef MSDOSvoid dferas(INT *mode)#elsevoid dferas_(INT *mode)#endif{ INT pode; pode = *mode; (*do_erase)(pode);}#ifdef MSDOSvoid dffilr(INT *X0,INT *Y0,INT *X1,INT *Y1, INT *patx,INT *paty,INT *lenx,INT *leny)#elsevoid dffilr_(INT *X0,INT *Y0,INT *X1,INT *Y1, INT *patx,INT *paty,INT *lenx,INT *leny)#endif{ (*do_fillr)( *X0, *Y0, *X1, *Y1, *patx, *paty, *lenx, *leny);}#ifdef MSDOSvoid dffils(INT *X0,INT *Y0,INT *ixy,INT *istnd,INT *iplmn)#elsevoid dffils_(INT *X0,INT *Y0,INT *ixy,INT *istnd,INT *iplmn)#endif{ (*do_fills)( *X0, *Y0, *ixy, *istnd, *iplmn);}#ifdef MSDOSvoid dffilt(INT *X0,INT *Y0,INT *X1,INT *Y1,INT *X2,INT *Y2, INT *patx,INT *paty,INT *lenx,INT *leny)#elsevoid dffilt_(INT *X0,INT *Y0,INT *X1,INT *Y1,INT *X2,INT *Y2, INT *patx,INT *paty,INT *lenx,INT *leny)#endif{ (*do_fillt)( *X0, *Y0, *X1, *Y1, *X2, *Y2, *patx, *paty, *lenx, *leny);}#ifdef MSDOSvoid dffont(INT *Xi)#elsevoid dffont_(INT *Xi)#endif{ (*do_font)( *Xi);}#ifdef MSDOSvoid dfgsym(INT *X0,INT *Y0,INT *X1,INT *Y1,INT *n,char *s)#elsevoid dfgsym_(INT *X0,INT *Y0,INT *X1,INT *Y1,INT *n,char *s, long lstr)#endif{ (*do_gsymb)( *X0, *Y0, *X1, *Y1, *n, s);}#ifdef MSDOSvoid dfgwid(INT *wid)#elsevoid dfgwid_(INT *wid)#endif{ (*do_gwid)( *wid);}#ifdef MSDOSvoid dfinfo(INT *HasMouse,INT *XminDev,INT *YminDev, INT *XmaxDev,INT *YmaxDev,INT *XminClip, INT *YminClip,INT *XmaxClip,INT *YmaxClip, INT *Color)#elsevoid dfinfo_(INT *HasMouse,INT *XminDev,INT *YminDev, INT *XmaxDev,INT *YmaxDev,INT *XminClip, INT *YminClip,INT *XmaxClip,INT *YmaxClip, INT *Color)#endif{ (*do_info)(HasMouse, XminDev, YminDev, XmaxDev, YmaxDev, XminClip, YminClip, XmaxClip, YmaxClip, Color);}#ifdef MSDOSvoid dfmove(INT *X0,INT *Y0)#elsevoid dfmove_(INT *X0,INT *Y0)#endif{ (*do_move)( *X0, *Y0);}#ifdef MSDOSvoid dfpenn(INT *Xi)#elsevoid dfpenn_(INT *Xi)#endif{ (*do_pen)( *Xi);}#ifdef MSDOSvoid dfpont(INT *X0,INT *Y0)#elsevoid dfpont_(INT *X0,INT *Y0)#endif{ (*do_point)( *X0, *Y0);}#ifdef MSDOSvoid dfspce(INT *X0,INT *Y0,INT *X1,INT *Y1)#elsevoid dfspce_(INT *X0,INT *Y0,INT *X1,INT *Y1)#endif{ (*do_space)( *X0, *Y0, *X1, *Y1);}void gomesg(int cnt, char *mesg);#ifdef MSDOSvoid dfmesg(INT *lmesg,char *mesg)#elsevoid dfmesg_(INT *lmesg,char *mesg, long lstr)#endif{ int lst; lst = *lmesg; gomesg(*lmesg, mesg);}#ifdef MSDOSvoid dffilp(INT *narr,float *xarr,float *yarr, float * xold, float *yold, float *xcur, float* ycur, float *xstp, float *ystp)#elsevoid dffilp_(INT *narr,float *xarr,float *yarr, float * xold, float *yold, float *xcur, float* ycur, float *xstp, float *ystp)#endif{ float xx, yy; INT i; INT ilw, jlw; INT *x, *y; INT n; n = *narr; if((x = (INT *)calloc(n, sizeof(INT))) == NULL) return; if((y = (INT *)calloc(n, sizeof(INT))) == NULL) return; n = *narr; for(i = 0 ; i < n ; i++){ xx = 1000. * (xarr[i]* (*xstp) + *xold); yy = 1000. * (yarr[i]* (*ystp) + *yold); if(xx > 1000000000.0) ilw = 1000000000; else if(xx < -1000000000.0) ilw = -1000000000; else ilw = xx ; if(yy > 1000000000.0) jlw = 1000000000; else if(yy < -1000000000.0) jlw = -1000000000; else jlw = yy ; x[i] = ilw; y[i] = jlw; } (*do_fillp)(n,x,y); free(x); free(y);}#ifdef MSDOSvoid dfopen(char *lfname, char *lcname, INT *lstr, INT *lcon){ int lf, lc; lf = *lstr; lc = *lcon; openpl(lf,lfname,lc,lcname);}#elsevoid dfopen_(char *lfname, char *lcname, INT *lstr, INT *lcon, long lstr1, long lstr2){ int i; int lf, lc; lf = *lstr; lc = *lcon; for(i=0;i<lf;i++) str1[i] = lfname[i]; str1[lf]='\0'; for(i=0;i<lc;i++) str2[i] = lcname[i]; str2[lc]='\0'; openpl(lf,lfname,lc,lcname);}#endif#ifdef MSDOSvoid dfclos(int mode)#elsevoid dfclos_(int mode)#endif{ clospl(mode);}#ifdef MSDOSvoid dfgott(int *cnt, char *text)#elsevoid dfgott_(int *cnt, char *text, long lstr)#endif{ int ls; ls = *cnt; gottxt(ls,text);}#ifdef MSDOSvoid dfgint(long *cnt, char *s)#elsevoid dfgint_(long *cnt, char *s, long lstr)#endif{ int ls; ls = *cnt; gintxt(ls,s); ls = strlen(s);#ifdef MSDOS if(ls < *cnt) s[ls++] = ' ';#else s[ls] = ' ';#endif}void dv_gread(int lf,char *fname, INT NumX, INT NumY, INT LowX, INT LowY, INT HighX, INT HighY, INT Num, INT Sclx, INT Scly);#ifdef MSDOSvoid dfread(INT *lfname,char *fname, INT *NumX, INT *NumY, INT *LowX, INT* LowY, INT * HighX, INT *HighY, INT *Num, INT *Sclx, INT *Scly)#elsevoid dfread_(INT *lfname,char *fname, INT *NumX, INT *NumY, INT *LowX, INT* LowY, INT * HighX, INT *HighY, INT *Num, INT *Sclx, INT *Scly, long lstr)#endif{ int lf; lf = *lfname; dv_gread(lf, fname, *NumX, *NumY, *LowX, *LowY, *HighX, *HighY, *Num, *Sclx, *Scly);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?