Reactos
at master 109 lines 2.9 kB view raw
1/* 2 * PROJECT: PAINT for ReactOS 3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later) 4 * PURPOSE: Keep track of palette data, notify listeners 5 * COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net> 6 * Copyright 2021 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> 7 */ 8 9#include "precomp.h" 10 11PaletteModel paletteModel; 12 13/* FUNCTIONS ********************************************************/ 14 15PaletteModel::PaletteModel() 16{ 17 m_fgColor = 0x00000000; 18 m_bgColor = 0x00ffffff; 19 SelectPalette(PAL_MODERN); 20} 21 22PAL_TYPE PaletteModel::SelectedPalette() 23{ 24 return m_nSelectedPalette; 25} 26 27void PaletteModel::SelectPalette(PAL_TYPE nPalette) 28{ 29 static const COLORREF modernColors[NUM_COLORS] = 30 { 31 0x000000, 0x464646, 0x787878, 0x300099, 0x241ced, 0x0078ff, 0x0ec2ff, 32 0x00f2ff, 0x1de6a8, 0x4cb122, 0xefb700, 0xf36d4d, 0x99362f, 0x98316f, 33 0xffffff, 0xdcdcdc, 0xb4b4b4, 0x3c5a9c, 0xb1a3ff, 0x7aaae5, 0x9ce4f5, 34 0xbdf9ff, 0xbcf9d3, 0x61bb9d, 0xead999, 0xd19a70, 0x8e6d54, 0xd5a5b5 35 }; 36 static const COLORREF oldColors[NUM_COLORS] = 37 { 38 0x000000, 0x808080, 0x000080, 0x008080, 0x008000, 0x808000, 0x800000, 39 0x800080, 0x408080, 0x404000, 0xff8000, 0x804000, 0xff0040, 0x004080, 40 0xffffff, 0xc0c0c0, 0x0000ff, 0x00ffff, 0x00ff00, 0xffff00, 0xff0000, 41 0xff00ff, 0x80ffff, 0x80ff00, 0xffff80, 0xff8080, 0x8000ff, 0x4080ff 42 }; 43 switch (nPalette) 44 { 45 case PAL_MODERN: 46 CopyMemory(m_colors, modernColors, sizeof(m_colors)); 47 break; 48 case PAL_OLDTYPE: 49 CopyMemory(m_colors, oldColors, sizeof(m_colors)); 50 break; 51 } 52 m_nSelectedPalette = nPalette; 53 NotifyPaletteChanged(); 54} 55 56COLORREF PaletteModel::GetColor(UINT nIndex) const 57{ 58 if (nIndex < NUM_COLORS) 59 return m_colors[nIndex]; 60 else 61 return 0; 62} 63 64void PaletteModel::SetColor(UINT nIndex, COLORREF newColor) 65{ 66 if (nIndex < NUM_COLORS) 67 { 68 m_colors[nIndex] = newColor; 69 NotifyPaletteChanged(); 70 } 71} 72 73COLORREF PaletteModel::GetFgColor() const 74{ 75 return m_fgColor; 76} 77 78void PaletteModel::SetFgColor(COLORREF newColor) 79{ 80 m_fgColor = newColor; 81 NotifyColorChanged(); 82} 83 84COLORREF PaletteModel::GetBgColor() const 85{ 86 return m_bgColor; 87} 88 89void PaletteModel::SetBgColor(COLORREF newColor) 90{ 91 m_bgColor = newColor; 92 NotifyColorChanged(); 93} 94 95void PaletteModel::NotifyColorChanged() 96{ 97 if (paletteWindow.IsWindow()) 98 paletteWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED); 99 if (canvasWindow.IsWindow()) 100 canvasWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED); 101 if (textEditWindow.IsWindow()) 102 textEditWindow.SendMessage(WM_PALETTEMODELCOLORCHANGED); 103} 104 105void PaletteModel::NotifyPaletteChanged() 106{ 107 if (paletteWindow.IsWindow()) 108 paletteWindow.Invalidate(FALSE); 109}