Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::TGAImageFileType Class Reference
[Image]

TGA File Handler. Used to read/write TGA files. See Image for a detailed description. More...

#include <OSGTGAImageFileType.h>

Inheritance diagram for osg::TGAImageFileType:

osg::ImageFileType List of all members.

Safe Store/Restore

UInt64 store (const ImagePtr &image, UChar8 *buffer, Int32 memSize=-1)
virtual UInt64 maxBufferSize (const ImagePtr &image)
*static UInt64 restore (ImagePtr &image, const UChar8 *buffer, Int32 memSize=-1)
static UInt64 store (const ImagePtr &image, const char *mimeType, UChar8 *buffer, Int32 memSize=-1)

Public Member Functions

Read/Write
virtual bool validateHeader (const Char8 *fileName, bool &implemented)
Read/Write
virtual bool validateHeader (const Char8 *fileName, bool &implemented)
Read/Write
virtual bool validateHeader (const Char8 *fileName, bool &implemented)
Destructor
*virtual ~TGAImageFileType (void)
Read/Write
*virtual bool read (ImagePtr &image, const Char8 *fileName)
virtual bool write (const ImagePtr &image, const Char8 *fileName)
Read/Write
virtual bool validateHeader (const Char8 *fileName, bool &implemented)

Static Public Member Functions

Get Method
*static TGAImageFileTypethe (void)

Protected Member Functions

Default Constructor
TGAImageFileType (const Char8 *mimeType, const Char8 *suffixArray[], UInt16 suffixByteCount)
Copy Constructor
TGAImageFileType (const TGAImageFileType &obj)

Private Types

typedef ImageFileType Inherited

Private Member Functions

void readHeader (std::istream &in, TGAHeader &header)
bool readCompressedImageData (std::istream &in, ImagePtr &image)

Static Private Attributes

static TGAImageFileType _the

Classes

struct  TGAHeader

Detailed Description

Image File Type to read/write and store/restore Image objects as TGA data.

All the type specific code is included in the class. Does not depend on external libs.

Definition at line 55 of file OSGTGAImageFileType.h.


Member Typedef Documentation

typedef ImageFileType osg::TGAImageFileType::Inherited [private]
 

Definition at line 129 of file OSGTGAImageFileType.h.


Member Enumeration Documentation

anonymous enum [inherited]
 

Enumerator:
OSG_READ_SUPPORTED 
OSG_WRITE_SUPPORTED 

Definition at line 65 of file OSGImageFileType.h.

00066     {
00067         OSG_READ_SUPPORTED = 1,
00068         OSG_WRITE_SUPPORTED = 2
00069     };


Constructor & Destructor Documentation

TGAImageFileType::~TGAImageFileType void   )  [virtual]
 

Destructor

Definition at line 355 of file OSGTGAImageFileType.cpp.

00356 {
00357     return;
00358 }

TGAImageFileType::TGAImageFileType const Char8 mimeType,
const Char8 suffixArray[],
UInt16  suffixByteCount
[protected]
 

Constructor used for the singleton object

Definition at line 333 of file OSGTGAImageFileType.cpp.

00335                                                            :
00336     ImageFileType(mimeType,suffixArray, suffixByteCount)
00337 {
00338     return;
00339 }

TGAImageFileType::TGAImageFileType const TGAImageFileType obj  )  [protected]
 

Dummy Copy Constructor

Definition at line 345 of file OSGTGAImageFileType.cpp.

00345                                                               :
00346     ImageFileType(obj)
00347 {
00348     return;
00349 }


Member Function Documentation

TGAImageFileType & TGAImageFileType::the void   )  [static]
 

Class method to get the singleton Object

Definition at line 84 of file OSGTGAImageFileType.cpp.

References _the.

00085 {
00086   return _the;
00087 }

bool TGAImageFileType::read ImagePtr image,
const Char8 fileName
[virtual]
 

Tries to fill the image object with the data read from the given fileName. Returns true on success.

Implements osg::ImageFileType.

Definition at line 199 of file OSGTGAImageFileType.cpp.

