fixed spacing in the headers to get rid of some warnings and some other
[blender.git] / source / blender / img / intern / IMG_CanvasRGBA32.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  * @author      Maarten Gribnau
32  * @date        March 6, 2001
33  */
34
35 #ifndef _H_IMG_CanvasRGBA32
36 #define _H_IMG_CanvasRGBA32
37
38 #include "IMG_PixmapRGBA32.h"
39 #include "IMG_BrushRGBA32.h"
40
41 /**
42  * A IMG_PixmapRGBA32 pixmap that allows for drawing with a IMG_BrushRGBA32.
43  * @author      Maarten Gribnau
44  * @date        March 6, 2001
45  */
46
47 class IMG_CanvasRGBA32 : public IMG_PixmapRGBA32 {
48 public:
49         /**
50          * Constructor.
51          * @throw <IMG_MemPtr::Size>    when an invalid width and/or height is passed.
52          * @throw <IMG_MemPtr::Memory>  when a there is not enough memory to allocate the image.
53          * @param       width   the width in pixels of the image.
54          * @param       height  the height in pixels of the image.
55          */
56         IMG_CanvasRGBA32(TUns32 width, TUns32 height);
57
58         /**
59          * Constructor.
60          * The image data will not be freed upon destruction of this object.
61          * The owner of this object is reponsible for that.
62          * @throw <Size>        when an invalid width and/or height is passed.
63          * @param       image   pointer to the image data.
64          * @param       width   the width in pixels of the image.
65          * @param       height  the height in pixels of the image.
66          */
67         IMG_CanvasRGBA32(void* image, TUns32 width, TUns32 height, TUns32 rowBytes);
68
69         /**
70          * Blends a pixmap into this pixmap over a line.
71          * Repeatedly pastes the given pixmap centered at the given line into this pixmap.
72          * The alpha information in the given image is used to blend.
73          * @todo        implement wrapping modes when the pixmap does not fit within the bounds.
74          * @todo        update the drawing algorithm.
75          * @param       x               x-coordinate of the center location of the image.
76          * @param       y               y-coordinate of the center location of the image.
77          * @param       pixmap  the pixmap to blend
78          */
79         virtual void blendPixmap(TUns32 xStart, TUns32 yStart, TUns32 xEnd, TUns32 yEnd, const IMG_PixmapRGBA32& pixmap);
80
81         /**
82          * Blends a pixmap into this pixmap over a line in (u,v) coordinates.
83          * Pastes the given pixmap centered at the given line into this pixmap.
84          * The alpha information in the given image is used to blend.
85          * @see         IMG_PixmapRGBA32::blendPixmap(TUns32 xStart, TUns32 yStart, TUns32 yStart, TUns32 yEnd, const IMG_PixmapRGBA32& pixmap)
86          * @todo        implement wrapping modes when the pixmap does not fit within the bounds.
87          * @param       u               u-coordinate of the center location of the image.
88          * @param       v               v-coordinate of the center location of the image.
89          * @param       pixmap  the pixmap to blend
90          */
91         virtual void blendPixmap(float uStart, float vStart, float uEnd, float vEnd, const IMG_PixmapRGBA32& pixmap);
92 };
93
94
95 #endif // _H_IMG_CanvasRGBA32
96