Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New ImageTypes enum class #2093

Merged
merged 8 commits into from
Feb 15, 2022
2 changes: 2 additions & 0 deletions .clang-format.optional
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@ AllowShortBlocksOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false

IncludeBlocks: Preserve

...
6 changes: 0 additions & 6 deletions include/exiv2/bmffimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,6 @@ namespace Exiv2
// *****************************************************************************
// class definitions

// Add Base Media File Format to the supported image formats
namespace ImageType
{
const int bmff = 19; //!< BMFF (bmff) image type (see class BMFF)
}

/*!
@brief Class to access BMFF images.
*/
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/bmpimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add Windows Bitmap (BMP) to the supported image formats
namespace ImageType {
const int bmp = 14; //!< Windows bitmap (bmp) image type (see class BmpImage)
}

/*!
@brief Class to access Windows bitmaps. This is just a stub - we only
read width and height.
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/cr2image.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add CR2 to the supported image formats
namespace ImageType {
const int cr2 = 7; //!< CR2 image type (see class Cr2Image)
}

/*!
@brief Class to access raw Canon CR2 images. Exif metadata
is supported directly, IPTC is read from the Exif data, if present.
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/crwimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add CRW to the supported image formats
namespace ImageType {
const int crw = 3; //!< CRW image type (see class CrwImage)
}

/*!
@brief Class to access raw Canon CRW images. Only Exif metadata and a
comment are supported. CRW format does not contain IPTC metadata.
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/epsimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,6 @@ namespace Exiv2
// *****************************************************************************
// class definitions

// Add EPS to the supported image formats
namespace ImageType {
const int eps = 18; //!< EPS image type
}

/*!
@brief Class to access EPS images.
*/
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/gifimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add GIF to the supported image formats
namespace ImageType {
const int gif = 11; //!< GIF image type (see class GifImage)
}

