Project

General

Profile

Patch #1271 » ps.diff

adds more printstructureSupport - Ben Touchette, 19 Jan 2017 14:25

View differences:

trunk/include/exiv2/asfvideo.hpp (revision 4698) → trunk/include/exiv2/asfvideo.hpp (working copy)
75 75
        //@{
76 76
        void readMetadata();
77 77
        void writeMetadata();
78
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
78 79
        //@}
79 80

  
80 81
        //! @name Accessors
trunk/include/exiv2/bmpimage.hpp (revision 4698) → trunk/include/exiv2/bmpimage.hpp (working copy)
85 85
        //! @name Manipulators
86 86
        //@{
87 87
        void readMetadata();
88
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
88 89
        /*!
89 90
          @brief Todo: Write metadata back to the image. This method is not
90 91
              yet(?) implemented. Calling it will throw an Error(31).
trunk/include/exiv2/crwimage.hpp (revision 4698) → trunk/include/exiv2/crwimage.hpp (working copy)
88 88
        //@{
89 89
        void readMetadata();
90 90
        void writeMetadata();
91
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
91 92
        /*!
92 93
          @brief Not supported. CRW format does not contain IPTC metadata.
93 94
              Calling this function will throw an Error(32).
trunk/include/exiv2/epsimage.hpp (revision 4698) → trunk/include/exiv2/epsimage.hpp (working copy)
84 84
        //! @name Manipulators
85 85
        //@{
86 86
        void readMetadata();
87
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
87 88
        void writeMetadata();
88 89
        /*!
89 90
          @brief Not supported.
trunk/include/exiv2/gifimage.hpp (revision 4698) → trunk/include/exiv2/gifimage.hpp (working copy)
86 86
        //! @name Manipulators
87 87
        //@{
88 88
        void readMetadata();
89
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
89 90
        /*!
90 91
          @brief Todo: Write metadata back to the image. This method is not
91 92
              yet(?) implemented. Calling it will throw an Error(31).
trunk/include/exiv2/matroskavideo.hpp (revision 4698) → trunk/include/exiv2/matroskavideo.hpp (working copy)
84 84
        //@{
85 85
        void readMetadata();
86 86
        void writeMetadata();
87
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
87 88
        //@}
88 89

  
89 90
        //! @name Accessors
trunk/include/exiv2/mrwimage.hpp (revision 4698) → trunk/include/exiv2/mrwimage.hpp (working copy)
79 79

  
80 80
        //! @name Manipulators
81 81
        //@{
82
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
82 83
        void readMetadata();
83 84
        /*!
84 85
          @brief Todo: Write metadata back to the image. This method is not
trunk/include/exiv2/orfimage.hpp (revision 4698) → trunk/include/exiv2/orfimage.hpp (working copy)
79 79

  
80 80
        //! @name Manipulators
81 81
        //@{
82
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
82 83
        void readMetadata();
83 84
        void writeMetadata();
84 85
        /*!
trunk/include/exiv2/pgfimage.hpp (revision 4698) → trunk/include/exiv2/pgfimage.hpp (working copy)
83 83

  
84 84
        //! @name Manipulators
85 85
        //@{
86
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
86 87
        void readMetadata();
87 88
        void writeMetadata();
88 89
        //@}
trunk/include/exiv2/psdimage.hpp (revision 4698) → trunk/include/exiv2/psdimage.hpp (working copy)
86 86

  
87 87
        //! @name Manipulators
88 88
        //@{
89
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
89 90
        void readMetadata();
90 91
        void writeMetadata();
91 92
        /*!
trunk/include/exiv2/quicktimevideo.hpp (revision 4698) → trunk/include/exiv2/quicktimevideo.hpp (working copy)
71 71

  
72 72
        //! @name Manipulators
73 73
        //@{
74
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
74 75
        void readMetadata();
75 76
        void writeMetadata();
76 77
        //@}
trunk/include/exiv2/rafimage.hpp (revision 4698) → trunk/include/exiv2/rafimage.hpp (working copy)
78 78

  
79 79
        //! @name Manipulators
80 80
        //@{
81
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
81 82
        void readMetadata();
82 83
        /*!
83 84
          @brief Todo: Write metadata back to the image. This method is not
trunk/include/exiv2/riffvideo.hpp (revision 4698) → trunk/include/exiv2/riffvideo.hpp (working copy)
71 71

  
72 72
        //! @name Manipulators
73 73
        //@{
74
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
74 75
        void readMetadata();
75 76
        void writeMetadata();
76 77
        //@}
......
185 186
        RiffVideo(const RiffVideo& rhs);
186 187
        //! Assignment operator
187 188
        RiffVideo& operator=(const RiffVideo& rhs);
189
        bool equalsRiffTag(Exiv2::DataBuf& buf ,const char* str);
188 190
        //@}
189 191

  
190 192
    private:
193
        const static int RIFF_TAG_SIZE;
194
        const static char* RIFF_CHUNK_HEADER_ICCP;
195
        const static char* RIFF_CHUNK_HEADER_EXIF;
196
        const static char* RIFF_CHUNK_HEADER_XMP;
191 197
        //! Variable to check the end of metadata traversing.
192 198
        bool continueTraversing_;
193 199
        //! Variable which stores current stream being processsed.
trunk/include/exiv2/rw2image.hpp (revision 4698) → trunk/include/exiv2/rw2image.hpp (working copy)
76 76

  
77 77
        //! @name Manipulators
78 78
        //@{
79
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
79 80
        void readMetadata();
80 81
        /*!
81 82
          @brief Todo: Write metadata back to the image. This method is not
trunk/include/exiv2/tgaimage.hpp (revision 4698) → trunk/include/exiv2/tgaimage.hpp (working copy)
86 86

  
87 87
        //! @name Manipulators
88 88
        //@{
89
        void printStructure(std::ostream& out, PrintStructureOption option,int depth);
89 90
        void readMetadata();
90 91
        /*!
91 92
          @brief Todo: Write metadata back to the image. This method is not
trunk/src/asfvideo.cpp (revision 4698) → trunk/src/asfvideo.cpp (working copy)
310 310
    {
311 311
    }
312 312

  
313
    void AsfVideo::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
314
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
315
        IoCloser closer(*io_);
316
        // Ensure this is the correct image type
317
        if (!isAsfType(*io_, true)) {
318
            if (io_->error() || io_->eof()) throw Error(14);
319
            throw Error(3, "ASF");
320
        }
321
    } // AsfVideo::printStructure
322

  
313 323
    void AsfVideo::readMetadata()
314 324
    {
315 325
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
trunk/src/basicio.cpp (revision 4698) → trunk/src/basicio.cpp (working copy)
2151 2151
    }
2152 2152
#endif
2153 2153

  
2154
    //! Internal Pimpl structure of class LocalNetFileIo.
2155
    class LocalNetFileIo::LocalNetFileImpl : public Impl  {
2156
    public:
2157
        //! Constructor
2158
        LocalNetFileImpl(const std::string&  path,  size_t blockSize);
2159
#ifdef EXV_UNICODE_PATH
2160
        //! Constructor accepting a unicode path in an std::wstring
2161
        LocalNetFileImpl(const std::wstring& wpath, size_t blockSize);
2162
#endif
2163
        Exiv2::Uri hostInfo_; //!< the host information extracted from the path
2164

  
2165
        // METHODS
2166
        /*!
2167
          @brief Get the length (in bytes) of the remote file.
2168
          @return Return -1 if the size is unknown. Otherwise it returns the length of remote file (in bytes).
2169
          @throw Error if the server returns the error code.
2170
         */
