~ubuntu-branches/ubuntu/intrepid/graphicsmagick/intrepid

« back to all changes in this revision

Viewing changes to Magick++/lib/Magick++/ImageRef.h

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2006-05-06 16:28:08 UTC
  • Revision ID: james.westby@ubuntu.com-20060506162808-vt2ni3r5nytcszms
Tags: upstream-1.1.7
ImportĀ upstreamĀ versionĀ 1.1.7

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// This may look like C code, but it is really -*- C++ -*-
 
2
//
 
3
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
 
4
//
 
5
// Definition of an Image reference
 
6
//
 
7
// This is a private implementation class which should never be
 
8
// referenced by any user code.
 
9
//
 
10
 
 
11
#if !defined(Magick_ImageRef_header)
 
12
#define Magick_ImageRef_header
 
13
 
 
14
#include "Magick++/Include.h"
 
15
#include "Magick++/Thread.h"
 
16
 
 
17
namespace Magick
 
18
{
 
19
  class Options;
 
20
 
 
21
  //
 
22
  // Reference counted access to Image *
 
23
  //
 
24
  class MagickDLLDecl ImageRef {
 
25
    friend class Image; 
 
26
  private:
 
27
    // Construct with an image pointer and default options
 
28
    ImageRef ( MagickLib::Image * image_ );
 
29
    // Construct with an image pointer and options
 
30
    ImageRef ( MagickLib::Image * image_, const Options * options_ );
 
31
    // Construct with null image and default options
 
32
    ImageRef ( void );
 
33
    // Destroy image and options
 
34
    ~ImageRef ( void );
 
35
 
 
36
    // Copy constructor and assignment are not supported
 
37
    ImageRef(const ImageRef&);
 
38
    ImageRef& operator=(const ImageRef&);
 
39
    
 
40
    void                 image ( MagickLib::Image * image_ );
 
41
    MagickLib::Image *&  image ( void );
 
42
    
 
43
    void                 options ( Options * options_ );
 
44
    Options *            options ( void );
 
45
 
 
46
    void                 id ( const long id_ );
 
47
    long                 id ( void ) const;
 
48
    
 
49
    MagickLib::Image *   _image;    // ImageMagick Image
 
50
    Options *            _options;  // User-specified options
 
51
    long                 _id;       // Registry ID (-1 if not registered)
 
52
    int                  _refCount; // Reference count
 
53
    MutexLock            _mutexLock;// Mutex lock
 
54
  };
 
55
 
 
56
} // end of namespace Magick
 
57
 
 
58
//
 
59
// Inlines
 
60
//
 
61
 
 
62
// Retrieve image from reference
 
63
inline MagickLib::Image *& Magick::ImageRef::image ( void )
 
64
{
 
65
  return _image;
 
66
}
 
67
 
 
68
// Retrieve Options from reference
 
69
inline Magick::Options * Magick::ImageRef::options ( void )
 
70
{
 
71
  return _options;
 
72
}
 
73
 
 
74
// Retrieve registration id from reference
 
75
inline long Magick::ImageRef::id ( void ) const
 
76
{
 
77
  return _id;
 
78
}
 
79
 
 
80
#endif // Magick_ImageRef_header