aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/ximtool/OLD/ximtool-0.5.info
blob: c9346675c469d0990eea9c4d0c580147c4fef0ab (plain) (blame)
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.