11#define MAGICKCORE_IMPLEMENTATION 1
12#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
14#include "Magick++/Include.h"
15#include "Magick++/Blob.h"
16#include "Magick++/BlobRef.h"
17#include "Magick++/Exception.h"
21Magick::Blob::Blob(
void)
22 : _blobRef(new Magick::BlobRef(0,0))
26Magick::Blob::Blob(
const void* data_,
const size_t length_)
27 : _blobRef(new Magick::BlobRef(data_, length_))
32 : _blobRef(blob_._blobRef)
42 if (_blobRef->decrease() == 0)
56 blob_._blobRef->increase();
57 if (_blobRef->decrease() == 0)
60 _blobRef=blob_._blobRef;
65void Magick::Blob::base64(
const std::string base64_)
73 decoded=Base64Decode(base64_.c_str(),&length);
76 updateNoCopy(
static_cast<void*
>(decoded),length,
77 Magick::Blob::MallocAllocator);
80std::string Magick::Blob::base64(
void)
const
92 encoded=Base64Encode(
static_cast<const unsigned char*
>(data()),length(),
97 result=std::string(encoded,encoded_length);
98 encoded=(
char *) RelinquishMagickMemory(encoded);
102 return(std::string());
105const void* Magick::Blob::data(
void)
const
107 return(_blobRef->data);
110size_t Magick::Blob::length(
void)
const
112 return(_blobRef->length);
115void Magick::Blob::update(
const void* data_,
size_t length_)
117 if (_blobRef->decrease() == 0)
123void Magick::Blob::updateNoCopy(
void* data_,
size_t length_,
124 Magick::Blob::Allocator allocator_)
126 if (_blobRef->decrease() == 0)
130 _blobRef->data=data_;
131 _blobRef->length=length_;
132 _blobRef->allocator=allocator_;