~ubuntu-branches/ubuntu/trusty/digikam/trusty

« back to all changes in this revision

Viewing changes to extra/libkdcraw/libraw/RawSpeed/TiffIFDBE.cpp

  • Committer: Package Import Robot
  • Author(s): Rohan Garg
  • Date: 2012-11-26 18:24:20 UTC
  • mfrom: (1.9.1) (3.1.23 experimental)
  • Revision ID: package-import@ubuntu.com-20121126182420-qoy6z0nx4ai0wzcl
Tags: 4:3.0.0~beta3-0ubuntu1
* New upstream release
  - Add build-deps :  libhupnp-dev, libqtgstreamer-dev, libmagickcore-dev
* Merge from debian, remaining changes:
  - Make sure libqt4-opengl-dev, libgl1-mesa-dev and libglu1-mesa-dev only
    install on i386,amd64 and powerpc
  - Depend on libtiff-dev instead of libtiff4-dev
  - Drop digikam breaks/replaces kipi-plugins-common since we're past the
    LTS release now
  - digikam to recommend mplayerthumbs | ffmpegthumbs. We currently only
    have latter in the archives, even though former is also supposed to
    be part of kdemultimedia. (LP: #890059)
  - kipi-plugins to recommend www-browser rather than konqueror directly
    since 2.8 no direct usage of konqueror is present in the flickr
    plugin anymore (LP: #1011211)
  - Keep kubuntu_mysqld_executable_name.diff
  - Don't install libkipi translations
  - Keep deps on libcv-dev, libcvaux-dev
  - Keep split packaging of libraries
  - Replace icons from KDE 3 time in debian/xpm.d/*.xpm with the new
    versions (LP: #658047)
* Update debian/not-installed

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "StdAfx.h"
 
2
#include "TiffIFDBE.h"
 
3
#include "TiffEntryBE.h"
 
4
/*
 
5
    RawSpeed - RAW file decoder.
 
6
 
 
7
    Copyright (C) 2009 Klaus Post
 
8
 
 
9
    This library is free software; you can redistribute it and/or
 
10
    modify it under the terms of the GNU Lesser General Public
 
11
    License as published by the Free Software Foundation; either
 
12
    version 2 of the License, or (at your option) any later version.
 
13
 
 
14
    This library is distributed in the hope that it will be useful,
 
15
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
17
    Lesser General Public License for more details.
 
18
 
 
19
    You should have received a copy of the GNU Lesser General Public
 
20
    License along with this library; if not, write to the Free Software
 
21
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
22
 
 
23
    http://www.klauspost.com
 
24
*/
 
25
 
 
26
namespace RawSpeed {
 
27
 
 
28
TiffIFDBE::TiffIFDBE() {
 
29
  endian = big;
 
30
}
 
31
 
 
32
TiffIFDBE::TiffIFDBE(FileMap* f, uint32 offset) {
 
33
  endian = big;
 
34
  int entries;
 
35
  CHECKSIZE(offset);
 
36
 
 
37
  const unsigned char* data = f->getData(offset);
 
38
  entries = (unsigned short)data[0] << 8 | (unsigned short)data[1];    // Directory entries in this IFD
 
39
 
 
40
  CHECKSIZE(offset + 2 + entries*4);
 
41
  for (int i = 0; i < entries; i++) {
 
42
    TiffEntryBE *t = new TiffEntryBE(f, offset + 2 + i*12);
 
43
 
 
44
    if (t->tag == SUBIFDS || t->tag == EXIFIFDPOINTER || t->tag == DNGPRIVATEDATA || t->tag == MAKERNOTE) {   // subIFD tag
 
45
      if (t->tag == DNGPRIVATEDATA) {
 
46
        try {
 
47
          TiffIFD *maker_ifd = parseDngPrivateData(t);
 
48
          mSubIFD.push_back(maker_ifd);
 
49
          delete(t);
 
50
        } catch (TiffParserException) {
 
51
          // Unparsable private data are added as entries
 
52
          mEntry[t->tag] = t;
 
53
        }
 
54
      } else if (t->tag == MAKERNOTE || t->tag == 0x2e) {
 
55
        try {
 
56
          mSubIFD.push_back(parseMakerNote(f, t->getDataOffset(), endian));
 
57
          delete(t);
 
58
        } catch (TiffParserException) {
 
59
          // Unparsable makernotes are added as entries
 
60
          mEntry[t->tag] = t;
 
61
        }
 
62
      } else {
 
63
        const unsigned int* sub_offsets = t->getIntArray();
 
64
        try {
 
65
          for (uint32 j = 0; j < t->count; j++) {
 
66
            mSubIFD.push_back(new TiffIFDBE(f, sub_offsets[j]));
 
67
          }
 
68
          delete(t);
 
69
        } catch (TiffParserException) {
 
70
          // Unparsable subifds are added as entries
 
71
          mEntry[t->tag] = t;
 
72
        }
 
73
      }
 
74
    } else {  // Store as entry
 
75
      mEntry[t->tag] = t;
 
76
    }
 
77
  }
 
78
  data = f->getDataWrt(offset + 2 + entries * 12);
 
79
  nextIFD = (unsigned int)data[0] << 24 | (unsigned int)data[1] << 16 | (unsigned int)data[2] << 8 | (unsigned int)data[3];
 
80
}
 
81
 
 
82
 
 
83
TiffIFDBE::~TiffIFDBE(void) {
 
84
}
 
85
 
 
86
} // namespace RawSpeed