2171
        long getFileLength();
2172
        /*!
2173
          @brief Get the data by range.
2174
          @param lowBlock The start block index.
2175
          @param highBlock The end block index.
2176
          @param response The data from the server.
2177
          @throw Error if the server returns the error code.
2178
          @note Set lowBlock = -1 and highBlock = -1 to get the whole file content.
2179
         */
2180
        void getDataByRange(long lowBlock, long highBlock, std::string& response);
2181
        /*!
2182
          @brief Submit the data to the remote machine. The data replace a part of the remote file.
2183
                The replaced part of remote file is indicated by from and to parameters.
2184
          @param data The data are submitted to the remote machine.
2185
          @param size The size of data.
2186
          @param from The start position in the remote file where the data replace.
2187
          @param to The end position in the remote file where the data replace.
2188
          @note The data are submitted to the remote machine via POST. This requires the script file
2189
                on the remote machine to receive the data and edit the remote file. The server-side
2190
                script may be specified with the environment string EXIV2_HTTP_POST. The default value is
2191
                "/exiv2.php". More info is available at http://dev.exiv2.org/wiki/exiv2
2192
          @throw Error if it fails.
2193
         */
2194
        void writeRemote(const byte* data, size_t size, long from, long to);
2195
    protected:
2196
        // NOT IMPLEMENTED
