Magick++ 7.0.10

ImageRef.h
Go to the documentation of this file.
1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
4 // Copyright Dirk Lemstra 2014-2015
5 //
6 // Definition of an Image reference
7 //
8 // This is a private implementation class which should never be
9 // referenced by any user code.
10 //
11
12 #if !defined(Magick_ImageRef_header)
13 #define Magick_ImageRef_header
14
15 #include <string>
16 #include "Magick++/Include.h"
17 #include "Magick++/Thread.h"
18
19 namespace Magick
20 {
21 class Options;
22
23 //
24 // Reference counted access to Image *
25 //
26 class MagickPPExport ImageRef
27 {
28 public:
29
30 // Construct with null image and default options
31 ImageRef(void);
32
33 // Construct with an image pointer and default options
34 ImageRef(MagickCore::Image *image_);
35
36 // Destroy image and options
37 ~ImageRef(void);
38
39 // Decreases reference count and return the new count
40 size_t decrease();
41
42 // Retrieve image from reference
43 MagickCore::Image *&image(void);
44
45 // Increases reference count
46 void increase();
47
48 // Returns true if the reference count is more than one
49 bool isShared();
50
51 // Retrieve Options from reference
52 void options(Options *options_);
53 Options *options(void);
54
55 // Tries to replaces the images with the specified image, returns
56 // a new instance when the current image is shared.
57 static ImageRef *replaceImage(ImageRef *imgRef,
58 MagickCore::Image *replacement_);
59
60 // Image signature. Set force_ to true in order to re-calculate
61 // the signature regardless of whether the image data has been
62 // modified.
63 std::string signature(const bool force_=false);
64
65 private:
66
67 // Construct with an image pointer and options
68 ImageRef(MagickCore::Image *image_,const Options *options_);
69
70 // Copy constructor and assignment are not supported
71 ImageRef(const ImageRef&);
72
73 ImageRef& operator=(const ImageRef&);
74
75 MagickCore::Image *_image; // ImageMagick Image
76 MutexLock _mutexLock; // Mutex lock
77 Options *_options; // User-specified options
78 ::ssize_t _refCount; // Reference count
79 };
80
81 } // end of namespace Magick
82
83 #endif // Magick_ImageRef_header
Magick::Options
Definition: Options.h:28
Magick::ImageRef
Definition: ImageRef.h:26
Magick::MutexLock
Definition: Thread.h:27
Thread.h
MagickPPExport
#define MagickPPExport
Definition: Include.h:281
Include.h
Magick::Image
class MagickPPExport Image
Definition: Drawable.h:720
Magick
Definition: Blob.h:15