casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
DisplayEnums.h
Go to the documentation of this file.
00001 //# DisplayEnums.h: enumerated constants for the Display Library
00002 //# Copyright (C) 1994,1995,1996,1997,1998,1999,2000,2001,2002
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be addressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#                        Charlottesville, VA 22903-2475 USA
00025 //#
00026 //# $Id$
00027 
00028 #ifndef TRIALDISPLAY_DISPLAYENUMS_H
00029 #define TRIALDISPLAY_DISPLAYENUMS_H
00030 
00031 #include <casa/aips.h>
00032 
00033 //# Forward declarations
00034 #include <casa/iosfwd.h>
00035 
00036 namespace casa { //# NAMESPACE CASA - BEGIN
00037 
00038 // <summary>
00039 // Enumerate constants for the display classes.
00040 // </summary>
00041 //
00042 // <use visibility=export>
00043 //
00044 // <reviewed>
00045 // </reviewed>
00046 //  
00047 // <prerequisite>
00048 // <li> none
00049 // </prerequisite>
00050 //
00051 // <etymology>
00052 // DisplayEnums : Display library enumerators
00053 // </etymology>
00054 //
00055 // <synopsis>
00056 // Standard keysym constants chosen to match the X system.  Event handling done
00057 // in other systems must provide the same constants when returning
00058 // keysyms.
00059 //
00060 // Definitions for all characters in ISO LATIN 1-4, and GREEK keysyms
00061 // are included.
00062 //
00063 // </synopsis>
00064 //
00065 // <motivation>
00066 // High standardization and flexible support of national and
00067 // international keyboard buttons.
00068 // </motivation>
00069 //
00070 
00071 class Display
00072 {
00073 public:
00074   // Different ways of handling color on the display
00075   enum ColorModel {
00076     // ColorIndex mode
00077     Index,
00078     // RGB mode
00079     RGB,
00080     // HSV mode
00081     HSV 
00082   };
00083 
00084   // Color components
00085   enum ColorComponent {
00086     Red,
00087     Green,
00088     Blue,
00089     Hue,
00090     Saturation,
00091     Value
00092   };
00093 
00094   // Strategy to use to allocate system color resources
00095   enum Strategy {
00096     // Want the most colors regardless of consequences
00097     Best,
00098     // Want the default allocation
00099     Default,
00100     // Happy with a range between some min and max
00101     MinMax,
00102     // Want some percentage of the available allocation
00103     Percent,
00104     // Want it my way or not at all
00105     Custom 
00106   };
00107 
00108   // Special map is used as a placeholder to indicate that ...
00109   enum SpecialMap {
00110     // the user wants to use the system (default) Colormap
00111     System,
00112     // the user wants to use a new colormap
00113     New,
00114     // the user wants to share an existing (possibly system!) Colormap
00115     // (this is used internally at present)
00116     Shared
00117   };
00118 
00119   // Style of line to use
00120   enum LineStyle {
00121     // solid, no breaks
00122     LSSolid,
00123     // dashed line with transparent breaks
00124     LSDashed,
00125     // dashed line with background-color breaks
00126     LSDoubleDashed
00127   };
00128 
00129   // Controls the appearance of thick lines near their endpoints.
00130   // See Xlib programming guide, page 126 for complete info
00131   enum CapStyle {
00132     // don't draw pixels aligned with an endpoint
00133     CSNotLast,
00134     // draw pixels up to the endpoint
00135     CSButt,
00136     // round the edges using pixels past the endpoint
00137     CSRound,
00138     // continue linewidth/2 pixels past the endpoint
00139     CSProjecting
00140   };
00141 
00142   // Controls the appearance of two joined lines
00143   enum JoinStyle {
00144     // corner ends in a point
00145     JSMiter,
00146     // corner is rounded off
00147     JSRound,
00148     // corner is flat surface whose normal bisects the joint angle.
00149     JSBevel
00150   };
00151 
00152   // Controls fill style
00153   enum FillStyle {
00154     // solid fill
00155     FSSolid,
00156     // tiled fill
00157     FSTiled,
00158     // stippled fill
00159     FSStippled,
00160     // opaque stippled
00161     FSOpaqueStippled
00162   };
00163 
00164   // Fill Rule
00165   // Xlib programming guide, pg.132
00166   enum FillRule {
00167     // interior point filled if odd number of lines crossed to exit polygon
00168     FREvenOdd,
00169     // overlapping areas always filled
00170     FRWinding
00171   };
00172 
00173   // Arc Mode
00174   enum ArcMode {
00175     // Chord
00176     AMChord,
00177     // slice
00178     AMPieSlice
00179   };
00180 
00181   // Text Alignment
00182   enum TextAlign {
00183     // reference point aligned to center of text
00184     AlignCenter,
00185     // reference point aligned to center of left edge of text
00186     AlignLeft,
00187     // reference point aligned to center ot top edge of text
00188     AlignTop,
00189     // reference point aligned to center of right edge of text
00190     AlignRight,
00191     // reference point aligned to center of bottom edge of text
00192     AlignBottom,
00193     // reference point aligned to top left corner of text
00194     AlignTopLeft,
00195     // reference point aligned to top right corner of text
00196     AlignTopRight,
00197     // reference point aligned to bottom left corner of text
00198     AlignBottomLeft,
00199     // reference point aligned to bottom right corner of text
00200     AlignBottomRight
00201   };
00202 
00203   // PixelCanvas Drawing Modes
00204   enum DrawMode {
00205     // Immediate draw mode
00206     Draw,
00207     // Build display list mode
00208     Compile
00209   };
00210 
00211   // PixelCanvas target drawing destination
00212   enum DrawBuffer {
00213     // Nowhere
00214     NoBuffer,
00215     // Use default behaviour for the particular implementation of the PixelCanvas
00216     DefaultBuffer,
00217     // Draw only to front buffer
00218     FrontBuffer,
00219     // Draw only to back buffer
00220     BackBuffer,
00221     // Draw to both
00222     FrontAndBackBuffer
00223   };
00224 
00225   // PixelCanvas Drawing Logical Functions.  The functions implement
00226   // various combinations of dst = F(src, dest), where src is the current
00227   // color and dest is the existing color in the framebuffer.
00228   enum DrawFunction {
00229     // Normal operation, overwrite with src
00230     DFCopy,
00231     // Invert operation
00232     DFCopyInverted,
00233     // Clear, ignore current color, use background color
00234     DFClear,
00235     // Make all bits 1
00236     DFSet,
00237     // Invert the dest (twice to restore original dest)
00238     DFInvert,
00239     // do-nothing draw
00240     DFNoop,
00241 
00242     // Exclusive or, used for draw/erase operation over a variable 
00243     // background
00244     DFXor,
00245     // (!src) XOR dest
00246     DFEquiv,
00247 
00248     // src AND dest
00249     DFAnd,
00250     // !(src AND dest)
00251     DFNand,
00252     // src AND !dest
00253     DFAndReverse,
00254     // !src AND dest
00255     DFAndInverted,
00256 
00257     // src OR dest
00258     DFOr,
00259     // !(src OR dest)
00260     DFNor,
00261     // src OR !dest
00262     DFOrReverse,
00263     // !src OR dest
00264     DFOrInverted
00265   };
00266     
00267   // Callback reasons for PCRefreshEvent and WCRefreshEvent
00268   enum RefreshReason {
00269     // User told PixelCanvas to refresh via PixelCanvas refresh()
00270     UserCommand,
00271     // Colortable allocation changed (from PixelCanvasColorTable)
00272     ColorTableChange,
00273     // Colormap allocation changed - less severe than ColorTableChange,
00274     // this will mean an internal change to a single Display Library
00275     // Colormap that doesn't affect other Colormaps in the same
00276     // ColorTable
00277     ColormapChange,
00278     // Change in shape of PixelCanvas
00279     PixelCoordinateChange,
00280     // Change in linear coordinate system
00281     LinearCoordinateChange,
00282     // Change in world coordinate system
00283     WorldCoordinateChange,
00284     // Back buffer was copied to front buffer on the PixelCanvas
00285     BackCopiedToFront,
00286     // Clear required prior to a change in color table or distribution...
00287     ClearPriorToColorChange
00288   };
00289 
00290   // PixelCanvas Options
00291   enum Option {
00292     // Is a clipwindow enabled?
00293     ClipWindow
00294   };
00295 
00296   // How to cache images when displaying them on client-server graphics
00297   // systems
00298   enum ImageCacheStrategy {
00299     // Always use client-side caching (XImages for X Server)
00300     ClientAlways,
00301     // Always use server-side caching (Pixmaps for X Server)
00302     ServerAlways,
00303     // Use server-side pixmaps, recording the size of each 
00304     // pixmap created for image caching.  When the memory used
00305     // exceeds some threshold, change to use client-side
00306     // XImages to avoid swamping the X server
00307     ServerMemoryThreshold
00308   };
00309 
00310   // List of markers for use as annotations. These can also be drawn
00311   // as primitives on a pixelcanvas.
00312   const static Int nMarkers = 15;
00313   enum Marker {
00314 
00315     // Basic, Unfilled shapes;
00316     Cross = 0,
00317     X,
00318     Diamond,
00319     Circle,
00320     Square,
00321     Triangle, 
00322     InvertedTriangle,
00323     //Pentagon,
00324     //Hexagon,
00325 
00326     // Basic, filled shapes
00327     FilledCircle,
00328     FilledSquare,
00329     FilledDiamond,
00330     FilledTriangle,
00331     FilledInvertedTriangle,
00332     //FilledPentagon,
00333     //FilledHexagon,
00334 
00335     // Combination markers
00336     CircleAndCross,
00337     CircleAndX,
00338     CircleAndDot
00339   };
00340 
00341   // WorldCanvas - what to do with complex data if it is
00342   // presented to WorldCanvas::drawImage()
00343   enum ComplexToRealMethod {
00344     // Extract magnitude
00345     Magnitude,
00346     // Extract phase
00347     Phase,
00348     // Extract real part
00349     Real,
00350     // Extract imaginary part
00351     Imaginary
00352   };
00353 
00354   // WorldCanvasHolder - what type of DisplayData is this,
00355   // need to know for drawing order
00356   enum DisplayDataType {
00357     // Rastered data - should go first
00358     Raster,
00359     // Vector data - can go next
00360     Vector,
00361     // Annotation 
00362     Annotation,
00363     // Canvas annotation - can draw outside draw area
00364     CanvasAnnotation
00365   };
00366 
00367   // All events - modifier codes.
00368   // key is down if modifier & code is nonzero
00369   enum KeyModifier {
00370     // Shift key bit
00371     KM_Shift            = 0x0001,
00372     // Caps lock bit
00373     KM_CapsLock         = 0x0002,
00374     // Control key bit
00375     KM_Ctrl             = 0x0004,
00376     // Alt key bit
00377     KM_Alt              = 0x0008,
00378     // Numlock (1 = engaged)
00379     KM_NumLock          = 0x0010,
00380     // ScrollLock bit (1 = engaged)
00381     KM_ScrollLock       = 0x0020,
00382     // 
00383     KM_Mod1             = 0x0008,
00384     // 
00385     KM_Mod2             = 0x0010,
00386     // 
00387     KM_Mod3             = 0x0020,
00388     // 
00389     KM_Mod4             = 0x0040,
00390     // 
00391     KM_Mod5             = 0x0080,
00392     // Mouse button 1 bit
00393     KM_Pointer_Button_1 = 0x0100,
00394     // Mouse button 2 bit
00395     KM_Pointer_Button_2 = 0x0200,
00396     // Mouse button 3 bit
00397     KM_Pointer_Button_3 = 0x0400,
00398     // Mouse button 4 bit
00399     KM_Pointer_Button_4 = 0x0800,
00400     // Mouse button 5 bit
00401     KM_Pointer_Button_5 = 0x1000,
00402     // Double click bit
00403     KM_Double_Click = 0x2000
00404   };
00405 
00406   //
00407   // Keysyms for PixelCanvas keyboard events.  These
00408   // can be printed using the stream functions listed
00409   // below.
00410   // These are mostly self explanatory.
00411   //
00412 
00413   enum KeySym {
00414     // 
00415     K_None              = 0x0000,
00416     //
00417     K_BackSpace         = 0xFF08,
00418     //
00419     K_Tab               = 0xFF09,
00420     //
00421     K_Linefeed          = 0xFF0A,
00422     //
00423     K_Clear             = 0xFF0B,
00424     //
00425     K_Return            = 0xFF0D,
00426     //
00427     K_Pause             = 0xFF13,
00428     //
00429     K_Scroll_Lock       = 0xFF14,
00430     //
00431     K_Sys_Req           = 0xFF15,
00432     //
00433     K_Escape            = 0xFF1B,
00434     //
00435     K_Delete            = 0xFFFF,
00436 
00437     //
00438     K_Multi_key         = 0xFF20,
00439 
00440     //
00441     K_Home              = 0xFF50,
00442     //
00443     K_Left              = 0xFF51,
00444     //
00445     K_Up                = 0xFF52,
00446     //
00447     K_Right             = 0xFF53,
00448     //
00449     K_Down              = 0xFF54,
00450     //
00451     K_Prior             = 0xFF55,
00452     //
00453     K_Page_Up           = 0xFF55,
00454     //
00455     K_Next              = 0xFF56,
00456     //
00457     K_Page_Down         = 0xFF56,
00458     //
00459     K_End               = 0xFF57,
00460     //
00461     K_Begin             = 0xFF58,
00462 
00463     //
00464     K_Select            = 0xFF60,
00465     //
00466     K_Print             = 0xFF61,
00467     //
00468     K_Execute           = 0xFF62,
00469     //
00470     K_Insert            = 0xFF63,
00471     //
00472     K_Undo              = 0xFF65,
00473     //
00474     K_Redo              = 0xFF66,
00475     //
00476     K_Menu              = 0xFF67,
00477     //
00478     K_Find              = 0xFF68,
00479     //
00480     K_Cancel            = 0xFF69,
00481     //
00482     K_Help              = 0xFF6A,
00483     //
00484     K_Break             = 0xFF6B,
00485     //
00486     K_Mode_switch       = 0xFF7E,
00487     //
00488     K_script_switch     = 0xFF7E,
00489     //
00490     K_Num_Lock          = 0xFF7F,
00491     //
00492     K_KP_Space          = 0xFF80,
00493     //
00494     K_KP_Tab            = 0xFF89,
00495     //
00496     K_KP_Enter          = 0xFF8D,
00497     //
00498     K_KP_F1             = 0xFF91,
00499     //
00500     K_KP_F2             = 0xFF92,
00501     //
00502     K_KP_F3             = 0xFF93,
00503     //
00504     K_KP_F4             = 0xFF94,
00505     //
00506     K_KP_Home           = 0xFF95,
00507     //
00508     K_KP_Left           = 0xFF96,
00509     //
00510     K_KP_Up             = 0xFF97,
00511     //
00512     K_KP_Right          = 0xFF98,
00513     //
00514     K_KP_Down           = 0xFF99,
00515     //
00516     K_KP_Prior          = 0xFF9A,
00517     //
00518     K_KP_Page_Up        = 0xFF9A,
00519     //
00520     K_KP_Next           = 0xFF9B,
00521     //
00522     K_KP_Page_Down      = 0xFF9B,
00523     //
00524     K_KP_End            = 0xFF9C,
00525     //
00526     K_KP_Begin          = 0xFF9D,
00527     //
00528     K_KP_Insert         = 0xFF9E,
00529     //
00530     K_KP_Delete         = 0xFF9F,
00531     //
00532     K_KP_Equal          = 0xFFBD,
00533     //
00534     K_KP_Multiply       = 0xFFAA,
00535     //
00536     K_KP_Add            = 0xFFAB,
00537     //
00538     K_KP_Separator      = 0xFFAC,
00539     //
00540     K_KP_Subtract       = 0xFFAD,
00541     //
00542     K_KP_Decimal        = 0xFFAE,
00543     //
00544     K_KP_Divide         = 0xFFAF,
00545     //
00546     K_KP_0              = 0xFFB0,
00547     //
00548     K_KP_1              = 0xFFB1,
00549     //
00550     K_KP_2              = 0xFFB2,
00551     //
00552     K_KP_3              = 0xFFB3,
00553     //
00554     K_KP_4              = 0xFFB4,
00555     //
00556     K_KP_5              = 0xFFB5,
00557     //
00558     K_KP_6              = 0xFFB6,
00559     //
00560     K_KP_7              = 0xFFB7,
00561     //
00562     K_KP_8              = 0xFFB8,
00563     //
00564     K_KP_9              = 0xFFB9,
00565 
00566     //
00567     K_F1                = 0xFFBE,
00568     //
00569     K_F2                = 0xFFBF,
00570     //
00571     K_F3                = 0xFFC0,
00572     //
00573     K_F4                = 0xFFC1,
00574     //
00575     K_F5                = 0xFFC2,
00576     //
00577     K_F6                = 0xFFC3,
00578     //
00579     K_F7                = 0xFFC4,
00580     //
00581     K_F8                = 0xFFC5,
00582     //
00583     K_F9                = 0xFFC6,
00584     //
00585     K_F10               = 0xFFC7,
00586     //
00587     K_F11               = 0xFFC8,
00588     //
00589     K_L1                = 0xFFC8,
00590     //
00591     K_F12               = 0xFFC9,
00592     //
00593     K_L2                = 0xFFC9,
00594     //
00595     K_F13               = 0xFFCA,
00596     //
00597     K_L3                = 0xFFCA,
00598     //
00599     K_F14               = 0xFFCB,
00600     //
00601     K_L4                = 0xFFCB,
00602     //
00603     K_F15               = 0xFFCC,
00604     //
00605     K_L5                = 0xFFCC,
00606     //
00607     K_F16               = 0xFFCD,
00608     //
00609     K_L6                = 0xFFCD,
00610     //
00611     K_F17               = 0xFFCE,
00612     //
00613     K_L7                = 0xFFCE,
00614     //
00615     K_F18               = 0xFFCF,
00616     //
00617     K_L8                = 0xFFCF,
00618     //
00619     K_F19               = 0xFFD0,
00620     //
00621     K_L9                = 0xFFD0,
00622     //
00623     K_F20               = 0xFFD1,
00624     //
00625     K_L10               = 0xFFD1,
00626     //
00627     K_F21               = 0xFFD2,
00628     //
00629     K_R1                = 0xFFD2,
00630     //
00631     K_F22               = 0xFFD3,
00632     //
00633     K_R2                = 0xFFD3,
00634     //
00635     K_F23               = 0xFFD4,
00636     //
00637     K_R3                = 0xFFD4,
00638     //
00639     K_F24               = 0xFFD5,
00640     //
00641     K_R4                = 0xFFD5,
00642     //
00643     K_F25               = 0xFFD6,
00644     //
00645     K_R5                = 0xFFD6,
00646     //
00647     K_F26               = 0xFFD7,
00648     //
00649     K_R6                = 0xFFD7,
00650     //
00651     K_F27               = 0xFFD8,
00652     //
00653     K_R7                = 0xFFD8,
00654     //
00655     K_F28               = 0xFFD9,
00656     //
00657     K_R8                = 0xFFD9,
00658     //
00659     K_F29               = 0xFFDA,
00660     //
00661     K_R9                = 0xFFDA,
00662     //
00663     K_F30               = 0xFFDB,
00664     //
00665     K_R10               = 0xFFDB,
00666     //
00667     K_F31               = 0xFFDC,
00668     //
00669     K_R11               = 0xFFDC,
00670     //
00671     K_F32               = 0xFFDD,
00672     //
00673     K_R12               = 0xFFDD,
00674     //
00675     K_F33               = 0xFFDE,
00676     //
00677     K_R13               = 0xFFDE,
00678     //
00679     K_F34               = 0xFFDF,
00680     //
00681     K_R14               = 0xFFDF,
00682     //
00683     K_F35               = 0xFFE0,
00684     //
00685     K_R15               = 0xFFE0,
00686 
00687     //
00688     K_Shift_L           = 0xFFE1,
00689     //
00690     K_Shift_R           = 0xFFE2,
00691     //
00692     K_Control_L         = 0xFFE3,
00693     //
00694     K_Control_R         = 0xFFE4,
00695     //
00696     K_Caps_Lock         = 0xFFE5,
00697     //
00698     K_Shift_Lock        = 0xFFE6,
00699 
00700     //
00701     K_Meta_L            = 0xFFE7,
00702     //
00703     K_Meta_R            = 0xFFE8,
00704     //
00705     K_Alt_L             = 0xFFE9,
00706     //
00707     K_Alt_R             = 0xFFEA,
00708     //
00709     K_Super_L           = 0xFFEB,
00710     //
00711     K_Super_R           = 0xFFEC,
00712     //
00713     K_Hyper_L           = 0xFFED,
00714     //
00715     K_Hyper_R           = 0xFFEE,
00716     //
00717 
00718     K_Pointer_Button1           = 0xFEE9,
00719     //
00720     K_Pointer_Button2           = 0xFEEA,
00721     //
00722     K_Pointer_Button3           = 0xFEEB,
00723     //
00724     K_Pointer_Button4           = 0xFEEC,
00725     //
00726     K_Pointer_Button5           = 0xFEED,
00727     //
00728 
00729     K_Pointer_DblClick_Dflt     = 0xFEEE,
00730     //
00731     K_Pointer_DblClick1         = 0xFEEF,
00732     //
00733     K_Pointer_DblClick2         = 0xFEF0,
00734     //
00735     K_Pointer_DblClick3         = 0xFEF1,
00736     //
00737     K_Pointer_DblClick4         = 0xFEF2,
00738     //
00739     K_Pointer_DblClick5         = 0xFEF3,
00740     //
00741     K_Pointer_Drag_Dflt         = 0xFEF4,
00742     //
00743     K_Pointer_Drag1             = 0xFEF5,
00744     //
00745     K_Pointer_Drag2             = 0xFEF6,
00746     //
00747     K_Pointer_Drag3             = 0xFEF7,
00748     //
00749     K_Pointer_Drag4             = 0xFEF8,
00750     //
00751 
00752     //
00753     K_Pointer_EnableKeys        = 0xFEF9,
00754     //
00755     K_Pointer_Accelerate        = 0xFEFA,
00756     //
00757     K_Pointer_DfltBtnNext       = 0xFEFB,
00758     //
00759     K_Pointer_DfltBtnPrev       = 0xFEFC,
00760 
00761     //  Latin 1  Byte 3 = 0
00762     K_space               = 0x0020,
00763     //
00764     K_exclam              = 0x0021,
00765     //
00766     K_quotedbl            = 0x0022,
00767     //
00768     K_numbersign          = 0x0023,
00769     //
00770     K_dollar              = 0x0024,
00771     //
00772     K_percent             = 0x0025,
00773     //
00774     K_ampersand           = 0x0026,
00775     //
00776     K_apostrophe          = 0x0027,
00777     //
00778     K_parenleft           = 0x0028,
00779     //
00780     K_parenright          = 0x0029,
00781     //
00782     K_asterisk            = 0x002a,
00783     //
00784     K_plus                = 0x002b,
00785     //
00786     K_comma               = 0x002c,
00787     //
00788     K_minus               = 0x002d,
00789     //
00790     K_period              = 0x002e,
00791     //
00792     K_slash               = 0x002f,
00793     //
00794     K_0                   = 0x0030,
00795     //
00796     K_1                   = 0x0031,
00797     //
00798     K_2                   = 0x0032,
00799     //
00800     K_3                   = 0x0033,
00801     //
00802     K_4                   = 0x0034,
00803     //
00804     K_5                   = 0x0035,
00805     //
00806     K_6                   = 0x0036,
00807     //
00808     K_7                   = 0x0037,
00809     //
00810     K_8                   = 0x0038,
00811     //
00812     K_9                   = 0x0039,
00813     //
00814     K_colon               = 0x003a,
00815     //
00816     K_semicolon           = 0x003b,
00817     //
00818     K_less                = 0x003c,
00819     //
00820     K_equal               = 0x003d,
00821     //
00822     K_greater             = 0x003e,
00823     //
00824     K_question            = 0x003f,
00825     //
00826     K_at                  = 0x0040,
00827     //
00828     K_A                   = 0x0041,
00829     //
00830     K_B                   = 0x0042,
00831     //
00832     K_C                   = 0x0043,
00833     //
00834     K_D                   = 0x0044,
00835     //
00836     K_E                   = 0x0045,
00837     //
00838     K_F                   = 0x0046,
00839     //
00840     K_G                   = 0x0047,
00841     //
00842     K_H                   = 0x0048,
00843     //
00844     K_I                   = 0x0049,
00845     //
00846     K_J                   = 0x004a,
00847     //
00848     K_K                   = 0x004b,
00849     //
00850     K_L                   = 0x004c,
00851     //
00852     K_M                   = 0x004d,
00853     //
00854     K_N                   = 0x004e,
00855     //
00856     K_O                   = 0x004f,
00857     //
00858     K_P                   = 0x0050,
00859     //
00860     K_Q                   = 0x0051,
00861     //
00862     K_R                   = 0x0052,
00863     //
00864     K_S                   = 0x0053,
00865     //
00866     K_T                   = 0x0054,
00867     //
00868     K_U                   = 0x0055,
00869     //
00870     K_V                   = 0x0056,
00871     //
00872     K_W                   = 0x0057,
00873     //
00874     K_X                   = 0x0058,
00875     //
00876     K_Y                   = 0x0059,
00877     //
00878     K_Z                   = 0x005a,
00879     //
00880     K_bracketleft         = 0x005b,
00881     //
00882     K_backslash           = 0x005c,
00883     //
00884     K_bracketright        = 0x005d,
00885     //
00886     K_asciicircum         = 0x005e,
00887     //
00888     K_underscore          = 0x005f,
00889     //
00890     K_grave               = 0x0060,
00891     //
00892     K_quoteleft           = 0x0060,
00893     //
00894     K_a                   = 0x0061,
00895     //
00896     K_b                   = 0x0062,
00897     //
00898     K_c                   = 0x0063,
00899     //
00900     K_d                   = 0x0064,
00901     //
00902     K_e                   = 0x0065,
00903     //
00904     K_f                   = 0x0066,
00905     //
00906     K_g                   = 0x0067,
00907     //
00908     K_h                   = 0x0068,
00909     //
00910     K_i                   = 0x0069,
00911     //
00912     K_j                   = 0x006a,
00913     //
00914     K_k                   = 0x006b,
00915     //
00916     K_l                   = 0x006c,
00917     //
00918     K_m                   = 0x006d,
00919     //
00920     K_n                   = 0x006e,
00921     //
00922     K_o                   = 0x006f,
00923     //
00924     K_p                   = 0x0070,
00925     //
00926     K_q                   = 0x0071,
00927     //
00928     K_r                   = 0x0072,
00929     //
00930     K_s                   = 0x0073,
00931     //
00932     K_t                   = 0x0074,
00933     //
00934     K_u                   = 0x0075,
00935     //
00936     K_v                   = 0x0076,
00937     //
00938     K_w                   = 0x0077,
00939     //
00940     K_x                   = 0x0078,
00941     //
00942     K_y                   = 0x0079,
00943     //
00944     K_z                   = 0x007a,
00945     //
00946     K_braceleft           = 0x007b,
00947     //
00948     K_bar                 = 0x007c,
00949     //
00950     K_braceright          = 0x007d,
00951     //
00952     K_asciitilde          = 0x007e,
00953     //
00954 
00955     //
00956     K_nobreakspace        = 0x00a0,
00957     //
00958     K_exclamdown          = 0x00a1,
00959     //
00960     K_cent              = 0x00a2,
00961     //
00962     K_sterling            = 0x00a3,
00963     //
00964     K_currency            = 0x00a4,
00965     //
00966     K_yen                 = 0x00a5,
00967     //
00968     K_brokenbar           = 0x00a6,
00969     //
00970     K_section             = 0x00a7,
00971     //
00972     K_diaeresis           = 0x00a8,
00973     //
00974     K_copyright           = 0x00a9,
00975     //
00976     K_ordfeminine         = 0x00aa,
00977     //
00978     K_guillemotleft       = 0x00ab,
00979     //
00980     K_notsign             = 0x00ac,
00981     //
00982     K_hyphen              = 0x00ad,
00983     //
00984     K_registered          = 0x00ae,
00985     //
00986     K_macron              = 0x00af,
00987     //
00988     K_degree              = 0x00b0,
00989     //
00990     K_plusminus           = 0x00b1,
00991     //
00992     K_twosuperior         = 0x00b2,
00993     //
00994     K_threesuperior       = 0x00b3,
00995     //
00996     K_acute               = 0x00b4,
00997     //
00998     K_mu                  = 0x00b5,
00999     //
01000     K_paragraph           = 0x00b6,
01001     //
01002     K_periodcentered      = 0x00b7,
01003     //
01004     K_cedilla             = 0x00b8,
01005     //
01006     K_onesuperior         = 0x00b9,
01007     //
01008     K_masculine           = 0x00ba,
01009     //
01010     K_guillemotright      = 0x00bb,
01011     //
01012     K_onequarter          = 0x00bc,
01013     //
01014     K_onehalf             = 0x00bd,
01015     //
01016     K_threequarters       = 0x00be,
01017     //
01018     K_questiondown        = 0x00bf,
01019     //
01020     K_Agrave              = 0x00c0,
01021     //
01022     K_Aacute              = 0x00c1,
01023     //
01024     K_Acircumflex         = 0x00c2,
01025     //
01026     K_Atilde              = 0x00c3,
01027     //
01028     K_Adiaeresis          = 0x00c4,
01029     //
01030     K_Aring               = 0x00c5,
01031     //
01032     K_AE                  = 0x00c6,
01033     //
01034     K_Ccedilla            = 0x00c7,
01035     //
01036     K_Egrave              = 0x00c8,
01037     //
01038     K_Eacute              = 0x00c9,
01039     //
01040     K_Ecircumflex         = 0x00ca,
01041     //
01042     K_Ediaeresis          = 0x00cb,
01043     //
01044     K_Igrave              = 0x00cc,
01045     //
01046     K_Iacute              = 0x00cd,
01047     //
01048     K_Icircumflex         = 0x00ce,
01049     //
01050     K_Idiaeresis          = 0x00cf,
01051     //
01052     K_ETH                 = 0x00d0,
01053     //
01054     K_Ntilde              = 0x00d1,
01055     //
01056     K_Ograve              = 0x00d2,
01057     //
01058     K_Oacute              = 0x00d3,
01059     //
01060     K_Ocircumflex         = 0x00d4,
01061     //
01062     K_Otilde              = 0x00d5,
01063     //
01064     K_Odiaeresis          = 0x00d6,
01065     //
01066     K_multiply            = 0x00d7,
01067     //
01068     K_Ooblique            = 0x00d8,
01069     //
01070     K_Ugrave              = 0x00d9,
01071     //
01072     K_Uacute              = 0x00da,
01073     //
01074     K_Ucircumflex         = 0x00db,
01075     //
01076     K_Udiaeresis          = 0x00dc,
01077     //
01078     K_Yacute              = 0x00dd,
01079     //
01080     K_THORN               = 0x00de,
01081     //
01082     K_ssharp              = 0x00df,
01083     //
01084     K_agrave              = 0x00e0,
01085     //
01086     K_aacute              = 0x00e1,
01087     //
01088     K_acircumflex         = 0x00e2,
01089     //
01090     K_atilde              = 0x00e3,
01091     //
01092     K_adiaeresis          = 0x00e4,
01093     //
01094     K_aring               = 0x00e5,
01095     //
01096     K_ae                  = 0x00e6,
01097     //
01098     K_ccedilla            = 0x00e7,
01099     //
01100     K_egrave              = 0x00e8,
01101     //
01102     K_eacute              = 0x00e9,
01103     //
01104     K_ecircumflex         = 0x00ea,
01105     //
01106     K_ediaeresis          = 0x00eb,
01107     //
01108     K_igrave              = 0x00ec,
01109     //
01110     K_iacute              = 0x00ed,
01111     //
01112     K_icircumflex         = 0x00ee,
01113     //
01114     K_idiaeresis          = 0x00ef,
01115     //
01116     K_eth                 = 0x00f0,
01117     //
01118     K_ntilde              = 0x00f1,
01119     //
01120     K_ograve              = 0x00f2,
01121     //
01122     K_oacute              = 0x00f3,
01123     //
01124     K_ocircumflex         = 0x00f4,
01125     //
01126     K_otilde              = 0x00f5,
01127     //
01128     K_odiaeresis          = 0x00f6,
01129     //
01130     K_division            = 0x00f7,
01131     //
01132     K_oslash              = 0x00f8,
01133     //
01134     K_ugrave              = 0x00f9,
01135     //
01136     K_uacute              = 0x00fa,
01137     //
01138     K_ucircumflex         = 0x00fb,
01139     //
01140     K_udiaeresis          = 0x00fc,
01141     //
01142     K_yacute              = 0x00fd,
01143     //
01144     K_thorn               = 0x00fe,
01145     //
01146     K_ydiaeresis          = 0x00ff,
01147     //
01148 
01149     //   Latin 2
01150     //   Byte 3 = 1
01151 
01152     K_Aogonek             = 0x01a1,
01153     //
01154     K_breve               = 0x01a2,
01155     //
01156     K_Lstroke             = 0x01a3,
01157     //
01158     K_Lcaron              = 0x01a5,
01159     //
01160     K_Sacute              = 0x01a6,
01161     //
01162     K_Scaron              = 0x01a9,
01163     //
01164     K_Scedilla            = 0x01aa,
01165     //
01166     K_Tcaron              = 0x01ab,
01167     //
01168     K_Zacute              = 0x01ac,
01169     //
01170     K_Zcaron              = 0x01ae,
01171     //
01172     K_Zabovedot           = 0x01af,
01173     //
01174     K_aogonek             = 0x01b1,
01175     //
01176     K_ogonek              = 0x01b2,
01177     //
01178     K_lstroke             = 0x01b3,
01179     //
01180     K_lcaron              = 0x01b5,
01181     //
01182     K_sacute              = 0x01b6,
01183     //
01184     K_caron               = 0x01b7,
01185     //
01186     K_scaron              = 0x01b9,
01187     //
01188     K_scedilla            = 0x01ba,
01189     //
01190     K_tcaron              = 0x01bb,
01191     //
01192     K_zacute              = 0x01bc,
01193     //
01194     K_doubleacute         = 0x01bd,
01195     //
01196     K_zcaron              = 0x01be,
01197     //
01198     K_zabovedot           = 0x01bf,
01199     //
01200     K_Racute              = 0x01c0,
01201     //
01202     K_Abreve              = 0x01c3,
01203     //
01204     K_Lacute              = 0x01c5,
01205     //
01206     K_Cacute              = 0x01c6,
01207     //
01208     K_Ccaron              = 0x01c8,
01209     //
01210     K_Eogonek             = 0x01ca,
01211     //
01212     K_Ecaron              = 0x01cc,
01213     //
01214     K_Dcaron              = 0x01cf,
01215     //
01216     K_Dstroke             = 0x01d0,
01217     //
01218     K_Nacute              = 0x01d1,
01219     //
01220     K_Ncaron              = 0x01d2,
01221     //
01222     K_Odoubleacute        = 0x01d5,
01223     //
01224     K_Rcaron              = 0x01d8,
01225     //
01226     K_Uring               = 0x01d9,
01227     //
01228     K_Udoubleacute        = 0x01db,
01229     //
01230     K_Tcedilla            = 0x01de,
01231     //
01232     K_racute              = 0x01e0,
01233     //
01234     K_abreve              = 0x01e3,
01235     //
01236     K_lacute              = 0x01e5,
01237     //
01238     K_cacute              = 0x01e6,
01239     //
01240     K_ccaron              = 0x01e8,
01241     //
01242     K_eogonek             = 0x01ea,
01243     //
01244     K_ecaron              = 0x01ec,
01245     //
01246     K_dcaron              = 0x01ef,
01247     //
01248     K_dstroke             = 0x01f0,
01249     //
01250     K_nacute              = 0x01f1,
01251     //
01252     K_ncaron              = 0x01f2,
01253     //
01254     K_odoubleacute        = 0x01f5,
01255     //
01256     K_udoubleacute        = 0x01fb,
01257     //
01258     K_rcaron              = 0x01f8,
01259     //
01260     K_uring               = 0x01f9,
01261     //
01262     K_tcedilla            = 0x01fe,
01263     //
01264     K_abovedot            = 0x01ff,
01265     //
01266 
01267     //   Latin 3  Byte 3 = 2
01268 
01269     K_Hstroke             = 0x02a1,
01270     //
01271     K_Hcircumflex         = 0x02a6,
01272     //
01273     K_Iabovedot           = 0x02a9,
01274     //
01275     K_Gbreve              = 0x02ab,
01276     //
01277     K_Jcircumflex         = 0x02ac,
01278     //
01279     K_hstroke             = 0x02b1,
01280     //
01281     K_hcircumflex         = 0x02b6,
01282     //
01283     K_idotless            = 0x02b9,
01284     //
01285     K_gbreve              = 0x02bb,
01286     //
01287     K_jcircumflex         = 0x02bc,
01288     //
01289     K_Cabovedot           = 0x02c5,
01290     //
01291     K_Ccircumflex         = 0x02c6,
01292     //
01293     K_Gabovedot           = 0x02d5,
01294     //
01295     K_Gcircumflex         = 0x02d8,
01296     //
01297     K_Ubreve              = 0x02dd,
01298     //
01299     K_Scircumflex         = 0x02de,
01300     //
01301     K_cabovedot           = 0x02e5,
01302     //
01303     K_ccircumflex         = 0x02e6,
01304     //
01305     K_gabovedot           = 0x02f5,
01306     //
01307     K_gcircumflex         = 0x02f8,
01308     //
01309     K_ubreve              = 0x02fd,
01310     //
01311     K_scircumflex         = 0x02fe,
01312 
01313     //   Latin 4  Byte 3 = 3
01314 
01315     K_kra                 = 0x03a2,
01316     //
01317     K_Rcedilla            = 0x03a3,
01318     //
01319     K_Itilde              = 0x03a5,
01320     //
01321     K_Lcedilla            = 0x03a6,
01322     //
01323     K_Emacron             = 0x03aa,
01324     //
01325     K_Gcedilla            = 0x03ab,
01326     //
01327     K_Tslash              = 0x03ac,
01328     //
01329     K_rcedilla            = 0x03b3,
01330     //
01331     K_itilde              = 0x03b5,
01332     //
01333     K_lcedilla            = 0x03b6,
01334     //
01335     K_emacron             = 0x03ba,
01336     //
01337     K_gcedilla            = 0x03bb,
01338     //
01339     K_tslash              = 0x03bc,
01340     //
01341     K_ENG                 = 0x03bd,
01342     //
01343     K_eng                 = 0x03bf,
01344     //
01345     K_Amacron             = 0x03c0,
01346     //
01347     K_Iogonek             = 0x03c7,
01348     //
01349     K_Eabovedot           = 0x03cc,
01350     //
01351     K_Imacron             = 0x03cf,
01352     //
01353     K_Ncedilla            = 0x03d1,
01354     //
01355     K_Omacron             = 0x03d2,
01356     //
01357     K_Kcedilla            = 0x03d3,
01358     //
01359     K_Uogonek             = 0x03d9,
01360     //
01361     K_Utilde              = 0x03dd,
01362     //
01363     K_Umacron             = 0x03de,
01364     //
01365     K_amacron             = 0x03e0,
01366     //
01367     K_iogonek             = 0x03e7,
01368     //
01369     K_eabovedot           = 0x03ec,
01370     //
01371     K_imacron             = 0x03ef,
01372     //
01373     K_ncedilla            = 0x03f1,
01374     //
01375     K_omacron             = 0x03f2,
01376     //
01377     K_kcedilla            = 0x03f3,
01378     //
01379     K_uogonek             = 0x03f9,
01380     //
01381     K_utilde              = 0x03fd,
01382     //
01383     K_umacron             = 0x03fe,
01384 
01385     // Greek Byte 3 = 7
01386 
01387     K_Greek_ALPHAaccent            = 0x07a1,
01388     //
01389     K_Greek_EPSILONaccent          = 0x07a2,
01390     //
01391     K_Greek_ETAaccent              = 0x07a3,
01392     //
01393     K_Greek_IOTAaccent             = 0x07a4,
01394     //
01395     K_Greek_IOTAdiaeresis          = 0x07a5,
01396     //
01397     K_Greek_OMICRONaccent          = 0x07a7,
01398     //
01399     K_Greek_UPSILONaccent          = 0x07a8,
01400     //
01401     K_Greek_UPSILONdieresis        = 0x07a9,
01402     //
01403     K_Greek_OMEGAaccent            = 0x07ab,
01404     //
01405     K_Greek_accentdieresis         = 0x07ae,
01406     //
01407     K_Greek_horizbar               = 0x07af,
01408     //
01409     K_Greek_alphaaccent            = 0x07b1,
01410     //
01411     K_Greek_epsilonaccent          = 0x07b2,
01412     //
01413     K_Greek_etaaccent              = 0x07b3,
01414     //
01415     K_Greek_iotaaccent             = 0x07b4,
01416     //
01417     K_Greek_iotadieresis           = 0x07b5,
01418     //
01419     K_Greek_iotaaccentdieresis     = 0x07b6,
01420     //
01421     K_Greek_omicronaccent          = 0x07b7,
01422     //
01423     K_Greek_upsilonaccent          = 0x07b8,
01424     //
01425     K_Greek_upsilondieresis        = 0x07b9,
01426     //
01427     K_Greek_upsilonaccentdieresis  = 0x07ba,
01428     //
01429     K_Greek_omegaaccent            = 0x07bb,
01430     //
01431     K_Greek_ALPHA                  = 0x07c1,
01432     //
01433     K_Greek_BETA                   = 0x07c2,
01434     //
01435     K_Greek_GAMMA                  = 0x07c3,
01436     //
01437     K_Greek_DELTA                  = 0x07c4,
01438     //
01439     K_Greek_EPSILON                = 0x07c5,
01440     //
01441     K_Greek_ZETA                   = 0x07c6,
01442     //
01443     K_Greek_ETA                    = 0x07c7,
01444     //
01445     K_Greek_THETA                  = 0x07c8,
01446     //
01447     K_Greek_IOTA                   = 0x07c9,
01448     //
01449     K_Greek_KAPPA                  = 0x07ca,
01450     //
01451     K_Greek_LAMDA                  = 0x07cb,
01452     //
01453     K_Greek_LAMBDA                 = 0x07cb,
01454     //
01455     K_Greek_MU                     = 0x07cc,
01456     //
01457     K_Greek_NU                     = 0x07cd,
01458     //
01459     K_Greek_XI                     = 0x07ce,
01460     //
01461     K_Greek_OMICRON                = 0x07cf,
01462     //
01463     K_Greek_PI                     = 0x07d0,
01464     //
01465     K_Greek_RHO                    = 0x07d1,
01466     //
01467     K_Greek_SIGMA                  = 0x07d2,
01468     //
01469     K_Greek_TAU                    = 0x07d4,
01470     //
01471     K_Greek_UPSILON                = 0x07d5,
01472     //
01473     K_Greek_PHI                    = 0x07d6,
01474     //
01475     K_Greek_CHI                    = 0x07d7,
01476     //
01477     K_Greek_PSI                    = 0x07d8,
01478     //
01479     K_Greek_OMEGA                  = 0x07d9,
01480     //
01481     K_Greek_alpha                  = 0x07e1,
01482     //
01483     K_Greek_beta                   = 0x07e2,
01484     //
01485     K_Greek_gamma                  = 0x07e3,
01486     //
01487     K_Greek_delta                  = 0x07e4,
01488     //
01489     K_Greek_epsilon                = 0x07e5,
01490     //
01491     K_Greek_zeta                   = 0x07e6,
01492     //
01493     K_Greek_eta                    = 0x07e7,
01494     //
01495     K_Greek_theta                  = 0x07e8,
01496     //
01497     K_Greek_iota                   = 0x07e9,
01498     //
01499     K_Greek_kappa                  = 0x07ea,
01500     //
01501     K_Greek_lamda                  = 0x07eb,
01502     //
01503     K_Greek_lambda                 = 0x07eb,
01504     //
01505     K_Greek_mu                     = 0x07ec,
01506     //
01507     K_Greek_nu                     = 0x07ed,
01508     //
01509     K_Greek_xi                     = 0x07ee,
01510     //
01511     K_Greek_omicron                = 0x07ef,
01512     //
01513     K_Greek_pi                     = 0x07f0,
01514     //
01515     K_Greek_rho                    = 0x07f1,
01516     //
01517     K_Greek_sigma                  = 0x07f2,
01518     //
01519     K_Greek_finalsmallsigma        = 0x07f3,
01520     //
01521     K_Greek_tau                    = 0x07f4,
01522     //
01523     K_Greek_upsilon                = 0x07f5,
01524     //
01525     K_Greek_phi                    = 0x07f6,
01526     //
01527     K_Greek_chi                    = 0x07f7,
01528     //
01529     K_Greek_psi                    = 0x07f8,
01530     //
01531     K_Greek_omega                  = 0x07f9,
01532     //  Alias for mode_switch 
01533     K_Greek_switch                 = 0xFF7E
01534   };
01535 
01536   // Determine Display::KeyModifier given Display::KeySym.
01537   static Display::KeyModifier keyModifierFromKeySym(const Display::KeySym 
01538                                                     &keysym);
01539 
01540 };
01541 
01542 // remove this when all IL's are extracted ???
01543 typedef Display IL;
01544 
01545 // <summary>
01546 // Global functions (operators) to print display class enumerations.
01547 // </summary>
01548 
01549 // Each enumeration can be printed to the console to assist
01550 // in debugging.  Printed name is identical to source code
01551 // constant name.
01552 // <group name="DisplayEnums to string functions">
01553 ostream & operator << (ostream & os, Display::ColorModel dmt);
01554 ostream & operator << (ostream & os, Display::Strategy dmt);
01555 ostream & operator << (ostream & os, Display::SpecialMap dmt);
01556 ostream & operator << (ostream & os, Display::LineStyle dmt);
01557 ostream & operator << (ostream & os, Display::CapStyle dmt);
01558 ostream & operator << (ostream & os, Display::JoinStyle dmt);
01559 ostream & operator << (ostream & os, Display::FillStyle dmt);
01560 ostream & operator << (ostream & os, Display::FillRule dmt);
01561 ostream & operator << (ostream & os, Display::ArcMode dmt);
01562 ostream & operator << (ostream & os, Display::TextAlign dmt);
01563 ostream & operator << (ostream & os, Display::DrawMode dmt);
01564 ostream & operator << (ostream & os, Display::DrawBuffer dmt);
01565 ostream & operator << (ostream & os, Display::DrawFunction dmt);
01566 ostream & operator << (ostream & os, Display::RefreshReason drr);
01567 ostream & operator << (ostream & os, Display::Option dopt);
01568 ostream & operator << (ostream & os, Display::ImageCacheStrategy ics);
01569 ostream & operator << (ostream & os, Display::ComplexToRealMethod ctrm);
01570 ostream & operator << (ostream & os, Display::DisplayDataType dtype);
01571 ostream & operator << (ostream & os, Display::KeyModifier dmt);
01572 ostream & operator << (ostream & os, Display::KeySym dmt);
01573 ostream & operator << (ostream & os, Display::Marker mrk);
01574 // </group>
01575 
01576 
01577 } //# NAMESPACE CASA - END
01578 
01579 #endif
01580 
01581 
01582 
01583 
01584 
01585 
01586 
01587