1 /*
2  * PROJECT:     PAINT for ReactOS
3  * LICENSE:     LGPL
4  * FILE:        base/applications/mspaint/palettemodel.cpp
5  * PURPOSE:     Keep track of palette data, notify listeners
6  * PROGRAMMERS: Benedikt Freisen
7  */
8 
9 /* INCLUDES *********************************************************/
10 
11 #include "precomp.h"
12 
13 /* FUNCTIONS ********************************************************/
14 
15 PaletteModel::PaletteModel()
16 {
17     m_fgColor = 0x00000000;
18     m_bgColor = 0x00ffffff;
19     SelectPalette(1);
20 }
21 
22 int PaletteModel::SelectedPalette()
23 {
24     return m_nSelectedPalette;
25 }
26 
27 void PaletteModel::SelectPalette(int nPalette)
28 {
29     int modernColors[28] = {
30         0x000000, 0x464646, 0x787878, 0x300099, 0x241ced, 0x0078ff, 0x0ec2ff,
31         0x00f2ff, 0x1de6a8, 0x4cb122, 0xefb700, 0xf36d4d, 0x99362f, 0x98316f,
32         0xffffff, 0xdcdcdc, 0xb4b4b4, 0x3c5a9c, 0xb1a3ff, 0x7aaae5, 0x9ce4f5,
33         0xbdf9ff, 0xbcf9d3, 0x61bb9d, 0xead999, 0xd19a70, 0x8e6d54, 0xd5a5b5
34     };
35     int oldColors[28] = {
36         0x000000, 0x808080, 0x000080, 0x008080, 0x008000, 0x808000, 0x800000,
37         0x800080, 0x408080, 0x404000, 0xff8000, 0x804000, 0xff0040, 0x004080,
38         0xffffff, 0xc0c0c0, 0x0000ff, 0x00ffff, 0x00ff00, 0xffff00, 0xff0000,
39         0xff00ff, 0x80ffff, 0x80ff00, 0xffff80, 0xff8080, 0x8000ff, 0x4080ff
40     };
41     if (nPalette == 1)
42         CopyMemory(m_colors, modernColors, sizeof(m_colors));
43     else if (nPalette == 2)
44         CopyMemory(m_colors, oldColors, sizeof(m_colors));
45     else
46         return;
47     m_nSelectedPalette = nPalette;
48     NotifyPaletteChanged();
49 }
50 
51 int PaletteModel::GetColor(int nIndex)
52 {
53     if (nIndex < 28)
54         return m_colors[nIndex];
55     else
56         return 0;
57 }
58 
59 void PaletteModel::SetColor(int nIndex, int newColor)
60 {
61     if (nIndex < 28)
62     {
63         m_colors[nIndex] = newColor;
64         NotifyPaletteChanged();
65     }
66 }
67 
68 int PaletteModel::GetFgColor()
69 {
70     return m_fgColor;
71 }
72 
73 void PaletteModel::SetFgColor(int newColor)
74 {
75     m_fgColor = newColor;
76     NotifyColorChanged();
77 }
78 
79 int PaletteModel::GetBgColor()
80 {
81     return m_bgColor;
82 }
83 
84 void PaletteModel::SetBgColor(int newColor)
85 {
86     m_bgColor = newColor;
87     NotifyColorChanged();
88 }
89 
90 void PaletteModel::NotifyColorChanged()
91 {
92     paletteWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
93     selectionWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED);
94 }
95 
96 void PaletteModel::NotifyPaletteChanged()
97 {
98     paletteWindow.SendMessage(WM_PALETTEMODELPALETTECHANGED);
99 }
100