blob: b00a095b9776b1ce1b87300955a65984aa2ae31c [file] [log] [blame]
// ==========================================================
// fipTag class implementation
//
// Design and implementation by
// - Hervé Drolon (drolon@infonie.fr)
//
// This file is part of FreeImage 3
//
// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
// THIS DISCLAIMER.
//
// Use at your own risk!
// ==========================================================
#include <string.h>
#include "FreeImagePlus.h"
fipTag::fipTag() {
_tag = FreeImage_CreateTag();
}
fipTag::~fipTag() {
FreeImage_DeleteTag(_tag);
}
BOOL fipTag::setKeyValue(const char *key, const char *value) {
if(_tag) {
FreeImage_DeleteTag(_tag);
_tag = NULL;
}
// create a tag
_tag = FreeImage_CreateTag();
if(_tag) {
BOOL bSuccess = TRUE;
// fill the tag
DWORD tag_length = (DWORD)(strlen(value) + 1);
bSuccess &= FreeImage_SetTagKey(_tag, key);
bSuccess &= FreeImage_SetTagLength(_tag, tag_length);
bSuccess &= FreeImage_SetTagCount(_tag, tag_length);
bSuccess &= FreeImage_SetTagType(_tag, FIDT_ASCII);
bSuccess &= FreeImage_SetTagValue(_tag, value);
return bSuccess;
}
return FALSE;
}
fipTag::fipTag(const fipTag& tag) {
_tag = FreeImage_CloneTag(tag._tag);
}
fipTag& fipTag::operator=(const fipTag& tag) {
if(this != &tag) {
if(_tag) FreeImage_DeleteTag(_tag);
_tag = FreeImage_CloneTag(tag._tag);
}
return *this;
}
fipTag& fipTag::operator=(FITAG *tag) {
if(_tag) FreeImage_DeleteTag(_tag);
_tag = tag;
return *this;
}
BOOL fipTag::isValid() const {
return (_tag != NULL) ? TRUE : FALSE;
}
const char* fipTag::getKey() const {
return FreeImage_GetTagKey(_tag);
}
const char* fipTag::getDescription() const {
return FreeImage_GetTagDescription(_tag);
}
WORD fipTag::getID() const {
return FreeImage_GetTagID(_tag);
}
FREE_IMAGE_MDTYPE fipTag::getType() const {
return FreeImage_GetTagType(_tag);
}
DWORD fipTag::getCount() const {
return FreeImage_GetTagCount(_tag);
}
DWORD fipTag::getLength() const {
return FreeImage_GetTagLength(_tag);
}
const void* fipTag::getValue() const {
return FreeImage_GetTagValue(_tag);
}
BOOL fipTag::setKey(const char *key) {
return FreeImage_SetTagKey(_tag, key);
}
BOOL fipTag::setDescription(const char *description) {
return FreeImage_SetTagDescription(_tag, description);
}
BOOL fipTag::setID(WORD id) {
return FreeImage_SetTagID(_tag, id);
}
BOOL fipTag::setType(FREE_IMAGE_MDTYPE type) {
return FreeImage_SetTagType(_tag, type);
}
BOOL fipTag::setCount(DWORD count) {
return FreeImage_SetTagCount(_tag, count);
}
BOOL fipTag::setLength(DWORD length) {
return FreeImage_SetTagLength(_tag, length);
}
BOOL fipTag::setValue(const void *value) {
return FreeImage_SetTagValue(_tag, value);
}
const char* fipTag::toString(FREE_IMAGE_MDMODEL model, char *Make) const {
return FreeImage_TagToString(model, _tag, Make);
}