References osg::TGAImageFileType::TGAHeader::cmapEntrySize, osg::TGAImageFileType::TGAHeader::cmapLength, osg::TGAImageFileType::TGAHeader::colorMapType, osg::TGAImageFileType::TGAHeader::depth, osg::TGAImageFileType::TGAHeader::descriptor, FDEBUG, FWARNING, osg::TGAImageFileType::TGAHeader::height, osg::TGAImageFileType::TGAHeader::idLength, osg::TGAImageFileType::TGAHeader::imageType, osg::Image::OSG_INVALID_PF, osg::Image::OSG_L_PF, osg::Image::OSG_RGB_PF, osg::Image::OSG_RGBA_PF, osg::osgMin(), readCompressedImageData(), readHeader(), and osg::TGAImageFileType::TGAHeader::width.

00201 {
00202     std::ifstream  in(fileName, std::ios::in | std::ios::binary);
00203 
00204     if(! in.rdbuf()->is_open())
00205     {
00206         FWARNING(("Error opening TGA file %s!\n", fileName));
00207         return false;
00208     }
00209 
00210     TGAHeader header;
00211     readHeader(in, header);
00212 
00213     Image::PixelFormat format = Image::OSG_INVALID_PF;
00214 
00215     bool    compressed = (header.imageType & 0x8) != 0;
00216 
00217     switch(header.imageType & ~0x8)
00218     {
00219     case 1:     FWARNING(("TGA: 8-bit image not supported!\n"));
00220                 break;
00221 
00222     case 2:     switch(header.depth)
00223                 {
00224                 case 24:    format = Image::OSG_RGB_PF;
00225                             break;
00226                 case 32:    format = Image::OSG_RGBA_PF;
00227                             break;
00228                 default:    FWARNING(("TGA: Unknown pixel depth %d!\n",
00229                                     header.depth));
00230                             break;
00231                 }
00232                 break;
00233 
00234     case 3:     format = Image::OSG_L_PF;
00235                 break;
00236     }
00237 
00238     if(format == Image::OSG_INVALID_PF)
00239     {
00240        FWARNING(("Unsupported image type for TGA file %s!\n", fileName));
00241        return false;
00242     }
00243 
00244     image->set(format, header.width, header.height);
00245 
00246     // read the image ID
00247     UInt8 imageid[256];
00248     in.read(reinterpret_cast<char *>(imageid), header.idLength);
00249     imageid[header.idLength] = 0;
00250 
00251     FDEBUG(("TGA: Image ID '%s'\n", imageid));
00252 
00253     // read color map data
00254     if(header.colorMapType == 1)
00255     {
00256         UInt32 len = osgMin(header.cmapEntrySize / 3, 8) * header.cmapLength;
00257 
00258         UInt8 * dum = new UInt8 [len];
00259 
00260         in.read(reinterpret_cast<char *>(dum), len);
00261 
00262         delete [] dum;
00263     }
00264 
00265     // read image data
00266     if(compressed)
00267     {
00268         if(!readCompressedImageData(in, image))
00269         {
00270             FWARNING(("Unsupported image type for TGA file %s!\n", fileName));
00271             return false;
00272         }
00273     }
00274     else
00275     {
00276         in.read(reinterpret_cast<char *>(image->getData()),
00277                 static_cast<int>(image->getSize()));
00278     }
00279 
00280     // check origin
00281     switch(header.descriptor & 0x30)
00282     {
00283     case 0x00:  // bottom left, ok!
00284                 break;
00285     case 0x10:  // bottom right
00286     case 0x20:  // top left
00287     case 0x30:  // top right
00288                 FWARNING(("TGA: origin 0x%d not supported!\n",
00289                           header.descriptor & 0x30));
00290                 return false;
00291     }
00292 
00293     // do BGR -> RGB swap, as GL_BGR_EXT is not supported everywhere
00294     if(image->getPixelFormat() == Image::OSG_RGB_PF ||
00295        image->getPixelFormat() == Image::OSG_RGBA_PF)
00296     {
00297         UChar8 *d    = image->getData(), dum;
00298         UInt32  npix = image->getWidth() * image->getHeight();
00299         UInt8   bpp  = image->getBpp();
00300 
00301         while(npix--)
00302         {
00303             dum  = d[2];
00304             d[2] = d[0];
00305             d[0] = dum;
00306             d += bpp;
00307         }
00308     }
00309 
00310     return true;
00311 }

