39 mutable bool m_bTrans;
40 mutable bool m_bMapped;
43 static ::i32 g_iRedLowerDefault;
49 m_iRedLower = g_iRedLowerDefault;
52 m_pimage32Raw =
nullptr;
67 m_pimage32Raw =
nullptr;
72 void initialize(const ::i32_size & size,
::image32_t * pimage32, ::i32 iScan)
79 m_pimage32Raw = pimage32;
91 ::i32 scan_size()
const {
return m_iScan; }
93 inline ::image32_t * image32() {
return m_pimage32; }
94 inline ::image32_t * image32()
const {
return m_pimage32; }
97 inline ::image32_t * data() {
return m_pimage32; }
98 inline ::image32_t * data()
const {
return m_pimage32; }
101 inline operator pixmap * () {
return this; }
102 inline operator const pixmap * ()
const {
return this; }
105 inline bool is_ok()
const { return ::is_set(
this) && area() > 0; }
107 inline bool nok()
const {
return !is_ok(); }
109 bool create(
::memory&
memory, const ::i32_size& size, ::i32 stride = -1);
111 inline ::i32_rectangle rectangle()
const { return ::i32_rectangle(m_point, m_size); }
113 inline ::i32_rectangle rectangle(const ::i32_point & point)
const { return ::i32_rectangle(point, m_size); }
115 inline ::i32_point top_left()
const noexcept {
return m_point; }
116 inline ::i32_point origin()
const noexcept {
return top_left(); }
118 inline ::i32_size size()
const noexcept {
return m_size; }
119 inline ::i32 width()
const noexcept {
return m_size.cx; }
120 inline ::i32 height()
const noexcept {
return m_size.cy; }
121 inline ::i32 area()
const noexcept {
return m_size.area(); }
122 inline ::i32 scan_area()
const noexcept {
return height() * scan_size(); }
125 inline ::color::color get_pixel(::i32 x, ::i32 y)
const
128 return ::image32_get_pixel(image32(), m_colorindexes, scan_size(), height(), x, y);
135 return ::image32_set_pixel(image32(), m_colorindexes, scan_size(), height(), x, y, color);
139 inline ::color::color raw_pixel(::i32 x, ::i32 y)
const
142 return ::image32_raw_pixel(image32(), m_colorindexes, scan_size(), height(), x, y);
149 return ::image32_set_raw_pixel(image32(), m_colorindexes, scan_size(), height(), x, y, color);
153 inline ::color::color get_pixel(const ::i32_point & point)
const {
return get_pixel(point.x, point.y); }
156 inline pixmap & operator =(const ::i32_rectangle & rectangle) { map(rectangle);
return *
this; }
160 void map(const ::i32_rectangle & rectangle)
163 m_point = rectangle.origin();
165 m_size = rectangle.size();
174 if (::is_set(m_pimage32Raw))
177 ((
pixmap *)
this)->m_pimage32 = m_pimage32Raw + (m_point.x + m_iScan * m_point.y);
186 m_pimage32 = m_pimage32Raw;
194 void vertical_swap();
197 void copy(const ::i32_size & size, const ::pixmap * ppixmapSrc);
199 void y_swap_copy(const ::i32_size& size, const ::pixmap* ppixmapSrc);
201 void copy(const ::pixmap * ppixmapSrc);
203 void copy(const ::pixmap* ppixmapSrc, const ::image::enum_copy_disposition & ecopydisposition);
205 void y_swap_copy(const ::pixmap* ppixmapSrc);