MrSID Decode SDK for Raster Reference Manual  9.5.1.4427
lti_types.h
Go to the documentation of this file.
00001 /* $Id$ */
00002 /* //////////////////////////////////////////////////////////////////////////
00003 //                                                                         //
00004 // This code is Copyright (c) 2004 LizardTech, Inc, 1008 Western Avenue,   //
00005 // Suite 200, Seattle, WA 98104.  Unauthorized use or distribution         //
00006 // prohibited.  Access to and use of this code is permitted only under     //
00007 // license from LizardTech, Inc.  Portions of the code are protected by    //
00008 // US and foreign patents and other filings. All Rights Reserved.          //
00009 //                                                                         //
00011 /* PUBLIC - C*/
00012 
00013 #ifndef LTI_TYPES_H
00014 #define LTI_TYPES_H
00015 
00016 #include "lt_base.h"
00017 #include <stddef.h> // NULL
00018 
00019 
00020 
00021 #ifdef LT_CPLUSPLUS
00022 extern "C" {
00023 #endif
00024 
00038 typedef enum LTIColorSpace
00039 {
00040   LTI_COLORSPACE_INVALID       = 0x000000,
00041   LTI_COLORSPACE_MASK_ALPHA    = 0x010000,
00042   LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED = 0x020000,
00043 
00044   // 1-banded colorspaces
00045   LTI_COLORSPACE_GRAYSCALE     = 0x000101,
00046   LTI_COLORSPACE_PALETTE       = 0x000102,
00047   LTI_COLORSPACE_GRAYSCALEA = LTI_COLORSPACE_GRAYSCALE | LTI_COLORSPACE_MASK_ALPHA,
00048   LTI_COLORSPACE_GRAYSCALEA_PM = LTI_COLORSPACE_GRAYSCALEA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00049 
00050   // 3-banded colorspaces
00051   LTI_COLORSPACE_RGB           = 0x000301,
00052   LTI_COLORSPACE_CMY           = 0x000302,
00053   LTI_COLORSPACE_YIQ           = 0x000303,
00054   LTI_COLORSPACE_RGBA = LTI_COLORSPACE_RGB | LTI_COLORSPACE_MASK_ALPHA,
00055   LTI_COLORSPACE_RGBA_PM = LTI_COLORSPACE_RGBA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00056   LTI_COLORSPACE_CMYA = LTI_COLORSPACE_CMY | LTI_COLORSPACE_MASK_ALPHA,
00057   LTI_COLORSPACE_CMYA_PM = LTI_COLORSPACE_CMYA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00058   LTI_COLORSPACE_YIQA = LTI_COLORSPACE_YIQ | LTI_COLORSPACE_MASK_ALPHA,
00059   LTI_COLORSPACE_YIQA_PM = LTI_COLORSPACE_YIQA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00060   
00061   // 4-banded colorspaces
00062   LTI_COLORSPACE_RGBK          = 0x000401,
00063   LTI_COLORSPACE_CMYK          = 0x000402,
00064   LTI_COLORSPACE_YIQK          = 0x000403,
00065   LTI_COLORSPACE_RGBKA = LTI_COLORSPACE_RGBK | LTI_COLORSPACE_MASK_ALPHA,
00066   LTI_COLORSPACE_RGBKA_PM = LTI_COLORSPACE_RGBKA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00067   LTI_COLORSPACE_CMYKA = LTI_COLORSPACE_CMYK | LTI_COLORSPACE_MASK_ALPHA,
00068   LTI_COLORSPACE_CMYKA_PM = LTI_COLORSPACE_CMYKA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00069   LTI_COLORSPACE_YIQKA = LTI_COLORSPACE_YIQK | LTI_COLORSPACE_MASK_ALPHA,
00070   LTI_COLORSPACE_YIQKA_PM = LTI_COLORSPACE_YIQKA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED,
00071    
00072   // N-banded colorspaces
00073   LTI_COLORSPACE_MULTISPECTRAL = 0x00FF01,
00074   LTI_COLORSPACE_MULTISPECTRALA = LTI_COLORSPACE_MULTISPECTRAL | LTI_COLORSPACE_MASK_ALPHA,
00075   LTI_COLORSPACE_MULTISPECTRALA_PM = LTI_COLORSPACE_MULTISPECTRALA | LTI_COLORSPACE_MASK_ALPHA_PRE_MULTIPLIED
00076 } LTIColorSpace;
00077 
00083 typedef enum LTIColor
00084 {
00085   LTI_COLOR_INVALID   = 0,
00086   LTI_COLOR_RED       = 1,
00087   LTI_COLOR_GREEN     = 2,
00088   LTI_COLOR_BLUE      = 3,
00089   LTI_COLOR_CYAN      = 4,
00090   LTI_COLOR_MAGENTA   = 5,
00091   LTI_COLOR_YELLOW    = 6,
00092   LTI_COLOR_BLACK     = 7,
00093   LTI_COLOR_GRAY      = 8,
00094   LTI_COLOR_UNKNOWN   = 9,
00095   LTI_COLOR_ALPHA     = 10,
00096   LTI_COLOR_PRE_MULTIPLIED_ALPHA = 11
00097 } LTIColor;
00098 
00099 
00105 typedef enum LTIDataType
00106 {
00107   LTI_DATATYPE_INVALID  = 0,
00108   LTI_DATATYPE_UINT8    = 1,
00109   LTI_DATATYPE_SINT8    = 2,
00110   LTI_DATATYPE_UINT16   = 3,
00111   LTI_DATATYPE_SINT16   = 4,
00112   LTI_DATATYPE_UINT32   = 5,
00113   LTI_DATATYPE_SINT32   = 6,
00114   LTI_DATATYPE_FLOAT32  = 7,
00115   LTI_DATATYPE_FLOAT64  = 8
00116   // not supported at this time 
00117   //LTI_DATATYPE_UINT64   = 9,
00118   //LTI_DATATYPE_SINT64   = 10,
00119   //LTI_DATATYPE_COMPLEX32 = 11,   // (float32 Real, float32 Imaginary)
00120   //LTI_DATATYPE_COMPLEX64 = 12    // (float64 Real, float64 Imaginary)
00121 } LTIDataType;
00122 
00123 
00124 
00132 typedef enum LTIPosition
00133 {
00134    LTI_POSITION_UPPER_LEFT     = 1,
00135    LTI_POSITION_UPPER_CENTER   = 2,
00136    LTI_POSITION_UPPER_RIGHT    = 3,
00137    LTI_POSITION_LOWER_LEFT     = 4,
00138    LTI_POSITION_LOWER_CENTER   = 5,
00139    LTI_POSITION_LOWER_RIGHT    = 6,
00140    LTI_POSITION_CENTER_LEFT    = 7,
00141    LTI_POSITION_CENTER         = 8,
00142    LTI_POSITION_CENTER_RIGHT   = 9
00143 } LTIPosition;
00144 
00145 
00152 typedef enum LTILayout
00153 {
00154    LTI_LAYOUT_INVALID  = 0,
00155    LTI_LAYOUT_BIP      = 1,   
00156    LTI_LAYOUT_BSQ      = 2,   
00157    LTI_LAYOUT_BIL      = 3    
00158 } LTILayout;
00159 
00160 
00164 typedef enum LTIEndian
00165 {
00166    LTI_ENDIAN_INVALID = 0,
00167    LTI_ENDIAN_HOST    = 1,
00168    LTI_ENDIAN_LITTLE  = 2,
00169    LTI_ENDIAN_BIG     = 3
00170 } LTIEndian;
00171 
00176 typedef enum LTIResampleMethod
00177 {
00178    LTI_RESAMPLE_INVALID   = 0,
00179    LTI_RESAMPLE_NEAREST   = 1,
00180    LTI_RESAMPLE_BILINEAR  = 2,
00181    LTI_RESAMPLE_BICUBIC   = 3
00182 } LTIResampleMethod;
00183 
00187 typedef enum LTIPixelFillMethod
00188 {
00189    LTI_PIXELFILL_HARD  = 0,  // use NoData
00190    LTI_PIXELFILL_FUZZY = 1,  // use fuzzy NoData
00191    LTI_PIXELFILL_COPY  = 2   // ignore NoData
00192 } LTIPixelFillMethod;
00193 
00194 /*
00195  * constants representing possible pixel modifications
00196  */
00197 typedef enum LTIEncodingModification
00198 {
00199    LTI_MODIFICATION_NONE              = 0x00000000,
00200    LTI_MODIFICATION_LOSSLESS          = 0x00000000,
00201    LTI_MODIFICATION_UNKNOWN           = 0x00000001,
00202    LTI_MODIFICATION_COMPRESSED        = 0x00000002,
00203    LTI_MODIFICATION_CROPPED           = 0x00000004,
00204    LTI_MODIFICATION_EMBEDDED          = 0x00000008,
00205    LTI_MODIFICATION_SCALED            = 0x00000010,
00206    LTI_MODIFICATION_MASKED            = 0x00000020,
00207    LTI_MODIFICATION_INTERPRETEDALPHA  = 0x00000040,
00208    LTI_MODIFICATION_REORDEREDBANDS    = 0x00000080,
00209    LTI_MODIFICATION_CHANGEDCOLORSPACE = 0x00000100,
00210    LTI_MODIFICATION_CHANGEDDATATYPE   = 0x00000200,
00211    LTI_MODIFICATION_ALTEREDCOLOR      = 0x00000400,
00212    LTI_MODIFICATION_MOSAICKED         = 0x00000800,
00213    LTI_MODIFICATION_REPROJECTED       = 0x00001000,
00214    LTI_MODIFICATION_WATERMARKED       = 0x00002000,
00215    LTI_MODIFICATION_OVERLAID          = 0x00004000,
00216    LTI_MODIFICATION_COMPRESSEDPERBAND = 0X00008000,
00217    LTI_MODIFICATION_QUANTIZED         = 0X00010000
00218 } LTIEncodingModifications;
00219 
00220 /*
00221  * constants representing the constructed pipeline
00222  */
00223 typedef enum LTIPipelineInfo
00224 {
00225    LTI_PIPELINE_INFO_NON_LEVEL_DECODES = 1
00226 } LTIPipelineInfo;
00227 
00228 #ifdef LT_CPLUSPLUS
00229 }
00230 
00231 LT_BEGIN_NAMESPACE(LizardTech)
00232 
00233 // fwd decls (utils)
00234 class LTFileSpec;
00235 class LTIOStreamInf;
00236 
00237 // fwd decls (SDK core)
00238 class LTIGeoCoord;
00239 class LTIImage;
00240 class LTIImageFilter;
00241 class LTIImageReader;
00242 class LTIImageStage;
00243 class LTIImageWriter;
00244 class LTIInterruptDelegate;
00245 class LTIMetadataDatabase;
00246 class LTINavigator;
00247 class LTIPixel;
00248 class LTIPixelLookupTable;
00249 class LTIProgressDelegate;
00250 class LTISample;
00251 class LTIScene;
00252 class LTISceneBuffer;
00253 class LTIMaskSource;
00254 class LTIMask;
00255 
00256 LT_END_NAMESPACE(LizardTech)
00257 
00258 #endif
00259 
00260 #endif