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 + -
显示快捷键?