bool TGAImageFileType::write const ImagePtr image,
const Char8 fileName
[virtual]
 

Tries to write the image object to the given fileName. Returns true on success.

Implements osg::ImageFileType.

Definition at line 318 of file OSGTGAImageFileType.cpp.

References osg::ImageFileType::getMimeType(), and SWARNING.

00320 {
00321     SWARNING <<
00322         getMimeType() <<
00323         " write is not compiled into the current binary " <<
00324         std::endl;
00325 
00326     return true;
00327 }

void TGAImageFileType::readHeader std::istream &  in,
TGAHeader header
[private]
 

Definition at line 89 of file OSGTGAImageFileType.cpp.

References osg::TGAImageFileType::TGAHeader::cmapEntrySize, osg::TGAImageFileType::TGAHeader::cmapFirst, osg::TGAImageFileType::TGAHeader::cmapLength, osg::TGAImageFileType::TGAHeader::colorMapType, osg::TGAImageFileType::TGAHeader::depth, osg::TGAImageFileType::TGAHeader::descriptor, osg::TGAImageFileType::TGAHeader::height, osg::TGAImageFileType::TGAHeader::idLength, osg::TGAImageFileType::TGAHeader::imageType, osg::osgIsBigEndian(), osg::TGAImageFileType::TGAHeader::width, osg::TGAImageFileType::TGAHeader::xOrigin, and osg::TGAImageFileType::TGAHeader::yOrigin.

Referenced by read().

00090 {
00091     UInt8 dum[18];
00092 
00093     in.read(reinterpret_cast<char *>(dum), 18);
00094 
00095     header.idLength      = dum[ 0];
00096     header.colorMapType  = dum[ 1];
00097     header.imageType     = dum[ 2];
00098     header.cmapEntrySize = dum[ 7];
00099     header.depth         = dum[16];
00100     header.descriptor    = dum[17];
00101 
00102     if(osgIsBigEndian())
00103     {
00104         header.cmapFirst  = dum[ 4] + dum[ 3] * 256;
00105         header.cmapLength = dum[ 6] + dum[ 5] * 256;
00106         header.xOrigin    = dum[ 9] + dum[ 8] * 256;
00107         header.yOrigin    = dum[11] + dum[10] * 256;
00108         header.width      = dum[13] + dum[12] * 256;
00109         header.height     = dum[15] + dum[14] * 256;
00110     }
00111     else
00112     {
00113         header.cmapFirst  = dum[ 3] + dum[ 4] * 256;
00114         header.cmapLength = dum[ 5] + dum[ 6] * 256;
00115         header.xOrigin    = dum[ 8] + dum[ 9] * 256;
00116         header.yOrigin    = dum[10] + dum[11] * 256;
00117         header.width      = dum[12] + dum[13] * 256;
00118         header.height     = dum[14] + dum[15] * 256;
00119     }
00120 }

bool TGAImageFileType::readCompressedImageData std::istream &  in,
ImagePtr image
[private]
 

Definition at line 122 of file OSGTGAImageFileType.cpp.

References FWARNING, osg::Image::OSG_L_PF, osg::Image::OSG_RGB_PF, and osg::Image::OSG_RGBA_PF.

Referenced by read().

