Annotation of researchv10no/cmd/postscript/mpictures/pictures.sr, revision 1.1.1.1

1.1       root        1: .de PI \" Picture Include
                      2: .      \" $1=file(page) $2=height,width,yoff,xoff $3=flags
                      3: .      \" Height, width, xoff, and yoff are for the frame, flags is for the
                      4: .      \" picture. Default dimensions are inches.
                      5: \\X'PI:\\n(.o:\\n(.i:\\n(.l:\\n(.t:\\$1:\\$2:\\$3:'\\c
                      6: ..
                      7: .nr FT 0
                      8: .de BP \" Begin a Picture
                      9: .      \"
                     10: .      \" $1=file(page) $2=height $3=width $4=position $5=offset $6=flags $7=label
                     11: .      \"
                     12: .      \" Height, width, position, and offset are for the frame, flags is for
                     13: .      \" the picture. The postion flag should be l, c, r, or "". Omitting the
                     14: .      \" position argument is also allowed for compatibility with the original
                     15: .      \" version of the macro. In that case offset is taken relative to your
                     16: .      \" left margin.
                     17: .if \\n(FT>1 .EP
                     18: .      \" Need these when we switch environments.
                     19: .nr Ov \\n(.v
                     20: .nr Oi \\n(.i
                     21: .nr Ol \\n(.l
                     22: .      \" Remember the arguments - sometimes as both a string and number register.
                     23: .nr $2 \\$2i
                     24: .nr $3 \\$3i
                     25: .nr $4 \\$4i
                     26: .ds $4 \\$4
                     27: .nr $5 \\$5i
                     28: .ds $5 \\$6
                     29: .ds $6 \\$7
                     30: .      \" Accept a few unadvertised position flags.
                     31: .if '\\*($4'L' .ds $4 l
                     32: .if '\\*($4'C' .ds $4 c
                     33: .if '\\*($4'R' .ds $4 r
                     34: .      \" A null with more than three arguments means l.
                     35: .if \\n(.$>3 .if '\\*($4'' .ds $4 l
                     36: .      \" Default frame dimensions if missing, zero, or null.
                     37: .if !\\n($2>0 .nr $2 3.0i
                     38: .if !\\n($3>0 .nr $3 \\n(.lu-\\n(.iu-\\n($4u
                     39: .if !\\n($3>0 .nr $3 \\n($2u
                     40: .      \" Figure out the offset that will be used the rest of the way.
                     41: .if '\\*($4'l' .nr $4 \\n($5u
                     42: .if '\\*($4'c' .nr $4 (\\n(.lu-\\n(.iu-\\n($3u)/2u+\\n($5u
                     43: .if '\\*($4'r' .nr $4 \\n(.lu-\\n(.iu-\\n($3u+\\n($5u
                     44: .      \" If we haven't recognized the position flag assume it wasn't given and
                     45: .      \" treat argument four as an offset from the left.
                     46: .if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $5 \\$5
                     47: .if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $6 \\$6
                     48: .      \" Set increments for line length and indent.
                     49: .nr Ii \\n($3u+\\n($4u+.1i
                     50: .nr Il \\n(.lu-\\n(.iu-\\n($4u+.1i
                     51: .      \" Set the frame type to one of:
                     52: .      \"      0 - frame is as wide as a line of text - skip over it.
                     53: .      \"      1 - fits in left or right margins
                     54: .      \"      2 - fill with text on the right
                     55: .      \"      3 - on the left
                     56: .      \"      4 - or on both sides of the frame
                     57: .      \"      5 - only set in EP if FT was 4 and now filling on the right.
                     58: .      \" Assume the frame is as wide as a line of text, then check dimensions
                     59: .      \" to see what's really true. The order of these tests is important!
                     60: .nr FT 0
                     61: .if \\n($4u>1.0i .nr FT 3
                     62: .if \\n($4u+\\n(.iu>=\\n(.lu .nr FT 1
                     63: .if \\n($3u+\\n($4u+\\n(.iu+1.0i<\\n(.lu .nr FT 2
                     64: .if \\n($3u+\\n($4u<=0 .nr FT 1
                     65: .if \\n(FT=2 .if \\n($4u>1.0i .nr FT 4
                     66: .      \" Ask for some vertical space - labeled pictures need a little extra,
                     67: .      \" margin pictures a little less.
                     68: .if \\n(FT=1 .if '\\*($6'' .ne \\n($2u
                     69: .if \\n(FT=1 .if !'\\*($6'' .ne \\n($2u+2v
                     70: .if !\\n(FT=1 .if '\\*($6'' .ne \\n($2u+3v
                     71: .if !\\n(FT=1 .if !'\\*($6'' .ne \\n($2u+5v
                     72: .      \" Save our place, draw the picture, label it, and return. Need precise
                     73: .      \" control of when \X'...' is put out - thus the new environment.
                     74: .mk Oh
                     75: .ev 1
                     76: .in \\n(Oiu
                     77: .ll \\n(Olu
                     78: .vs \\n(Ovu
                     79: .if \\n(FT=1 .sp -1v
                     80: .if \\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u t\\*($5
                     81: .if !\\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u \\*($5
                     82: .in
                     83: .ll
                     84: .vs
                     85: .ev
                     86: .lt \\n($3u
                     87: .tl \(ts\(ts\\h'\\n($4u+\\n(.iu'\\v'\\n($2u+1.5v'\\*($6\\v'-\\n($2u-1.5v'\\h'-\\n($4u-\\n(.iu'\(ts\(ts
                     88: .lt
                     89: 'sp |\\n(Ohu
                     90: .      \" Figure out what to do with the text that follows.
                     91: .if !'\\*($6'' .nr $2 +2v
                     92: .if \\n(FT=0 .sp \\n($2u+2v
                     93: .if \\n(FT=1 .nr FT 0
                     94: .if \\n(FT=2 'in +\\n(Iiu
                     95: .if \\n(FT>2 .ll -\\n(Ilu
                     96: .if \\n(FT>1 .di BB
                     97: .if \\n(FT>1 .dt \\n($2u+2v+1u EP
                     98: .      \" Clean things up.
                     99: .rr $2
                    100: .rr $3
                    101: .rr $4
                    102: .rm $4
                    103: .rr $5
                    104: .rm $5
                    105: .rm $6
                    106: .rr Oh
                    107: .rr Oi
                    108: .rr Ol
                    109: .rr Ov
                    110: .if \\n(FT=0 .EP
                    111: ..
                    112: .de EP \" End the Picture - Normally called from a trap, although it can be used
                    113: .      \" on its own to mark the end of a picture.
                    114: .nr Ot 0
                    115: .if \\n(.tu<\\n(.pu .nr Ot \\n(.tu
                    116: .if \\n(Ot>0 .if \\n(FT=4 .nr FT 3
                    117: .if \\n(FT<2 .nr Ot 0
                    118: .if \\n(Ot>0 .br
                    119: .if \\n(FT=5 .nr Ot 0
                    120: .if \\n(FT>1 \{\
                    121: .      ev 1
                    122: .      eo
                    123: .      br
                    124: .      di
                    125: .      nf
                    126: .      in 0
                    127: .      BB
                    128: .      in
                    129: .      fi
                    130: .      ec
                    131: .      ev
                    132: .      rm BB\}
                    133: .if \\n(FT=5 \{\
                    134: .      nr FT 2
                    135: '      sp |\\n(Nhu+1v\}
                    136: .if \\n(FT=4 \{\
                    137: .      mk Nh
                    138: .      nr Nh -1v
                    139: .      nr FT 5
                    140: '      sp -\\n(dnu+1v
                    141: '      in +\\n(Iiu
                    142: .      ll +\\n(Ilu
                    143: .      di BB
                    144: .      dt \\n(dnu-2v+1u EP\}
                    145: .if \\n(FT=2 'in -\\n(Iiu
                    146: .if \\n(FT=3 .ll +\\n(Ilu
                    147: .if \\n(FT<4 .nr FT 0
                    148: .if \\n(Ot>0 .sp \\n(Otu
                    149: .rr Ot
                    150: .if \\n(FT=0 \{\
                    151: .      rr Nh
                    152: .      rr Ii
                    153: .      rr Il\}
                    154: ..

unix.superglobalmegacorp.com

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