#include "StdAfx.h"\r
#include ".\colors.h"\r
\r
-CColors::CColors(void) : m_regAdded(_T("Software\\TortoiseGit\\Colors\\Added"), RGB(100, 0, 100))\r
- , m_regCmd(_T("Software\\TortoiseGit\\Colors\\Cmd"), ::GetSysColor(COLOR_GRAYTEXT))\r
- , m_regConflict(_T("Software\\TortoiseGit\\Colors\\Conflict"), RGB(255, 0, 0))\r
- , m_regModified(_T("Software\\TortoiseGit\\Colors\\Modified"), RGB(0, 50, 160))\r
- , m_regMerged(_T("Software\\TortoiseGit\\Colors\\Merged"), RGB(0, 100, 0))\r
- , m_regDeleted(_T("Software\\TortoiseGit\\Colors\\Deleted"), RGB(100, 0, 0))\r
- , m_regLastCommit(_T("Software\\TortoiseGit\\Colors\\LastCommit"), RGB(100, 100, 100))\r
- , m_regDeletedNode(_T("Software\\TortoiseGit\\Colors\\DeletedNode"), RGB(255, 0, 0))\r
- , m_regAddedNode(_T("Software\\TortoiseGit\\Colors\\AddedNode"), RGB(0, 255, 0))\r
- , m_regReplacedNode(_T("Software\\TortoiseGit\\Colors\\ReplacedNode"), RGB(0, 255, 0))\r
- , m_regRenamedNode(_T("Software\\TortoiseGit\\Colors\\RenamedNode"), RGB(0, 0, 255))\r
- , m_regLastCommitNode(_T("Software\\TortoiseGit\\Colors\\LastCommitNode"), RGB(200, 200, 200))\r
- , m_regPropertyChanged(_T("Software\\TortoiseGit\\Colors\\PropertyChanged"), RGB(0, 50, 160))\r
+CColors::COLOR_DATA CColors::m_ColorArray[]=\r
+{\r
+ {Cmd,_T("Software\\TortoiseGit\\Colors\\Cmd"),RGB(100, 100, 100)},\r
+ {Conflict,_T("Software\\TortoiseGit\\Colors\\Conflict"), RGB(255, 0, 0)},\r
+ {Modified,_T("Software\\TortoiseGit\\Colors\\Modified"), RGB(0, 50, 160)},\r
+ {Merged,_T("Software\\TortoiseGit\\Colors\\Merged"), RGB(0, 100, 0)},\r
+ {Deleted,_T("Software\\TortoiseGit\\Colors\\Deleted"), RGB(100, 0, 0)},\r
+ {Added,_T("Software\\TortoiseGit\\Colors\\Added"), RGB(100, 0, 100)},\r
+ {LastCommit,_T("Software\\TortoiseGit\\Colors\\LastCommit"), RGB(100, 100, 100)},\r
+ {DeletedNode,_T("Software\\TortoiseGit\\Colors\\DeletedNode"), RGB(255, 0, 0)},\r
+ {AddedNode,_T("Software\\TortoiseGit\\Colors\\AddedNode"), RGB(0, 255, 0)},\r
+ {ReplacedNode,_T("Software\\TortoiseGit\\Colors\\ReplacedNode"), RGB(0, 255, 0)},\r
+ {RenamedNode,_T("Software\\TortoiseGit\\Colors\\RenamedNode"), RGB(0, 0, 255)},\r
+ {LastCommitNode,_T("Software\\TortoiseGit\\Colors\\LastCommitNode"), RGB(200, 200, 200)},\r
+ {PropertyChanged,_T("Software\\TortoiseGit\\Colors\\PropertyChanged"), RGB(0, 50, 160)},\r
+ {CurrentBranch,_T("Software\\TortoiseGit\\Colors\\CurrentBranch"), RGB(200, 0, 0)},\r
+ {LocalBranch,_T("Software\\TortoiseGit\\Colors\\LocalBranch"), RGB(0, 195, 0)},\r
+ {RemoteBranch,_T("Software\\TortoiseGit\\Colors\\RemoteBranch"), RGB(255, 221, 170)},\r
+ {Tag,_T("Software\\TortoiseGit\\Colors\\Tag"), RGB(255, 255, 0)},\r
+ {Stash,_T("Software\\TortoiseGit\\Colors\\Stash"), RGB(128, 128, 128)},\r
+ {BranchLine1,_T("Software\\TortoiseGit\\Colors\\BranchLine1"), RGB(0,0,0)},\r
+ {BranchLine2,_T("Software\\TortoiseGit\\Colors\\BranchLine2"), RGB(0xFF,0,0)},\r
+ {BranchLine3,_T("Software\\TortoiseGit\\Colors\\BranchLine3"), RGB(0,0xFF,0)},\r
+ {BranchLine4,_T("Software\\TortoiseGit\\Colors\\BranchLine4"), RGB(0,0,0xFF)},\r
+ {BranchLine5,_T("Software\\TortoiseGit\\Colors\\BranchLine5"), RGB(128,128,128)},\r
+ {BranchLine6,_T("Software\\TortoiseGit\\Colors\\BranchLine6"), RGB(128,128,0)},\r
+ {BranchLine7,_T("Software\\TortoiseGit\\Colors\\BranchLine7"), RGB(0,128,128)},\r
+ {BranchLine8,_T("Software\\TortoiseGit\\Colors\\BranchLine8"), RGB(128,0,128)},\r
+ {COLOR_END,_T("Software\\TortoiseGit\\Colors\\END"),RGB(0,0,0)},\r
+\r
+};\r
+\r
+CColors::CColors(void) \r
{\r
}\r
\r
\r
COLORREF CColors::GetColor(Colors col, bool bDefault /*=true*/)\r
{\r
- switch (col)\r
+ int i=0;\r
+ while(1)\r
{\r
- case Cmd:\r
- if (bDefault)\r
- return ::GetSysColor(COLOR_GRAYTEXT);\r
- return (COLORREF)(DWORD)m_regCmd;\r
- case Conflict:\r
- if (bDefault)\r
- return RGB(255, 0, 0);\r
- return (COLORREF)(DWORD)m_regConflict;\r
- case Modified:\r
- if (bDefault)\r
- return RGB(0, 50, 160);\r
- return (COLORREF)(DWORD)m_regModified;\r
- case Merged:\r
- if (bDefault)\r
- return RGB(0, 100, 0);\r
- return (COLORREF)(DWORD)m_regMerged;\r
- case Deleted:\r
- if (bDefault)\r
- return RGB(100, 0, 0);\r
- return (COLORREF)(DWORD)m_regDeleted;\r
- case Added:\r
- if (bDefault)\r
- return RGB(100, 0, 100);\r
- return (COLORREF)(DWORD)m_regAdded;\r
- case LastCommit:\r
- if (bDefault)\r
- return RGB(100, 100, 100);\r
- return (COLORREF)(DWORD)m_regAdded;\r
- case DeletedNode:\r
- if (bDefault)\r
- return RGB(255, 0, 0);\r
- return (COLORREF)(DWORD)m_regDeletedNode;\r
- case AddedNode:\r
- if (bDefault)\r
- return RGB(0, 255, 0);\r
- return (COLORREF)(DWORD)m_regAddedNode;\r
- case ReplacedNode:\r
- if (bDefault)\r
- return RGB(0, 255, 0);\r
- return (COLORREF)(DWORD)m_regReplacedNode;\r
- case RenamedNode:\r
- if (bDefault)\r
- return RGB(0, 0, 255);\r
- return (COLORREF)(DWORD)m_regRenamedNode;\r
- case LastCommitNode:\r
- if (bDefault)\r
- return RGB(200, 200, 200);\r
- return (COLORREF)(DWORD)m_regLastCommitNode;\r
- case PropertyChanged:\r
- if (bDefault)\r
- return RGB(0, 50, 160);\r
- return (COLORREF)(DWORD)m_regPropertyChanged;\r
+ if(m_ColorArray[i].Color == COLOR_END)\r
+ return RGB(0,0,0);\r
+\r
+ if(m_ColorArray[i].Color == col)\r
+ {\r
+ if(bDefault)\r
+ return m_ColorArray[i].Default;\r
+ else\r
+ {\r
+ CRegDWORD reg(m_ColorArray[i].RegKey,m_ColorArray[i].Default);\r
+ return (COLORREF)(DWORD) reg;\r
+ }\r
+ }\r
+\r
+ i++;\r
}\r
- return RGB(0,0,0);\r
}\r
\r
void CColors::SetColor(Colors col, COLORREF cr)\r
{\r
- switch (col)\r
+ int i=0;\r
+ while(1)\r
{\r
- case Cmd:\r
- m_regCmd = cr;\r
- break;\r
- case Conflict:\r
- m_regConflict = cr;\r
- break;\r
- case Modified:\r
- m_regModified = cr;\r
- break;\r
- case Merged:\r
- m_regMerged = cr;\r
- break;\r
- case Deleted:\r
- m_regDeleted = cr;\r
- break;\r
- case Added:\r
- m_regAdded = cr;\r
- break;\r
- case DeletedNode:\r
- m_regDeletedNode = cr;\r
- break;\r
- case AddedNode:\r
- m_regAddedNode = cr;\r
- break;\r
- case ReplacedNode:\r
- m_regReplacedNode = cr;\r
- break;\r
- case RenamedNode:\r
- m_regRenamedNode = cr;\r
- break;\r
- case LastCommit:\r
- m_regLastCommit = cr;\r
- break;\r
- case PropertyChanged:\r
- m_regPropertyChanged = cr;\r
- break;\r
- default:\r
- ATLASSERT(false);\r
+ if(m_ColorArray[i].Color == COLOR_END)\r
+ break;\r
+\r
+ if(m_ColorArray[i].Color == col)\r
+ {\r
+ CRegDWORD reg(m_ColorArray[i].RegKey,m_ColorArray[i].Default);\r
+ reg=cr;\r
+ \r
+ }\r
+ i++;\r
}\r
-}
\ No newline at end of file
+}\r
+\r
+\r
+COLORREF CColors::MixColors(COLORREF baseColor, COLORREF newColor, unsigned char mixFactor)\r
+{\r
+ short colRed;\r
+ short colGreen;\r
+ short colBlue;\r
+ colRed = ((float)( baseColor&0x000000FF) -(float)( newColor&0x000000FF) )*mixFactor/0xFF;//red\r
+ colGreen = ((float)((baseColor&0x0000FF00)>>8) -(float)((newColor&0x0000FF00)>>8 ))*mixFactor/0xFF;//green\r
+ colBlue = ((float)((baseColor&0x00FF0000)>>16)-(float)((newColor&0x00FF0000)>>16))*mixFactor/0xFF;//blue\r
+ \r
+ colRed = ( baseColor&0x000000FF) -colRed;\r
+ colGreen = ((baseColor&0x0000FF00)>>8) -colGreen;\r
+ colBlue = ((baseColor&0x00FF0000)>>16) -colBlue;\r
+ baseColor=(int)colRed|((int)colGreen<<8)|((int)colBlue<<16);\r
+ return baseColor;\r
+}\r
+\r
+COLORREF CColors::Lighten(COLORREF baseColor, unsigned char amount)\r
+{\r
+ return MixColors(baseColor, RGB(255,255,255), amount);\r
+}\r
+\r
+COLORREF CColors::Darken(COLORREF baseColor, unsigned char amount)\r
+{\r
+ return MixColors(baseColor, RGB(0,0,0), amount);\r
+}\r
+\r