00123 {
00124     UInt32 npix = image->getWidth() * image->getHeight();
00125     UInt8   rep;
00126     UChar8 *data = image->getData();
00127     UInt16 bpp = image->getBpp();
00128     UChar8 r,g,b,a;
00129 
00130     while(npix)
00131     {
00132         in.read(reinterpret_cast<char *>(&rep), 1);
00133 
00134         if(rep & 0x80)
00135         {
00136             rep = (rep & 0x7f) + 1;
00137             npix -= rep;
00138 
00139             switch(image->getPixelFormat())
00140             {
00141                 case Image::OSG_L_PF:
00142                     in.read(reinterpret_cast<char *>(&a), 1);
00143                     while(rep--)
00144                     {
00145                         *data++ = a;
00146                     }
00147                     break;
00148                 case Image::OSG_RGB_PF:
00149                     in.read(reinterpret_cast<char *>(&b), 1);
00150                     in.read(reinterpret_cast<char *>(&g), 1);
00151                     in.read(reinterpret_cast<char *>(&r), 1);
00152                     while(rep--)
00153                     {
00154                         *data++ = b;
00155                         *data++ = g;
00156                         *data++ = r;
00157                     }
00158                     break;
00159                 case Image::OSG_RGBA_PF:
00160                     in.read(reinterpret_cast<char *>(&b), 1);
00161                     in.read(reinterpret_cast<char *>(&g), 1);
00162                     in.read(reinterpret_cast<char *>(&r), 1);
00163                     in.read(reinterpret_cast<char *>(&a), 1);
00164                     while(rep--)
00165                     {
00166                         *data++ = b;
00167                         *data++ = g;
00168                         *data++ = r;
00169                         *data++ = a;
00170                     }
00171                     break;
00172                 default:
00173                     FWARNING(("TGA: unknown pixel "
00174                               "format!?!\n"));
00175                     return false;
00176             }
00177         }
00178         else // raw packet
00179         {
00180             rep = (rep & 0x7f) + 1;
00181             in.read(reinterpret_cast<char *>(data), bpp * rep);
00182             data += rep * bpp;
00183             npix -= rep;
00184         }
00185     }
00186     return true;
00187 }

const Char8 * ImageFileType::getMimeType void   )  const [inherited]
 

Get method for the mime type

Definition at line 106 of file OSGImageFileType.cpp.

References osg::ImageFileType::_mimeType, and osg::IDString::str().

Referenced by osg::ImageFileType::dump(), osg::TIFImageFileType::read(), osg::PNGImageFileType::read(), osg::MNGImageFileType::read(), osg::JPGImageFileType::read(), osg::ImageFileHandler::read(), osg::PNGImageFileType::restoreData(), osg::JPGImageFileType::restoreData(), osg::ImageFileType::restoreData(), osg::ImageFileType::store(), osg::ImageFileHandler::store(), osg::PNGImageFileType::storeData(), osg::JPGImageFileType::storeData(), osg::ImageFileType::storeData(), osg::TIFImageFileType::write(), write(), osg::PNGImageFileType::write(), osg::MNGImageFileType::write(), osg::JPGImageFileType::write(), osg::ImageFileHandler::write(), osg::GIFImageFileType::write(), and osg::DDSImageFileType::write().

00107 {
00108     return _mimeType.str();
00109 }

const std::list< IDString > & ImageFileType::getSuffixList void   )  const [inherited]
 

Get method for the suffix list container

Definition at line 125 of file OSGImageFileType.cpp.

References osg::ImageFileType::_suffixList.

Referenced by osg::ImageFileHandler::addImageFileType().

00126 {
00127     return _suffixList; 
00128 }

UInt32 ImageFileType::getFlags void   )  const [virtual, inherited]
 

Get method for the flags indicating read/write support. Most image types only support reading.

Definition at line 116 of file OSGImageFileType.cpp.

References osg::ImageFileType::_flags.

Referenced by osg::ImageFileHandler::getSuffixList().

00117 {
00118     return _flags;
00119 }

bool ImageFileType::validateHeader const Char8 fileName,
bool &  implemented
[virtual, inherited]
 

Reimplemented in osg::GIFImageFileType, osg::JPGImageFileType, osg::PNGImageFileType, osg::SGIImageFileType, and osg::TIFImageFileType.

Definition at line 132 of file OSGImageFileType.cpp.

Referenced by osg::ImageFileHandler::getFileType().

00133 {
00134     implemented = false;
00135     return true;
00136 }

UInt64 ImageFileType::restore ImagePtr image,
const UChar8 buffer,
Int32  memSize = -1
[static, inherited]
 

Tries to restore the Imagedata from the given memblock. The buffer must include a ImageFileType::Head data block.

Definition at line 223 of file OSGImageFileType.cpp.

References FDEBUG, FWARNING, osg::ImageFileHandler::getFileType(), osg::NullFC, osg::Image::OSG_UINT8_IMAGEDATA, osg::ImageFileType::restoreData(), and osg::ImageFileHandler::the().

Referenced by osg::ClusterViewBuffer::recv(), osg::ImageFileHandler::restore(), and osg::SimpleSceneManager::useOpenSGLogo().

