Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修正颜色格式相关 #29

Merged
merged 3 commits into from
Jul 4, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions src/ege.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,19 +160,18 @@
#endif

#define SHOWCONSOLE 1 // ����ͼ��ģʽʱ����������̨����ʾ
#define RGBTOBGR(color) ((((color) & 0xFF) << 16) | (((color) & 0xFF0000) >> 16) | ((color) & 0xFF00FF00))
#define EGERGB(r, g, b) ( ((r)<<16) | ((g)<<8) | (b))
#define EGERGBA(r, g, b, a) ( ((r)<<16) | ((g)<<8) | (b) | ((a)<<24) )
#define EGEARGB(a, r, g, b) ( ((r)<<16) | ((g)<<8) | (b) | ((a)<<24) )
#define EGERGB(r, g, b) EGERGBA(r, g, b, 0xFF)
#define EGEARGB(a, r, g, b) EGERGBA(r, g, b, a)
#define EGEACOLOR(a, color) ( ((color) & 0xFFFFFF) | ((a)<<24) )
#define EGECOLORA(color, a) ( ((color) & 0xFFFFFF) | ((a)<<24) )
#define EGECOLORA(color, a) EGEACOLOR(a, color)
#define EGEGET_R(c) ( ((c)>>16) & 0xFF )
#define EGEGET_G(c) ( ((c)>> 8) & 0xFF )
#define EGEGET_B(c) ( ((c)) & 0xFF )
#define EGEGET_A(c) ( ((c)>>24) & 0xFF )
#define EGEGRAY(gray) ( ((gray)<<16) | ((gray)<<8) | (gray))
#define EGEGRAYA(gray, a) ( ((gray)<<16) | ((gray)<<8) | (gray) | ((a)<<24) )
#define EGEAGRAY(a, gray) ( ((gray)<<16) | ((gray)<<8) | (gray) | ((a)<<24) )
#define EGEGRAY(gray) EGERGB(gray, gray, gray)
#define EGEGRAYA(gray, a) EGERGBA(gray, gray, gray, a)
#define EGEAGRAY(a, gray) EGEGRAYA(gray, a)
#define NAMESPACE_EGE_L namespace ege {
#define NAMESPACE_EGE_R }

