NXWidgets
1.19
libnxwidgets
include
cbitmap.hxx
Go to the documentation of this file.
1
/****************************************************************************
2
* NxWidgets/libnxwidgets/include/cbitmap.hxx
3
*
4
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
5
* Author: Gregory Nutt <gnutt@nuttx.org>
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in
15
* the documentation and/or other materials provided with the
16
* distribution.
17
* 3. Neither the name NuttX, NxWidgets, nor the names of its contributors
18
* me be used to endorse or promote products derived from this software
19
* without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
28
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*
34
****************************************************************************
35
*
36
* Portions of this package derive from Woopsi (http://woopsi.org/) and
37
* portions are original efforts. It is difficult to determine at this
38
* point what parts are original efforts and which parts derive from Woopsi.
39
* However, in any event, the work of Antony Dzeryn will be acknowledged
40
* in all NxWidget files. Thanks Antony!
41
*
42
* Copyright (c) 2007-2011, Antony Dzeryn
43
* All rights reserved.
44
*
45
* Redistribution and use in source and binary forms, with or without
46
* modification, are permitted provided that the following conditions are met:
47
*
48
* * Redistributions of source code must retain the above copyright
49
* notice, this list of conditions and the following disclaimer.
50
* * Redistributions in binary form must reproduce the above copyright
51
* notice, this list of conditions and the following disclaimer in the
52
* documentation and/or other materials provided with the distribution.
53
* * Neither the names "Woopsi", "Simian Zombie" nor the
54
* names of its contributors may be used to endorse or promote products
55
* derived from this software without specific prior written permission.
56
*
57
* THIS SOFTWARE IS PROVIDED BY Antony Dzeryn ``AS IS'' AND ANY
58
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
59
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
60
* DISCLAIMED. IN NO EVENT SHALL Antony Dzeryn BE LIABLE FOR ANY
61
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
62
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
63
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
64
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
65
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
66
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
67
*
68
****************************************************************************/
69
70
#ifndef __INCLUDE_CBITMAP_HXX
71
#define __INCLUDE_CBITMAP_HXX
72
73
/****************************************************************************
74
* Included Files
75
****************************************************************************/
76
77
#include <nuttx/config.h>
78
79
#include <stdint.h>
80
#include <stdbool.h>
81
82
#include <nuttx/nx/nxglib.h>
83
84
#include "
nxconfig.hxx
"
85
#include "
ibitmap.hxx
"
86
87
/****************************************************************************
88
* Pre-Processor Definitions
89
****************************************************************************/
90
91
/****************************************************************************
92
* Implementation Classes
93
****************************************************************************/
94
95
#if defined(__cplusplus)
96
97
namespace
NXWidgets
98
{
99
/**
100
* Bitmap Structure
101
*/
102
103
struct
SBitmap
104
{
105
uint8_t
bpp
;
/**< Bits per pixel */
106
uint8_t
fmt
;
/**< Color format */
107
nxgl_coord_t
width
;
/**< Width in pixels */
108
nxgl_coord_t
height
;
/**< Height in rows */
109
uint16_t
stride
;
/**< Width in bytes */
110
FAR
const
void
*
data
;
/**< Pointer to the beginning of pixel data */
111
};
112
113
/**
114
* Class providing bitmap accessor for a bitmap represented by SBitmap.
115
*/
116
117
class
CBitmap
:
public
IBitmap
118
{
119
protected
:
120
const
struct
SBitmap
*
m_bitmap
;
/**< The bitmap that is being managed */
121
122
/**
123
* Copy constructor is protected to prevent usage.
124
*/
125
126
inline
CBitmap
(
const
CBitmap
&
bitmap
) { }
127
128
public
:
129
130
/**
131
* Constructor.
132
*
133
* @param bitmap The bitmap structure being wrapped.
134
*/
135
136
CBitmap
(
const
struct
SBitmap
*
bitmap
);
137
138
/**
139
* Destructor.
140
*/
141
142
inline
~CBitmap
(
void
) {}
143
144
/**
145
* Get the bitmap's color format.
146
*
147
* @return The bitmap's width.
148
*/
149
150
const
uint8_t getColorFormat(
void
)
const
;
151
152
/**
153
* Get the bitmap's color format.
154
*
155
* @return The bitmap's color format.
156
*/
157
158
const
uint8_t getBitsPerPixel(
void
)
const
;
159
160
/**
161
* Get the bitmap's width (in pixels/columns).
162
*
163
* @return The bitmap's pixel depth.
164
*/
165
166
const
nxgl_coord_t getWidth(
void
)
const
;
167
168
/**
169
* Get the bitmap's height (in rows).
170
*
171
* @return The bitmap's height.
172
*/
173
174
const
nxgl_coord_t getHeight(
void
)
const
;
175
176
/**
177
* Get the bitmap's width (in bytes).
178
*
179
* @return The bitmap's width.
180
*/
181
182
const
size_t
getStride(
void
)
const
;
183
184
/**
185
* Use the colors associated with a selected image.
186
*
187
* @param selected. true: Use colors for a selected widget,
188
* false: Use normal (default) colors.
189
*/
190
191
inline
void
setSelected
(
bool
selected) {}
192
193
/**
194
* Get one row from the bit map image.
195
*
196
* @param x The offset into the row to get
197
* @param y The row number to get
198
* @param width The number of pixels to get from the row
199
* @param data The memory location provided by the caller
200
* in which to return the data. This should be at least
201
* (getWidth()*getBitsPerPixl() + 7)/8 bytes in length
202
* and properly aligned for the pixel color format.
203
* @param True if the run was returned successfully.
204
*/
205
206
bool
getRun(nxgl_coord_t x, nxgl_coord_t y, nxgl_coord_t
width
,
207
FAR
void
*
data
);
208
};
209
}
210
211
#endif // __cplusplus
212
213
#endif // __INCLUDE_CBITMAP_HXX
ibitmap.hxx
NXWidgets::SBitmap::fmt
uint8_t fmt
Definition:
cbitmap.hxx:106
NXWidgets::CBitmap::setSelected
void setSelected(bool selected)
Definition:
cbitmap.hxx:191
NXWidgets
Definition:
cbgwindow.hxx:65
nxconfig.hxx
NXWidgets::CBitmap
Definition:
cbitmap.hxx:117
NXWidgets::CBitmap::m_bitmap
const struct SBitmap * m_bitmap
Definition:
cbitmap.hxx:120
NXWidgets::SBitmap::bpp
uint8_t bpp
Definition:
cbitmap.hxx:105
NXWidgets::SBitmap::height
nxgl_coord_t height
Definition:
cbitmap.hxx:108
NXWidgets::SBitmap::data
FAR const void * data
Definition:
cbitmap.hxx:110
NXWidgets::SBitmap::width
nxgl_coord_t width
Definition:
cbitmap.hxx:107
NXWidgets::SBitmap
Definition:
cbitmap.hxx:103
NXWidgets::CBitmap::CBitmap
CBitmap(const CBitmap &bitmap)
Definition:
cbitmap.hxx:126
bitmap
static const NXWidgets::SRlePaletteBitmapEntry bitmap[]
Definition:
glyph_mediaplayer24x24.cxx:85
NXWidgets::CBitmap::~CBitmap
~CBitmap(void)
Definition:
cbitmap.hxx:142
NXWidgets::IBitmap
Definition:
ibitmap.hxx:103
NXWidgets::SBitmap::stride
uint16_t stride
Definition:
cbitmap.hxx:109
Generated on Fri Mar 2 2018 12:37:32 for NXWidgets by
1.8.13