00225 {
00226     unsigned long   imageSize, headSize = sizeof(Head);
00227     unsigned long   size = 0, attachmentSize;
00228     Head            head;
00229     const UChar8    *data = buffer ? (buffer + headSize) : 0;
00230     ImageFileType   *type;
00231     const char      *mimeType;
00232     Image::Type     dataType;
00233 
00234     if ((image != osg::NullFC) && buffer && (memSize >= headSize)) {
00235 
00236         // Copy header. Otherwise netToHost would change the original
00237         // data structur.
00238         memcpy(&head,buffer,sizeof(Head));
00239         head.netToHost();
00240         mimeType = head.mimeType;
00241         
00242         if((type = ImageFileHandler::the().getFileType(mimeType, 0)))
00243         {
00244             if (head.dataType)
00245               dataType = Image::Type(head.dataType);
00246             else
00247               dataType = Image::OSG_UINT8_IMAGEDATA;
00248 
00249             image->set(Image::PixelFormat(head.pixelFormat), head.width,
00250                        head.height, head.depth, head.mipmapCount,
00251                        head.frameCount, float(head.frameDelay) / 1000.0, 0,
00252                        dataType,true,head.sideCount );
00253             imageSize = static_cast<unsigned long>(
00254                 type->restoreData(image, data, memSize - headSize));
00255             attachmentSize = 0; // head->attachmentSize;
00256 
00257             /*
00258             if ((attachmentSize = head->attachmentSize))
00259             {
00260                 attData = (char*)(buffer + headSize + imageSize);
00261                 attKey = attData;
00262                 attValue = 0;
00263                 for (i = 0; i < (attachmentSize-1); i++) {
00264                     if (attData[i] == 0) 
00265                         if (attKey) {
00266                             attValue = &(attData[i+1]);
00267                             image->setAttachmentField (attKey,attValue);
00268                             attKey = attValue = 0;
00269                         }
00270                         else
00271                             attKey = &(attData[i+1]);
00272                 }
00273                 if (attKey || attValue) {
00274                     FFATAL (("Attachment restore error\n"));
00275                 }
00276             }
00277             */
00278 
00279             size = headSize + imageSize + attachmentSize;
00280       
00281             FDEBUG (( "Restore image data: %lu (%lu/%lu/%lu)\n",
00282                       size, headSize, imageSize, attachmentSize ));
00283 
00284         }
00285         else
00286         {
00287             imageSize = 0;
00288             FWARNING(("Can not restore image data, invalid mimeType: %s\n",
00289                       mimeType ? mimeType : "Unknown"));
00290         }
00291 
00292       
00293     }
00294 
00295     return size;
00296 }

UInt64 ImageFileType::store const ImagePtr image,
const char *  mimeType,
UChar8 buffer,
Int32  memSize = -1
[static, inherited]
 

Tries to store the raster data to the given mem block. Will include a ImageFileType::Head description and the data encoded as 'mimeType'

Definition at line 304 of file OSGImageFileType.cpp.

References osg::ImageFileHandler::getFileType(), osg::ImageFileType::store(), and osg::ImageFileHandler::the().

Referenced by osg::ClusterViewBuffer::send(), osg::ImageFileType::store(), and osg::ImageFileHandler::store().

00306 {
00307   ImageFileType   *type = ImageFileHandler::the().getFileType(mimeType);
00308   
00309   return type ? type->store(image, buffer, memSize) : 0;
00310 }

UInt64 ImageFileType::store const ImagePtr image,
UChar8 buffer,
Int32  memSize = -1
[inherited]
 

Tries to store the raster data to the given mem block. Will include a ImageFileType::Head description for the derived concreate mimeType.

Definition at line 318 of file OSGImageFileType.cpp.

References osg::ImageFileType::Head::attachmentSize, osg::ImageFileType::Head::dataType, osg::ImageFileType::Head::depth, FDEBUG, FFATAL, osg::ImageFileType::Head::frameCount, osg::ImageFileType::Head::frameDelay, osg::ImageFileType::getMimeType(), osg::ImageFileType::Head::height, osg::ImageFileType::Head::hostToNet(), osg::ImageFileType::Head::mimeType, osg::ImageFileType::Head::mipmapCount, osg::ImageFileType::Head::pixelFormat, osg::ImageFileType::Head::sideCount, osg::ImageFileType::storeData(), and osg::ImageFileType::Head::width.

