1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
|
Path: iraf!irafmail-gateway
From: tody@noao.edu (Doug Tody)
Newsgroups: adass.iraf.announce
Subject: XImtool version 0.5 released
Date: 24 May 1994 00:26:46 -0700
Organization: IRAF Project, National Optical Astronomy Observatories
Lines: 787
Sender: daemon@iraf.noao.edu
Message-ID: <9405240726.AA11099@lepus.tuc.noao.edu>
NNTP-Posting-Host: tucana.tuc.noao.edu
XIMTOOL VERSION 0.5
May 22 1994
Version 0.5 of the alpha test ximtool is now available in pub/v2103-beta
on iraf.noao.edu and consists of the following files:
1589248 May 22 15:14 ximtool-0.5 # executable
Anyone using an earlier version of ximtool is encouraged to update to the
new version, which is a major new version. Keep the old version around in
case you run into any problems.
This is ALPHA TEST software. This means that the software is still under
development and may lack planned features. The software is only partially
tested and can be expected to have some bugs. Anyone using an alpha test
version of ximtool is asked to update to version 1.0 when it becomes
available.
INSTALLATION
To install ximtool, download the executable, rename it "ximtool" and place
it somewhere in your search path (e.g. /usr/bin/X11 or /usr/local/bin).
An app-defaults file is not required to run ximtool.
Don't install the new version while someone is using ximtool, or you will
crash their session. The simplest way to avoid this is to "mv" the old
executable to change the name, e.g. "mv ximtool ximtool.old".
Since this is still alpha test software, all we are releasing is a snapshot
from our development system, which is a Sun sparc running SunOS. Hence only
a Sun binary is available at this time (unless someone wants to hack the
sources and generate their own binary for a new platform).
BASIC USAGE
Ximtool is an image display server. To view images with it you need some
client software, such as IRAF, to load images into the display. Ximtool is
upwards compatible with older display servers such as SAOimage and imtool.
For example, to use ximtool instead of SAOimage, start up ximtool instead of
SAOimage and display in the usual fashion.
You shouldn't need much documentation to be able to use ximtool effectively.
Just start it up, load images into one or more frames, and experiment with
the GUI to see what can be done to manipulate the display. Most of the
controls are obvious, but here are a few things which might not be obvious:
o Clicking and dragging MB1 (mouse button 1) in the main image
window creates a rectangular region marker, used to select a
region of the image. If you do this accidentally and don't want
the marker, put the pointer in the marker and type DELETE or
BACKSPACE to delete the marker. With the pointer in the marker,
MB3 will call up a menu listing some thing you can do with the
marker, like zoom the outlined region. MB1 can be used to drag
or resize the marker.
o Clicking on MB2 in the main image window pans (one click) or
zooms (two clicks) the image. Further clicks cycle through the
builtin zoom factors. Moving the pointer to a new location and
clicking moves the feature under the pointer to the center of
the display window.
o MB3 is used to adjust the contrast and brightness of the displayed
image. The position of the pointer within the display window
determines the contrast and brightness values. Click once to
set the values corresponding to the pointer location, or click
and drag to continuously adjust the display.
o Ctrl-f, Ctrl-b can be used to move forward or backward through
the current set of frame buffers.
A frame buffer is an image (picture) stored in the display server.
Ximtool supports up to four frame buffers. Frame buffers can be any
size; the size is set by the client when an image is loaded into a
frame. For example, in IRAF "set stdimage = imt800" would set the
frame buffer size to 800x800 pixels. Changing the frame buffer size
forces an initialize of the display server. In IRAF the command
"gdev" will list the frame buffer configurations defined on your
system.
Ximtool has a control panel which can be used to exercise most the
capabilities the program has for image display. The control panel can be
accessed either via the Options menu from the main window menubar, or by
pressing the leftmost button in the row of buttons at the upper right side
of the display.
A more detailed overview of the ximtool capabilities and usage is given
below.
THINGS TO WATCH OUT FOR
o It is possible to run multiple ximtools, or ximtool and other
display servers such as saoimage, imtool, skyview, etc.,
simultaneously on the same computer, but don't attempt this unless
you know how to set the servers up on different i/o ports. In the
default configuration there will be conflicts with multiple servers
trying to listen on the same port.
o Most workstations have a single 8 bit, 256 element colortable per
screen. This means that only 256 unique colors can be displayed at
any one time. Image display programs like ximtool (or SAOimage, or
xv, xloadimage, mosaic, etc.) need a lot of colortable entries in
order to display smoothly varying images. If you try to run
multiple image display programs at the same time you are likely to
run out of colortable space. This may result in warning messages
when a program starts up, cause images to be displayed funny,
causing flashing when the pointer moves in and out of image display
windows, and so on.
It is best to avoid these problems by killing off any other display
programs when running ximtool. If you do run out of colortable
space when using ximtool this is harmless, but the image won't be
displayed correctly when the pointer is not in the image window. To
correct this condition, free up some colortable space (by killing
off some other X programs, especially any display programs) and then
move the pointer into the ximtool image window and back out. This
will cause ximtool to update the default colormap of the display and
in most cases will make the ximtool image display correctly.
Ximtool will always display correctly when the pointer is in the
image window, the problem occurs only when the pointer (colormap
focus) is in other windows.
WHAT'S NEW?
Ximtool 0.5, while still incomplete, is a major new version, probably the
first really usable version of ximtool. Major new features in this version
include the following:
o A popup control panel, providing control over frame selection,
zoom and pan, colortable selection from a list (including user
defined colortables), contrast and brightness display and controls,
blink control, including blink frames and blink rate, and option
control. (The ximtool control panel uses the new widgets and other
OBM enhancements discussed in the Xgterm 0.11 announcement.)
o An option called the "panner". The panner displays a reduced
version of the entire frame buffer, with the region currently
displayed outlined with a marker. One can pan and zoom within
the panner window, e.g. by dragging the panner region marker,
to pan or zoom the main image window. This is useful when viewing
images too large to fit on the screen.
o Autoscale option. If autoscale is enabled then at zoom=1, the
frame buffer will be automatically scaled to fit within the display
window. With autoscale disabled (the default), the image scale
is more predictable, but the image may be clipped by the display
window, or may not fill the display window.
o Integer zoom. Ximtool supports both fractional zoom and integer
zoom. Fractional zoom uses a non-integer scale factor to scale an
image region as necessary to fill the display window. Integer zoom
ensures that each frame buffer pixel is displayed as exactly N
display pixels. Integer zoom is slightly faster than a fractional
zoom.
o Antialiasing. When dezooming an image, i.e., displaying a large
image in a smaller display window, antialiasing causes all the
data to be used to compute the displayed image. If antialiasing
is disabled then image is subsampled to compute the displayed image.
Antialiasing can prevent subsampling from omitting image features
that don't fall in the sample grid, but it is significantly slower
than dezooming via subsampling. The default is no antialising.
o Tile frames. The default display mode is to view one frame at a
time. In tile frames mode, 2 or 4 frames may be viewed
simultaneously in the display window. All the usual operations
(zoom and pan, colortable enhancement, cursor readback, etc.)
still work for each frame even when in tile frames mode.
o Fitframe now works. Fitframe resizes the display window to the
same size as the frame buffer.
o Ximtool allows clients to connect in any of the following ways:
fifo pipes The traditional approach. The default,
global /dev/imt1[io] pipes may be used,
or a private set of fifos.
tcp/ip socket Clients connect via a tcp/ip socket.
There is a default port, or a custom port
may be specified. This permits connecting
to the server over a remote network
connection anywhere on the Internet.
unix domain socket Like a tcp/ip socket, but limited to a
single host system. Usually faster than a
tcp/ip socket, and comparable to a fifo. By
default each user gets their own unix domain
socket, so this option allows multiple users
to run ximtools on the same host without
having to customize things.
By default ximtool listens simultaneously for client connctions on
all three types of ports.
o Ximtool now supports multiple simultaneous client connections.
For example, one can be using the IRAF imexamine task to interact
with the image displayed in frame 1, while some other program
simultaneously displays an image in frame 2 (or any frame, including
the frame being examined).
o An improved set of builtin colormaps are now provided. The user
can define additional custom colormaps when ximtool is started.
There were many additional minor changes and bug fixes not worth going into
here.
TECHNICAL NOTES
This isn't the place to write a detailed comprehensive reference manual for
ximtool, but since there isn't any such manual yet (this is still prerelease
software) some additional information on a few selected topics will probably
be useful.
COMMAND LINE OPTIONS
This prerelease version of ximtool doesn't support general command line
options yet (except for the -defgui option described below). However, one
can accomplish the same thing by setting resources on the command line. For
example,
ximtool \
-xrm "*port:0" \
-xrm "*input_fifo:none" \
-xrm "*userCmapDir1:/user/smith/cmaps" \
-xrm "*displayPanner:false"
would start up ximtool with tcp/ip sockets and fifos disabled (leaving
only unix sockets for client connections). Ximtool will look for user
colormaps in the directory /user/smith/cmaps. The panner option will be
disabled at startup.
RESOURCES
Ximtool has a ton of resources (hundreds of them), but in practice only a
few are likely to be useful at the user level.
BUILTIN RESOURCES
Resource Name Default Value
defConfig: 1
defNFrames: 0
tileBorderWidth: 3
tileBorderColor: 9
autoscale: false
antialias: false
tileFrames: false
highlightFrames: true
gui: default
imtoolrc: /usr/local/lib/imtoolrc
memModel: fast
cmap1: none
cmap2: none
cmapDir1: none
cmapDir2: /usr/local/lib/imtoolcmap
input_fifo: /dev/imt1i
output_fifo: /dev/imt1o
unixaddr: /tmp/.IMT%d
port: 5137
All of these are application resources, hence they would be specified in
the .Xdefaults file as, e.g., "XImtool.autoscale: true", etc.
Description of ximtool client resources:
defConfig Default frame buffer configuration on startup.
defNFrames Default number of frames on startup. Set to zero
to use value from imtoolrc file. There isn't a
whole lot of reason to preallocate frames here,
since new frames will be created on demand if needed.
tileBorderWidth Used by the tile frames option. Specifies how far
tileBorderColor apart to space the frames in tile frames mode.
Color "9" refers to the Gterm widget resource color9,
which is assigned a color with its own resource.
autoscale Enable/disable the autoscale option.
antialias Enable/disable the antialias option.
tileFrames Enable/disable the tile frames option.
highlightFrames Determines whether the current frame is highlighted
when in tile frames mode.
gui The GUI to be executed. "default" refers to the
default, builtin ximtool GUI. You can replace this
with your own GUI file if you are bold enough, and
completely change the look and functionality of
the GUI if desired.
imtoolrc Where to find the imtoolrc file. This defines the
recognized frame buffer configurations.
memModel Determines how ximtool uses memory in the ximtool
client and the X server. The options are "fast",
"beNiceToServer", and "small". The default is fast,
which uses server pixmaps to make frame blink fast.
This is recommended unless server memory is very
limited. Note that even in fast mode, the server
pixmap is only the size of the display window, so
memory usage is reasonable even if the frame buffer
is very large.
cmap1 User colormap files. The intent here is to allow
cmap2 individual colormaps to be conveniently specified
on the command line.
cmapDir1 User or system colormap directories. By default
cmapDir2 cmapDir2 points to the system directory
/usr/local/lib/imtoolcmap, allowing a set of site
default colormaps to be defined here. This leaves
cmapDir1 available to a user colormap directory.
input_fifo The input and output fifos for fifo i/o. "Input"
output_fifo and "output" are from the client's point of view.
Note that only one display server can use a
fifo-pair at one time.
unixaddr Template address for unix domain socket. The user
must have write permission on this directory, or
the file must already exist. %d, if given, is
replaced by the user's UID.
port TCP/IP port for the server. Note that only one
server can listen on a port at one time, so if
multiple ximtool servers are desired on the same
machine, they should be given different ports.
GUI RESOURCES
In principle ximtool can have any number of different GUIs, each of which
defines its own set of resources. GUIs typically define a great many
resources, but most of these are not really intended for modification by
the user (although one can modify them if desired).
The following are some of the more useful resources used by the default
ximtool GUI.
Resource Name Default Value
.geometry:
*controlShell.geometry:
*info.geometry: 420x120
*cmapName: image
*basePixel: 64
*maxColors: 216
*imagewin.warpCursor: true
*imagewin.raiseWindow: true
*imagewin.deiconifyWindow: true
*imagewin.ginmodeCursor: circle
*imagewin.ginmodeBlinkInterval: 500
*imagewin.color8: #7c8498
*imagewin.color9: steelblue
*autoscale: True
*zoomfactors: 1 2 4 8
*displayCoords: True
*displayPanner: True
*blinkRate: 1.0
*pannerArea: 150*150
*pannerGeom: -5+5
*wcsboxGeom: -5-5
*maxContrast: 5.0
*warnings: True
Description of selected resources:
.geometry Geometry of main image window
*controlShell.geometry Geometry of control panel shell
*info.geometry Geometry of info box
*cmapName Name used for private colormap.
The default for all IRAF imaging
applications is "image". Gterm
widget based imaging applications
which have the same value of cmapName
will share the same colormap,
minimizing colormap flashing and
allowing multiple applications to be
run at the same time.
*basePixel These two resources determine the
*maxColors region of colormap space used to
render image pixels.
*imagewin.warpCursor Warp pointer into image window when
initiating a cursor read.
*imagewin.raiseWindow Raise image window when initiating
a cursor read.
*imagewin.deiconifyWindow Deiconify image window if necessary
when initiating a cursor read.
*imagewin.ginmodeCursor Type of cursor when a cursor read
is in progress. The default is a
circle. Any selection from the X
cursor font can be used. A special
case is "full_crosshair" which is
the full crosshair cursor of the
Gterm widget.
*imagewin.ginmodeBlinkInterval Determines whether the cursor blinks
when a cursor read is in progress.
The value is given in milliseconds.
*imagewin.color8 Color assigned the panner window.
*imagewin.color9 Color used for the tileFrames highlight.
*pannerArea Area in pixels of the panner window.
*pannerGeom Where to place the panner window.
*wcsboxGeom Where to place the coords box.
*maxContrast Maximum contrast value.
For a complete description of the ximtool resources, refer to the GUI file.
The "appInitialize" command contains the full resource list for the GUI.
CONTROL PANEL NOTES
VIEW CONTROLS
o The "Frame" box will list only the frame buffers you currently have
defined. Currently, the only way to destroy a frame buffer is to
change the frame buffer configuration.
o The text display gives the field X,Y center, X,Y scale factors, and
the X,Y zoom factors. The scale factor and the zoom factor will be
the same unless autoscale is enabled. The scale is in units of
display pixels per frame buffer pixel, and is an absolute measure
(it doesn't matter whether or not autoscale is enabled). Zoom is
relative to the autoscale factor, which is 1.0 if autoscaling is
disabled.
o The numbers in the Zoom box are zoom factors. Blue numbers zoom,
red numbers dezoom. Zoom In and Zoom Out may be used to go to
larger or smaller zoom factors, e.g. "5" followed by "Zoom In" will
get you to zoom factor 10. Center centers the field. Toggle Zoom
toggles between the current zoom/center values, and the unzoomed
image.
o Aspect recomputes the view so that the aspect ratio is 1.0. Aspect
also integerizes the zoom factor (use the version in the View menu
if you don't want integerization).
o Fit Frame makes the display window the same size as the frame buffer.
Note that autoscale has much the same effect, and allows you to
resize the display window to any size you want, or view images to
large to fit on the screen.
ENHANCEMENT CONTROLS
o At the top is a scrolled list of all the available colormaps. Click
on the one you want to load it. You can add your own custom colormaps
to this list.
o The two sliders adjust the contrast (upper slider) and brightness
(lower slider) of the display. The Invert button inverts the
colormap (multiples the contrast by -1.0). Note that due to the use
of the private colormap the sliders are a bit sluggish when dragged
to window the display. If this is annoying, using MB3 in the
display window is faster.
o The Normalize button (on the bottom of the control panel) will
normalize the enhancement, i.e. set the contrast and brightness to
the default one-to-one values (1.0, 0.5). This is the preferred
setting for many of the pseudocolor colortables.
BLINK CONTROLS
o Blink frames is the list of frames to be blink. When blink mode is
in effect ximtool just cycles through these frames endlessly,
pausing "blink rate" seconds between each frame. The same frame
can be entered in the list more than once. To program an arbitrary
list of blink frames, hit the Reset button and click on each blink
frame button until it is set to the desired frame number.
o The blink rate can be adjusted as slow or as fast as you want using
the arrow buttons. If you set the blink rate small enough it will
go to zero, enabling single step mode (see below).
o The Register button registers all the blink frames with the current
display frame. Frames not in the blink list are not affected.
o The Match LUTs button sets the enhancement of all blink frames to
the same values as the display frame. Frames not in the blink list
are not affected.
o The Blink button turns blink on and off. When the blink rate is
set to zero the Blink button will single step through the blink
frames, one frame per button press.
NOTE: you can blink no matter what ximtool options are in effect, but
many of these will slow blink down. To get the fastest blink you may
want to turn off the panner and coords box, and match the LUTs of all
the blink frames. All the ximtool controls are fully active during
blink mode, plus you can load frames etc.
OPTIONS CONTROLS
o The options box contains a set of option toggles. If the toggle
is yellow the option is in effect.
OTHER
o Initialize initializes ximtool. This resets a lot of things, but
tries to not change the view. Select Reset in the File menu on the
main window menubar to fully reset things.
o Normalize normalizes the view for the current display frame.
o Done makes the control panel go away.
CUSTOM COLOR TABLES
The cmap[12] and cmapDir[12] resources are used to tell ximtool where to
look for colortables. The colortables are loaded when ximtool starts up, or
when it is reinitialized (e.g. by pressing the Initialize button in the
control panel). Ximtool will ignore any files in the colormap directory
which do not look like colortables.
The format of a user lookup table is very simple: each row defines one
colortable entry, and consists of three columns defining the red, green,
and blue values scaled to the range 0.0 (off) to 1.0 (full intensity).
R G B
R G B
(etc.)
Blank lines and comment lines (# ...) are ignored.
Usually 256 rows are provided, but the number may actually be anything in
the range 1 to 256. Ximtool will interpolate the table as necessary to
compute the colortable values used in Ximtool. Ximtool uses only 201 colors
to render pixel data, so it is usually necessary to interpolate the table
when it is loaded.
Tables are loaded into Ximtool by setting one of the user colormap directory
resources. When Ximtool starts up it will read all the files in the
colormap directory, disregarding any files that are unreadable or that do
not appear to be colortables. The name of the colortable as it will appear
in the Ximtool control panel is the root name of the file, e.g., if the file
is "rainbow.lut" the colortable name will be "rainbow". Lower case names
are suggested to avoid name collisions with the builtin colortables. If the
same colortable file appears in multiple user colortable directories, the
first one will be used.
The directory "luts" in the ximtool source directory contains a sample set
of colortable files. This can be installed as /usr/local/lib/imtoolcmap
when ximtool is installed.
THE MARKER MENU
o MB3 (mouse button 3) calls up the marker menu (by default).
o Zoom does an equal aspect zoom of the region outlined by the marker.
In this way you can mark a region of the image and zoom it up.
o Fill exactly zooms the area outlined by the marker, making it fill
the display window. Since the marker is not likely to be exactly
square, the aspect ratio of the resultant image will not be unitary.
o Print prints a description of the marked region. The text is printed
in the Info box.
o Unrotate unrotates a rotated marker.
o Color is a menu of possible marker colors.
o Type is a menu of possible marker types. This is still a little
buggy and it isn't very useful, but you can use it to play with
different types of markers.
o Destroy destroys the marker. You can also hit the delete or
backspace key in a marker to destroy the marker.
MORE ON GRAPHICS MARKERS
Although ximtool doesn't do much with markers currently, they are a general
feature of the Gterm widget and are used more extensively in other programs
(e.g. the prototype IRAF science GUI applications). Ximtool uses markers
for the marker zoom feature discussed above, and also for the panner and the
coords box. All markers share some of the same characteristics, so it is
worthwhile learning basic marker manipulation keystrokes.
o MB1 anywhere inside a marker may be used to drag the marker.
o MB1 near a marker corner or edge, depending on the type of marker,
resizes the marker.
o Shift-MB1 on the corner of most markers will rotate the marker.
o Markers stack, if you have several markers and you put one on top
of the other. The active marker is highlighted to tell you which
of the stacked markers is active. If the markers overlap, this
will be marker "on top" in the stacking order.
o MB2 in the body of a marker "lowers" the marker, i.e. moves it to
the bottom of the stacking order.
o Delete or backspace in a marker deletes the marker.
For example, try placing the pointer anywhere in the coords box, then press
MB1 and hold it down, and drag the coords box marker somewhere else on the
screen. You can also resize the coords box by dragging a corner, or delete
it with the delete or backspace key. (The Initialize button will get the
original coords box back).
NOTES ON THE PANNER
The panner window always displays the full frame buffer. Try setting the
frame buffer configuration to a nonsquare frame buffer (e.g. imtcryo) and
then displaying a square image (e.g. dev$pix) and the panner will show you
exactly where the image has been loaded into the frame.
The panner window uses two markers, one for the window border and one to
mark the displayed region of the frame. Most of the usual marker keystrokes
mentioned above apply to these markers as well, e.g. you can use MB1 to
reposition on the panner window within the main image display window, or to
drag the region marker within the panner (pan the image). Resizing the
region marker zooms the image; this is a non-aspect constrained zoom.
The panner window itself can be resized by dragging a corner with MB1.
Typing delete or backspace anywhere in the panner window deletes the panner.
A special case is MB2. Typing MB2 anywhere in the panner window pans the
image to that point. This is analogous to typing MB2 in the main display
window to pan the image.
THE COORDS BOX
Ximtool provides a limited notion of world coordinates, allowing frame
buffer pixel coordinates and pixel values to be converted to some arbitrary
client defined coordinate system. The coords box feature is used to display
these world coordinates as the pointer is moved about in the image window.
The quantities displayed in the coords box are X, Y, and Z: the X,Y world
coordinates of the pointer, and Z, the world equivalent of the pixel value
under the pointer. All coordinate systems are linear. The precision of a
displayed quantity is limited by the range of values of the associated raw
frame buffer value. For example, if the display window is 512x512 only 512
coordinate values are possible in either axis (the positional precision can
be increased however by zooming the image). More seriously, at most about
200 pixel values can be displayed since this is the limit on the range of
pixel values loaded into the frame buffer. If a display pixel is saturated
a "+" will be displayed after the intensity value.
The coords box is a marker (text marker) and it can be moved and resized
with the pointer like any other marker.
VIEWING THE IMAGE TITLE
The title of the image loaded into the current display frame is displayed
centered in the control area at the top of the main display window. If the
title string is too long to be fully displayed it will be clipped at either
end. To see the full title string, either resize the display window, or
pop up the Info box. The Info box always displays the full image title.
NOTES ON CLIENT-SERVER I/O
As mentioned earlier ximtool allows clients to connect using any of three
different communications domains: fifos, tcp/ip sockets, and unix domain
sockets.
By default ximtool will listen and accept connections on all three types of
ports. This is fine if there is only one display server running on a host,
but conflicts arise if multiple display servers try to listen on the same
port. If this happens one needs to either disable a port, or change the
address.
FIFOs The default fifos are /dev/imt1i and /dev/imt1o.
The resources input_fifo and output_fifo may be
set to use a different set of fifos. To disable
the fifo port entirely set input_fifo=none. The
fifos must be created and must have read and write
permission, before starting ximtool.
TCP/IP socket The default tcp/ip port is 5137. The resource
"port" may be set to set a different port. To
disable tcp/ip sockets completely set port=0.
If ximtool is terminated it may take a couple of
minutes before unix allows ximtool to use the
port again.
UNIX socket The default unix domain socket is /tmp/.IMT%d,
where %d is the user's UID number. Hence, each user
has a private unix domain socket, allowing multiple
ximtools to be run on the same host (but only one
per user unless the addresss is changed). To
disable unix domain sockets set unixaddr=none. The
server will automatically create and delete the unix
domain socket if none exists.
In 2.10.3 beta-3 and later versions of IRAF the default action when
connecting to the display server is to first try a unix domain socket
connection using the socket /tmp/.IMT%d. If this fails the IRAF client
tries to connect via the old style FIFOs /dev/imt1[io]. Hence, if ximtool
is being used with only newer versions of IRAF and all connections are
local, FIFOs and tcp/ip sockets can be disabled and different users can
transparently run ximtool on the same host system.
IRAF 2.10.3 or later uses the new ZFIOND network driver (described
elsewhere) to connect to the server. The graphcap file defines how to
connect to the server. This can be overridden however, by defining IMTDEV
in the host environment. For example to connect to a TCP/IP socket on host
foo.bar.edu, one could define
setenv IMTDEV inet:5137:foo.bar.edu
before logging into IRAF.
CUSTOM GUIs
The default GUI of ximtool can be viewed by running ximtool as follows:
ximtool -defgui
This will print the default builtin GUI to the standard output. If this
output is saved in a file one can set the "gui" resource to point to this
file, and when ximtool starts up it will use this GUI file instead of the
builtin default GUI. The user can modify the GUI file as desired to
customize the GUI. Since the full GUI of ximtool is encapsulated in the GUI
file, ths is a very powerful option; one can generate quite a different
program merely by modifying the GUI file, without need to recompile any code.
PLANNED FUTURE WORK
The following items are on the near term TODO list for ximtool.
o Print dialog. Will be used to print whatever is displayed in the
main image window, generating a variety of types of output.
o File load/save. For standalone use it is desirable to be able to
load the display from a disk file. The plan is to support at least
FITS for file input.
o Info box. The info box is due for a major rewrite (the existing
one isn't very useful).
o TclShell. This will allow experienced users to type Tcl commands
directly into the OBM interpreter at the heart of ximtool.
o Add global translation actions for a variety of GUI functions, so
that the user can bind keystrokes and function keys to these actions.
o Implement online help (question mark button in main window).
o "Snap to equal aspect" feature for use when resizing panner.
There are still quite a few useful features that could be implemented.
For example, a magnifier window (similar to the panner but displays a
magnified view of the region under the cursor). Similarly, one could have
a magnifier which pops up under the pointer. Split screen would be useful
for comparing multiple frame buffers. A window into an alternate frame
would be a useful alternative to frame blink. The Optimize button in the
Enhancement portion of the control panel will be used to automatically
compute the optimum contrast and brightness valus for the region for the
image in the main display window.
More dramatically, alternate, completely different GUIs for ximtool are
possible, merely by loading a different GUI file. The planned SAOtng user
interface (being developed by SAO) is an example of this. SAOtng will
also provide enhanced client-server communications via an alternative,
more general communications protocol based on the X selection mechanism.
|