37 #include <geo_normalize.h> 44 static ossimTrace traceDebug(
"ossimTiffTileSource:debug");
46 #define OSSIM_TIFF_UNPACK_R4(value) ( (value)&0x000000FF) 47 #define OSSIM_TIFF_UNPACK_G4(value) ( ((value)>>8)&0x000000FF) 48 #define OSSIM_TIFF_UNPACK_B4(value) ( ((value)>>16)&0x000000FF) 49 #define OSSIM_TIFF_UNPACK_A4(value) ( ((value)>>24)&0x000000FF) 62 #define OSSIM_BUFFER_SCAN_LINE_READS 1 75 theBufferRect(0, 0, 0, 0),
77 theCurrentTileWidth(0),
78 theCurrentTileHeight(0),
79 theSamplesPerPixel(0),
81 theSampleFormatUnit(0),
85 theNumberOfDirectories(0),
86 theCurrentDirectory(0),
87 theR0isFullRes(false),
90 theApplyColorPaletteFlag(
true),
98 theImageTileLength(0),
99 theImageDirectoryList(0),
100 theCurrentTiffRlevel(0),
101 theCompressionType(0),
138 static const char MODULE[] =
"ossimTiffTileSource::getTile(ossimImageData*, resLevel)";
201 bool reallocateBuffer =
false;
209 reallocateBuffer =
true;
217 reallocateBuffer =
true;
223 if (reallocateBuffer)
244 if (
loadTile( tile_rect, clip_rect, result ) )
258 <<
" Error filling buffer. Return status = false..." 286 const char* prefix)
const 307 "apply_color_palette_flag",
326 std::string pfx = ( prefix ? prefix :
"" );
327 std::string key =
"apply_color_palette_flag";
397 const std::string& connectionString )
399 static const char MODULE[] =
"ossimTiffTileSource::open";
406 if ( connectionString.empty() )
421 theTiffPtr = XTIFFClientOpen(connectionString.c_str(),
"rm",
423 ossim::TiffIStreamAdaptor::tiffRead,
424 ossim::TiffIStreamAdaptor::tiffWrite,
425 ossim::TiffIStreamAdaptor::tiffSeek,
426 ossim::TiffIStreamAdaptor::tiffClose,
427 ossim::TiffIStreamAdaptor::tiffSize,
428 ossim::TiffIStreamAdaptor::tiffMap,
429 ossim::TiffIStreamAdaptor::tiffUnmap);
435 << MODULE <<
" ERROR:\n" 436 <<
"libtiff could not open..." << std::endl;
440 std::shared_ptr<ossim::TiffHandlerState> state = getStateAs<ossim::TiffHandlerState>();
443 state = std::make_shared<ossim::TiffHandlerState>();
448 state->setConnectionString(connectionString);
454 if(state->getValue(tempValue,
"number_of_directories"))
463 << MODULE <<
" ERROR:\n" 464 <<
"Unable to get the number of directories\n";
578 if(!state->getValue(tempValue, dir,
"tifftag.image_length"))
582 << MODULE <<
" Cannot determine image length." 590 if(!state->getValue(tempValue, dir,
"tifftag.image_width"))
594 << MODULE <<
" Cannot determine image width." 602 if (state->isReduced(dir))
614 bool acceptAsRrdsLayer =
true;
620 if ( acceptAsRrdsLayer )
627 if(!state->getValue(tempValue, dir,
"tifftag.planar_config"))
636 if(!state->getValue(tempValue, dir,
"tifftag.photometric"))
645 if(state->exists(dir,
"tifftag.colormap.red")&&
646 state->exists(dir,
"tifftag.colormap.green")&&
647 state->exists(dir,
"tifftag.colormap.blue"))
660 if(state->isTiled(dir))
662 if(state->getValue(tempValue, dir,
"tifftag.tile_width"))
670 <<
"ossimTiffTileSource::getTiffTileWidth ERROR:" 671 <<
"\nCannot determine tile width." << endl;
674 if(state->getValue(tempValue, dir,
"tifftag.tile_length"))
682 <<
"ossimTiffTileSource::getTiffTileLength ERROR:" 683 <<
"\nCannot determine tile length." << endl;
689 if(state->getValue(tempValue, dir,
"tifftag.rows_per_strip"))
855 << MODULE <<
" Error:\nCannot determine scalar type.\n" 856 <<
"Trace dump follows:\n";
903 static const char MODULE[] =
"ossimTiffTileSource::open";
908 << MODULE <<
" Entered..." 1034 static const char MODULE[] =
"ossimTiffTileSource::loadTile";
1073 << MODULE <<
" Unsupported tiff type!" << endl;
1085 #if OSSIM_BUFFER_SCAN_LINE_READS 1110 for (
ossim_uint32 line = startLine; line <= stopLine; ++line)
1112 TIFFReadScanline(
theTiffPtr, (
void*)buf, line, 0);
1113 buf += lineSizeInBytes;
1121 for (
ossim_uint32 line = startLine; line <= stopLine; ++line)
1125 TIFFReadScanline(
theTiffPtr, (
void*)buf, line, band);
1126 buf += lineSizeInBytes;
1151 for (
ossim_int32 line = startLine; line <= stopLine; ++line)
1160 for (
ossim_int32 line = startLine; line <= stopLine; ++line)
1165 TIFFReadScanline(
theTiffPtr, (
void*)buf, line, band);
1166 buf += lineSizeInBytes;
1178 static const char MODULE[] =
"ossimTiffTileSource::loadFromTile";
1199 if ( (clip_rect.
lr().
x-tileOrigin.
x+1) %
1201 if ( (clip_rect.
lr().
y-tileOrigin.
y+1) %
1208 ulTilePt.
x = tileOrigin.
x;
1231 ossimIrect bufRectWithOffset = tiff_tile_rect;
1232 ossimIrect clipRectWithOffset = tiff_tile_clip_rect;
1242 if (tileSizeRead > 0)
1249 else if(tileSizeRead < 0)
1254 << MODULE <<
" Read Error!" 1255 <<
"\nReturning error... " << endl;
1280 if(tileSizeRead > 0)
1287 else if (tileSizeRead < 0)
1292 << MODULE <<
" Read Error!" 1293 <<
"\nReturning error... " << endl;
1320 static const char MODULE[] =
"ossimTiffTileSource::loadFromRgbaTile";
1325 << MODULE <<
" Error:" 1326 <<
"\nInvalid number of bands or bytes per pixel!" << endl;
1345 if ( (clip_rect.
lr().
x-tileOrigin.
x+1) %
1347 if ( (clip_rect.
lr().
y-tileOrigin.
y+1) %
1356 <<
"\ntile_rect: " << tile_rect
1357 <<
"\nclip_rect: " << clip_rect
1358 <<
"\ntiles_in_v_dir: " << tiles_in_v_dir
1359 <<
"\ntiles_in_u_dir: " << tiles_in_u_dir
1368 ulTilePt.
x = tileOrigin.
x;
1392 << MODULE <<
" Read Error!" 1393 <<
"\nReturning error..." << endl;
1413 (tiff_tile_rect.
lr().
y-tile_clip_rect.
ul().
y)*
1415 ((tile_clip_rect.
ul().
x - ulTilePt.
x)*4);
1418 (tile_clip_rect.
ul().
y - tile_rect.
ul().
y) *
1420 tile_clip_rect.
ul().
x - tile_rect.
ul().
x;
1446 for (
ossim_uint32 sample = 0; sample < samps2copy; sample++)
1457 r += OUTPUT_TILE_WIDTH;
1458 g += OUTPUT_TILE_WIDTH;
1459 b += OUTPUT_TILE_WIDTH;
1478 static const char MODULE[] =
"ossimTiffTileSource::loadFromRgbaU8Strip";
1483 << MODULE <<
" Error:" 1484 <<
"\nInvalid number of bands or bytes per pixel!" << endl;
1498 OUTPUT_TILE_WIDTH + clip_rect.
ul().
x -
1503 <<
"\ntile_rect: " << tile_rect
1504 <<
"\nclip_rect: " << clip_rect
1505 <<
"\nstarting_strip: " << starting_strip
1506 <<
"\nending_strip: " << ending_strip
1507 <<
"\nstrip_width: " << strip_width
1508 <<
"\noutput_tile_offset: " << output_tile_offset
1526 for (
ossim_uint32 strip=starting_strip; strip<=ending_strip; strip++)
1536 << MODULE <<
" Error reading strip!" <<endl;
1547 (ending_strip-starting_strip) ? (ending_strip-starting_strip) *
1573 if (current_line >= clip_rect.
ul().
y &&
1574 current_line <= clip_rect.
lr().
y)
1585 strip_offset - 1) * strip_width + clip_rect.
ul().
x * 4));
1590 for (int32 sample=clip_rect.
ul().
x;
1591 sample<=clip_rect.
lr().
x;
1615 d[band] += OUTPUT_TILE_WIDTH;
1634 static const char MODULE[] =
"ossimTiffTileSource::loadFromRgbaU8aStrip";
1646 << MODULE <<
" Error:" 1647 <<
"\nInvalid number of bands or bytes per pixel!" << endl;
1658 OUTPUT_TILE_WIDTH + clip_rect.
ul().
x -
1665 <<
"\ntile_rect: " << tile_rect
1666 <<
"\nclip_rect: " << clip_rect
1667 <<
"\nstarting_strip: " << starting_strip
1668 <<
"\nending_strip: " << ending_strip
1669 <<
"\nstrip_width: " << strip_width
1670 <<
"\noutput_tile_offset: " << output_tile_offset
1690 for (
ossim_uint32 strip=starting_strip; strip<=ending_strip; strip++)
1697 << MODULE <<
" Error reading strip!" <<endl;
1722 if (current_line >= clip_rect.
ul().
y &&
1723 current_line <= clip_rect.
lr().
y)
1737 clip_rect.
ul().
x * 4;
1742 for (int32 sample=clip_rect.
ul().
x;
1743 sample<=clip_rect.
lr().
x;
1749 d[band][i] = pix != NULL_PIX ? pix : MIN_PIX;
1757 d[band] += OUTPUT_TILE_WIDTH;
1786 for (
ossim_uint32 strip = starting_strip; strip <= ending_strip; ++strip )
1796 if ( strip == ( stripsPerBand - 1 ) )
1826 if ( bytesRead != bytesToRead )
1831 <<
"ossimTiffTileSource::loadFromU16Strip Read Error!" 1832 <<
"\nReturning error... " << endl;
1839 bufferOffsetInBytes += bytesPerStrip;
1849 startY + linesInStrip - 1);
1879 pt.
x = (pt.
x/tw) * tw;
1888 pt.
y = (pt.
y/th) * th;
1898 bool result =
false;
1908 result = (resLevel < LEVELS);
1932 result =
"READ_RGBA_U8_TILE";
1935 result =
"READ_RGBA_U8_STRIP";
1938 result =
"READ_RGBA_U8A_STRIP";
1941 result =
"READ_SCAN_LINE";
1944 result =
"READ_TILE";
1992 result = tileSize.
x;
2004 result = tileSize.
y;
2070 os <<
"\ndirectory[" << i <<
"]" 2093 os <<
"\nOutput tile dump:\n" << *
theTile << endl;
2098 os <<
"\nOverview file:\n";
2124 bool result =
false;
2148 bool result =
false;
2152 std::vector<ossim_uint32> inputList = band_list;
2216 bool result =
false;
2218 std::shared_ptr<const ossim::TiffHandlerState> state = getStateAs<ossim::TiffHandlerState>();
2221 result = state->exists(TIFFCurrentDirectory(
theTiffPtr),
2222 "tifftag.colormap.red");
2230 std::shared_ptr<ossim::TiffHandlerState> state = getStateAs<ossim::TiffHandlerState>();
2239 if (state->isTiled(dir))
2304 if(!property.
valid())
2308 if(property->
getName() ==
"apply_color_palette_flag")
2321 if(name ==
"apply_color_palette_flag")
2325 property->clearChangeType();
2326 property->setFullRefreshBit();
2329 else if(name ==
"file_type")
2340 propertyNames.push_back(
"file_type");
2341 propertyNames.push_back(
"apply_color_palette_flag");
2360 <<
"ossimTiffTileSource::setTiffDirectory ERROR setting directory " 2361 << directory <<
"!" << endl;
2380 std:shared_ptr<ossim::TiffHandlerState> state = getStateAs<ossim::TiffHandlerState>();
2385 if(state->getValue(red, currentDir,
"tifftag.colormap.red")&&
2386 state->getValue(green, currentDir,
"tifftag.colormap.green")&&
2387 state->getValue(blue, currentDir,
"tifftag.colormap.blue"))
2389 std::vector<ossim_uint16> redValues;
2390 std::vector<ossim_uint16> greenValues;
2391 std::vector<ossim_uint16> blueValues;
2396 if(((redValues.size()==greenValues.size())&&(redValues.size()==blueValues.size()))&&
2397 (redValues.size()==256||redValues.size()==65536))
2414 for(entryIdx = 0; entryIdx < numEntries; ++entryIdx)
2463 ti.
print(inStr, memStr);
2473 <<
"ossimTiffTileSource::validateMinMaxNull kwl:\n" << gtiffKwl
2479 lookup = gtiffKwl.
find(
"tiff.image0.gdal_nodata");
2480 bool nullFound =
false;
2487 lookup = gtiffKwl.
find(
"tiff.image0.vertical_citation");
2495 std::vector<ossimString> array;
2497 if ( array.size() == 4 )
2499 std::vector<ossimString> array2;
2505 if ( array2.size() == 2 )
2510 if ( array2[1].
size() )
2522 if ( array2.size() == 2 )
2527 if ( array2[1].
size() )
2539 if ( array2.size() == 2 )
2544 if ( array2[1].
size() )
2561 bool result =
false;
2606 bool bSuccess =
true;
2657 #if OSSIM_BUFFER_SCAN_LINE_READS 2669 <<
"Unknown read method!" << endl;
2678 <<
"ossimTiffTileSource::allocateBuffer DEBUG:" 2679 <<
"\nbuffer_size: " << buffer_size
2707 <<
"ossimTiffTileSource::allocateBuffer WARN:" 2708 <<
"\nNot enough memory: buffer_size: " << buffer_size
16 bit unsigned integer (15 bits used)
virtual void loadBand(const void *src, const ossimIrect &src_rect, ossim_uint32 band)
void set_uly(ossim_int32 y)
virtual void valueToString(ossimString &valueResult) const =0
virtual ossim_uint32 getWidth() const
virtual bool isSourceEnabled() const
std::vector< ossim_uint32 > theImageTileWidth
std::vector< ossim_uint32 > theOutputBandList
ossim_int32 theCompressionType
ossim_float64 theMaxSampleValue
ossim_int32 LUT_ENTRY_TYPE
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
ossim_uint32 theCurrentTiffRlevel
bool open()
Returns true if no errors initializing object.
virtual ossim_uint32 getNumberOfBands() const
ossim_uint32 theCurrentTileWidth
ossimFilename theImageFile
virtual void setImageRectangle(const ossimIrect &rect)
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
virtual bool isOpen() const
Derived classes must implement this method to be concrete.
Represents serializable keyword/value map.
const std::string & findKey(const std::string &key) const
Find methods that take std::string(s).
void setState(std::shared_ptr< ossim::ImageHandlerState > state)
std::basic_ifstream< char > ifstream
Class for char input file streams.
std::shared_ptr< ossim::TiffIStreamAdaptor > m_streamAdaptor
void allocateTile()
Allocates theTile.
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
virtual ossim_float64 getNullPixelValue(ossim_uint32 band=0) const
Each band has a null pixel associated with it.
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
double nan()
Method to return ieee floating point double precision NAN.
This code was derived from https://gist.github.com/mshockwave.
virtual ossim_uint32 getNumberOfDecimationLevels() const
Returns the number of reduced resolution data sets (rrds).
virtual ossim_uint32 getImageTileWidth() const
#define OSSIM_TIFF_UNPACK_R4(value)
ossim_uint32 height() const
bool contains(char aChar) const
std::vector< ossim_uint32 > theRowsPerStrip
virtual ossim_uint32 getTileWidth() const
Returns the width of the output tile.
OSSIM_DLL void defaultTileSize(ossimIpt &tileSize)
void toSimpleStringList(ossimString &result, const std::vector< T > &valuesList)
This will output a vector of values inst a string.
const ossimIpt & ul() const
void split(std::vector< ossimString > &result, const ossimString &separatorList, bool skipBlankFields=false) const
Splits this string into a vector of strings (fields) using the delimiter list specified.
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual ossim_uint32 getHeight() const
16 bit unsigned integer (14 bits used)
static const ossimErrorCode OSSIM_ERROR
virtual ossimString getClassName() const
ossim_uint32 toUInt32() const
16 bit unsigned integer (13 bits used)
static StreamFactoryRegistry * instance()
bool intersects(const ossimIrect &rect) const
bool hasR0() const
Returns true if the first directory of the tiff image did not have the reduced resolution file type s...
unsigned short ossim_uint16
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual ossim_float64 getMinPixelValue(ossim_uint32 band=0) const
Retuns the min pixel value.
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
ossim_uint32 theCurrentTileHeight
virtual ossim_uint32 getNumberOfOutputBands() const
Returns the number of bands in a tile returned from this TileSource.
virtual ossimString getShortName() const
virtual void initialize()
Initialize the data buffer.
void ref() const
increment the reference count by one, indicating that this object has another pointer which is refere...
bool loadFromRgbaU8Tile(const ossimIrect &tile_rect, const ossimIrect &clip_rect, ossimImageData *result)
ossim_uint16 theSamplesPerPixel
ossimPixelType thePixelType
bool loadFromRgbaU8Strip(const ossimIrect &tile_rect, const ossimIrect &clip_rect, ossimImageData *result)
ossim_uint16 theNumberOfDirectories
std::vector< ossim_uint32 > theImageDirectoryList
virtual ossim_uint32 getNumberOfDecimationLevels() const
This returns the total number of decimation levels.
ossim_uint32 theBufferRLevel
void setApplyColorPaletteFlag(bool flag)
bool toSimpleVector(std::vector< T > &result, const ossimString &stringOfPoints)
virtual ossim_uint32 getImageTileHeight() const
virtual double getMinPixelValue(ossim_uint32 band=0) const
Retuns the min pixel value.
ossim_int32 toInt32() const
bool completely_within(const ossimIrect &rect) const
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
virtual std::ostream & print(std::ostream &out) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
OSSIM_DLL double defaultMin(ossimScalarType scalarType)
virtual void getOutputBandList(std::vector< ossim_uint32 > &bandList) const
Initializes bandList.
virtual ossimString getLongName() const
bool allocateBuffer()
Allocates theBuffer.
virtual bool getOverviewTile(ossim_uint32 resLevel, ossimImageData *result)
Method to get an overview tile.
static ossimImageDataFactory * instance()
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
Returns a pointer to a tile given an origin representing the upper left corner of the tile to grab fr...
virtual ~ossimTiffTileSource()
ossim_float64 theNullSampleValue
virtual ossim_uint32 getNumberOfInputBands() const
Returns the number of bands in the image.
virtual ossimDataObjectStatus validate() const
virtual ossim_uint32 getNumberOfDirectories() const
Returns the number of image file directories in the tiff image.
virtual bool isValidRLevel(ossim_uint32 resLevel) const
Determines if the passed in reslution level is valid.
std::string::size_type size() const
bool toBool() const
String to numeric methods.
OSSIM_DLL double defaultNull(ossimScalarType scalarType)
virtual ossim_uint32 getTileHeight() const
Returns the height of the output tile.
virtual bool isIdentityBandList(const std::vector< ossim_uint32 > &bandList) const
Convenience method to see if band list is identity.
unsigned int ossim_uint32
virtual const ossim_float64 * getNullPix() const
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
virtual ossimIrect getImageRectangle() const
bool theApplyColorPaletteFlag
bool loadFromU16Strip(const ossimIrect &clip_rect, ossimImageData *result)
ossim_float32 toFloat32() const
bool isPowerOfTwoDecimation(ossim_uint32 dir) const
Checks line/samples of level for power of two decimation from the previous rlevel.
const ossimIpt & lr() const
virtual void close()
Deletes the overview and clears the valid image vertices.
ossim_uint16 theBitsPerSample
ossim_uint32 getCurrentTiffRLevel() const
If the tiff source has R0 then this returns the current tiff directory that the tiff pointer is point...
ossim_uint32 theBytesPerPixel
static ossimString downcase(const ossimString &aString)
virtual ossimIrect getImageRectangle(ossim_uint32 resLevel=0) const
Returns zero-based bounding rectangle of the image.
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
ossim_float64 theMinSampleValue
ossim_uint32 width() const
ossimErrorCode theErrorStatus
static const char * BANDS_KW
ossimIrect clipToRect(const ossimIrect &rect) const
virtual void close()
Deletes the overview and clears the valid image vertices.
virtual bool isBandSelector() const
Indicates whether or not the image handler can control output band selection via the setOutputBandLis...
bool loadFromScanLine(const ossimIrect &clip_rect, ossimImageData *result)
virtual std::ostream & print(std::ostream &out) const
Print method.
std::vector< ossim_uint32 > theImageLength
void unref() const
decrement the reference count by one, indicating that a pointer to this object is referencing it...
void validateMinMaxNull()
validateMinMaxNull Checks min, max and null to make sure they are not equal to the scalar type nan or...
ossim_uint16 toUInt16() const
virtual const ossim_float64 * getMinPix() const
virtual void getOutputBandList(std::vector< ossim_uint32 > &bandList) const
Initializes bandList to the zero based order of output bands.
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual void makeBlank()
Initializes data to null pixel values.
ossimScalarType theScalarType
std::vector< ossim_uint16 > thePhotometric
ossimRefPtr< ossimImageData > theTile
virtual void completeOpen()
Will complete the opening process.
16 bit unsigned integer (11 bits used)
ossimString getReadMethod(ossim_uint32 directory) const
virtual ossim_float64 getMaxPixelValue(ossim_uint32 band=0) const
Returns the max pixel of the band.
#define OSSIM_TIFF_UNPACK_B4(value)
bool loadFromTile(const ossimIrect &clip_rect, ossimImageData *result)
ossimImageMetaData theMetaData
OSSIM_DLL double defaultMax(ossimScalarType scalarType)
#define OSSIM_TIFF_UNPACK_G4(value)
ossimRefPtr< ossimImageHandler > theOverview
std::vector< ossim_uint16 > thePlanarConfig
This class defines an abstract Handler which all image handlers(loaders) should derive from...
void set_lry(ossim_int32 y)
std::vector< ossim_uint32 > theImageTileLength
virtual bool isBandSelector() const
Indicates whether or not the image handler can control output band selection via the setOutputBandLis...
virtual void setProperty(ossimRefPtr< ossimProperty > property)
virtual const void * getBuf() const
virtual ossim_uint32 getNumberOfLines(ossim_uint32 resLevel=0) const
Returns the number of lines in the image.
bool loadTile(const ossimIrect &tile_rect, const ossimIrect &clip_rect, ossimImageData *result)
virtual bool parseStream(ossim::istream &is, bool ignoreBinaryChars)
deprecated method
ossim_uint16 theCurrentDirectory
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
class ossimNBandLutDataObject
ossim_uint16 theSampleFormatUnit
bool loadFromRgbaU8aStrip(const ossimIrect &tile_rect, const ossimIrect &clip_rect, ossimImageData *result)
std::vector< ReadMethod > theReadMethod
bool setTiffDirectory(ossim_uint16 directory)
Change tiff directory and sets theCurrentDirectory.
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const =0
Pure virtual, derived classes must implement.
bool isColorMapped() const
std::vector< ossim_uint32 > theImageWidth
virtual double getMaxPixelValue(ossim_uint32 band=0) const
Returns the max pixel of the band.
virtual std::shared_ptr< ossim::istream > createIstream(const std::string &connectionString, const ossimKeywordlist &options=ossimKeywordlist(), std::ios_base::openmode mode=std::ios_base::in|std::ios_base::binary) const
Will try to creates an istream interface to the connectionString passed in.
ossimRefPtr< ossimNBandLutDataObject > theLut
#define RTTI_DEF1(cls, name, b1)
virtual void copyLine(const void *src, ossim_int32 lineNumber, ossim_int32 lineStartSample, ossim_int32 lineStopSample, ossimInterleaveType lineInterleave)
Method to copy a single line to the tile.
virtual ossim_uint32 getNumberOfSamples(ossim_uint32 resLevel=0) const
Returns the number of samples in the image.
ossim_uint32 theBufferSize
virtual std::ostream & print(std::ostream &os) const
Outputs theErrorStatus as an ossimErrorCode and an ossimString.
virtual bool setOutputBandList(const std::vector< ossim_uint32 > &band_list)
If the image handler "isBandSeletor()" then the band selection of the output chip can be controlled...
bool getApplyColorPaletteFlag() const
virtual double getNullPixelValue(ossim_uint32 band=0) const
Each band has a null pixel associated with it.
void adjustToStartOfTile(ossimIpt &pt) const
Adjust point to even tile boundary.
virtual ossimScalarType getOutputScalarType() const
Returns the output pixel type of the tile source.
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Method to save the state of an object to a keyword list.
virtual bool setOutputBandList(const std::vector< ossim_uint32 > &band_list)
If the image handler "isBandSeletor()" then the band selection of the output chip can be controlled...
std::basic_ostream< char > ostream
Base class for char output streams.
const ossimString & getName() const
ossim_uint32 theStartingResLevel
theStartingResLevel If set to something other than zero(default) this is indicative that the reader i...
const std::string & string() const
16 bit unsigned integer (12 bits used)
bool isnan(const float &v)
isnan Test for floating point Not A Number (NAN) value.