%%HP: T(3)A(R)F(.);
@ @ @  NASTAVENI HODNOT PROMENNE PPAR
@ void ENVPPAR(List waveform);
\<<
  DUP			@	{wave}	{wave}
  SIZE			@	lastidx	{wave}
  @ @ @  USEKY DELENI OBOU OS
  @ Real axetick(Real range);
  \<< DUP MANT 0. RND 2. - 3. /
    IF DUP 0. \>=
    THEN IP 2. SWAP ^ .5 *
    ELSE DROP .2
    END SWAP XPON ALOG *
  \>>			@	\<< \>>	lastidx	{wave}
  \-> lastidx axetick
  \<<			@	{wave}
@ Mezni hodnoty
    SORT		@	{swav}
    DUP			@	{swav}	{swav}
    lastidx		@	lastidx	{swav}	{swav}
    GET			@	Wmax	{swav}
    SWAP		@	{swav}	Wmax
    HEAD		@	Wmin	Wmax
    DUP2		@	Wmin	Wmax	Wmin	Wmax
    -			@	Yrange	Wmin	Wmax
    2.			@	2.	Yrange	Wmin	Wmax
    /			@	Yrange	Wmin	Wmax
    axetick EVAL	@	Ytick	Wmin	Wmax
@ Zaokrouhleni podle useku deleni osy
    @ Real axelimit(Real tick, Real minmax);
    \<< OVER / 0.5 + FLOOR *
    \>>			@	\<< \>>	Ytick	Wmin	Wmax
    \-> ytick axelimit
    \<<			@	Wmin	Wmax
      ytick		@	Ytick	Wmin	Wmax
      PICK3		@	Wmax	Ytick	Wmin	Wmax
      axelimit EVAL	@	Ymax	Wmin	Wmax
      ytick		@	Ytick	Ymax	Wmin	Wmax
      PICK3		@	Wmin	Ytick	Ymax	Wmin	Wmax
      axelimit EVAL	@	Ymin	Ymax	Wmin	Wmax
      ROT		@	Wmin	Ymin	Ymax	Wmax
      OVER		@	Ymin	Wmin	Ymin	Ymax	Wmax
      IF
        <		@	0.|1.	Ymin	Ymax	Wmax
      THEN		@	Ymin	Ymax	Wmax
        ytick		@	Ytick	Ymin	Ymax	Wmax
        -		@	Ymin	Ymax	Wmax
      END
      UNROT		@	Ymax	Wmax	Ymin
      SWAP		@	Wmax	Ymax	Ymin
      OVER		@	Ymax	Wmax	Ymax	Ymin
      IF
        >		@	0.|1.	Ymax	Ymin
      THEN		@	Ymax	Ymin
        ytick		@	Ytick	Ymax	Ymin
        +		@	Ymax	Ymin
      END
      ytick		@	Ytick	Ymax	Ymin
    \>>
@ Nastaveni rozsahu v ose X
    1.			@	Xmin	Ytick	Ymax	Ymin
    lastidx		@	Xmax	Xmin	Ytick	Ymax	Ymin
    XRNG		@	Ytick	Ymax	Ymin
@ Useky deleni os
    lastidx		@	Xrange	Ytick	Ymax	Ymin
    axetick EVAL	@	Xtick	Ytick	Ymax	Ymin
  \>>
  SWAP			@	Ytick	Xtick	Ymax	Ymin
  2.			@	2.	Xtick	Ytick	Ymax	Ymin
  \->LIST			@	{atick}	Ymax	Ymin
@ Bod krizeni os
  PICK3			@	Ymin	{atick}	Ymax	Ymin
  PICK3			@	Ymax	Ymin	{atick}	Ymax	Ymin
  CASE
    0.			@	0.	Ymax	Ymin	{atick}	Ymax	Ymin
    <			@	0.|1.	Ymin	{atick}	Ymax	Ymin
    THEN		@	Ymin	{atick}	Ymax	Ymin
      DROP		@	{atick}	Ymax	Ymin
      OVER		@	Ymax	{atick}	Ymax	Ymin
    END
    0.			@	0.	Ymin	{atick}	Ymax	Ymin
    >			@	0.|1.	{atick}	Ymax	Ymin
    THEN		@	{atick}	Ymax	Ymin
      PICK3		@	Ymin	{atick}	Ymax	Ymin
    END
    0.			@	0.	{atick}	Ymax	Ymin
  END			@	Yorig	{atick}	Ymax	Ymin
  1.			@	Xorig	Yorig	{atick}	Ymax	Ymin
  SWAP			@	Yorig	Xorig	{atick}	Ymax	Ymin
  R\->C			@	(x,y)	{atick}	Ymax	Ymin
@ Kompletni nastaveni os
  SWAP			@	{atick}	(x,y)	Ymax	Ymin
  2.			@	2.	{atick}	(x,y)	Ymax	Ymin
  \->LIST			@	{axes}	Ymax	Ymin
  AXES			@	Ymax	Ymin
@ Nastaveni rozsahu v ose Y
  YRNG
\>>
