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