//****************************************************************************** // MIDIシーケンサーソフト『世界樹』 // オプション(色)プロパティページクラス // (C)2002-2012 おーぷんMIDIぷろじぇくと/くず //****************************************************************************** /* This library is free software; you can redistribute it and/or */ /* modify it under the terms of the GNU Lesser Color Public */ /* License as published by the Free Software Foundation; either */ /* version 2.1 of the License, or (at your option) any later version. */ /* This library is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU */ /* Lesser Color Public License for more details. */ /* You should have received a copy of the GNU Lesser Color Public */ /* License along with this library; if not, write to the Free Software */ /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "winver.h" #include #include #include #include "resource.h" #include "ColorOptionPage.h" #include "../../MIDIIO/MIDIIO.h" #include "../../MIDIData/MIDIData.h" #include "../../MIDIClock/MIDIClock.h" #include "../../MIDIStatus/MIDIStatus.h" #include "../../MIDIInstrument/MIDIInstrument.h" #include "SekaijuApp.h" #ifndef CLIP #define CLIP(A,B,C) ((B)<(A)?(A):((B)>(C)?(C):(B))) #endif //------------------------------------------------------------------------------ // 構築と破壊 //------------------------------------------------------------------------------ // コンストラクタ CColorOptionPage::CColorOptionPage () : CPropertyPage (CColorOptionPage::IDD) { } //------------------------------------------------------------------------------ // オペレーション //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // オーバーライド //------------------------------------------------------------------------------ // データエクスチェンジ void CColorOptionPage::DoDataExchange (CDataExchange* pDX) { CDialog::DoDataExchange (pDX); } // ダイアログの初期化 BOOL CColorOptionPage::OnInitDialog () { BOOL bRet = CDialog::OnInitDialog (); // カラー選択コンボボックスの生成と位置調整と色サンプルの追加 long i = 0; long r, g, b; // 前景色(トラックデフォルト色) for (i = 0; i < 8; i++) { m_theForeColorCombo[i].Create (WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL, CRect (10, 10, 300, 300), this, IDC_COLOROPTION_FORECOLOR_00 + 16 + i); CRect rcComboDummy; CWnd* pComboDummy = GetDlgItem (IDC_COLOROPTION_FORECOLOR_00 + i); pComboDummy->GetWindowRect (&rcComboDummy); this->ScreenToClient (&rcComboDummy); m_theForeColorCombo[i].MoveWindow (&rcComboDummy); pComboDummy->DestroyWindow (); for (r = 0; r <= 256; r += 64) { for (g = 0; g <= 256; g += 64) { for (b = 0; b <= 256; b += 64) { m_theForeColorCombo[i].AddSampleColor (RGB (MIN (r, 255), MIN (g, 255), MIN (b, 255))); } } } m_theForeColorCombo[i].AddSampleColor (COLORSELECTCOMBOBOX_OTHER); } // 背景色 for (i = 0; i < 2; i++) { m_theBackColorCombo[i].Create (WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL, CRect (10, 10, 300, 300), this, IDC_COLOROPTION_BACKCOLOR_00 + 16 + i); CRect rcComboDummy; CWnd* pComboDummy = GetDlgItem (IDC_COLOROPTION_BACKCOLOR_00 + i); pComboDummy->GetWindowRect (&rcComboDummy); this->ScreenToClient (&rcComboDummy); m_theBackColorCombo[i].MoveWindow (&rcComboDummy); pComboDummy->DestroyWindow (); for (r = 0; r <= 256; r += 64) { for (g = 0; g <= 256; g += 64) { for (b = 0; b <= 256; b += 64) { m_theBackColorCombo[i].AddSampleColor (RGB (MIN (r, 255), MIN (g, 255), MIN (b, 255))); } } } m_theBackColorCombo[i].AddSampleColor (COLORSELECTCOMBOBOX_OTHER); } // 水平線色 for (i = 0; i < 2; i++) { m_theHorzColorCombo[i].Create (WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL, CRect (10, 10, 300, 300), this, IDC_COLOROPTION_HORZCOLOR_00 + 16 + i); CRect rcComboDummy; CWnd* pComboDummy = GetDlgItem (IDC_COLOROPTION_HORZCOLOR_00 + i); pComboDummy->GetWindowRect (&rcComboDummy); this->ScreenToClient (&rcComboDummy); m_theHorzColorCombo[i].MoveWindow (&rcComboDummy); pComboDummy->DestroyWindow (); for (r = 0; r <= 256; r += 64) { for (g = 0; g <= 256; g += 64) { for (b = 0; b <= 256; b += 64) { m_theHorzColorCombo[i].AddSampleColor (RGB (MIN (r, 255), MIN (g, 255), MIN (b, 255))); } } } m_theHorzColorCombo[i].AddSampleColor (COLORSELECTCOMBOBOX_OTHER); } // 垂直線色 for (i = 0; i < 2; i++) { m_theVertColorCombo[i].Create (WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL, CRect (10, 10, 300, 300), this, IDC_COLOROPTION_VERTCOLOR_00 + 16 + i); CRect rcComboDummy; CWnd* pComboDummy = GetDlgItem (IDC_COLOROPTION_VERTCOLOR_00 + i); pComboDummy->GetWindowRect (&rcComboDummy); this->ScreenToClient (&rcComboDummy); m_theVertColorCombo[i].MoveWindow (&rcComboDummy); pComboDummy->DestroyWindow (); for (r = 0; r <= 256; r += 64) { for (g = 0; g <= 256; g += 64) { for (b = 0; b <= 256; b += 64) { m_theVertColorCombo[i].AddSampleColor (RGB (MIN (r, 255), MIN (g, 255), MIN (b, 255))); } } } m_theVertColorCombo[i].AddSampleColor (COLORSELECTCOMBOBOX_OTHER); } return bRet; } //------------------------------------------------------------------------------ // メッセージマップ //------------------------------------------------------------------------------ BEGIN_MESSAGE_MAP (CColorOptionPage, CPropertyPage) END_MESSAGE_MAP ()