pdraw.src
来自「没有说明」· SRC 代码 · 共 191 行
SRC
191 行
/*
** pdraw.src - Publication Quality Graphics Support.
** (C) Copyright 1988-1998 by Aptech Systems, Inc.
** All Rights Reserved.
**
** This Software Product is PROPRIETARY SOURCE CODE OF APTECH
** SYSTEMS, INC. This File Header must accompany all files using
** any portion, in whole or in part, of this Source Code. In
** addition, the right to create such files is strictly limited by
** Section 2.A. of the GAUSS Applications License Agreement
** accompanying this Software Product.
**
** If you wish to distribute any portion of the proprietary Source
** Code, in whole or in part, you must first obtain written
** permission from Aptech Systems.
**
**> draw
**
** Purpose: Graphing utility for user supplied vectors.
**
** Format: draw();
**
**
** See Also: xy, logx, logy, loglog, scale, xtics, ytics
*/
#include pgraph.ext
proc 0 = draw();
local symbol,colorq,xformat,yformat,frame,msgstr,psym,psymnum,msgnum,
k,sca,gcode,linenum,arrownum,arrow,c,t1,t2,x,y,msx,xlab,ylab,
gridflag,errbnum, fontnum,pstype,pcolor,pltype,psymsiz,plctrl,
xinc,yinc,pline,pmsgctl,mem,fntsize,pnum,paxes,gpcpath;
/* ------------------------------------------------------- */
local minx,maxx,miny,maxy,qxsig,qxfield,qxprec,qxpow,qxorig,qxstep,
qxmax,qxmint,qxlab,qysig,qyfield,qyprec,qypow,qyorig,qystep,qymax,
qymint,qylab;
clear xlab,ylab;
_pqgtype = { 9, 1 }; /* graph type draw, 2d */
{ frame,paxes,pnum,gpcpath } = _cmnfilt;
/* ---- test input variables and take appropriate action ---- */
x = { 0, 1 };
y = { 0, 1 };
xinc = cols(x) /= 1;
yinc = cols(y) /= 1;
goto g00;
makestru:
pop msx;
c = 1;
t1 = 1|0|0|0|0|0|0|0|0|0;
do while c <= rows(msx);
if strlen(msx[c,1]);
t2 = vals(""$+msx[c,1]);
t1 = t1|t2|zeros(10-rows(t2),1);
else;
t1 = t1|zeros(10,1);
endif;
c = c+1;
endo;
return(chrs(t1));
g00:
k = maxc(cols(x)|cols(y));
{ minx,maxx } = _pcartx(_pworld,x);
{ miny,maxy } = _pcarty(_pworld,y);
{ t2,t2,qxprec,qxpow,qxorig,qxstep,qxmax,qxmint,t2 } =
_paxnum(pnum[1],minx,maxx,_pxsci,_pxscale,_pxpmax);
{ t2,t2,qyprec,qypow,qyorig,qystep,qymax,qymint,t2 } =
_paxnum(pnum[2],miny,maxy,_pysci,_pyscale,_pypmax);
if not(_pascx $== 0);
gosub makestru(_pascx);
pop xlab;
xformat = 0;
elseif strlen(_pxfmt) < 2;
xformat = "%1." $+ ftos(qxprec,"%*.*lf",1,0) $+ "lf";
else;
xformat = lower(_pxfmt);
endif;
if not(_pascy $== 0);
gosub makestru(_pascy);
pop ylab;
yformat = 0;
elseif strlen(_pyfmt) < 2;
yformat = "%1." $+ ftos(qyprec,"%*.*lf",1,0) $+ "lf";
else;
yformat = lower(_pyfmt);
endif;
sca = qxorig|qxstep|qxmax|qyorig|qystep|qymax;
_setpage();
if _pstype == 0;
pstype = _pssel;
else;
pstype = _pstype;
endif;
if _pltype == 0;
pltype = _plsel;
else;
pltype = _pltype;
endif;
if rows(_pcolor) == 1 and cols(_pcolor) == 1 and _pcolor == 0;
pcolor = _pcsel;
else;
pcolor = _pcolor;
endif;
pstype = reshape(pstype,k,1)-1;
psymsiz = reshape(_psymsiz,k,1);
pltype = reshape(pltype,k,1);
pcolor = reshape(pcolor,k,1);
plctrl = reshape(_plctrl,k,1);
symbol = pstype~psymsiz~pltype~pcolor~plctrl;
{ msgstr,msgnum,colorq } = _txtfilt;
{ pline,linenum,arrow,arrownum,psym,psymnum } = _linfilt;
if _pgrid $== 0;
gridflag = 0|2|qxmint|qymint;
else;
gridflag = _pgrid[1 2]|qxmint|qymint;
endif;
if rows(_perrbar) == 1 and cols(_perrbar) == 1;
errbnum = 0;
elseif cols(_perrbar) /= 9;
errorlog "Error bar matrix invalid";
end;
else;
errbnum = rows(_perrbar);
endif;
{ pline,pmsgctl,psym } = _pwrscal(qxpow,qypow,pline,_pmsgctl,psym);
{ fontnum,mem,fntsize } = _fontsiz();
#ifDLLCALL
/* pdraw <=> 4 */
GraphSEv3(xinc,yinc,sca,_ptitle,_pxlabel,_pylabel,_ptek, symbol,
_pfonts,fontnum,fntsize,_pcross,gridflag,xformat,yformat,_pbox,
paxes,msgstr,pmsgctl,msgnum,psym,psymnum,_paxht,_pnumht,_ptitlht,
_pagesiz,_pageshf,_plotsiz,_plotshf,_protate,frame,pline,linenum,
arrow,arrownum,xlab,ylab,colorq,_pdate,_perrbar,errbnum,qxpow,
qypow,pnum,_pnotify,_pappend,_pmargin,_pcwin,_pncwin,_pcrop,
_pticout,gpcpath,4);
#ELSE
/* load .GXE code */
gcode = zeros(_pxmem+13850,1);
loadexe gcode = pdraw.rex;
/* call graphics code */
ndpclex;
callexe /r gcode(xinc,yinc,sca,_ptitle,_pxlabel,_pylabel,_ptek, symbol,
_pfonts,fontnum,fntsize,_pcross,gridflag,xformat,yformat,_pbox,
paxes,msgstr,pmsgctl,msgnum,psym,psymnum,_paxht,_pnumht,_ptitlht,
_pagesiz,_pageshf,_plotsiz,_plotshf,_protate,frame,pline,linenum,
arrow,arrownum,xlab,ylab,colorq,_pdate,_perrbar,errbnum,qxpow,
qypow,pnum,_pnotify,_pappend,_pmargin,_pcwin,_pncwin,_pcrop,
_pticout,gpcpath);
#ENDIF
clear x,y,gcode;
if _pscreen and _pnotify /= 2;
_endgrph;
endif;
endp;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?