Magick++ 6.9.13
Loading...
Searching...
No Matches
ImageRef.h
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 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 "Magick++/Include.h"
16#include "Magick++/Thread.h"
17#include <string>
18
19namespace Magick
20{
21 class Options;
22
23 //
24 // Reference counted access to Image *
25 //
26 class MagickPPExport ImageRef
27 {
28 friend class Image;
29
30 private:
31
32 // Construct with null image and default options
33 ImageRef(void);
34
35 // Construct with an image pointer and default options
36 ImageRef(MagickCore::Image *image_);
37
38 // Construct with an image pointer and options
39 ImageRef(MagickCore::Image *image_,const Options *options_);
40
41 // Destroy image and options
42 ~ImageRef(void);
43
44 // Copy constructor and assignment are not supported
45 ImageRef(const ImageRef&);
46 ImageRef& operator=(const ImageRef&);
47
48 // Retrieve image from reference
49 void image(MagickCore::Image *image_);
50 MagickCore::Image *&image(void);
51
52 // Retrieve Options from reference
53 void options(Options *options_);
54 Options *options(void);
55
56 MagickCore::Image *_image; // ImageMagick Image
57 Options *_options; // User-specified options
58 ::ssize_t _refCount; // Reference count
59 MutexLock _mutexLock; // Mutex lock
60 };
61
62} // end of namespace Magick
63
64//
65// Inlines
66//
67
68inline MagickCore::Image *&Magick::ImageRef::image(void)
69{
70 return(_image);
71}
72
73inline Magick::Options *Magick::ImageRef::options(void)
74{
75 return(_options);
76}
77
78#endif // Magick_ImageRef_header