2197
        LocalNetFileImpl(const LocalNetFileImpl& rhs); //!< Copy constructor
2198
        LocalNetFileImpl& operator=(const LocalNetFileImpl& rhs); //!< Assignment
2199
    }; // class LocalNetFileIo::LocalNetFileImpl
2200

  
2201
    LocalNetFileIo::LocalNetFileImpl::LocalNetFileImpl(const std::string& url, size_t blockSize):Impl(url, blockSize)
2202
    {
2203
        hostInfo_ = Exiv2::Uri::Parse(url);
2204
        Exiv2::Uri::Decode(hostInfo_);
2205
    }
2206
#ifdef EXV_UNICODE_PATH
2207
    LocalNetFileIo::LocalNetFileImpl::LocalNetFileImpl(const std::wstring& wurl, size_t blockSize):Impl(wurl, blockSize)
2208
    {
2209
        std::string url;
2210
        url.assign(wurl.begin(), wurl.end());
2211
        path_ = url;
2212

  
2213
        hostInfo_ = Exiv2::Uri::Parse(url);
2214
        Exiv2::Uri::Decode(hostInfo_);
2215
    }
2216
#endif
2217

  
2218
    long LocalNetFileIo::LocalNetFileImpl::getFileLength()
2219
    {
2220
        return 0L;
2221
    }
2222

  
2223
    void LocalNetFileIo::LocalNetFileImpl::getDataByRange(long lowBlock, long highBlock, std::string& response)
2224
    {
2225
    }
2226

  
2227
    void LocalNetFileIo::LocalNetFileImpl::writeRemote(const byte* data, size_t size, long from, long to)
2228
    {
2229
    }
2230
    LocalNetFileIo::LocalNetFileIo(const std::string& url, size_t blockSize)
2231
    {
2232
        p_ = new LocalNetFileImpl(url, blockSize);
2233
    }
2234
#ifdef EXV_UNICODE_PATH
2235
    LocalNetFileIo::LocalNetFileIo(const std::wstring& wurl, size_t blockSize)
2236
    {
2237
         p_ = new LocalNetFileImpl(wurl, blockSize);
2238
    }
2239
#endif
2240

  
2154 2241
#if EXV_USE_CURL == 1
2155 2242
    //! Internal Pimpl structure of class RemoteIo.
2156 2243
    class CurlIo::CurlImpl : public Impl  {
trunk/src/bmpimage.cpp (revision 4698) → trunk/src/bmpimage.cpp (working copy)
121 121
        }
122 122
    } // BmpImage::readMetadata
123 123

  
124
    void BmpImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
125
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
126
        IoCloser closer(*io_);
127
        // Ensure this is the correct image type
128
        if (!isBmpType(*io_, true)) {
129
            if (io_->error() || io_->eof()) throw Error(14);
130
            throw Error(3, "BMP");
131
        }
132
    } // BmpImage::printStructure
133

  
124 134
    void BmpImage::writeMetadata()
125 135
    {
126 136
        // Todo: implement me!
trunk/src/crwimage.cpp (revision 4698) → trunk/src/crwimage.cpp (working copy)
145 145

  
146 146
    } // CrwImage::readMetadata
147 147

  
148
    void CrwImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
149
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
150
        IoCloser closer(*io_);
151
        // Ensure this is the correct image type
152
        if (!isCrwType(*io_, true)) {
153
            if (io_->error() || io_->eof()) throw Error(14);
154
            throw Error(3, "CRW");
155
        }
