Blob Blame History Raw
/*
 * libopenraw - ifd.h
 *
 * Copyright (C) 2006-2007,2012 Hubert Figuiere
 *
 * Defintions taken from libexif:
 * Copyright (C) 2001 Lutz Müller <lutz@users.sourceforge.net>
 *
 * This library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation, either version 3 of
 * the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library.  If not, see
 * <http://www.gnu.org/licenses/>.
 */

/**
 * @brief Define IFD values like fields ID and types
 */

#ifndef OR_INTERNALS_IFD_H_
#define OR_INTERNALS_IFD_H_

namespace OpenRaw {
namespace Internals {
namespace IFD {

#define INCLUDE_EXIF_
#include "libopenraw/exif.h"
#undef INCLUDE_EXIF_

/** type for Exif field/tag
    taken from libexif
*/
typedef enum {
    EXIF_FORMAT_BYTE       =  1,
    EXIF_FORMAT_ASCII      =  2,
    EXIF_FORMAT_SHORT      =  3,
    EXIF_FORMAT_LONG       =  4,
    EXIF_FORMAT_RATIONAL   =  5,
    EXIF_FORMAT_SBYTE      =  6,
    EXIF_FORMAT_UNDEFINED  =  7,
    EXIF_FORMAT_SSHORT     =  8,
    EXIF_FORMAT_SLONG      =  9,
    EXIF_FORMAT_SRATIONAL  = 10,
    EXIF_FORMAT_FLOAT      = 11,
    EXIF_FORMAT_DOUBLE     = 12
} ExifTagType;

typedef enum {
    CFA_RED = 0,
    CFA_GREEN = 1,
    CFA_BLUE = 2,
    CFA_CYAN = 3,
    CFA_MAGENTA = 4,
    CFA_YELLOW = 5,
    CFA_WHITE = 6
} CfaComponent;

typedef enum {
    COMPRESS_NONE = 1,
    COMPRESS_JPEG = 6,
    COMPRESS_LJPEG = 7, /**< Lossless JPEG, see DNG */
    COMPRESS_NIKON_PACK = 32769,
    COMPRESS_NIKON_QUANTIZED = 34713,
    COMPRESS_CUSTOM = 65535 /**< The value everybody seems to use */
} TiffCompress;

struct Rational {
    uint32_t num;
    uint32_t denom;

    operator double() const;
};

struct SRational {
    int32_t num;
    uint32_t denom;

    operator double() const;
};

}
}
}
#endif
/*
  Local Variables:
  mode:c++
  c-file-style:"stroustrup"
  c-file-offsets:((innamespace . 0))
  indent-tabs-mode:nil
  fill-column:80
  End:
*/