MrSID Decode SDK for Raster Reference Manual  9.5.1.4427
lti_sample.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 */
00012 
00013 #ifndef LTI_SAMPLE_H
00014 #define LTI_SAMPLE_H
00015 
00016 // lt_lib_mrsid_core
00017 #include "lti_types.h"
00018 
00019 LT_BEGIN_NAMESPACE(LizardTech)
00020 
00021 
00028 class LTISample
00029 {
00030 public:
00042    LTISample(lt_uint16 srcBandIndex,
00043              LTIColor color,
00044              LTIDataType dataType,
00045              const void *data = NULL);
00046 
00047    LTISample();
00048 
00052    LTISample(const LTISample&);
00053 
00057    virtual ~LTISample();
00058 
00062    virtual LTISample& operator=(const LTISample&);
00063 
00067    bool operator==(const LTISample&) const;
00068 
00072    bool operator!=(const LTISample&) const;
00073 
00081    lt_uint16 getSourceBandIndex() const;
00082    
00090    LTIDataType getDataType() const;
00091 
00099    LTIColor getColor() const;
00100 
00112    void setPrecision(lt_uint32 precision);
00113    
00121    lt_uint32 getPrecision() const;
00122    
00132    lt_uint32 getNumBytes() const;
00133 
00143    LT_STATUS checkImpedance(const LTISample& sample) const;
00144 
00150    bool isValueMin() const;
00151 
00157    bool isValueMax() const;
00158 
00164    void setValueToMin();
00165 
00171    void setValueToMax();
00172 
00179    void setValueToMin(const LTISample&);
00180 
00187    void setValueToMax(const LTISample&);
00188 
00197    void setValueAddr(const void*);
00198    const void* getValueAddr() const;
00199 
00200    void setValueUint8(lt_uint8);
00201    void setValueUint16(lt_uint16);
00202    void setValueUint32(lt_uint32);
00203    void setValueSint8(lt_int8);
00204    void setValueSint16(lt_int16);
00205    void setValueSint32(lt_int32);
00206    void setValueFloat32(float);
00207    void setValueFloat64(double);
00208 
00209    lt_uint8 getValueUint8() const;
00210    lt_uint16 getValueUint16() const;
00211    lt_uint32 getValueUint32() const;
00212    lt_int8 getValueSint8() const;
00213    lt_int16 getValueSint16() const;
00214    lt_int32 getValueSint32() const;
00215    float getValueFloat32() const;
00216    double getValueFloat64() const;
00217 
00218    void setValueFromDouble(double);
00219    double getValueAsDouble() const;
00222 private:
00223    union ValueType
00224    {
00225       lt_uint8 uint8;
00226       lt_uint16 uint16;
00227       lt_uint32 uint32;
00228 
00229       lt_int8 sint8;
00230       lt_int16 sint16;
00231       lt_int32 sint32;
00232 
00233       float float32;
00234       double float64;
00235 
00236       //float complex32[2];
00237       //double complex64[2];
00238    };
00239 
00240    lt_uint16 m_srcIndex;
00241    LTIDataType m_dataType;
00242    LTIColor m_color;
00243    lt_uint32 m_numBytes;
00244    lt_uint32 m_precision;
00245    ValueType m_value;
00246 };
00247 
00248 
00249 LT_END_NAMESPACE(LizardTech)
00250 
00251 #endif // LTI_SAMPLE_H