156
    } // CrwImage::printStructure
157

  
148 158
    void CrwImage::writeMetadata()
149 159
    {
150 160
#ifdef DEBUG
trunk/src/epsimage.cpp (revision 4698) → trunk/src/epsimage.cpp (working copy)
1109 1109
        throw Error(32, "Image comment", "EPS");
1110 1110
    }
1111 1111

  
1112
    void EpsImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
1113
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
1114
        IoCloser closer(*io_);
1115
        // Ensure this is the correct image type
1116
        if (!isEpsType(*io_, true)) {
1117
            if (io_->error() || io_->eof()) throw Error(14);
1118
            throw Error(3, "EPS");
1119
        }
1120
    } // EpsImage::printStructure
1121

  
1112 1122
    void EpsImage::readMetadata()
1113 1123
    {
1114 1124
        #ifdef DEBUG
trunk/src/gifimage.cpp (revision 4698) → trunk/src/gifimage.cpp (working copy)
75 75
        throw(Error(32, "Image comment", "GIF"));
76 76
    }
77 77

  
78
    void GifImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
79
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
80
        IoCloser closer(*io_);
81
        // Ensure this is the correct image type
82
        if (!isGifType(*io_, true)) {
83
            if (io_->error() || io_->eof()) throw Error(14);
84
            throw Error(3, "GIF");
85
        }
86
    } // GifImage::printStructure
87

  
78 88
    void GifImage::readMetadata()
79 89
    {
80 90
#ifdef DEBUG
trunk/src/matroskavideo.cpp (revision 4698) → trunk/src/matroskavideo.cpp (working copy)
496 496
    {
497 497
    }
498 498

  
499
    void MatroskaVideo::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
500
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
501
        IoCloser closer(*io_);
502
        // Ensure this is the correct image type
503
        if (!isMkvType(*io_, true)) {
504
            if (io_->error() || io_->eof()) throw Error(14);
505
            throw Error(3, "MKV");
506
        }
507
    } // MatroskaVideo::printStructure
508

  
499 509
    void MatroskaVideo::readMetadata()
500 510
    {
501 511
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
trunk/src/mrwimage.cpp (revision 4698) → trunk/src/mrwimage.cpp (working copy)
95 95
        throw(Error(32, "Image comment", "MRW"));
96 96
    }
97 97

  
98
    void MrwImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
99
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
100
        IoCloser closer(*io_);
101
        // Ensure this is the correct image type
102
        if (!isMrwType(*io_, true)) {
103
            if (io_->error() || io_->eof()) throw Error(14);
104
            throw Error(3, "MRW");
105
        }
106
    } // MrwImage::printStructure
107

  
98 108
    void MrwImage::readMetadata()
99 109
    {
100 110
#ifdef DEBUG
trunk/src/orfimage.cpp (revision 4698) → trunk/src/orfimage.cpp (working copy)
89 89
        throw(Error(32, "Image comment", "ORF"));
90 90
    }
91 91

  
92
    void OrfImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
93
        std::cout << "ORF IMAGE" << std::endl;
94
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
95
        IoCloser closer(*io_);
96
        // Ensure this is the correct image type
97
        if (!isOrfType(*io_, true)) {
98
            if (io_->error() || io_->eof()) throw Error(14);
99
            throw Error(3, "ORF");
100
        }
101
        io_->seek(0,BasicIo::beg);
102
        printTiffStructure(io(),out,option,depth-1);
103
    } // OrfImage::printStructure
104

  
92 105
    void OrfImage::readMetadata()
93 106
    {
94 107
#ifdef DEBUG
trunk/src/pgfimage.cpp (revision 4698) → trunk/src/pgfimage.cpp (working copy)
108 108
        }
109 109
    } // PgfImage::PgfImage
110 110

  
111
    void PgfImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
112
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
113
        IoCloser closer(*io_);
114
        // Ensure this is the correct image type
115
        if (!isPgfType(*io_, true)) {
116
            if (io_->error() || io_->eof()) throw Error(14);
117
            throw Error(3, "PGF");
118
        }
119
    } // PgfImage::printStructure
