2 * PROJECT: PAINT for ReactOS
4 * FILE: base/applications/mspaint/palette.cpp
5 * PURPOSE: Window procedure of the palette window
6 * PROGRAMMERS: Benedikt Freisen
9 /* INCLUDES *********************************************************/
13 /* FUNCTIONS ********************************************************/
15 LRESULT
CPaletteWindow::OnPaint(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
17 RECT rc
= { 0, 0, 31, 32 };
23 DefWindowProc(WM_PAINT
, wParam
, lParam
);
25 for(b
= 2; b
< 30; b
++)
26 for(a
= 2; a
< 29; a
++)
28 SetPixel(hDC
, a
, b
, GetSysColor(COLOR_BTNHILIGHT
));
30 DrawEdge(hDC
, &rc
, EDGE_RAISED
, BF_TOPLEFT
);
31 DrawEdge(hDC
, &rc
, BDR_SUNKENOUTER
, BF_TOPLEFT
| BF_BOTTOMRIGHT
);
32 SetRect(&rc
, 11, 12, 26, 27);
33 DrawEdge(hDC
, &rc
, BDR_RAISEDINNER
, BF_RECT
| BF_MIDDLE
);
34 oldPen
= (HPEN
) SelectObject(hDC
, CreatePen(PS_NULL
, 0, 0));
35 oldBrush
= (HBRUSH
) SelectObject(hDC
, CreateSolidBrush(paletteModel
.GetBgColor()));
36 Rectangle(hDC
, rc
.left
, rc
.top
+ 2, rc
.right
- 1, rc
.bottom
- 1);
37 DeleteObject(SelectObject(hDC
, oldBrush
));
38 SetRect(&rc
, 4, 5, 19, 20);
39 DrawEdge(hDC
, &rc
, BDR_RAISEDINNER
, BF_RECT
| BF_MIDDLE
);
40 oldBrush
= (HBRUSH
) SelectObject(hDC
, CreateSolidBrush(paletteModel
.GetFgColor()));
41 Rectangle(hDC
, rc
.left
+ 2, rc
.top
+ 2, rc
.right
- 1, rc
.bottom
- 1);
42 DeleteObject(SelectObject(hDC
, oldBrush
));
43 DeleteObject(SelectObject(hDC
, oldPen
));
45 for(i
= 0; i
< 28; i
++)
47 SetRect(&rc
, 31 + (i
% 14) * 16,
48 0 + (i
/ 14) * 16, 16 + 31 + (i
% 14) * 16, 16 + 0 + (i
/ 14) * 16);
49 DrawEdge(hDC
, &rc
, EDGE_RAISED
, BF_TOPLEFT
);
50 DrawEdge(hDC
, &rc
, BDR_SUNKENOUTER
, BF_RECT
);
51 oldPen
= (HPEN
) SelectObject(hDC
, CreatePen(PS_NULL
, 0, 0));
52 oldBrush
= (HBRUSH
) SelectObject(hDC
, CreateSolidBrush(paletteModel
.GetColor(i
)));
53 Rectangle(hDC
, rc
.left
+ 2, rc
.top
+ 2, rc
.right
- 1, rc
.bottom
- 1);
54 DeleteObject(SelectObject(hDC
, oldBrush
));
55 DeleteObject(SelectObject(hDC
, oldPen
));
61 LRESULT
CPaletteWindow::OnLButtonDown(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
63 if (GET_X_LPARAM(lParam
) >= 31)
64 paletteModel
.SetFgColor(paletteModel
.GetColor((GET_X_LPARAM(lParam
) - 31) / 16 + (GET_Y_LPARAM(lParam
) / 16) * 14));
68 LRESULT
CPaletteWindow::OnRButtonDown(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
70 if (GET_X_LPARAM(lParam
) >= 31)
71 paletteModel
.SetBgColor(paletteModel
.GetColor((GET_X_LPARAM(lParam
) - 31) / 16 + (GET_Y_LPARAM(lParam
) / 16) * 14));
75 LRESULT
CPaletteWindow::OnLButtonDblClk(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
77 if (GET_X_LPARAM(lParam
) >= 31)
78 if (ChooseColor(&choosecolor
))
80 paletteModel
.SetColor((GET_X_LPARAM(lParam
) - 31) / 16 + (GET_Y_LPARAM(lParam
) / 16) * 14,
81 choosecolor
.rgbResult
);
82 paletteModel
.SetFgColor(choosecolor
.rgbResult
);
87 LRESULT
CPaletteWindow::OnRButtonDblClk(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
89 if (GET_X_LPARAM(lParam
) >= 31)
90 if (ChooseColor(&choosecolor
))
92 paletteModel
.SetColor((GET_X_LPARAM(lParam
) - 31) / 16 + (GET_Y_LPARAM(lParam
) / 16) * 14,
93 choosecolor
.rgbResult
);
94 paletteModel
.SetBgColor(choosecolor
.rgbResult
);
99 LRESULT
CPaletteWindow::OnPaletteModelColorChanged(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
101 InvalidateRect(NULL
, FALSE
);
105 LRESULT
CPaletteWindow::OnPaletteModelPaletteChanged(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
107 InvalidateRect(NULL
, FALSE
);