PieDock  1.6.3
Surface.h
1 /*
2  * O ,-
3  * ° o . -´ ' ,-
4  * ° .´ ` . ´,´
5  * ( ° )) . (
6  * `-;_ . -´ `.`.
7  * `._' ´
8  *
9  * Copyright (c) 2007-2010 Markus Fisch <mf@markusfisch.de>
10  *
11  * Licensed under the MIT license:
12  * http://www.opensource.org/licenses/mit-license.php
13  */
14 #ifndef _PieDock_Surface_
15 #define _PieDock_Surface_
16 
17 namespace PieDock
18 {
24  class Surface
25  {
26  public:
27  enum ColorDepth
28  {
29  Indexed = 8,
30  HighColor = 16,
31  RGB = 24,
32  ARGB = 32
33  };
34 
35  Surface( const Surface & );
36  virtual ~Surface();
37  inline unsigned char *getData() const { return data; }
38  inline const int &getWidth() const { return width; }
39  inline const int &getHeight() const { return height; }
40  inline const int &getDepth() const { return depth; }
41  inline const int &getBytesPerPixel() const { return bytesPerPixel; }
42  inline const int &getBytesPerLine() const { return bytesPerLine; }
43  inline const int &getPadding() const { return padding; }
44  inline const int &getSize() const { return size; }
45  Surface &operator=( const Surface & );
46 
47  protected:
48  Surface();
49  inline void setData( unsigned char *d ) { data = d; }
50  virtual void calculateSize( int, int, int = ARGB );
51  virtual void allocateData();
52  virtual void freeData();
53 
54  private:
55  unsigned char *data;
56  int width;
57  int height;
58  int depth;
59  int bytesPerPixel;
60  int bytesPerLine;
61  int padding;
62  int size;
63  };
64 }
65 
66 #endif