Table of Contents
xzoom - magnify part of the screen, with fast updates
xzoom
[ -display displayname ] [ -mag mag [ mag ] ] [ -x ] [ -y ] [ -xy ] [ -geometry
geometry ] [ -source geometry ]
- -display displayname | -d displayname
- The name of the display to use (not very useful).
- -mag mag [ mag ]
- What magnification
to use. If two number arguments are supplied the first is used for X magniications
and the second is used for Y magnification. Magnification should be greater
than 0.
- -x
- Mirror horizontally.
- -y
- Mirror vertically.
- -xy | -z
- Exchange X and Y
axes before any magnification is performed.
- -geometry geometry | =geometry
- Size and position xzoom's window.
- -source geometry
- Size and position the initial
source area which is magnified. The dimensions of this area are multiplied
by the magnification to get the size of xzoom's window. If these dimensions
are given separately (by use of -geometry ) then an error is reported.
Xzoom displays in its window a magnified area of the X11 display.
The user can interactively change the zoomed area, the window size, magnification
(optionally different magnification for X and Y axes) or rotate or mirror
the image.
Once xzoom has started the user can enter simple commands
using the keyboard.
- q
- quit.
- +
- increase magnification value by 1.
- -
- decrease
magnification value by 1.
- w
- next + or - command only affect X magnification.
- h
- next + or - command only affect Y magnification.
- x
- mirror the display image
horizontally.
- y
- mirror the display image vertically.
- z
- rotate the displayed
image 90 degrees counter-clockwise.
- arrow keys
- scroll the zoomed area 1 pixel
in the direction of the arrow. if the control key is pressed the zoomed
area will scroll 10 pixels.
- d
- sets the delay between frame updates. Built-in
delays are 200, 100, 50, 10 and 0 ms.
- g
- toggle grid on and off.
- Mouse buttons
- To set the location of the magnified are click the left mouse button inside
xzoom's window and then move it (keep the button pressed) to the place which
you want to see magnified.
Xzoom allow you to resize it's window at any time.
When xzoom is iconified it simply waits to get deiconified.
Xzoom
uses the window's title bar to inform the user about it's status. Normally
the title says something like xzoom x2 which means the magnification is
2 both in X and Y axes. If the image is stretched differently on the X and
Y axes the title will say xzoom X 2; Y 4. Negative numbers mean reflection.
If the image is rotated by 90 or 270 degrees the title will show <=> between
the X and Y values.
When d is depressed the title will display the new delay
value for approximately 2 seconds and then revert to the default display
of magnification values.
Xzoom is fast enough to display enlarged
or mirrored animations in small windows. On my 486 DX2-66 and Cirrus Logic
CL-GD5428 display card (attached to Vesa local bus) update of a 256x256
window magnified by 2 (ie, source rect is 128x128) takes approximately
30 ms. This time varies, off course when a different size window or different
magnification is used. If we chose 50 ms between updates we can get about
12.5 frames per second and still let an animation program do it's work. It
is possible to compile xzoom without X shared memory support. In that case
window update may be about 3 times slower (if we are using a local display,
using LAN is a different story).
xmag.1x.
I got the motivation for writing xzoom after I saw a similar WindowsNT
program, zoomin working. It started just as a test for X11 performance. I
don't have the fancy menus and scrollbar like zoomin but I do have all their
features (and more) accessible from the keyboard.
† The maximum internal
built in delay (see command d above) was set to 200 ms. Xzoom completes
the delay before polling the X event queue for the next command. Larger
delays would feel like poor response to user commands.
† For best performance
the shared memory extension for X11 is used. Xzoom will fail if it is compiled
to use XSHM and its display is not on the local host.
† The Ximage data is
accessed directly, in a way which may not be portable. Xzoom will not run
with display depth other than 8 bits per pixel.
† Xzoom is given with no
warranty. It was tested only under Linux with Xfree86 release 3.1.2 (X11R6).
† Some strange behavior may occur if the requested magnified area falls
beyond the borders of the screen. Example is when you have magnification
of 1 and a window whose width is greater than the height of the screen
and you want 90 degrees rotation. In that case part of the window will not
get updated.
† The frame used to mark the zoomed area may corrupt the contents
of other windows if they are modified when the frame is visible. If you
don't like it disable the -DFRAME option when compiling xzoom.
Itai
Nahshon
Table of Contents