Simple Image Loading LibrarY  0.1.0
SILLYImageContext.icpp
1 /***********************************************************************
2  filename: SILLYImageContext.icpp
3  created: 10 Jun 2006
4  author: Olivier Delannoy
5 
6  purpose: Inline definition for ImageContext
7 *************************************************************************/
8 /***************************************************************************
9  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining
12  * a copy of this software and associated documentation files (the
13  * "Software"), to deal in the Software without restriction, including
14  * without limitation the rights to use, copy, modify, merge, publish,
15  * distribute, sublicense, and/or sell copies of the Software, and to
16  * permit persons to whom the Software is furnished to do so, subject to
17  * the following conditions:
18  *
19  * The above copyright notice and this permission notice shall be
20  * included in all copies or substantial portions of the Software.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
26  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
27  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  * OTHER DEALINGS IN THE SOFTWARE.
29  ***************************************************************************/
30 
31 // Start of section namespace SILLY
32 namespace SILLY
33 {
34 
35 inline ImageContext::ImageContext(size_t width, size_t height)
36  : d_pixels(0), d_length(0), d_width(width), d_height(height), d_currentOffset(0), d_format(PF_RGBA)
37 {
38 }
39 
40 
42 {
43 }
44 
45 
46 inline void ImageContext::setDestination(byte* pixels, size_t length, PixelFormat format)
47 {
48  d_pixels = pixels;
49  d_length = length;
50  d_currentOffset = 0;
51  d_format = format;
52 }
53 
54 inline void ImageContext::setNextPixel(byte red, byte green, byte bleu, byte alpha)
55 {
56  //assert(d_currentOffset < d_length && "ASSERT: try to set a pixel outside of the image");
57  switch(d_format)
58  {
59  case PF_A1B5G5R5:
60  // The hard part
61  assert(0 && "ASSERT: Not yet implemented");
62  break;
63  case PF_RGB:
64  // Ignore alpha channel
65  d_pixels[d_currentOffset++] = red;
66  d_pixels[d_currentOffset++] = green;
67  d_pixels[d_currentOffset++] = bleu;
68  break;
69 
70  case PF_RGBA:
71  d_pixels[d_currentOffset++] = red;
72  d_pixels[d_currentOffset++] = green;
73  d_pixels[d_currentOffset++] = bleu;
74  d_pixels[d_currentOffset++] = alpha;
75  break;
76 
77  }
78 }
79 inline size_t ImageContext::getWidth() const
80 {
81  return d_width;
82 }
83 
84 inline void ImageContext::setWidth(size_t width)
85 {
86  d_width = width;
87 }
88 
89 inline size_t ImageContext::getHeight() const
90 {
91  return d_height;
92 }
93 
94 inline void ImageContext::setHeight(size_t height)
95 {
96  d_height = height;
97 }
98 inline PixelFormat ImageContext::getPixelFormat() const
99 {
100  return d_format;
101 }
102 
103 } // End of section namespace SILLY
104