.TH TWEAK 1
.CT 1 graphics
.SH NAME
tweak \- edit image files, subfont files, face files, etc.
.SH SYNOPSIS
.B tweak
[
.I file ...
]
.SH DESCRIPTION
.I Tweak
edits existing files holding various forms of images.
To create original images, start from an existing image, subfont, etc.
.PP
.I Tweak
reads its argument
.I files
and displays the resulting images in a vertical column.
If the image is too wide to fit across the display, it
is folded much like a long line of text in an
.IR rio
window.
Under each image is displayed one or two lines of text
presenting its parameters.
The first line shows the image's
.BR depth ,
the number
of bits per pixel;
.BR r ,
the rectangle covered by the image;
and the name of the
.B file
from which it was read.
If the file is a subfont, a second line presents a hexadecimal 16-bit
.B offset
to be applied to character values from the subfont
(typically as stored in a font file; see
.IR font (7));
and the subfont's
.BR n ,
.BR height ,
and
.B ascent
as defined in
.IR cachechars (3).
.PP
By means described below, magnified views of portions of the images
may be displayed.
The text associated with such a view includes
.BR mag ,
the magnification.
If the view is of a single character from a subfont, the second
line of text shows the character's value (including the subfont's offset)
in hexadecimal and as a character in
.I tweak's
default font; the character's
.BR x ,
.BR top ,
.BR bottom ,
.BR left ,
and
.BR width
as defined in
.IR cachechars (3);
and
.BR iwidth ,
the physical width of the image in the subfont's image.
.PP
There are two methods to obtain a magnified view of a character from a
subfont.
The first is to click mouse button 1 over the image of the character in
the subfont.  The second is to select the
.B char
entry on the button 3 menu,
point the resulting gunsight cursor at the desired subfont and click button 3,
and then type at the text prompt at the bottom of the screen the
character value, either as a multi-digit hexadecimal number or as a single
rune representing the character.
.PP
To magnify a portion of other types of image files,
click button 1 over the unmagnified file.
The cursor will switch to a cross.
Still with button 1, sweep a rectangle, as in
.BR rio ,
that encloses the portion of the image to be magnified.
(If the file is 16×16 or smaller,
.I tweak
will just magnify the entire file; no sweeping is necessary.)
.PP
Pressing buttons 1 and 2 within magnified images changes pixel values.
By default, button 1 sets the pixel to all zeros and button 2 sets the pixel
to all ones.
.PP
Across the top of the screen is a textual display of global parameters.
These values, as well as many of the textual values associated with
the images, may be edited by clicking button 1 on the displayed
value and typing a new value.
The values along the top of the screen are:
.TP
.B mag
Default magnification.
.TP
.B val(hex)
The value used to modify pixels within magnified images.
The value must be in hexadecimal, optionally preceded by a
tilde for bitwise negation.
.TP
.B but1
.TP
.B but2
The pixel value written when the corresponding button is pressed over a pixel.
.TP
.B invert-on-copy
Whether the pixel values are inverted when a
.B copy
operation is performed.
.PP
Under button 3 is a menu holding a variety of functions.
Many of these functions prompt for the image upon which to act
by switching to a gunsight cursor; click button 3 over the
selection, or click a different button to cancel the action.
.TP
.B open
Read and display a file.  The name of the file is typed to the prompt
on the bottom line.
.TP
.B read
Reread a file.
.TP
.B write
Write a file.
.TP
.B copy
Use the copy function, default
.BR S ,
to transfer a rectangle of pixels from one image to another.
The program prompts with a cross cursor; sweep out a rectangle in
one image or just click button 3 to select the whole image.
The program will leave that rectangle in place and
attach another one to the cursor.  Move that rectangle to the desired
place in any image and click button 3, or another button to cancel the action.
.TP
.B char
As described above, open a magnified view of a character image in a subfont.
.TP
.B pixels
Report the coordinate and value of individual pixels indicated by pressing button 3.
This is a mode of operation canceled by pressing button 1 or 2.
.TP
.B close
Close the specified image.
If the image is the unmagnified file, also close any magnified views of that file.
.TP
.B exit
Quit
.IR tweak .
The program will complain once about modified but unwritten files.
.SH SOURCE
.B \*9/src/cmd/draw/tweak.c
.SH "SEE ALSO"
.IR cachechars (3),
.IR image (7),
.IR font (7)
.SH BUGS
For a program written to adjust width tables in fonts,
.I tweak
has been pushed unreasonably far.
