.\" tmac.pspic .\" .\" defines the PSpic macro for importing PostScript graphics .\" ================================================================ .de PSpic .br .nr ps-offset-mode 0 .nr ps-rotate-mode 0 .\" ---------------------------------------------------------------- .\" parse optional arguments .if '\\$1'-L' \{\ .nr ps-offset-mode 1 .shift .\} .if '\\$1'-R' \{\ .nr ps-offset-mode 2 .shift .\} .if '\\$1'-I' \{\ .nr ps-offset-mode 3 .nr ps-offset (m;\\$2) .shift 2 .\} .if '\\$1'-l' \{\ .nr ps-rotate-mode 1 .shift .\} .if '\\$1'-r' \{\ .nr ps-rotate-mode 2 .shift .\} .if '\\$1'-u' \{\ .nr ps-rotate-mode 3 .shift .\} .\" ---------------------------------------------------------------- .\" get the bounding box and natural width and height of the graphic .nr llx 0 .nr lly 0 .nr urx 0 .nr ury 0 .psbb \\$1 .ie (\\n[llx] : \\n[lly] : \\n[urx] : \\n[ury]) \{\ .\" .tm postscript graphic "\\$1": \\n[llx] \\n[lly] \\n[urx] \\n[ury] .nr ps-nat-wd (\\n[urx]-\\n[llx]) .nr ps-nat-ht (\\n[ury]-\\n[lly]) .if \\n[ps-nat-wd]<0 .nr ps-nat-wd 0-\\n[ps-nat-wd] .if \\n[ps-nat-ht]<0 .nr ps-nat-ht 0-\\n[ps-nat-ht] .\" ---------------------------------------------------------------- .\" for rotated graphics, exchange width and height .if \\n[ps-rotate-mode]=0 \{\ .nr ps-rot-wd \\n[ps-nat-wd] .nr ps-rot-ht \\n[ps-nat-ht] .\} .if \\n[ps-rotate-mode]=1 \{\ .nr ps-rot-wd \\n[ps-nat-ht] .nr ps-rot-ht \\n[ps-nat-wd] .\} .if \\n[ps-rotate-mode]=2 \{\ .nr ps-rot-wd \\n[ps-nat-ht] .nr ps-rot-ht \\n[ps-nat-wd] .\} .if \\n[ps-rotate-mode]=3 \{\ .nr ps-rot-wd \\n[ps-nat-wd] .nr ps-rot-ht \\n[ps-nat-ht] .\} .\" ---------------------------------------------------------------- .\" calculate scaling factors from the (possibly rotated) .\" graphics size and the requested size .ie \\n[.$]>=2 .nr ps-req-wd (i;\\$2) .el .nr ps-req-wd \\n[.l]-\\n[.i] .nr ps-req-ht \\n[ps-req-wd]*\\n[ps-rot-ht]/\\n[ps-rot-wd] .if \\n[.$]>=3&(\\n[ps-req-ht]>(i;0\\$3)) \{\ .nr ps-req-ht (i;\\$3) .nr ps-req-wd \\n[ps-req-ht]*\\n[ps-rot-wd]/\\n[ps-rot-ht] .\} .if \\n[ps-offset-mode]=0 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-req-wd]/2 .if \\n[ps-offset-mode]=1 .nr ps-offset 0 .if \\n[ps-offset-mode]=2 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-req-wd] .\" ---------------------------------------------------------------- .ne \\n[ps-req-ht]u+1v .tm PSpic: line length "\\n[.l]" .tm PSpic: indent "\\n[.i]" .tm PSpic: pic width "\\n[ps-req-wd]" .tm PSpic: offset "\\n[ps-offset]" .\" \D'l \\n[ps-offset]u+\\n[ps-req-wd]u 0' .\" .sp -1 .ie \\n[PSpic-draft]=1 \{\ \h'\\n[ps-offset]u'\ \v'-.3v'\ \D'l \\n[ps-req-wd]u 0'\ \D'l 0 \\n[ps-req-ht]u'\ \D'l -\\n[ps-req-wd]u 0'\ \D'l 0 -\\n[ps-req-ht]u'\ \v'1v'\Z' \\$1' .\} .el \{\ .if \\n[ps-rotate-mode]=0 \ \h'\\n[ps-offset]u'\ \v'\\n[ps-req-ht]u-.3v'\ \X'ps: import \\$1 \\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-req-wd]' .if \\n[ps-rotate-mode]=1 \ \h'\\n[ps-offset]u+\\n[ps-req-wd]u'\ \v'\\n[ps-req-ht]u-.3v'\ \X'ps: exec gsave currentpoint 2 copy translate -90 rotate \ neg exch neg exch translate'\ \X'ps: import \\$1 \\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-req-ht]'\ \X'ps: exec grestore' .if \\n[ps-rotate-mode]=2 \ \h'\\n[ps-offset]u'\ \v'-.3v'\ \X'ps: exec gsave currentpoint 2 copy translate 90 rotate \ neg exch neg exch translate'\ \X'ps: import \\$1 \\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-req-ht]'\ \X'ps: exec grestore' .if \\n[ps-rotate-mode]=3 \ \h'\\n[ps-offset]u+\\n[ps-req-wd]u'\ \v'-.3v'\ \X'ps: exec gsave currentpoint 2 copy translate 180 rotate \ neg exch neg exch translate'\ \X'ps: import \\$1 \\n[llx] \\n[lly] \\n[urx] \\n[ury] \\n[ps-req-wd]'\ \X'ps: exec grestore' .\} .sp \\n[ps-req-ht]u .\} .el \{\ .rs .sp .ce 1 \m[red]No bounding box in \f3\\$1\fP (or file missing) \D'l 0 -2.5v'\D'l \\n(.lu 0'\D'l 0 2.5v'\D'l -\\n(.lu 0'\m[] .br .br .\} .. .\" ================================================================