|
|
1.1 root 1: .TH PICO 1
2: .CT 1 editor graphics
3: .SH NAME
4: pico \(mi graphics editor
5: .SH SYNOPSIS
6: .B pico
7: [
8: .B -mfto
9: ]
10: [
11: .B -wN -hN
12: ]
13: [
14: .I files
15: ]
16: .SH DESCRIPTION
17: .I Pico
18: is an interactive editor for grey-scale and color images.
19: Editing operations are expressed in a C-like style.
20: The options are
21: .TP \w'\f5slower\ 'u
22: .BI -m n
23: Display on a Metheus frame buffer,
24: .BI /dev/om n.
25: A missing
26: .I n
27: is taken to be 0.
28: .TP
29: .B -f
30: Display on an Itoh frame buffer,
31: .BR /dev/iti0 .
32: .TP
33: .B -t
34: Show parse trees for expressions; toggled by the interactive command
35: .LR tree .
36: .TP
37: .B -o
38: Turn off the optimizer; toggled by
39: .LR optim .
40: .PP
41: Files are referred to in expressions as
42: .BI $ n,
43: where
44: .I n
45: is the basename or an integer,
46: see
47: .B f
48: below.
49: Otherwise file names are given as strings in double quotes,
50: which may be elided from names that do not contain
51: .LR / .
52: .LP
53: In general, the result of the previous edit
54: operation is available under the name
55: .LR old .
56: The destination
57: of the current operation is called
58: .LR new .
59: .LP
60: .I Pico
61: handles images with coordinates (0,0) in the upper left hand corner
62: and
63: .RB ( X , Y )
64: in the lower right.
65: Brightnesses range from 0 (black) to
66: .BR Z
67: (white,
68: .BR Z =255).
69: The quantities
70: .BR X , Y , Z
71: may be used in expressions and set by options:
72: .TP \w'\f5slower\ 'u
73: .BI -w " n
74: Set the width
75: .B X
76: of the work area to
77: .I n
78: pixels, default 511.
79: .TP
80: .BI -h " n
81: Set the height
82: .BR Y ,
83: default 511.
84: .PP
85: .LP
86: .I Pico
87: reads commands from the standard input:
88: .TP
89: .B help
90: Give a synopsis of commands and functions.
91: .TP
92: .BI a " file
93: .br
94: .ns
95: .TP
96: .BI a " x y w d file"
97: Attach a new file.
98: Optional parameters
99: .I x
100: and
101: .I y
102: give the origin of a subrectangle in the work buffer;
103: .I w
104: and
105: .I d
106: define width and depth of the image as stored in the file.
107: .TP
108: .BI d " file"
109: .PD0
110: .TP
111: .BI "d $" n
112: Delete (close) the file.
113: .PD
114: .TP
115: .BI h " file"
116: Read header information from the file.
117: .TP
118: .BI r " file"
119: Read commands from
120: .I file
121: as if they were typed on the terminal.
122: Can not be done recursively.
123: .TP
124: .BI w " file
125: .br
126: .ns
127: .TP
128: .BI "w - " file
129: Write the file, restricted to the current window
130: (see below).
131: Use
132: .I pico
133: format by default.
134: With a minus flag,
135: write a headerless image
136: (red channel only, if picture is colored); see also
137: .IR picfile (5).
138: .TP
139: .B nocolor
140: .PD0
141: .TP
142: .B color
143: Set the number of channels updated in the work buffer to 1
144: (black and white) or 3 (red, green, blue).
145: .PD
146: .TP
147: .BI window " x y w d"
148: Restrict the work area to a portion of the
149: work buffer with the upper left corner at
150: .RI ( x,y ),
151: and the lower right at
152: .RI ( x+w, y+d ).
153: .TP
154: .BI get " file"
155: .br
156: .ns
157: .TP
158: .BI "get $" n
159: The picture file is (re)opened and read into the work area.
160: .TP
161: .B f
162: Show names, sizes, and file numbers of open files.
163: .TP
164: .B faster
165: .br
166: .ns
167: .TP
168: .B slower
169: In slow display the screen is updated once per pixel computed;
170: in fast display (default), once per line of pixels.
171: .TP
172: .BI show " name"
173: Show symbol table information, such as the current value of variables.
174: If
175: .I name
176: is omitted, the whole symbol table is shown.
177: .TP
178: .B functions
179: Print information on all user defined and builtin functions.
180: .TP
181: .BI def " name \fB(\fI args \fB) {\fI program \fB}"
182: Define a function, with optional arguments.
183: Variables are declared in these styles:
184: .PD0
185: .IP
186: .EX
187: int var;
188: global int var;
189: array var[N];
190: global array var[N];
191: .EE
192: .PD
193: .TP
194: .BI x " expr"
195: Execute the expression in a default loop over all pixels in the
196: current window.
197: .TP
198: .BI "x {" program " }"
199: Execute the
200: .I program.
201: The program must define its own control flow.
202: .TP
203: .B q
204: Quit.
205: .SH EXAMPLES
206: .TP
207: .L "pico -w1280 -h1024 -m5"
208: Get a work buffer that exactly fills a Metheus screen.
209: .TP
210: .L
211: a "/tmp/images/rob"
212: Make a file accessible.
213: It will be known henceforth as
214: .LR $rob .
215: .PP
216: .EX
217: .L a 1280 0 3072 512 junk
218: .L get $junk
219: .EE
220: .PD0
221: .IP
222: Direct attention to a 512\(mu512 subrectangle in the middle
223: of a 3072\(mu512 image stored in a file named junk,
224: and read it into the workspace.
225: .LP
226: .EX
227: x new = Z - old
228: x new[x,y] = Z - old[x,y]
229: x {for(x=0; x<=X; x++) for(y=0; y<=Y; y++) new[x,y] = Z-old[x,y];}
230: .EE
231: .PD0
232: .IP
233: Three ways to make a negative image.
234: Note the defaults on control flow
235: and array indexing.
236: .PD
237: .LP
238: .EX
239: window 0 0 256 256
240: x new = $1[xclamp(x*2), yclamp(y*2)]
241: .EE
242: .PD0
243: .IP
244: Scale a 512\(mu512 image to one quarter of the screen.
245: The built-in functions
246: .L xclamp
247: and
248: .L yclamp
249: guard against indexing out of range.
250: .PD
251: .LP
252: .EX
253: x { printf("current value of %s[%d]:\et%d\en", "histo", 128, hist[128]); }
254: .EE
255: .PD0
256: .IP
257: Turn off the default control flow (curly braces) and use the
258: builtin function printf to check the value of an array element.
259: .SH "SEE ALSO"
260: .IR bcp (1),
261: .IR imscan (1),
262: .IR flicks (9.1),
263: .IR rebecca (9.1),
264: .IR picfile (5),
265: .IR flickfile (9.5)
266: .br
267: G. J. Holzmann,
268: `PICO Tutorial',
269: this manual, Volume 2
270: .br
271: G. J. Holzmann,
272: .I Beyond Photography\(emthe Digital Darkroom,
273: Prentice-Hall, 1988
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.