120

  
111 121
    void PgfImage::readMetadata()
112 122
    {
113 123
#ifdef DEBUG
trunk/src/psdimage.cpp (revision 4698) → trunk/src/psdimage.cpp (working copy)
141 141
        throw(Error(32, "Image comment", "Photoshop"));
142 142
    }
143 143

  
144
    void PsdImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
145
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
146
        IoCloser closer(*io_);
147
        // Ensure this is the correct image type
148
        if (!isPsdType(*io_, true)) {
149
            if (io_->error() || io_->eof()) throw Error(14);
150
            throw Error(3, "PSD");
151
        }
152
    } // PsdImage::printStructure
153

  
144 154
    void PsdImage::readMetadata()
145 155
    {
146 156
#ifdef DEBUG
trunk/src/quicktimevideo.cpp (revision 4698) → trunk/src/quicktimevideo.cpp (working copy)
626 626
    {
627 627
    }
628 628

  
629
    void QuickTimeVideo::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
630
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
631
        IoCloser closer(*io_);
632
        // Ensure this is the correct image type
633
        if (!isQTimeType(*io_, true)) {
634
            if (io_->error() || io_->eof()) throw Error(14);
635
            throw Error(3, "QT");
636
        }
637
    } // QuickTimeVideo::printStructure
629 638

  
630 639
    void QuickTimeVideo::readMetadata()
631 640
    {
trunk/src/rafimage.cpp (revision 4698) → trunk/src/rafimage.cpp (working copy)
95 95
        throw(Error(32, "Image comment", "RAF"));
96 96
    }
97 97

  
98
    void RafImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
99
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
100
        IoCloser closer(*io_);
101
        // Ensure this is the correct image type
102
        if (!isRafType(*io_, true)) {
103
            if (io_->error() || io_->eof()) throw Error(14);
104
            throw Error(3, "RAF");
105
        }
106
    } // RafImage::printStructure
107

  
98 108
    void RafImage::readMetadata()
99 109
    {
100 110
#ifdef DEBUG
trunk/src/riffvideo.cpp (revision 4698) → trunk/src/riffvideo.cpp (working copy)
41 41
#include "tags_int.hpp"
42 42
#include "types.hpp"
43 43
#include "tiffimage_int.hpp"
44
#include "image_int.hpp"
44 45
// + standard includes
45 46
#include <cmath>
46 47

  
......
516 517
        return "video/riff";
517 518
    }
518 519

  
520
    const int RiffVideo::RIFF_TAG_SIZE = 0x4;
521
    const char* RiffVideo::RIFF_CHUNK_HEADER_ICCP = "ICCP";
522
    const char* RiffVideo::RIFF_CHUNK_HEADER_EXIF = "EXIF";
523
    const char* RiffVideo::RIFF_CHUNK_HEADER_XMP  = "XMP ";
524

  
525
    /*!
526
     @brief Function used to check equality of a Tags with a
527
     particular string (ignores case while comparing).
528
     @param buf Data buffer that will contain Tag to compare
529
     @param str char* Pointer to string
530
     @return Returns true if the buffer value is equal to string.
531
     */
532
    bool RiffVideo::equalsRiffTag(Exiv2::DataBuf& buf, const char* str) {
533
        for(int i = 0; i < 4; i++ )
534
            if(toupper(buf.pData_[i]) != str[i])
535
                return false;
536
        return true;
537
    }
538

  
539
    void RiffVideo::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
540
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
541
        IoCloser closer(*io_);
542
        // Ensure this is the correct image type
543
        if (!isRiffType(*io_, true)) {
544
            if (io_->error() || io_->eof()) throw Error(14);
545
            throw Error(3, "RIFF");
546
        }
547

  
548
        bool bPrint  = option==kpsBasic || option==kpsRecursive;
