Annotation of Examples/AppKit/BusyBox/Gauge.psw, revision 1.1

1.1     ! root        1: /*
        !             2:  * Gauge.psw, Postscript code for drawing analog gauge.
        !             3:  * Author: Bruce Blumberg, NeXT Developer Support Group.
        !             4:  * Originally written for 0.6 mid 1988, modified for 1.0 by Ali Ozer.
        !             5:  * Cleaned and spiffed up for 2.0 by Julie Zelenski.
        !             6:  * You may freely copy, distribute and reuse the code in this example.  
        !             7:  * NeXT disclaims any warranty of any kind, expressed or implied, as to 
        !             8:  * its fitness for any particular use.
        !             9:  */
        !            10: 
        !            11: /* PSWdrawBorder draws the border and background of the gauge face.
        !            12:  */
        !            13: defineps PSWdrawBorder(float x; float y; float radius)
        !            14:        0.835 setgray
        !            15:        x y radius 1.5 add 0 360 arc
        !            16:        fill 
        !            17:        1.0 setlinewidth
        !            18:        1.0 setgray
        !            19:        x y radius 2 add 50 220 arc
        !            20:        stroke
        !            21:        1.5 setlinewidth
        !            22:        .333 setgray
        !            23:        x y radius 2 add 220 50 arc
        !            24:        stroke
        !            25:        1.0 setlinewidth
        !            26:        0.0 setgray
        !            27:        x y radius 1.5 add 220 50 arc
        !            28:        stroke
        !            29: endps
        !            30: 
        !            31: /* PSWdrawTicks draws a tick mark at each increment around the circle 
        !            32:  * from the start to the stop angle.
        !            33:  */
        !            34: defineps PSWdrawTicks(float x; float y; float radius; float increment; float start; float stop)
        !            35:        0 setgray
        !            36:        .5 setlinewidth
        !            37:        gsave
        !            38:        x y translate
        !            39:        start rotate
        !            40:        start increment stop {
        !            41:                newpath
        !            42:                radius 0 moveto
        !            43:                -3 0 rlineto
        !            44:                closepath
        !            45:                stroke
        !            46:                increment neg rotate
        !            47:        } for
        !            48:        grestore
        !            49: endps
        !            50: 
        !            51: /* PSWdrawString simply draws string at specific location 
        !            52:  */
        !            53: defineps PSWdrawString(float x; float y; char *str)
        !            54:        0 setgray
        !            55:        x y moveto
        !            56:        (str) show
        !            57: endps
        !            58: 
        !            59: /* PSWmakeHand defines a PS function that will subsequently be used
        !            60:  * to draw the hand at different angles as the value changes.
        !            61:  */
        !            62: defineps PSWmakeHand(float length)
        !            63:        /mhand {
        !            64:        0 setgray
        !            65:        0 setlinewidth
        !            66:        newpath
        !            67:                0 3.5 moveto
        !            68:                0 0 3.5 90 270 arc
        !            69:                length 3.5 rlineto
        !            70:                length neg 3.5 rlineto
        !            71:        closepath 
        !            72:        fill
        !            73:        newpath
        !            74:                0 2 moveto
        !            75:                0 0 1.5 0 360 arc
        !            76:                closepath
        !            77:                1 setgray
        !            78:        closepath
        !            79:        fill
        !            80:        } def
        !            81: endps
        !            82: 
        !            83: /* PSWdrawHand translate and rotates the coordinate system, then uses
        !            84:  * mhand to draw the gauge hand.
        !            85:  */
        !            86:               
        !            87: defineps PSWdrawHand(float x; float y; float ang)
        !            88:        gsave
        !            89:        x y translate
        !            90:        ang rotate
        !            91:        mhand
        !            92:        grestore
        !            93: endps

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.