Expand Down Expand Up @@ -263,7 +262,7 @@ enum message_mouse {

// ��ɫ
enum COLORS {
BLACK = 0,
BLACK = EGERGB(0, 0, 0),
BLUE = EGERGB(0, 0, 0xA8),
GREEN = EGERGB(0, 0xA8, 0),
CYAN = EGERGB(0, 0xA8, 0xA8),
Expand Down
20 changes: 1 addition & 19 deletions src/ege/sys_edit.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,25 +79,7 @@ class sys_edit : public egeControlBase
}
return 0;
}
LRESULT onMessage(UINT message, WPARAM wParam, LPARAM lParam) {
if (message == WM_CTLCOLOREDIT) {
HDC dc = (HDC)wParam;
HBRUSH br = ::CreateSolidBrush(RGBTOBGR(m_bgcolor));

::SetBkColor(dc, RGBTOBGR(m_bgcolor));
::SetTextColor(dc, RGBTOBGR(m_color));
::DeleteObject(m_hBrush);
m_hBrush = br;
return (LRESULT)br;
//} else if (message == WM_SETFOCUS) {
// int a = 0;
// int b = 1;
// return 0;
} else {
return ((LRESULT (CALLBACK *)(HWND, UINT, WPARAM, LPARAM))m_callback)(m_hwnd, message, wParam, lParam);
}
//return 0;
}
LRESULT onMessage(UINT message, WPARAM wParam, LPARAM lParam);
void visible(bool bvisible) {
egeControlBase::visible(bvisible);
::ShowWindow(m_hwnd, (int)bvisible);
Expand Down
8 changes: 8 additions & 0 deletions src/ege_head.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,14 @@
#define IFATODOB(A, B) ( (A) && (B, 0) )
#define IFNATODOB(A, B) ( (A) || (B, 0) )

// 0xaarrggbb -> 0xaabbggrr
#define RGBTOBGR(color) ((((color) & 0xFF) << 16) | (((color) & 0xFF0000) >> 16) | ((color) & 0xFF00FF00))

// �� color_t �� Bitmap Buffer ���õ� 0xaarrggbb ��ʽ
// ת��Ϊ COLORREF ���õ� 0x00bbggrr������ Alpha ͨ��
// �������� GDI32 API ������ɫʱ
#define ARGBTOZBGR(c) ((((c) & 0xFF) << 16) | (((c) & 0xFF0000) >> 16) | ((c) & 0xFF00))

#define CONVERT_IMAGE(pimg) ( ((size_t)(pimg)<0x20 ?\
((pimg) ?\
(graph_setting.img_page[(size_t)(pimg) & 0xF])\
Expand Down
39 changes: 29 additions & 10 deletions src/egegapi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -696,7 +696,7 @@ static int upattern2array(unsigned short upattern, DWORD style[]) {

static void update_pen(PIMAGE img) {
LOGBRUSH lbr;
lbr.lbColor = RGBTOBGR(img->m_color) & 0x00FFFFFF;
lbr.lbColor = ARGBTOZBGR(img->m_color);
lbr.lbStyle = BS_SOLID;
lbr.lbHatch = 0;

Expand Down Expand Up @@ -728,7 +728,7 @@ setcolor(color_t color, PIMAGE pimg) {
img->m_color = color;

update_pen(img);
SetTextColor(img->m_hDC, RGBTOBGR(color) & 0x00FFFFFF);
SetTextColor(img->m_hDC, ARGBTOZBGR(color));
}
CONVERT_IMAGE_END;
}
Expand All @@ -738,8 +738,7 @@ setfillcolor(color_t color, PIMAGE pimg) {
PIMAGE img = CONVERT_IMAGE_CONST(pimg);
LOGBRUSH lbr = {0};
img->m_fillcolor = color;
color = RGBTOBGR(color);
lbr.lbColor = color;
lbr.lbColor = ARGBTOZBGR(color);
lbr.lbHatch = BS_SOLID;
HBRUSH hbr = CreateBrushIndirect(&lbr);
if (hbr) {
Expand Down Expand Up @@ -780,7 +779,7 @@ setbkcolor(color_t color, PIMAGE pimg) {
int size = img->m_width * img->m_height;
color_t col = img->m_bk_color;
img->m_bk_color = color;
SetBkColor(img->m_hDC, RGBTOBGR(color));
SetBkColor(img->m_hDC, ARGBTOZBGR(color));
for (int n = 0; n < size; n++, p++) {
if (*p == col) {
*p = color;
Expand All @@ -795,7 +794,7 @@ setbkcolor_f(color_t color, PIMAGE pimg) {

if (img && img->m_hDC) {
img->m_bk_color = color;
SetBkColor(img->m_hDC, RGBTOBGR(color));
SetBkColor(img->m_hDC, ARGBTOZBGR(color));
}
CONVERT_IMAGE_END;
}
Expand All @@ -804,7 +803,7 @@ void setfontbkcolor(color_t color, PIMAGE pimg) {
PIMAGE img = CONVERT_IMAGE(pimg);

if (img && img->m_hDC) {
SetBkColor(img->m_hDC, RGBTOBGR(color));
SetBkColor(img->m_hDC, ARGBTOZBGR(color));
}
CONVERT_IMAGE_END;
}
Expand Down Expand Up @@ -1090,7 +1089,7 @@ void
floodfill(int x, int y, int border, PIMAGE pimg) {
PIMAGE img = CONVERT_IMAGE(pimg);
if (img) {
FloodFill(img->m_hDC, x, y, RGBTOBGR(border));
FloodFill(img->m_hDC, x, y, ARGBTOZBGR(border));
}
CONVERT_IMAGE_END;
}
Expand All @@ -1099,7 +1098,7 @@ void
floodfillsurface(int x, int y, color_t areacolor, PIMAGE pimg) {
PIMAGE img = CONVERT_IMAGE(pimg);
if (img) {
ExtFloodFill(img->m_hDC, x, y, RGBTOBGR(areacolor), FLOODFILLSURFACE);
ExtFloodFill(img->m_hDC, x, y, ARGBTOZBGR(areacolor), FLOODFILLSURFACE);
}
CONVERT_IMAGE_END;
}
Expand Down Expand Up @@ -1472,7 +1471,7 @@ setfillstyle(int pattern, color_t color, PIMAGE pimg) {
PIMAGE img = CONVERT_IMAGE_CONST(pimg);
LOGBRUSH lbr = {0};
img->m_fillcolor = color;
lbr.lbColor = RGBTOBGR(color);
lbr.lbColor = ARGBTOZBGR(color);
//SetBkColor(img->m_hDC, color);
if (pattern < SOLID_FILL) {
lbr.lbHatch = BS_NULL;
Expand Down Expand Up @@ -2611,4 +2610,24 @@ ege_uncompress(void *dest, unsigned long *destLen, const void *source, unsigned
}
}

LRESULT sys_edit::onMessage(UINT message, WPARAM wParam, LPARAM lParam) {
if (message == WM_CTLCOLOREDIT) {
HDC dc = (HDC)wParam;
HBRUSH br = ::CreateSolidBrush(ARGBTOZBGR(m_bgcolor));

::SetBkColor(dc, ARGBTOZBGR(m_bgcolor));
::SetTextColor(dc, ARGBTOZBGR(m_color));
::DeleteObject(m_hBrush);
m_hBrush = br;
return (LRESULT)br;
//} else if (message == WM_SETFOCUS) {
// int a = 0;
// int b = 1;
// return 0;
} else {
return ((LRESULT (CALLBACK *)(HWND, UINT, WPARAM, LPARAM))m_callback)(m_hwnd, message, wParam, lParam);
}
//return 0;
}

} // namespace ege