Revision | 32 (tree) |
---|---|
Time | 2010-09-28 12:40:59 |
Author | shirayanagi |
更新
@@ -0,0 +1,24 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file win_inline.h | |
5 | + * @brief インライン関数 ファイル | |
6 | + * | |
7 | + * @author t.sirayanagi | |
8 | + * @version 1.0 | |
9 | + * | |
10 | + * @par copyright | |
11 | + * Copyright (C) 2010 Takazumi Shirayanagi\n | |
12 | + * The new BSD License is applied to this software. | |
13 | + * see iris_LICENSE.txt | |
14 | +*/ | |
15 | +//----------------------------------------------------------------------- | |
16 | +//====================================================================== | |
17 | +#ifndef _IRIS_win_inline_H_ | |
18 | +#define _IRIS_win_inline_H_ | |
19 | + | |
20 | +//====================================================================== | |
21 | +// include | |
22 | +#include "win/wx_inline.h" | |
23 | + | |
24 | +#endif |
@@ -33,10 +33,10 @@ | ||
33 | 33 | { |
34 | 34 | public: |
35 | 35 | // コンストラクタ |
36 | - CDXMaterial( const intr::DXICOLOR& diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f) | |
37 | - , const intr::DXICOLOR& ambient = D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f) | |
38 | - , const intr::DXICOLOR& specular = D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f) | |
39 | - , const intr::DXICOLOR& emissive = D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f) | |
36 | + CDXMaterial( const intr::DXICOLOR& diffuse = intr::DXICOLOR(1.0f, 1.0f, 1.0f, 1.0f) | |
37 | + , const intr::DXICOLOR& ambient = intr::DXICOLOR(0.0f, 0.0f, 0.0f, 0.0f) | |
38 | + , const intr::DXICOLOR& specular = intr::DXICOLOR(0.0f, 0.0f, 0.0f, 0.0f) | |
39 | + , const intr::DXICOLOR& emissive = intr::DXICOLOR(0.0f, 0.0f, 0.0f, 0.0f) | |
40 | 40 | , f32 power = 0.0f |
41 | 41 | ); |
42 | 42 |
@@ -57,10 +57,10 @@ | ||
57 | 57 | *//***********************************************************************/ |
58 | 58 | void CDXMaterial::SetDiffuse(f32 r, f32 g, f32 b, f32 a) |
59 | 59 | { |
60 | - Diffuse.r = (DXVALUE)r; | |
61 | - Diffuse.g = (DXVALUE)g; | |
62 | - Diffuse.b = (DXVALUE)b; | |
63 | - Diffuse.a = (DXVALUE)a; | |
60 | + Diffuse.r = r; | |
61 | + Diffuse.g = g; | |
62 | + Diffuse.b = b; | |
63 | + Diffuse.a = a; | |
64 | 64 | } |
65 | 65 | |
66 | 66 | /**********************************************************************//** |
@@ -75,10 +75,10 @@ | ||
75 | 75 | *//***********************************************************************/ |
76 | 76 | void CDXMaterial::SetSpecular(f32 r, f32 g, f32 b, f32 a) |
77 | 77 | { |
78 | - Specular.r = (DXVALUE)r; | |
79 | - Specular.g = (DXVALUE)g; | |
80 | - Specular.b = (DXVALUE)b; | |
81 | - Specular.a = (DXVALUE)a; | |
78 | + Specular.r = r; | |
79 | + Specular.g = g; | |
80 | + Specular.b = b; | |
81 | + Specular.a = a; | |
82 | 82 | } |
83 | 83 | |
84 | 84 | /**********************************************************************//** |
@@ -93,10 +93,10 @@ | ||
93 | 93 | *//***********************************************************************/ |
94 | 94 | void CDXMaterial::SetAmbient(f32 r, f32 g, f32 b, f32 a) |
95 | 95 | { |
96 | - Ambient.r = (DXVALUE)r; | |
97 | - Ambient.g = (DXVALUE)g; | |
98 | - Ambient.b = (DXVALUE)b; | |
99 | - Ambient.a = (DXVALUE)a; | |
96 | + Ambient.r = r; | |
97 | + Ambient.g = g; | |
98 | + Ambient.b = b; | |
99 | + Ambient.a = a; | |
100 | 100 | } |
101 | 101 | |
102 | 102 | /**********************************************************************//** |
@@ -112,10 +112,10 @@ | ||
112 | 112 | void CDXMaterial::SetEmissive(f32 r, f32 g, f32 b, f32 a) |
113 | 113 | { |
114 | 114 | #if !defined(_IRIS_SUPPORT_DXMOBILE) |
115 | - Emissive.r = (DXVALUE)r; | |
116 | - Emissive.g = (DXVALUE)g; | |
117 | - Emissive.b = (DXVALUE)b; | |
118 | - Emissive.a = (DXVALUE)a; | |
115 | + Emissive.r = r; | |
116 | + Emissive.g = g; | |
117 | + Emissive.b = b; | |
118 | + Emissive.a = a; | |
119 | 119 | #else |
120 | 120 | IRIS_UNUSED_VARIABLE(r); |
121 | 121 | IRIS_UNUSED_VARIABLE(g); |
@@ -47,7 +47,7 @@ | ||
47 | 47 | |
48 | 48 | public: |
49 | 49 | // カラー設定 |
50 | - virtual void _ChangeFadeColor(void) { m_Color = D3DXCOLOR(m_fR, m_fG, m_fB, m_fA); } | |
50 | + virtual void _ChangeFadeColor(void) { m_Color = intr::DXICOLOR(m_fR, m_fG, m_fB, m_fA); } | |
51 | 51 | virtual void SetColor(const D3DXCOLOR& color) { SetFadeColor(color); } |
52 | 52 | |
53 | 53 | }; |
@@ -70,8 +70,8 @@ | ||
70 | 70 | , m_TexSize(*tex_size) |
71 | 71 | , m_Width(0) |
72 | 72 | , m_Height(0) |
73 | -, m_UV0(0.0f,0.0f) | |
74 | -, m_UV1(0.0f,0.0f) | |
73 | +, m_UV0(0.0f, 0.0f) | |
74 | +, m_UV1(0.0f, 0.0f) | |
75 | 75 | { |
76 | 76 | } |
77 | 77 |
@@ -136,6 +136,7 @@ | ||
136 | 136 | D3DADAPTER_IDENTIFIER9 identifier; |
137 | 137 | hr = d3d->GetAdapterIdentifier(adapter, 0, &identifier); |
138 | 138 | dprintfA(identifier.Description); |
139 | + dprintfA("\n"); | |
139 | 140 | if(strstr(identifier.Description, "PerfHUD") != nullptr) |
140 | 141 | { |
141 | 142 | adapterToUse = adapter; |
@@ -78,11 +78,12 @@ | ||
78 | 78 | #endif |
79 | 79 | |
80 | 80 | |
81 | +#define vswprintf_s(dst, size, fmt, va) ((void)(size), vswprintf(dst, fmt, va)) | |
82 | +#define vsnprintf(dst, size, src, va) ((void)(size), vsprintf(dst, src, va)) | |
83 | +#define _vscprintf(fmt, va) _vcprintf(fmt, va) | |
84 | +#define _vscwprintf(fmt, va) _vcwprintf(fmt, va) | |
81 | 85 | |
82 | -#define vsnprintf(dst, size, src, va) ((void)(size), vsprintf(dst, src, va)) | |
83 | 86 | |
84 | - | |
85 | - | |
86 | 87 | #endif |
87 | 88 | |
88 | 89 | #endif |
@@ -160,42 +160,4 @@ | ||
160 | 160 | #define kbhit _kbhit |
161 | 161 | #endif |
162 | 162 | |
163 | -#include <malloc.h> | |
164 | -#include <stdio.h> | |
165 | - | |
166 | -#if defined(__cplusplus) | |
167 | -extern "C" { | |
168 | 163 | #endif |
169 | - | |
170 | -//====================================================================== | |
171 | -// function | |
172 | -STATICINLINE void OutputDebugStringExA(LPCSTR lpFormat, ...) | |
173 | -{ | |
174 | - va_list va; | |
175 | - va_start(va, lpFormat); | |
176 | - { | |
177 | - int len = _vscprintf(lpFormat, va) + 1; | |
178 | - LPSTR str = (LPSTR)alloca(len * sizeof(CHAR)); | |
179 | - vsprintf_s(str, len, lpFormat, va); | |
180 | - OutputDebugStringA(str); | |
181 | - } | |
182 | - va_end(va); | |
183 | -} | |
184 | -STATICINLINE void OutputDebugStringExW(LPCWSTR lpFormat, ...) | |
185 | -{ | |
186 | - va_list va; | |
187 | - va_start(va, lpFormat); | |
188 | - { | |
189 | - int len = _vscwprintf(lpFormat, va) + 1; | |
190 | - LPWSTR str = (LPWSTR)alloca(len * sizeof(WCHAR)); | |
191 | - vswprintf_s(str, len, lpFormat, va); | |
192 | - OutputDebugStringW(str); | |
193 | - } | |
194 | - va_end(va); | |
195 | -} | |
196 | - | |
197 | -#if defined(__cplusplus) | |
198 | -} | |
199 | -#endif | |
200 | - | |
201 | -#endif |
@@ -0,0 +1,62 @@ | ||
1 | +//====================================================================== | |
2 | +//----------------------------------------------------------------------- | |
3 | +/** | |
4 | + * @file wx_inline.h | |
5 | + * @brief インライン関数 ファイル | |
6 | + * | |
7 | + * @author t.sirayanagi | |
8 | + * @version 1.0 | |
9 | + * | |
10 | + * @par copyright | |
11 | + * Copyright (C) 2010 Takazumi Shirayanagi\n | |
12 | + * The new BSD License is applied to this software. | |
13 | + * see iris_LICENSE.txt | |
14 | +*/ | |
15 | +//----------------------------------------------------------------------- | |
16 | +//====================================================================== | |
17 | +#ifndef _IRIS_wx_inline_H_ | |
18 | +#define _IRIS_wx_inline_H_ | |
19 | + | |
20 | +//====================================================================== | |
21 | +// include | |
22 | +#include <malloc.h> | |
23 | +#include <stdio.h> | |
24 | + | |
25 | +#if defined(__cplusplus) | |
26 | +extern "C" { | |
27 | +#endif | |
28 | + | |
29 | +//====================================================================== | |
30 | +// function | |
31 | +#if defined(OutputDebugString) | |
32 | +STATICINLINE void OutputDebugStringExA(LPCSTR lpFormat, ...) | |
33 | +{ | |
34 | + va_list va; | |
35 | + va_start(va, lpFormat); | |
36 | + { | |
37 | + int len = _vscprintf(lpFormat, va) + 1; | |
38 | + LPSTR str = (LPSTR)alloca(len * sizeof(CHAR)); | |
39 | + vsprintf_s(str, len, lpFormat, va); | |
40 | + OutputDebugStringA(str); | |
41 | + } | |
42 | + va_end(va); | |
43 | +} | |
44 | +STATICINLINE void OutputDebugStringExW(LPCWSTR lpFormat, ...) | |
45 | +{ | |
46 | + va_list va; | |
47 | + va_start(va, lpFormat); | |
48 | + { | |
49 | + int len = _vscwprintf(lpFormat, va) + 1; | |
50 | + LPWSTR str = (LPWSTR)alloca(len * sizeof(WCHAR)); | |
51 | + vswprintf_s(str, len, lpFormat, va); | |
52 | + OutputDebugStringW(str); | |
53 | + } | |
54 | + va_end(va); | |
55 | +} | |
56 | +#endif | |
57 | + | |
58 | +#if defined(__cplusplus) | |
59 | +} | |
60 | +#endif | |
61 | + | |
62 | +#endif |
@@ -198,38 +198,26 @@ | ||
198 | 198 | switch(nBitCount) |
199 | 199 | { |
200 | 200 | case 1: |
201 | - { | |
202 | - clr = 2; | |
203 | - size = IRIS_RoundUp4B((nWidth+7)>>3) * nHeight; | |
204 | - } | |
201 | + clr = 2; | |
202 | + size = IRIS_RoundUp4B((nWidth+7)>>3) * nHeight; | |
205 | 203 | break; |
206 | 204 | case 4: |
207 | - { | |
208 | - clr = 16; | |
209 | - size = IRIS_RoundUp4B((nWidth+1)>>1) * nHeight; | |
210 | - } | |
205 | + clr = 16; | |
206 | + size = IRIS_RoundUp4B((nWidth+1)>>1) * nHeight; | |
211 | 207 | break; |
212 | 208 | case 8: |
213 | - { | |
214 | - clr = 256; | |
215 | - size = IRIS_RoundUp4B(nWidth) * nHeight; | |
216 | - } | |
209 | + clr = 256; | |
210 | + size = IRIS_RoundUp4B(nWidth) * nHeight; | |
217 | 211 | break; |
218 | 212 | case 16: |
219 | - { | |
220 | - clr = 65536; | |
221 | - size = IRIS_RoundUp4B(nWidth*2) * nHeight; | |
222 | - } | |
213 | + clr = 65536; | |
214 | + size = IRIS_RoundUp4B(nWidth*2) * nHeight; | |
223 | 215 | break; |
224 | 216 | case 24: |
225 | - { | |
226 | - size = IRIS_RoundUp4B(nWidth*3) * nHeight; | |
227 | - } | |
217 | + size = IRIS_RoundUp4B(nWidth*3) * nHeight; | |
228 | 218 | break; |
229 | 219 | case 32: |
230 | - { | |
231 | - size = IRIS_RoundUp4B(nWidth*4) * nHeight; | |
232 | - } | |
220 | + size = IRIS_RoundUp4B(nWidth*4) * nHeight; | |
233 | 221 | break; |
234 | 222 | default: |
235 | 223 | return false;; |
@@ -197,6 +197,7 @@ | ||
197 | 197 | #if 1 |
198 | 198 | // バッファクリア |
199 | 199 | FlushInputBuffer(); |
200 | + Print("> "); | |
200 | 201 | #endif |
201 | 202 | ReadConsole(buf, sizeof(buf)/sizeof(TCHAR), &dwRead); |
202 | 203 | // デフォルトイベント |
@@ -223,8 +224,11 @@ | ||
223 | 224 | { |
224 | 225 | // ページ変更 |
225 | 226 | p += 8; |
226 | - int no = _tcstol(p, nullptr, 10); | |
227 | - SetPage(no); | |
227 | + int no = _tcstol(p, nullptr, 0); | |
228 | + if( SetPage(no) ) | |
229 | + { | |
230 | + Print("set page. %d\n", no); | |
231 | + } | |
228 | 232 | return true; |
229 | 233 | } |
230 | 234 | p = _tcsstr(buf, TEXT("addpage=")); |
@@ -232,8 +236,11 @@ | ||
232 | 236 | { |
233 | 237 | // ページ追加 |
234 | 238 | p += 8; |
235 | - int no = _tcstol(p, nullptr, 10); | |
236 | - AddPage(no, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, nullptr); | |
239 | + int no = _tcstol(p, nullptr, 0); | |
240 | + if( AddPage(no, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, nullptr) ) | |
241 | + { | |
242 | + Print("addpage succeed. %d\n", no); | |
243 | + } | |
237 | 244 | return true; |
238 | 245 | } |
239 | 246 | p = _tcsstr(buf, TEXT("delpage=")); |
@@ -241,8 +248,11 @@ | ||
241 | 248 | { |
242 | 249 | // ページ削除 |
243 | 250 | p += 8; |
244 | - int no = _tcstol(p, nullptr, 10); | |
245 | - DelPage(no); | |
251 | + int no = _tcstol(p, nullptr, 0); | |
252 | + if( DelPage(no) ) | |
253 | + { | |
254 | + Print("delpage succeed. %d\n", no); | |
255 | + } | |
246 | 256 | return true; |
247 | 257 | } |
248 | 258 | p = _tcsstr(buf, TEXT("quite")); |
@@ -470,7 +470,7 @@ | ||
470 | 470 | * @param [in] nCount = 文字列の長さ |
471 | 471 | * @return BOOL値 |
472 | 472 | *//***********************************************************************/ |
473 | -BOOL CDeviceContext::TextOutA(int x, int y, LPCSTR lpszString, int nCount) | |
473 | +BOOL CDeviceContext::TextOutA(int x, int y, int nCount, LPCSTR lpszString) | |
474 | 474 | { |
475 | 475 | #if defined(IRIS_WIN32_WCE) |
476 | 476 | return ::ExtTextOutA(m_hDC, x, y, 0, nullptr, lpszString, nCount, nullptr); |
@@ -519,13 +519,13 @@ | ||
519 | 519 | ---------------------------------------------------------------------- |
520 | 520 | * @param [in] lprc = 表示領域 |
521 | 521 | * @param [in] format = フォーマット(DT_***) |
522 | + * @param [in] nCount = 文字列の長さ | |
522 | 523 | * @param [in] lpszString = 文字列 |
523 | - * @param [in] nCount = 文字列の長さ | |
524 | 524 | * @return BOOL値 |
525 | 525 | *//***********************************************************************/ |
526 | -BOOL CDeviceContext::DrawTextA(LPRECT lprc, UINT format, LPCSTR lpszString, int nCount) | |
526 | +BOOL CDeviceContext::DrawTextA(LPRECT lprc, UINT format, int nCount, LPCSTR lpszString) | |
527 | 527 | { |
528 | - return ::DrawTextA(m_hDC, lpszString, nCount, lprc, format ); | |
528 | + return ::DrawTextA(m_hDC, lpszString, nCount, lprc, format); | |
529 | 529 | } |
530 | 530 | BOOL CDeviceContext::DrawTextA(LPRECT lprc, UINT format, LPCSTR lpszString, ...) |
531 | 531 | { |
@@ -108,10 +108,10 @@ | ||
108 | 108 | COLORREF SetTextColor(COLORREF color); |
109 | 109 | COLORREF GetTextColor(void) const; |
110 | 110 | // テキストを指定の位置に出力する |
111 | - BOOL TextOutA(int x, int y, LPCSTR lpszString, int nCount); | |
111 | + BOOL TextOutA(int x, int y, int nCount, LPCSTR lpszString); | |
112 | 112 | BOOL TextOutA(int x, int y, LPCSTR lpszString, ...); |
113 | 113 | // テキスト描画 |
114 | - BOOL DrawTextA(LPRECT lprc, UINT format, LPCSTR lpszString, int nCount); | |
114 | + BOOL DrawTextA(LPRECT lprc, UINT format, int nCount, LPCSTR lpszString); | |
115 | 115 | BOOL DrawTextA(LPRECT lprc, UINT format, LPCSTR lpszString, ...); |
116 | 116 | |
117 | 117 | public: |
@@ -26,7 +26,7 @@ | ||
26 | 26 | #else |
27 | 27 | # if defined(IRIS_WIN32) |
28 | 28 | # include "platform/windows/win_support.h" |
29 | -# elif defined(IRIS_APPLE) | |
29 | +# elif defined(IRIS_APPLE) | |
30 | 30 | # include "platform/apple/apple_support.h" |
31 | 31 | # else |
32 | 32 | # endif |
@@ -45,7 +45,7 @@ | ||
45 | 45 | #endif |
46 | 46 | |
47 | 47 | // crt セキュリティ強化対応 |
48 | -#if !(defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__ ) || defined(IRIS_WIN32_WCE) | |
48 | +#if !(defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__) || defined(IRIS_WIN32_WCE) | |
49 | 49 | |
50 | 50 | #define _vsnprintf_s(dst, size, cnt, src, va) vsnprintf(dst, size, src, va) |
51 | 51 |
@@ -58,6 +58,10 @@ | ||
58 | 58 | #define freopen_s(fp, path, mode, old) *(fp) = freopen(path, mode, old) |
59 | 59 | #define localtime_s(tm, time) *(tm) = *localtime(time) |
60 | 60 | |
61 | +#define vsprintf_s(dst, size, fmt, va) ((void)(size), vsprintf(dst, fmt, va)) | |
62 | +#ifndef vswprintf_s | |
63 | +# define vswprintf_s(dst, size, fmt, va) vswprintf(dst, size, fmt, va) | |
64 | +#endif | |
61 | 65 | #define _vsnwprintf_s(dst, size, cnt, src, va) ((void)(cnt), _vsnwprintf(dst, size, src, va)) |
62 | 66 | #define _wfopen_s(fp, path, mode) *fp = _wfopen(path, mode) |
63 | 67 |
@@ -19,6 +19,16 @@ | ||
19 | 19 | |
20 | 20 | //====================================================================== |
21 | 21 | // include |
22 | +#if defined(_IRIS_SUPPORT_EXT_PLATFORM) | |
23 | +# include "iris_ext_inline.h" | |
24 | +#else | |
25 | +# if defined(IRIS_WIN32) | |
26 | +# include "platform/windows/win_inline.h" | |
27 | +# elif defined(IRIS_APPLE) | |
28 | +# else | |
29 | +# endif | |
30 | +#endif | |
31 | + | |
22 | 32 | #include "iris_stdc.h" |
23 | 33 | #include <stdarg.h> |
24 | 34 |
@@ -288,66 +288,53 @@ | ||
288 | 288 | bool CBitmap::Create(u16 nBitCount, s32 nWidth, s32 nHeight) |
289 | 289 | { |
290 | 290 | Release(); |
291 | + u32 plsize = 0; | |
291 | 292 | switch(nBitCount) |
292 | 293 | { |
293 | 294 | case 1: |
294 | 295 | { |
295 | - u32 plsize = sizeof(IrisRGBQUAD)*2; | |
296 | + plsize = sizeof(IrisRGBQUAD)*2; | |
296 | 297 | u32 size = IRIS_RoundUp4B((nWidth+7)>>3) * nHeight; |
297 | 298 | if( !Alloc(size + BMP_HEADSIZE + plsize) ) return false; |
298 | - m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
299 | 299 | m_bmp.pallete = reinterpret_cast<IrisRGBQUAD*>(m_bmp.data); |
300 | - m_bmp.pixel = m_bmp.data + plsize; | |
301 | 300 | } |
302 | 301 | break; |
303 | 302 | case 4: |
304 | 303 | { |
305 | - u32 plsize = sizeof(IrisRGBQUAD)*16; | |
304 | + plsize = sizeof(IrisRGBQUAD)*16; | |
306 | 305 | u32 size = IRIS_RoundUp4B((nWidth+1)>>1) * nHeight; |
307 | 306 | if( !Alloc(size + BMP_HEADSIZE + plsize) ) return false; |
308 | - m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
309 | 307 | m_bmp.pallete = reinterpret_cast<IrisRGBQUAD*>(m_bmp.data); |
310 | - m_bmp.pixel = m_bmp.data + plsize; | |
311 | 308 | } |
312 | 309 | break; |
313 | 310 | case 8: |
314 | 311 | { |
315 | - u32 plsize = sizeof(IrisRGBQUAD)*256; | |
312 | + plsize = sizeof(IrisRGBQUAD)*256; | |
316 | 313 | u32 size = IRIS_RoundUp4B(nWidth) * nHeight; |
317 | 314 | if( !Alloc(size + BMP_HEADSIZE + plsize) ) return false; |
318 | - m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
319 | 315 | m_bmp.pallete = reinterpret_cast<IrisRGBQUAD*>(m_bmp.data); |
320 | - m_bmp.pixel = m_bmp.data + plsize; | |
321 | 316 | } |
322 | 317 | break; |
323 | 318 | case 16: |
324 | 319 | { |
325 | - u32 plsize = sizeof(IrisRGBQUAD)*65536; | |
320 | + plsize = sizeof(IrisRGBQUAD)*65536; | |
326 | 321 | u32 size = IRIS_RoundUp4B(nWidth*2) * nHeight; |
327 | 322 | if( !Alloc(size + BMP_HEADSIZE + plsize) ) return false; |
328 | - m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
329 | 323 | m_bmp.pallete = reinterpret_cast<IrisRGBQUAD*>(m_bmp.data); |
330 | - m_bmp.pixel = m_bmp.data + plsize; | |
331 | 324 | } |
332 | 325 | break; |
333 | 326 | case 24: |
334 | 327 | { |
335 | - u32 plsize = 0; | |
336 | 328 | u32 size = IRIS_RoundUp4B(nWidth*3) * nHeight; |
337 | 329 | if( !Alloc(size + BMP_HEADSIZE + plsize) ) return false; |
338 | - m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
339 | 330 | m_bmp.pallete = nullptr; |
340 | - m_bmp.pixel = m_bmp.data + plsize; | |
341 | 331 | } |
342 | 332 | break; |
343 | 333 | case 32: |
344 | 334 | { |
345 | - u32 plsize = 0; | |
346 | 335 | u32 size = IRIS_RoundUp4B(nWidth*4) * nHeight; |
347 | 336 | if( !Alloc(size + BMP_HEADSIZE + plsize) ) return false; |
348 | - m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
349 | 337 | m_bmp.pallete = nullptr; |
350 | - m_bmp.pixel = m_bmp.data + plsize; | |
351 | 338 | } |
352 | 339 | break; |
353 | 340 | default: |
@@ -354,6 +341,8 @@ | ||
354 | 341 | return false;; |
355 | 342 | } |
356 | 343 | |
344 | + m_bmp.file->bfOffBits = BMP_HEADSIZE + plsize; | |
345 | + m_bmp.pixel = m_bmp.data + plsize; | |
357 | 346 | if( !CreateHeader(&m_bmp, nBitCount, nWidth, nHeight) ) return false; |
358 | 347 | m_bmp.file->bfSize = m_bmp.file->bfOffBits + m_bmp.info->biSizeImage; |
359 | 348 | memset(m_bmp.data, 0, m_bmp.file->bfSize - BMP_HEADSIZE); |
@@ -945,8 +934,7 @@ | ||
945 | 934 | if( !IsValid() ) return nullptr; |
946 | 935 | s32 w = m_bmp.info->biWidth; |
947 | 936 | s32 h = m_bmp.info->biHeight; |
948 | - if( x >= w ) return nullptr; | |
949 | - if( y >= h ) return nullptr; | |
937 | + if( x >= w || y >= h ) return nullptr; | |
950 | 938 | s32 dy = h-y-1; |
951 | 939 | u32 lw; |
952 | 940 | switch( m_bmp.info->biBitCount ) |