00320 {
00321     Head            *head;
00322     unsigned long   dataSize = 0, headSize = sizeof(Head);
00323     unsigned long   attachmentSize;
00324     UChar8          *dest;
00325     const UChar8    *src = image->getData();
00326     std::map<std::string, std::string>::const_iterator aI;
00327     std::string     value;
00328 
00329     attachmentSize = 0;
00330 
00331     // get attachment size
00332     /*
00333     ImageGenericAttPtr att=ImageGenericAttPtr::dcast(
00334         const_cast<Image*>(image.getCPtr())->findAttachment(
00335             ImageGenericAtt::getClassType().getGroupId()));
00336     if(att != NullFC)
00337     {
00338         for(i = 0; i < (att->getType().getNumFieldDescs()-1); ++i)
00339         {
00340             FieldDescription *fieldDesc=att->getType().getFieldDescription(i);
00341             Field *field=att->getField(i);
00342             if (fieldDesc && field) 
00343             {
00344                 field->getValueByStr(value);
00345                 attachmentSize += strlen( fieldDesc->getName().str() ) + 1;
00346                 attachmentSize += value.length() + 1;
00347               
00348                 std::cout << fieldDesc->getName().str() << std::endl; 
00349                 std::cout << value << std::endl; 
00350             }
00351             else 
00352             {
00353                 FFATAL (("Invalid Attachment in ImageFileType::store()\n"));
00354             }
00355         }
00356     }
00357     */
00358 
00359     if (buffer) 
00360     {
00361         head = (Head *)buffer;
00362 
00363         head->pixelFormat    = image->getPixelFormat();
00364         head->width          = image->getWidth();
00365         head->height         = image->getHeight();
00366         head->depth          = image->getDepth();
00367         head->mipmapCount    = image->getMipMapCount();
00368         head->frameCount     = image->getFrameCount();
00369         head->frameDelay     = short(image->getFrameDelay() * 1000.0);
00370         head->sideCount      = image->getSideCount();
00371         head->dataType       = image->getDataType();
00372         head->attachmentSize = static_cast<unsigned short>(attachmentSize);
00373         head->hostToNet();
00374       
00375         strcpy(head->mimeType, getMimeType());
00376       
00377         dest = (UChar8 *) (buffer + headSize);
00378 
00379         if (src) 
00380             dataSize = static_cast<unsigned long>(
00381                 storeData(image, dest, memSize - headSize));
00382 
00383         dest = (UChar8 *) (buffer + headSize + dataSize);
00384 
00385         /*
00386         if(att != NullFC)
00387         {
00388             for(i = 0; i < (att->getType().getNumFieldDescs()-1); ++i)
00389             {
00390                 FieldDescription *fieldDesc=att->getType().getFieldDescription(i);
00391                 Field *field=att->getField(i);
00392                 if (field && fieldDesc) 
00393                 {
00394                     field->getValueByStr(value);
00395 
00396                     l = strlen( fieldDesc->getName().str() );
00397                     for (i = 0; i < l; i++)
00398                       *dest++ = fieldDesc->getName().str()[i];
00399                     *dest++ = 0;
00400                     l = value.length();
00401                     for (i = 0; i < l; i++)
00402                       *dest++ = value[i];
00403                     *dest++ = 0;
00404                 }
00405                 else
00406                 {
00407                     FFATAL (("Invalid Attachment in ImageFileType::store()\n"));
00408                 }
00409             }
00410         }
00411         */
00412 
00413         FDEBUG (( "Store image data: %lu (%lu/%lu/%lu)\n",
00414                   headSize + dataSize + attachmentSize, headSize, dataSize, 
00415                   attachmentSize ));
00416     }
00417     else {
00418         FFATAL (("Invalid buffer in ImageFileType::store()\n"));
00419     }
00420   
00421     return (headSize + dataSize + attachmentSize);
00422 
00423 }

UInt64 ImageFileType::maxBufferSize const ImagePtr image  )  [virtual, inherited]
 

Returns the max buffer size needed to store the Image (Head + mimeType specific data block)