549
        if ( bPrint || option == kpsXMP || option == kpsIccProfile || option == kpsIptcErase ) {
550
            byte      data [RIFF_TAG_SIZE * 2];
551
            io_->read(data, RIFF_TAG_SIZE * 2);
552
            uint64_t filesize = Exiv2::getULong(data + RIFF_TAG_SIZE, littleEndian);
553
            DataBuf  chunkId(5)      ;
554
            chunkId.pData_[4] = '\0' ;
555

  
556
            if ( bPrint ) {
557
                out << Internal::indent(depth)
558
                    << "STRUCTURE OF RIFF FILE: "
559
                    << io().path()
560
                    << std::endl;
561
                out << Internal::indent(depth)
562
                    << Internal::stringFormat(" Chunk |       Length |       Offset | Payload")
563
                    << std::endl;
564
            }
565

  
566
            io_->seek(0,BasicIo::beg); // rewind
567
            while ( !io_->eof() && (uint64_t) io_->tell() < filesize) {
568
                uint64_t offset = (uint64_t) io_->tell();
569
                byte     size_buff[RIFF_TAG_SIZE];
570
                io_->read(chunkId.pData_, RIFF_TAG_SIZE);
571
                io_->read(size_buff, RIFF_TAG_SIZE);
572
                long size = Exiv2::getULong(size_buff, littleEndian);
573
                DataBuf payload(offset?size:RIFF_TAG_SIZE); // header is different from chunks
574
                io_->read(payload.pData_, payload.size_);
575

  
576
                if ( bPrint ) {
577
                    out << Internal::indent(depth)
578
                        << Internal::stringFormat("  %s | %12u | %12u | ", (const char*)chunkId.pData_,size,(uint32_t)offset)
579
                        << Internal::binaryToString(payload,payload.size_>32?32:payload.size_)
580
                        << std::endl;
581
                }
582

  
583
                if ( equalsRiffTag(chunkId, RIFF_CHUNK_HEADER_EXIF) && option==kpsRecursive ) {
584
                    // create memio object with the payload, then print the structure
585
                    BasicIo::AutoPtr p = BasicIo::AutoPtr(new MemIo(payload.pData_,payload.size_));
586
                    printTiffStructure(*p,out,option,depth);
587
                }
588

  
589
                bool bPrintPayload = (equalsRiffTag(chunkId, RIFF_CHUNK_HEADER_XMP) && option==kpsXMP)
590
                                     || (equalsRiffTag(chunkId, RIFF_CHUNK_HEADER_ICCP) && option==kpsIccProfile)
591
                ;
592
                if ( bPrintPayload ) {
593
                    out.write((const char*) payload.pData_,payload.size_);
594
                }
595

  
596
                if ( offset && io_->tell() % 2 ) io_->seek(+1, BasicIo::cur); // skip padding byte on sub-chunks
597
            }
598
        }
599
    } // RiffVideo::printStructure
600

  
519 601
    void RiffVideo::writeMetadata()
520 602
    {
521 603
    } // RiffVideo::writeMetadata
trunk/src/rw2image.cpp (revision 4698) → trunk/src/rw2image.cpp (working copy)
100 100
        throw(Error(32, "Image comment", "RW2"));
101 101
    }
102 102

  
103
    void Rw2Image::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
104
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
105
        IoCloser closer(*io_);
106
        // Ensure this is the correct image type
107
        if (!isRw2Type(*io_, true)) {
108
            if (io_->error() || io_->eof()) throw Error(14);
109
            throw Error(3, "RW2");
110
        }
111
    } // Rw2Image::printStructure
112

  
103 113
    void Rw2Image::readMetadata()
104 114
    {
105 115
#ifdef DEBUG
trunk/src/tgaimage.cpp (revision 4698) → trunk/src/tgaimage.cpp (working copy)
74 74
        throw(Error(32, "Image comment", "TGA"));
75 75
    }
76 76

  
77
    void TgaImage::printStructure(std::ostream& out, PrintStructureOption option, int depth) {
78
        if (io_->open() != 0) throw Error(9, io_->path(), strError());
79
        IoCloser closer(*io_);
80
        // Ensure this is the correct image type
81
        if (!isTgaType(*io_, true)) {
82
            if (io_->error() || io_->eof()) throw Error(14);
83
            throw Error(3, "TGA");
84
        }
85
    } // TgaImage::printStructure
86

  
77 87
    void TgaImage::readMetadata()
78 88
    {
79 89
#ifdef DEBUG
(1-1/3)