/*!
@brief Class to access raw GIF images. Exif/IPTC metadata are supported
directly.
Expand Down
40 changes: 16 additions & 24 deletions include/exiv2/image.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "basicio.hpp"
#include "exif.hpp"
#include "iptc.hpp"
#include "image_types.hpp"
#include "xmp_exiv2.hpp"

// + standard includes
Expand All @@ -40,11 +41,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

//! Supported image formats
namespace ImageType {
const int none = 0; //!< Not an image
}

//! Native preview information. This is meant to be used only by the PreviewManager.
struct NativePreview {
long position_; //!< Position
Expand Down Expand Up @@ -87,9 +83,7 @@ namespace Exiv2 {
metadata types and an auto-pointer that owns an IO instance.
See subclass constructor doc.
*/
Image(int imageType,
uint16_t supportedMetadata,
BasicIo::UniquePtr io);
Image(ImageType type, uint16_t supportedMetadata, BasicIo::UniquePtr io);
//! Virtual Destructor
virtual ~Image() = default;
//@}
Expand Down Expand Up @@ -470,16 +464,14 @@ namespace Exiv2 {
//@}

//! set type support for this image format
void setTypeSupported(
int imageType,
uint16_t supportedMetadata
) {
void setTypeSupported(ImageType imageType, uint16_t supportedMetadata)
{
imageType_ = imageType;
supportedMetadata_ = supportedMetadata;
}

//! set type support for this image format
int imageType() const { return imageType_; }
ImageType imageType() const { return imageType_; }

//! @name NOT implemented
//@{
Expand Down Expand Up @@ -510,7 +502,7 @@ namespace Exiv2 {

private:
// DATA
int imageType_; //!< Image type
ImageType imageType_; //!< Image type
uint16_t supportedMetadata_; //!< Bitmap with all supported metadata types
bool writeXmpFromPacket_;//!< Determines the source when writing XMP
ByteOrder byteOrder_; //!< Byte order
Expand Down Expand Up @@ -603,8 +595,7 @@ namespace Exiv2 {
type.
@throw Error If the image type is not supported.
*/
static Image::UniquePtr create(int type, const std::string& path);

static Image::UniquePtr create(ImageType type, const std::string& path);
/*!
@brief Create an Image subclass of the requested type by creating a
new image in memory.
Expand All @@ -613,7 +604,8 @@ namespace Exiv2 {
type.
@throw Error If the image type is not supported
*/
static Image::UniquePtr create(int type);
static Image::UniquePtr create(ImageType type);

/*!
@brief Create an Image subclass of the requested type by writing a
new image to a BasicIo instance. If the BasicIo instance already
Expand All @@ -628,31 +620,31 @@ namespace Exiv2 {
@return An auto-pointer that owns an Image instance of the requested
type. If the image type is not supported, the pointer is 0.
*/
static Image::UniquePtr create(int type, BasicIo::UniquePtr io);

static Image::UniquePtr create(ImageType type, BasicIo::UniquePtr io);
/*!
@brief Returns the image type of the provided file.
@param path %Image file. The contents of the file are tested to
determine the image type. File extension is ignored.
@return %Image type or Image::none if the type is not recognized.
*/
static int getType(const std::string& path);

static ImageType getType(const std::string& path);
/*!
@brief Returns the image type of the provided data buffer.
@param data Pointer to a data buffer containing an image. The contents
of the memory are tested to determine the image type.
@param size Number of bytes pointed to by \em data.
@return %Image type or Image::none if the type is not recognized.
*/
static int getType(const byte* data, long size);
static ImageType getType(const byte* data, long size);
/*!
@brief Returns the image type of data provided by a BasicIo instance.
The passed in \em io instance is (re)opened by this method.
@param io A BasicIo instance that provides image data. The contents
of the image data are tested to determine the type.
@return %Image type or Image::none if the type is not recognized.
*/
static int getType(BasicIo& io);
static ImageType getType(BasicIo& io);
/*!
@brief Returns the access mode or supported metadata functions for an
image type and a metadata type.
Expand All @@ -661,7 +653,7 @@ namespace Exiv2 {
@return Access mode for the requested image type and metadata identifier.
@throw Error(kerUnsupportedImageType) if the image type is not supported.
*/
static AccessMode checkMode(int type, MetadataId metadataId);
static AccessMode checkMode(ImageType type, MetadataId metadataId);
/*!
@brief Determine if the content of \em io is an image of \em type.

Expand All @@ -682,7 +674,7 @@ namespace Exiv2 {
@return true if the data matches the type of this class;<BR>
false if the data does not match
*/
static bool checkType(int type, BasicIo& io, bool advance);
static bool checkType(ImageType type, BasicIo& io, bool advance);

//! @name Creators
//@{
Expand Down
60 changes: 60 additions & 0 deletions include/exiv2/image_types.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// ***************************************************************** -*- C++ -*-
/*
* Copyright (C) 2004-2019 Exiv2 authors
* This program is part of the Exiv2 distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
*/

#ifndef IMAGE_TYPES_H
#define IMAGE_TYPES_H

namespace Exiv2
{
/// Supported Image Formats
enum class ImageType
{
none,
arw,
bigtiff,
bmff,
bmp, ///< Windows bitmap
cr2,
crw,
dng,
eps,
exv,
gif, ///< GIF
jp2, ///< JPEG-2000
jpeg,
mrw,
nef,
orf,
pef,
png,
pgf,
psd, ///< Photoshop (PSD)
raf,
rw2,
sr2,
srw,
tga,
tiff,
webp,
xmp, ///< XMP sidecar files
};
} // namespace Exiv2

#endif // IMAGE_TYPES_H
6 changes: 0 additions & 6 deletions include/exiv2/jp2image.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,6 @@ namespace Exiv2
// *****************************************************************************
// class definitions

// Add JPEG-2000 to the supported image formats
namespace ImageType
{
const int jp2 = 15; //!< JPEG-2000 image type
}

/*!
@brief Class to access JPEG-2000 images.
*/
Expand Down
8 changes: 1 addition & 7 deletions include/exiv2/jpgimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Supported JPEG image formats
namespace ImageType {
const int jpeg = 1; //!< JPEG image type (see class JpegImage)
const int exv = 2; //!< EXV image type (see class ExvImage)
}

/*!
@brief Helper class, has methods to deal with %Photoshop "Information
Resource Blocks" (IRBs).
Expand Down Expand Up @@ -179,7 +173,7 @@ namespace Exiv2 {
valid image of the calling subclass.
@param dataSize Size of initData in bytes.
*/
JpegBase(int type,
JpegBase(ImageType type,
BasicIo::UniquePtr io,
bool create,
const byte initData[],
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/mrwimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add MRW to the supported image formats
namespace ImageType {
const int mrw = 5; //!< MRW image type (see class MrwImage)
}

/*!
@brief Class to access raw Minolta MRW images. Exif metadata is supported
directly, IPTC is read from the Exif data, if present.
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/orfimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add ORF to the supported image formats
namespace ImageType {
const int orf = 9; //!< ORF image type (see class OrfImage)
}

/*!
@brief Class to access raw Olympus ORF images. Exif metadata is supported
directly, IPTC is read from the Exif data, if present.
Expand Down
6 changes: 0 additions & 6 deletions include/exiv2/pgfimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@ namespace Exiv2
// *****************************************************************************
// class definitions

// Add PGF to the supported image formats
namespace ImageType
{
const int pgf = 17; //!< PGF image type (see class PgfImage)
}

/*!
@brief Class to access PGF images. Exif and IPTC metadata are supported
directly.
Expand Down
6 changes: 0 additions & 6 deletions include/exiv2/pngimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@ namespace Exiv2
// *****************************************************************************
// class definitions

// Add PNG to the supported image formats
namespace ImageType
{
const int png = 6; //!< PNG image type (see class PngImage)
}

/*!
@brief Class to access PNG images. Exif and IPTC metadata are supported
directly.
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/psdimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add PSD to the supported image formats
namespace ImageType {
const int psd = 12; //!< Photoshop (PSD) image type (see class PsdImage)
}

/*!
@brief Class to access raw Photoshop images.
*/
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/rafimage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add RAF to the supported image formats
namespace ImageType {
const int raf = 8; //!< RAF image type (see class RafImage)
}

/*!
@brief Class to access raw Fujifilm RAF images. Exif metadata is
supported directly, IPTC is read from the Exif data, if present.
Expand Down
5 changes: 0 additions & 5 deletions include/exiv2/rw2image.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ namespace Exiv2 {
// *****************************************************************************
// class definitions

// Add RW2 to the supported image formats
namespace ImageType {
const int rw2 = 16; //!< RW2 image type (see class Rw2Image)
}

/*!
@brief Class to access raw Panasonic RW2 images. Exif metadata is
supported directly, IPTC and XMP are read from the Exif data, if
Expand Down
Loading