TypesFile.h

Go to the documentation of this file.
00001 /*
00002  * The information in this file is
00003  * Copyright(c) 2007 Ball Aerospace & Technologies Corporation
00004  * and is subject to the terms and conditions of the
00005  * GNU Lesser General Public License Version 2.1
00006  * The license text is available from   
00007  * http://www.gnu.org/licenses/lgpl.html
00008  */
00009 
00010 #ifndef _TYPESFILE
00011 #define _TYPESFILE
00012 
00013 #include "DataVariantValidator.h"
00014 #include "EnumWrapper.h"
00015 
00016 /**
00017  *  Specifies animation behavior after the last frame in the animation controller is set.
00018  *
00019  *  @see     AnimationState, AnimationController
00020  */
00021 enum AnimationCycleEnum
00022 {
00023    PLAY_ONCE,  /**< The animation stops and the current frame is reset to the first frame.\   This is
00024                     the default cycle. */
00025    REPEAT,     /**< The current frame is reset to the first frame and the animation continues. */
00026    BOUNCE      /**< The current animation state changes to the opposite play direction and the animation
00027                     continues. */
00028 };
00029 
00030 /**
00031  * @EnumWrapper ::AnimationCycleEnum.
00032  */
00033 typedef EnumWrapper<AnimationCycleEnum> AnimationCycle;
00034 
00035 /**
00036  *  Identifies the current play state of the animation controller animation.
00037  *
00038  *  @see     AnimationCycle, AnimationController
00039  */
00040 enum AnimationStateEnum
00041 {
00042    STOP,          /**< The animation controller is not playing, and the current frame has been reset to the first
00043                        frame.\   This is the default state. */
00044    PLAY_FORWARD,  /**< The animation controller is playing and changing frames to the next frame in the frame
00045                        vector. */
00046    PLAY_BACKWARD, /**< The animation controller is playing and changing frames to the previous frame in the frame
00047                        vector. */
00048    PAUSE_FORWARD, /**< The animation controller is not playing, the current frame has not been reset to the
00049                        first frame and was running forward when paused. */
00050    PAUSE_BACKWARD /**< The animation controller is not playing, the current frame has not been reset to the
00051                        first frame and was running backward when paused. */
00052 };
00053 
00054 /**
00055  * @EnumWrapper ::AnimationStateEnum.
00056  */
00057 typedef EnumWrapper<AnimationStateEnum> AnimationState;
00058 
00059 /**
00060  *  Identifies the current AOI add mode on the AOI toolbar.
00061  */
00062 enum AoiAddModeEnum
00063 {
00064    APPEND_AOI, /**< New AOI shapes are appended to the current AOI. */
00065    REPLACE_AOI,  /**< The current AOI is erased before adding the new AOI shape. */
00066    NEW_AOI     /**< If the current AOI is empty, the shape is added. If it is
00067                              not empty, a new AOI is created and the shape is added to this. */
00068 };
00069 
00070 /**
00071  * @EnumWrapper ::AoiAddModeEnum.
00072  */
00073 typedef EnumWrapper<AoiAddModeEnum> AoiAddMode;
00074 
00075 /**
00076  *  Specifies the drawing format for annotation arc objects.
00077  */
00078 enum ArcRegionEnum
00079 {
00080    ARC_CENTER,    /**< The arc is filled and border line extends to the ellipical center of the arc. */
00081    ARC_CHORD,     /**< The arc is filled and the border extends from the start point to the stop point,
00082                        and back to the start point without passing through the center. */
00083    ARC_OPEN       /**< The arc is not filled, and the border line is not closed.\   A line is drawn
00084                        from the start point to the stop point. */
00085 };
00086 
00087 /**
00088  * @EnumWrapper ::ArcRegionEnum.
00089  */
00090 typedef EnumWrapper<ArcRegionEnum> ArcRegion;
00091 
00092 /**
00093  *  Available arrow styles
00094  *
00095  *  @see     Arrow
00096  */
00097 enum ArrowStyleEnum { ARROW_NONE, ARROW_SMALL, ARROW_LARGE, ARROW_TRIANGLE_SMALL, ARROW_TRIANGLE_LARGE,
00098                   ARROW_TRIANGLE_SMALL_FILL, ARROW_TRIANGLE_LARGE_FILL, ARROW_DIAMOND, ARROW_DIAMOND_FILL };
00099 
00100 /**
00101  * @EnumWrapper ::ArrowStyleEnum.
00102  */
00103 typedef EnumWrapper<ArrowStyleEnum> ArrowStyle;
00104 
00105 /**
00106  *  Available axes in a plot window.
00107  */
00108 enum AxisPositionEnum { AXIS_LEFT = 0, AXIS_BOTTOM, AXIS_TOP, AXIS_RIGHT };
00109 
00110 /**
00111  * @EnumWrapper ::AxisPositionEnum.
00112  */
00113 typedef EnumWrapper<AxisPositionEnum> AxisPosition;
00114 
00115 /**
00116  * Specifies the pixel origin (0, 0) location for the data cube.
00117  */
00118 enum DataOriginEnum { LOWER_LEFT, UPPER_LEFT };
00119 
00120 /**
00121  * @EnumWrapper ::DataOriginEnum.
00122  */
00123 typedef EnumWrapper<DataOriginEnum> DataOrigin;
00124 
00125 /**
00126  *  Specifies how a raster layer is drawn.
00127  */
00128 enum DisplayModeEnum
00129 {
00130    GRAYSCALE_MODE,   /**< A single data value is displayed through each of the red, green, and blue
00131                           color guns, thereby producing a gray appearance. */
00132    RGB_MODE          /**< A single data value is displayed through only one of the color guns.\   Three
00133                           data values can then be displayed simultaneously through each of the color
00134                           guns, creating a color composite. */
00135 };
00136 
00137 /**
00138  * @EnumWrapper ::DisplayModeEnum.
00139  */
00140 typedef EnumWrapper<DisplayModeEnum> DisplayMode;
00141 
00142 /**
00143  *  Specifies the distance units
00144  */
00145 enum DistanceUnitsEnum
00146 {
00147    NO_DISTANCE_UNIT,
00148    KILOMETER,
00149    MILE,
00150    NAUTICAL_MILE,
00151    METER,
00152    YARD,
00153    FOOT
00154 };
00155 
00156 /**
00157  * @EnumWrapper ::DistanceUnitsEnum.
00158  */
00159 typedef EnumWrapper<DistanceUnitsEnum> DistanceUnits;
00160 
00161 /**
00162  *  Specifies the display type for latitude/longitude values.
00163  */
00164 enum DmsFormatTypeEnum
00165 {
00166    DMS_FULL,            /**< Decimal seconds (DD° MM' SS.ss") */
00167    DMS_FULL_DECIMAL,    /**< Decimal degrees (DD.ddd) */
00168    DMS_MINUTES_DECIMAL  /**< Decimal minutes (DD° MM.mm') */
00169 };
00170 
00171 /**
00172  * @EnumWrapper ::DmsFormatTypeEnum.
00173  */
00174 typedef EnumWrapper<DmsFormatTypeEnum> DmsFormatType;
00175 
00176 /**
00177  *  The location of a DockWindow.
00178  */
00179 enum DockWindowAreaTypeEnum
00180 {
00181    DOCK_FLOATING,    /**< The window is not attached to the main application
00182                           window and can be positioned anywhere on the desktop. */
00183    DOCK_LEFT,        /**< The window is attached to the left side of the main
00184                           application window. */
00185    DOCK_RIGHT,       /**< The window is attached to the right side of the main
00186                           application window. */
00187    DOCK_TOP,         /**< The window is attached to the top of the main
00188                           application window. */
00189    DOCK_BOTTOM       /**< The window is attached to the bottom of the main
00190                           application window. */
00191 };
00192 
00193 /**
00194  * @EnumWrapper ::DockWindowAreaTypeEnum.
00195  */
00196 typedef EnumWrapper<DockWindowAreaTypeEnum> DockWindowAreaType;
00197 
00198 /**
00199  *  Data types for the data in a data set.
00200  *
00201  *  The EncodingType enumeration indicates the number of bytes in a single data
00202  *  value in addition to its positive/negative range.  Each enumerated value
00203  *  maps to a standard C++ data type.
00204  */
00205 enum EncodingTypeEnum
00206 {
00207    INT1SBYTE = 0,  /**< char */
00208    INT1UBYTE = 1,      /**< unsigned char */
00209    INT2SBYTES = 2,     /**< short */
00210    INT2UBYTES = 3,     /**< unsigned short */
00211    INT4SCOMPLEX = 4,   /**< complex short */
00212    INT4SBYTES = 5,     /**< int */
00213    INT4UBYTES = 6,     /**< unsigned int */
00214    FLT4BYTES = 7,      /**< float */
00215    FLT8COMPLEX = 8,    /**< complex float */
00216    FLT8BYTES = 9       /**< double */
00217 };
00218 
00219 /**
00220  * @EnumWrapper ::EncodingTypeEnum.
00221  */
00222 typedef EnumWrapper<EncodingTypeEnum> EncodingType;
00223 
00224 /**
00225  *  Specifies byte order for multi-byte data types.
00226  */
00227 enum EndianTypeEnum
00228 {
00229    BIG_ENDIAN_ORDER,       /**< The big endian type has the most significant byte first. */
00230    LITTLE_ENDIAN_ORDER     /**< The little endian type has the least significant byte first. */
00231 };
00232 
00233 /**
00234  * @EnumWrapper ::EndianTypeEnum.
00235  */
00236 typedef EnumWrapper<EndianTypeEnum> EndianType;
00237 
00238 /**
00239  *  Shading format for annotation objects.
00240  */
00241 enum FillStyleEnum { SOLID_FILL, HATCH, EMPTY_FILL };
00242 
00243 /**
00244  * @EnumWrapper ::FillStyleEnum.
00245  */
00246 typedef EnumWrapper<FillStyleEnum> FillStyle;
00247 
00248 /**
00249  *  Specifies the value of an animation frame that an animation controller cycles through.
00250  *
00251  *  @see     AnimationFrame, AnimationController, Animation
00252  */
00253 enum FrameTypeEnum
00254 {
00255    FRAME_ID,            /**< The animation is based on a frame number.\   Frame numbers typically range from
00256                              zero to one less than the number of total frames.\   Multiple frames in a single
00257                              animation should not contain the same frame number. */
00258    FRAME_TIME,          /**< The animation is based on a date/time value.\   See the AnimationFrame documentation
00259                              for more details on the time value. */
00260    FRAME_ELAPSED_TIME   /**< The animation is based on elapsed seconds after the start of the animation.\   See
00261                              the AnimationFrame documentation for more details on the elapsed time value. */
00262 };
00263 
00264 /**
00265  * @EnumWrapper ::FrameTypeEnum.
00266  */
00267 typedef EnumWrapper<FrameTypeEnum> FrameType;
00268 
00269 /**
00270  *  Available symbols for ground control points.
00271  *
00272  *  A ground control point is marked on the display with either an X or a + enclosed
00273  *  by a circle.  Next to the marker is the text name of the GCP. The ground control 
00274  *  point can be hidden by selecting no draw for the symbol.
00275  */
00276 enum GcpSymbolEnum { GCP_X, GCP_PLUS, GCP_NODRAW };
00277 
00278 /**
00279  * @EnumWrapper ::GcpSymbolEnum.
00280  */
00281 typedef EnumWrapper<GcpSymbolEnum> GcpSymbol;
00282 
00283 /**
00284  *  Type of geocoordinate.
00285  *
00286  *  Georeferencing can be performed in Latitude/Longitude or UTM coordinates.
00287  */
00288 enum GeocoordTypeEnum { GEOCOORD_LATLON, GEOCOORD_UTM, GEOCOORD_MGRS };
00289 
00290 /**
00291  * @EnumWrapper ::GeocoordTypeEnum.
00292  */
00293 typedef EnumWrapper<GeocoordTypeEnum> GeocoordType;
00294 
00295 /**
00296  *  Alignment format when aligning annotation objects.
00297  */
00298 enum GraphicAlignmentEnum { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, ALIGN_TOP, ALIGN_MIDDLE, ALIGN_BOTTOM };
00299 
00300 /**
00301  * @EnumWrapper ::GraphicAlignmentEnum.
00302  */
00303 typedef EnumWrapper<GraphicAlignmentEnum> GraphicAlignment;
00304 
00305 /**
00306  *  Direction in which to evenly distribute selected annotation objects.
00307  */
00308 enum GraphicDistributionEnum { DISTRIBUTE_HORIZONTALLY, DISTRIBUTE_VERTICALLY };
00309 
00310 /**
00311  * @EnumWrapper ::GraphicDistributionEnum.
00312  */
00313 typedef EnumWrapper<GraphicDistributionEnum> GraphicDistribution;
00314 
00315 /**
00316  *  Specifies the mode types of annotation objects available.
00317  */
00318 enum GraphicModeTypeEnum { MOVE, ROTATE };
00319 
00320 /**
00321  * @EnumWrapper ::GraphicModeTypeEnum.
00322  */
00323 typedef EnumWrapper<GraphicModeTypeEnum> GraphicModeType;
00324 
00325 /**
00326  *  Specifies the types of annotation objects available.
00327  *
00328  *  NOTE: enum value TRAIL_OBJECT should not be used by plug-in code. It is for internal Core
00329  *  use only by the OverviewWindow.
00330  */
00331 enum GraphicObjectTypeEnum { LINE_OBJECT, TEXT_OBJECT, FRAME_LABEL_OBJECT, ARROW_OBJECT,
00332    RECTANGLE_OBJECT, TRIANGLE_OBJECT, ELLIPSE_OBJECT, ROUNDEDRECTANGLE_OBJECT,
00333    ARC_OBJECT, MOVE_OBJECT, ROTATE_OBJECT, SCALEBAR_OBJECT, GROUP_OBJECT,
00334    POLYLINE_OBJECT, POLYGON_OBJECT, CGM_OBJECT, RAW_IMAGE_OBJECT, FILE_IMAGE_OBJECT,
00335    WIDGET_IMAGE_OBJECT, LATLONINSERT_OBJECT, NORTHARROW_OBJECT, EASTARROW_OBJECT,
00336    VIEW_OBJECT, MULTIPOINT_OBJECT, MEASUREMENT_OBJECT, BITMASK_OBJECT, HLINE_OBJECT,
00337    VLINE_OBJECT, ROW_OBJECT, COLUMN_OBJECT, TRAIL_OBJECT };
00338 
00339 /**
00340  * @EnumWrapper ::GraphicObjectTypeEnum.
00341  */
00342 typedef EnumWrapper<GraphicObjectTypeEnum> GraphicObjectType;
00343 
00344 /**
00345  *  Specifies how the inset zoom percentage is calculated based on the current view zoom percentage.
00346  */
00347 enum InsetZoomModeEnum { ABSOLUTE_MODE, RELATIVE_MODE };
00348 
00349 /**
00350  * @EnumWrapper ::InsetZoomModeEnum.
00351  */
00352 typedef EnumWrapper<InsetZoomModeEnum> InsetZoomMode;
00353 
00354 /**
00355  *  Specifies the data storage format.
00356  *
00357  *  The interleave format indicates how data values are stored in a file,
00358  *  as imported, or how to access the data values.
00359  */
00360 enum InterleaveFormatTypeEnum
00361 {
00362    BSQ,     /**< <b>Band Sequential</b> - The pixel values for an entire band are stored before the
00363                  pixel values for another band.\   This format also supports band values stored in
00364                  multiple files. */
00365    BIP,     /**< <b>Band Interleave by Pixel</b> - A single pixel value in one band is stored before
00366                  the value of the same pixel on another band is stored. */
00367    BIL      /**< <b>Band Interleave by Line</b> - A single row of pixel values in one band is stored
00368                  before the values of the same row on another band is stored. */
00369 };
00370 
00371 /**
00372  * @EnumWrapper ::InterleaveFormatTypeEnum.
00373  */
00374 typedef EnumWrapper<InterleaveFormatTypeEnum> InterleaveFormatType;
00375 
00376 /**
00377  *  The line style for a latitude/longitude layer.
00378  */
00379 enum LatLonStyleEnum { LATLONSTYLE_SOLID, LATLONSTYLE_CROSS, LATLONSTYLE_NONE, LATLONSTYLE_DASHED };
00380 
00381 /**
00382  * @EnumWrapper ::LatLonStyleEnum.
00383  */
00384 typedef EnumWrapper<LatLonStyleEnum> LatLonStyle;
00385 
00386 /**
00387  *  Supported layer types in the display.
00388  *
00389  *  The LayerType enumeration values list the layers available for display in a
00390  *  SpatialDataView.
00391  */
00392 enum LayerTypeEnum { ANNOTATION, AOI_LAYER, CONTOUR_MAP, GCP_LAYER, GRAPHIC_LAYER, LAT_LONG,
00393                  RASTER, PSEUDOCOLOR, THRESHOLD, TIEPOINT_LAYER, CUSTOM_LAYER };
00394 
00395 /**
00396  * @EnumWrapper ::LayerTypeEnum.
00397  */
00398 typedef EnumWrapper<LayerTypeEnum> LayerType;
00399 
00400 /**
00401  *  Line format for annotation objects.
00402  */
00403 enum LineStyleEnum { SOLID_LINE, DASHED, DOT, DASH_DOT, DASH_DOT_DOT };
00404 
00405 /**
00406  * @EnumWrapper ::LineStyleEnum.
00407  */
00408 typedef EnumWrapper<LineStyleEnum> LineStyle;
00409 
00410 /**
00411  * View link type.
00412  */
00413 enum LinkTypeEnum
00414 {
00415    NO_LINK,                /**< There is no link for this View. */
00416    AUTOMATIC_LINK,         /**< Linked views use GEOCOORD_LINK when georeferencing is available,
00417                                 and MIRRORED_LINK when it is not. */
00418    MIRRORED_LINK,          /**< Linked views mirror actions.\   Panning, zooming, and rotating actions
00419                                 are performed on each linked view. */
00420    GEOCOORD_LINK           /**< Linked views show the same geographic zoom and orientation. */
00421 };
00422 
00423 /**
00424  * @EnumWrapper ::LinkTypeEnum.
00425  */
00426 typedef EnumWrapper<LinkTypeEnum> LinkType;
00427 
00428 /**
00429  *  Identifies the reporting levels used by the message log manager.
00430  */
00431 enum MessageReportingLevelEnum { ML_SILENT, ML_NORMAL, ML_VERBOSE };
00432 
00433 /**
00434  * @EnumWrapper ::MessageReportingLevelEnum.
00435  */
00436 typedef EnumWrapper<MessageReportingLevelEnum> MessageReportingLevel;
00437 
00438 /**
00439  *  Identifies the type of message used in the suppressible message dialog.
00440  *
00441  *  @see    SuppressibleMsgDlg
00442  */
00443 enum MessageTypeEnum 
00444 {   
00445    MESSAGE_INFO,           /**< The message will tell the user some information. */
00446    MESSAGE_WARNING,        /**< The message will give the user a warning. */
00447    MESSAGE_ERROR           /**< The message will show the user an error. */
00448 };
00449 
00450 /**
00451  * @EnumWrapper ::MessageTypeEnum.
00452  */
00453 typedef EnumWrapper<MessageTypeEnum> MessageType;
00454 
00455 /**
00456  *  Pixel selection mode.
00457  *
00458  *  Used in combination with the ToolType pixel selection tools, the pixel mode defines
00459  *  the action when the user clicks a pixel in the scene.
00460  *
00461  *  @see     ToolType
00462  */
00463 enum ModeTypeEnum
00464 {
00465    DRAW,       /**< The selected pixel is always marked on the display. */
00466    ERASE,      /**< %Any marker on the selected pixel is always unmarked from the display. */
00467    TOGGLE,     /**< If the selected pixel is unmarked, it is marked.\   If the selected pixel
00468                     is marked, it is unmarked. */
00469    AOI_MOVE    /**< Move (and clone) vector AOI's. */
00470 };
00471 
00472 /**
00473  * @EnumWrapper ::ModeTypeEnum.
00474  */
00475 typedef EnumWrapper<ModeTypeEnum> ModeType;
00476 
00477 /**
00478  *  Specifies the direction in which an object is positioned.
00479  */
00480 enum OrientationTypeEnum { HORIZONTAL, VERTICAL };
00481 
00482 /**
00483  * @EnumWrapper ::OrientationTypeEnum.
00484  */
00485 typedef EnumWrapper<OrientationTypeEnum> OrientationType;
00486 
00487 /**
00488  *  Refresh rate when panning the scene in a View.
00489  */
00490 enum PanModeTypeEnum
00491 {
00492    PAN_DELAY,     /**< The scene is not refreshed until the user releases the mouse button. */
00493    PAN_INSTANT    /**< The scene refreshed constantly while the user moves the mouse over the window. */
00494 };
00495 
00496 /**
00497  * @EnumWrapper ::PanModeTypeEnum.
00498  */
00499 typedef EnumWrapper<PanModeTypeEnum> PanModeType;
00500 
00501 /**
00502  *  Identifies a region of data values references against one or two threshold values.
00503  */
00504 enum PassAreaEnum { LOWER, UPPER, MIDDLE, OUTSIDE };
00505 
00506 /**
00507  * @EnumWrapper ::PassAreaEnum.
00508  */
00509 typedef EnumWrapper<PassAreaEnum> PassArea;
00510 
00511 /**
00512  *  Available plot widgets in which to display plot data.
00513  *
00514  *  @see     PlotWidget
00515  */
00516 enum PlotTypeEnum { CARTESIAN_PLOT, HISTOGRAM_PLOT, SIGNATURE_PLOT, POLAR_PLOT };
00517 
00518 /**
00519  * @EnumWrapper ::PlotTypeEnum.
00520  */
00521 typedef EnumWrapper<PlotTypeEnum> PlotType;
00522 
00523 /**
00524  *  Available objects to display in a plot view.
00525  *
00526  *  @see     PlotView
00527  */
00528 enum PlotObjectTypeEnum { CURVE = 0, CURVE_COLLECTION, HISTOGRAM, LOCATOR, REGION, POINT_OBJECT, POINT_SET, ARROW,
00529                       AXIS, CARTESIAN_GRIDLINES, TEXT_OBJECT_TYPE, PLOT_GROUP, POLAR_GRIDLINES,
00530                       POLYGON_OBJECT_TYPE };
00531 
00532 /**
00533  * @EnumWrapper ::PlotObjectTypeEnum.
00534  */
00535 typedef EnumWrapper<PlotObjectTypeEnum> PlotObjectType;
00536 
00537 /**
00538  * How selection should operate in a plot.
00539  */
00540 enum PlotSelectionModeTypeEnum
00541 {
00542    NORMAL_SELECTION, /**< Ordinary selection, where clicking on a plot object
00543                       *   selects the entire object. */
00544    DEEP_SELECTION    /**< Deep selection, where clicking on a compound plot 
00545                       *   object selects the portion clicked on.  DEEP_SELECTION
00546                       *   currently only effects PointSet. */
00547 };
00548 
00549 /**
00550  * @EnumWrapper ::PlotSelectionModeTypeEnum.
00551  */
00552 typedef EnumWrapper<PlotSelectionModeTypeEnum> PlotSelectionModeType;
00553 
00554 /**
00555  *  Available callbacks for plug-ins.
00556  */
00557 enum PlugInCallbackTypeEnum { BACKGROUND_COMPLETE };
00558 
00559 /**
00560  * @EnumWrapper ::PlugInCallbackTypeEnum.
00561  */
00562 typedef EnumWrapper<PlugInCallbackTypeEnum> PlugInCallbackType;
00563 
00564 /**
00565  *  How symbol selection should appear in a plot.
00566  */
00567 enum PointSelectionDisplayTypeEnum { 
00568    BOX_SELECTION,      /**< The point selection draws a box around the selected points. */
00569    INVERT_SELECTION,   /**< The point selection draws an inverted color symbol behind
00570                         *   the selected points. */
00571    SYMBOL_SELECTION    /**< The point selection draws the selected points by 
00572                         *   increasing the symbol size. */
00573 };
00574 
00575 /**
00576  * @EnumWrapper ::PointSelectionDisplayTypeEnum.
00577  */
00578 typedef EnumWrapper<PointSelectionDisplayTypeEnum> PointSelectionDisplayType;
00579 
00580 /**
00581  *  Available locations for objects in a plot widget.
00582  *
00583  *  @see     PlotWidget
00584  */
00585 enum PositionTypeEnum { TOP_LEFT_BOTTOM_LEFT, TOP_LEFT_BOTTOM_RIGHT, TOP_RIGHT_BOTTOM_LEFT,
00586                     TOP_RIGHT_BOTTOM_RIGHT, CENTER };
00587 
00588 /**
00589  * @EnumWrapper ::PositionTypeEnum.
00590  */
00591 typedef EnumWrapper<PositionTypeEnum> PositionType;
00592 
00593 /**
00594  *  Specifies how the cube data should be handled on load and how it should
00595  *  be accessed after loading.
00596  *
00597  *  While the ProcessingLocation influences whether an algorithm can write to
00598  *  the data, various other factors can effect writability as well.  The correct
00599  *  way to determine whether a RasterElement can be written to is to call 
00600  *  RasterElement::getDataAccessor() with a writable request.  If the DataAccessor
00601  *  returned is valid, the data may be written to.
00602  *
00603  *  @see     InterleaveFormatType
00604  */
00605 enum ProcessingLocationEnum
00606 {
00607    IN_MEMORY = 0,       /**< The cube data is loaded entirely into memory, and the data can be accessed
00608                              directly. */
00609    ON_DISK_READ_ONLY,   /**< The cube data is not loaded into memory.\   It is accessed by parsing the
00610                              original data from the disk.\   This can decrease processing performance,
00611                              but has the advantage of not using memory or additional disk space.\   The
00612                              cube data however is accessed in a read-only fashion.  Please see above for
00613                              information on how to determine if the data may be overwritten. */
00614    ON_DISK              /**< The cube data is not loaded into memory.\   It is accessed by parsing the
00615                              original data from the disk.\   This can decrease processing performance,
00616                              but has the advantage of not using memory or additional disk space.\   The
00617                              cube data however is accessed in a read/write fashion, so algorithms can
00618                              change the raw cube data.\   Please be aware that even though the cube is
00619                              opened in read/write fashion from disk, the original data file on the disk
00620                              will in no way be changed.\   Only the in memory representation of the data
00621                              being accessed from disk will be changed, and those changes must be kept the
00622                              entire time the cube is loaded into the application.\   It is up to the RasterPager
00623                              implementations to uphold this requirement.  Please see above for
00624                              information on how to determine if the data may be overwritten. */
00625 };
00626 
00627 /**
00628  * @EnumWrapper ::ProcessingLocationEnum.
00629  */
00630 typedef EnumWrapper<ProcessingLocationEnum> ProcessingLocation;
00631 
00632 /** 
00633  *  Possible raster layer display colors.
00634  *
00635  *  This type specifies an individual display color channel when displaying a raster layer.
00636  */
00637 enum RasterChannelTypeEnum { GRAY, RED, GREEN, BLUE };
00638 
00639 /**
00640  * @EnumWrapper ::RasterChannelTypeEnum.
00641  */
00642 typedef EnumWrapper<RasterChannelTypeEnum> RasterChannelType;
00643 
00644 /**
00645  *  Specifies the units of the upper and lower values for a region used for threshold layers
00646  *  and histogram stretch.
00647  */
00648 enum RegionUnitsEnum { RAW_VALUE, PERCENTAGE, PERCENTILE, STD_DEV };
00649 
00650 /**
00651  * @EnumWrapper ::RegionUnitsEnum.
00652  */
00653 typedef EnumWrapper<RegionUnitsEnum> RegionUnits;
00654 
00655 /**
00656  *  Application release configuration mode.
00657  */
00658 enum ReleaseTypeEnum
00659 {
00660    RT_NORMAL,     /**< The application is running in Normal mode. */
00661    RT_DEMO,       /**< The application is running in Demo mode (Not for Production Use). */
00662    RT_TRAINING,   /**< The application is running in Training mode (Not for Production Use). */
00663    RT_TEST,       /**< The application is running in Test mode (Not for Production Use). */
00664    RT_PROTO,      /**< The application is running in Prototype mode. */
00665    RT_RD          /**< The application is running in R&D mode. */
00666 };
00667 
00668 /**
00669  * @EnumWrapper ::ReleaseTypeEnum.
00670  */
00671 typedef EnumWrapper<ReleaseTypeEnum> ReleaseType;
00672 
00673 /**
00674  *  Specifies under what circumstances a session should be saved.
00675  */
00676 enum SessionSaveTypeEnum
00677 {
00678    SESSION_AUTO_SAVE = 0,  /**< The session is auto saved on a periodic basis. */
00679    SESSION_DONT_AUTO_SAVE, /**< The session is only saved when the user specifies that it should be. */
00680    SESSION_QUERY_SAVE      /**< The user is queried re: saving whenever a session is closed. */
00681 };
00682 
00683 /**
00684  * @EnumWrapper ::SessionSaveTypeEnum.
00685  */
00686 typedef EnumWrapper<SessionSaveTypeEnum> SessionSaveType;
00687 
00688 /**
00689  *  Specifies the type of stretch for raster layer display.
00690  */
00691 enum StretchTypeEnum { LINEAR, LOGARITHMIC, EXPONENTIAL, EQUALIZATION };
00692 
00693 /**
00694  * @EnumWrapper ::StretchTypeEnum.
00695  */
00696 typedef EnumWrapper<StretchTypeEnum> StretchType;
00697 
00698 /**
00699  *  Pixel marker symbol.
00700  *
00701  *  Selected pixels are displayed on the scene in various symbols so that the user can
00702  *  identify multiple selections on a single pixel.
00703  *
00704  *  NOTE: these are oredered so there is a relationship between boxed
00705  *        and unboxed such that X = BOXED_X - BOXED
00706  */
00707 enum SymbolTypeEnum { SOLID, X, CROSS_HAIR, ASTERISK, HORIZONTAL_LINE,
00708                   VERTICAL_LINE, FORWARD_SLASH, BACK_SLASH,
00709                   BOX, BOXED_X, BOXED_CROSS_HAIR, BOXED_ASTERISK, BOXED_HORIZONTAL_LINE,
00710                   BOXED_VERTICAL_LINE, BOXED_FORWARD_SLASH, BOXED_BACK_SLASH};
00711 
00712 /**
00713  * @EnumWrapper ::SymbolTypeEnum.
00714  */
00715 typedef EnumWrapper<SymbolTypeEnum> SymbolType;
00716 
00717 /**
00718  *  Available scale types for a plot.
00719  *
00720  *  A plot can either display in a linear or log scale.
00721  */
00722 enum ScaleTypeEnum
00723 {
00724    SCALE_LINEAR = 0,
00725    SCALE_LOG = 1
00726 };
00727 
00728 /**
00729  * @EnumWrapper ::ScaleTypeEnum.
00730  */
00731 typedef EnumWrapper<ScaleTypeEnum> ScaleType;
00732 
00733 /**
00734  * Specifies how textures should be drawn when a single texture
00735  * element is larger than a single screen pixel.
00736  */
00737 enum TextureModeEnum {
00738    TEXTURE_LINEAR, /**< An interpolation calculation is performed,
00739                         please see the documentation for GL_LINEAR for
00740                         more details. */
00741    TEXTURE_NEAREST_NEIGHBOR /**< A nearest neighbor calcution is peformed,
00742                                  please see the documentation of GL_NEAREST
00743                                  for more details. */
00744 };
00745 
00746 /**
00747 * @EnumWrapper ::TextureModeEnum.
00748 */
00749 typedef EnumWrapper<TextureModeEnum> TextureMode;
00750 
00751 /**
00752 *  Specifies the type of tiling to use for workspace windows.
00753 */
00754 enum TilingTypeEnum 
00755 { 
00756    TILE_GRID,        /**< arrange windows to fill the view in a two row grid.\   For an odd number of windows,
00757                           the odd window will span both rows in its column. */
00758    TILE_HORIZONTAL,  /**< arrange windows in one row with a full view height column for each window */
00759    TILE_VERTICAL     /**< arrange windows in one column with a full view width row for each window */
00760 };
00761 
00762 /**
00763  * @EnumWrapper ::TilingTypeEnum.
00764  */
00765 typedef EnumWrapper<TilingTypeEnum> TilingType;
00766 
00767 /**
00768  *  %System of units to use.
00769  *
00770  *  The UnitSystem enumeration indicates the system of units to use when displaying values
00771  *  to the user.
00772  *
00773  *  @see     Units
00774  */
00775 enum UnitSystemEnum
00776 {
00777    UNIT_KM = 100, /**< Use meters or kilometers as appropriate */
00778    UNIT_KFT, /**< Use feet or kilofeet (1000 feet) as appropriate */
00779    UNIT_MI /**< Use feet or miles as appropriate */
00780 };
00781 
00782 /**
00783  * @EnumWrapper ::UnitTypeEnum.
00784  */
00785 typedef EnumWrapper<UnitSystemEnum> UnitSystem;
00786 
00787 /**
00788  *  %Units of the values in a data set.
00789  *
00790  *  The UnitType enumeration indicates the format of values ins a data set.
00791  *  In addition to the available formats, custom types can be further
00792  *  distinguished by a units name.
00793  *
00794  *  @see     Units
00795  */
00796 enum UnitTypeEnum { RADIANCE, REFLECTANCE, EMISSIVITY, DIGITAL_NO, CUSTOM_UNIT, REFLECTANCE_FACTOR,
00797                 TRANSMITTANCE, ABSORPTANCE, ABSORBANCE, DISTANCE };
00798 
00799 /**
00800  * @EnumWrapper ::UnitTypeEnum.
00801  */
00802 typedef EnumWrapper<UnitTypeEnum> UnitType;
00803 
00804 /**
00805  *  Result of plug-in validate() calls.
00806  */
00807 enum ValidationResultTypeEnum
00808 {
00809    VALIDATE_SUCCESS,       /**< Validation was successfull */
00810    VALIDATE_FAILURE,       /**< Validation was a complete failure. */
00811    VALIDATE_INFO,          /**< Information needs to be presented to the user. */
00812    VALIDATE_INPUT_REQUIRED /**< Success is possible with additional user input. */
00813 };
00814 
00815 /**
00816  * @EnumWrapper ::ValidationResultTypeEnum.
00817  */
00818 typedef EnumWrapper<ValidationResultTypeEnum> ValidationResultType;
00819 
00820 /**
00821  *  Available view types.
00822  */
00823 enum ViewTypeEnum
00824 {
00825    SPATIAL_DATA_VIEW,   /**< Displays one or more layers from a LayerList. */
00826    PRODUCT_VIEW,        /**< Provides a paper layout where annotation objects can be added to construct
00827                              a finished product. */
00828    PLOT_VIEW            /**< Displays a plot with two axes and an optional legend. */
00829 };
00830 
00831 /**
00832  * @EnumWrapper ::ViewTypeEnum.
00833  */
00834 typedef EnumWrapper<ViewTypeEnum> ViewType;
00835 
00836 /**
00837  *  %Units for spectral data wavelengths.
00838  *
00839  *  Wavelength values are defined and stored as microns in special metadata
00840  *  attributes in a DynamicObject.  However, they can be displayed to the user
00841  *  in several different units.
00842  *
00843  *  @see        \ref specialmetadata
00844  */
00845 enum WavelengthUnitsTypeEnum
00846 {
00847    MICRONS,
00848    NANOMETERS,
00849    INVERSE_CENTIMETERS
00850 };
00851 
00852 /**
00853  * @EnumWrapper ::WavelengthUnitsTypeEnum.
00854  */
00855 typedef EnumWrapper<WavelengthUnitsTypeEnum> WavelengthUnitsType;
00856 
00857 /**
00858  *  Specifies the default size for a WorkspaceWindow when it is displayed.
00859  */
00860 enum WindowSizeTypeEnum
00861 {
00862    FIXED_SIZE,             /**< The window is displayed at a specified size in
00863                                 number of screen pixels. */
00864    MAXIMIZED,              /**< The window is maximized to fill the entire
00865                                 workspace area in the main application window. */
00866    WORKSPACE_PERCENTAGE    /**< The window size is calculated as a percentage
00867                                 of the total current workspace area in the main
00868                                 application window. */
00869 };
00870 
00871 /**
00872  * @EnumWrapper ::WindowSizeTypeEnum.
00873  */
00874 typedef EnumWrapper<WindowSizeTypeEnum> WindowSizeType;
00875 
00876 /**
00877  *  Available window types.
00878  */
00879 enum WindowTypeEnum
00880 {
00881    WORKSPACE_WINDOW,       /**< A window that displays one or more views and can be minimized, maximized,
00882                                 or float within the main application workspace area. */
00883    SPATIAL_DATA_WINDOW,    /**< A workspace window that contains an analysis view. */
00884    PRODUCT_WINDOW,         /**< A workspace window that contains a product view. */
00885    DOCK_WINDOW,            /**< A window that can contain a QWidget that can float or dock along the edges
00886                                 of the main application window. */
00887    TOOLBAR                 /**< A dock window containing buttons and other widgets to perform certain actions. */
00888 };
00889 
00890 /**
00891  * @EnumWrapper ::WindowTypeEnum.
00892  */
00893 typedef EnumWrapper<WindowTypeEnum> WindowType;
00894 
00895 /**
00896  * \cond INTERNAL
00897  * These template specializations are required to allow these types to be put into a DataVariant.
00898  */
00899 template <> class VariantTypeValidator<AnimationCycle> {};
00900 template <> class VariantTypeValidator<AnimationState> {};
00901 template <> class VariantTypeValidator<ArcRegion> {};
00902 template <> class VariantTypeValidator<DataOrigin> {};
00903 template <> class VariantTypeValidator<DisplayMode> {};
00904 template <> class VariantTypeValidator<DistanceUnits> {};
00905 template <> class VariantTypeValidator<DmsFormatType> {};
00906 template <> class VariantTypeValidator<EncodingType> {};
00907 template <> class VariantTypeValidator<EndianType> {};
00908 template <> class VariantTypeValidator<FillStyle> {};
00909 template <> class VariantTypeValidator<GcpSymbol> {};
00910 template <> class VariantTypeValidator<GeocoordType> {};
00911 template <> class VariantTypeValidator<GraphicObjectType> {};
00912 template <> class VariantTypeValidator<InsetZoomMode> {};
00913 template <> class VariantTypeValidator<InterleaveFormatType> {};
00914 template <> class VariantTypeValidator<LatLonStyle> {};
00915 template <> class VariantTypeValidator<LayerType> {};
00916 template <> class VariantTypeValidator<LineStyle> {};
00917 template <> class VariantTypeValidator<LinkType> {};
00918 template <> class VariantTypeValidator<PassArea> {};
00919 template <> class VariantTypeValidator<PlotObjectType> {};
00920 template <> class VariantTypeValidator<PositionType> {};
00921 template <> class VariantTypeValidator<ProcessingLocation> {};
00922 template <> class VariantTypeValidator<SessionSaveType> {};
00923 template <> class VariantTypeValidator<RasterChannelType> {};
00924 template <> class VariantTypeValidator<RegionUnits> {};
00925 template <> class VariantTypeValidator<ReleaseType> {};
00926 template <> class VariantTypeValidator<StretchType> {};
00927 template <> class VariantTypeValidator<SymbolType> {};
00928 template <> class VariantTypeValidator<UnitSystem> {};
00929 template <> class VariantTypeValidator<UnitType> {};
00930 template <> class VariantTypeValidator<WavelengthUnitsType> {};
00931 template <> class VariantTypeValidator<WindowSizeType> {};
00932 template <> class VariantTypeValidator<WindowType> {};
00933 /// \endcond
00934 
00935 #endif

Software Development Kit - Opticks 4.9.0 Build 16218