Definition at line 430 of file OSGImageFileType.cpp.

References FINFO.

Referenced by osg::ClusterViewBuffer::send(), and osg::ImageFileHandler::store().

00431 {
00432     std::string value;
00433     unsigned long size, attachmentSize;
00434     unsigned long imageSize = image->getSize(), headSize = sizeof(Head);
00435 
00436     std::map<std::string, std::string>::const_iterator aI;
00437 
00438     attachmentSize = 0;
00439 
00440     // get attachment size
00441         /*
00442     ImageGenericAttPtr att=ImageGenericAttPtr::dcast(
00443         const_cast<Image*>(image.getCPtr())->findAttachment(
00444             ImageGenericAtt::getClassType().getGroupId()));
00445     if(att != NullFC)
00446     {
00447         for(i = 0; i < (att->getType().getNumFieldDescs()-1); ++i)
00448         {
00449             FieldDescription *fieldDesc=att->getType().getFieldDescription(i);
00450             Field *field=att->getField(i);
00451             if (field && fieldDesc) 
00452             {
00453                 field->getValueByStr(value);
00454                 attachmentSize += strlen( fieldDesc->getName().str() ) + 1;
00455                 attachmentSize += value.length() + 1;
00456             }
00457             else 
00458             {
00459                 FFATAL (("Invalid Attachment in ImageFileType::maxBufferSize()\n"));
00460             }
00461         }
00462     }
00463         */
00464 
00465     size = headSize + imageSize + attachmentSize;
00466   
00467     FINFO (( "ImageFileType::maxBufferSize(): %lu (%lu/%lu/%lu)\n", 
00468              size, headSize, imageSize, attachmentSize ));
00469   
00470     return size;
00471 }

UInt64 ImageFileType::restoreData ImagePtr image,
const UChar8 buffer,
Int32  memSize = -1
[virtual, inherited]
 

Abstract restore method. Should be overwriten by a concrete derived class. Tries to restore the image data from the given memblock.

Reimplemented in osg::DATImageFileType, osg::JPGImageFileType, osg::MTDImageFileType, and osg::PNGImageFileType.

Definition at line 193 of file OSGImageFileType.cpp.

References FWARNING, and osg::ImageFileType::getMimeType().

Referenced by osg::ImageFileType::restore().

00196 {
00197   FWARNING(("ImageXFileType::restoreData() not impl. for mimeType %s\n",
00198             getMimeType()));
00199 
00200   return 0;
00201 }

UInt64 ImageFileType::storeData const ImagePtr image,
UChar8 buffer,
Int32  memSize = -1
[virtual, inherited]
 

Abstract restore method. Should be overwriten by a concrete derived class. Tries to store the given image data to the given memblock

Reimplemented in osg::DATImageFileType, osg::JPGImageFileType, osg::MTDImageFileType, and osg::PNGImageFileType.

Definition at line 208 of file OSGImageFileType.cpp.

References FWARNING, and osg::ImageFileType::getMimeType().

Referenced by osg::ImageFileType::store().

00211 {
00212   FWARNING(("ImageXFileType::storeData() not impl. for mimeType %s\n",
00213             getMimeType()));
00214   
00215   return 0;
00216 }

void ImageFileType::dump void   )  [inherited]
 

The dump method just writes some object debugging info to the LOG stream

Definition at line 477 of file OSGImageFileType.cpp.

References osg::ImageFileType::_suffixList, osg::ImageFileType::getMimeType(), osg::LOG_DEBUG, and SLOG.

00478 {
00479     std::list<IDString>::iterator    sI;
00480 
00481     SLOG << getMimeType();
00482 
00483     if(_suffixList.empty())
00484     {
00485         SLOG << ": Suffix: ";
00486         for(sI = _suffixList.begin(); sI != _suffixList.end(); sI++)
00487         {
00488             Log().stream(OSG::LOG_DEBUG) << sI->str() << " ";
00489         }
00490     }
00491 
00492     std::cerr << std::endl;
00493 }


Member Data Documentation

TGAImageFileType TGAImageFileType::_the [static, private]
 

Referenced by the().


The documentation for this class was generated from the following files:
Generated on Thu Aug 25 04:14:24 2005 for OpenSG by  doxygen 1.4.3