Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentoolsettings.c
Go to the documentation of this file.
00001 /* 00002 * PROJECT: PAINT for ReactOS 00003 * LICENSE: LGPL 00004 * FILE: base/applications/paint/toolsettings.c 00005 * PURPOSE: Window procedure of the tool settings window 00006 * PROGRAMMERS: Benedikt Freisen 00007 */ 00008 00009 /* INCLUDES *********************************************************/ 00010 00011 #include "precomp.h" 00012 00013 /* FUNCTIONS ********************************************************/ 00014 00015 extern void zoomTo(int, int, int); 00016 00017 LRESULT CALLBACK 00018 SettingsWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 00019 { 00020 switch (message) 00021 { 00022 case WM_VSCROLL: 00023 zoomTo(125 << SendMessage(hTrackbarZoom, TBM_GETPOS, 0, 0), 0, 0); 00024 break; 00025 case WM_PAINT: 00026 { 00027 HDC hdc = GetDC(hwnd); 00028 RECT rect1 = { 0, 0, 42, 66 }; 00029 RECT rect2 = { 0, 70, 42, 136 }; 00030 00031 DefWindowProc(hwnd, message, wParam, lParam); 00032 00033 DrawEdge(hdc, &rect1, BDR_SUNKENOUTER, (activeTool == TOOL_ZOOM) ? BF_RECT : BF_RECT | BF_MIDDLE); 00034 DrawEdge(hdc, &rect2, (activeTool >= TOOL_RECT) ? BDR_SUNKENOUTER : 0, BF_RECT | BF_MIDDLE); 00035 switch (activeTool) 00036 { 00037 case TOOL_FREESEL: 00038 case TOOL_RECTSEL: 00039 case TOOL_TEXT: 00040 { 00041 HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); 00042 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00043 Rectangle(hdc, 2, transpBg * 31 + 2, 41, transpBg * 31 + 33); 00044 DeleteObject(SelectObject(hdc, oldPen)); 00045 DrawIconEx(hdc, 1, 2, hNontranspIcon, 40, 30, 0, NULL, DI_NORMAL); 00046 DrawIconEx(hdc, 1, 33, hTranspIcon, 40, 30, 0, NULL, DI_NORMAL); 00047 break; 00048 } 00049 case TOOL_RUBBER: 00050 { 00051 int i; 00052 HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); 00053 for(i = 0; i < 4; i++) 00054 { 00055 if (rubberRadius == i + 2) 00056 { 00057 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00058 Rectangle(hdc, 14, i * 15 + 2, 29, i * 15 + 17); 00059 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHTTEXT)); 00060 } 00061 else 00062 SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); 00063 Rectangle(hdc, 19 - i, i * 14 + 7, 24 + i, i * 16 + 12); 00064 } 00065 DeleteObject(SelectObject(hdc, oldPen)); 00066 break; 00067 } 00068 case TOOL_BRUSH: 00069 { 00070 int i; 00071 HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); 00072 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00073 Rectangle(hdc, brushStyle % 3 * 13 + 2, brushStyle / 3 * 15 + 2, brushStyle % 3 * 13 + 15, 00074 brushStyle / 3 * 15 + 17); 00075 DeleteObject(SelectObject(hdc, oldPen)); 00076 for(i = 0; i < 12; i++) 00077 Brush(hdc, i % 3 * 13 + 7, i / 3 * 15 + 8, i % 3 * 13 + 7, i / 3 * 15 + 8, 00078 GetSysColor((i == brushStyle) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), i); 00079 break; 00080 } 00081 case TOOL_AIRBRUSH: 00082 { 00083 HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); 00084 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00085 switch (airBrushWidth) 00086 { 00087 case 5: 00088 Rectangle(hdc, 2, 2, 21, 31); 00089 break; 00090 case 8: 00091 Rectangle(hdc, 20, 2, 41, 31); 00092 break; 00093 case 3: 00094 Rectangle(hdc, 2, 30, 16, 61); 00095 break; 00096 case 12: 00097 Rectangle(hdc, 15, 30, 41, 61); 00098 break; 00099 } 00100 Airbrush(hdc, 10, 15, 00101 GetSysColor((airBrushWidth == 5) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 5); 00102 Airbrush(hdc, 30, 15, 00103 GetSysColor((airBrushWidth == 8) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 8); 00104 Airbrush(hdc, 8, 45, 00105 GetSysColor((airBrushWidth == 3) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 3); 00106 Airbrush(hdc, 27, 45, 00107 GetSysColor((airBrushWidth == 12) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 12); 00108 DeleteObject(SelectObject(hdc, oldPen)); 00109 break; 00110 } 00111 case TOOL_LINE: 00112 case TOOL_BEZIER: 00113 { 00114 int i; 00115 HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); 00116 for(i = 0; i < 5; i++) 00117 { 00118 if (lineWidth == i + 1) 00119 { 00120 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00121 Rectangle(hdc, 2, i * 12 + 2, 41, i * 12 + 14); 00122 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHTTEXT)); 00123 } 00124 else 00125 SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); 00126 Rectangle(hdc, 5, i * 12 + 6, 38, i * 12 + 8 + i); 00127 } 00128 DeleteObject(SelectObject(hdc, oldPen)); 00129 break; 00130 } 00131 case TOOL_RECT: 00132 case TOOL_SHAPE: 00133 case TOOL_ELLIPSE: 00134 case TOOL_RRECT: 00135 { 00136 int i; 00137 HPEN oldPen = SelectObject(hdc, CreatePen(PS_NULL, 0, 0)); 00138 for(i = 0; i < 3; i++) 00139 { 00140 if (shapeStyle == i) 00141 { 00142 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00143 Rectangle(hdc, 2, i * 20 + 2, 41, i * 20 + 22); 00144 } 00145 } 00146 Rect(hdc, 5, 6, 37, 16, 00147 GetSysColor((shapeStyle == 0) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 00148 GetSysColor(COLOR_APPWORKSPACE), 1, 0); 00149 Rect(hdc, 5, 26, 37, 36, 00150 GetSysColor((shapeStyle == 1) ? COLOR_HIGHLIGHTTEXT : COLOR_WINDOWTEXT), 00151 GetSysColor(COLOR_APPWORKSPACE), 1, 1); 00152 Rect(hdc, 5, 46, 37, 56, GetSysColor(COLOR_APPWORKSPACE), GetSysColor(COLOR_APPWORKSPACE), 00153 1, 1); 00154 for(i = 0; i < 5; i++) 00155 { 00156 if (lineWidth == i + 1) 00157 { 00158 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHT)); 00159 Rectangle(hdc, 2, i * 12 + 72, 41, i * 12 + 84); 00160 SelectObject(hdc, GetSysColorBrush(COLOR_HIGHLIGHTTEXT)); 00161 } 00162 else 00163 SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); 00164 Rectangle(hdc, 5, i * 12 + 76, 38, i * 12 + 78 + i); 00165 } 00166 DeleteObject(SelectObject(hdc, oldPen)); 00167 break; 00168 } 00169 } 00170 ReleaseDC(hwnd, hdc); 00171 break; 00172 } 00173 case WM_LBUTTONDOWN: 00174 { 00175 switch (activeTool) 00176 { 00177 case TOOL_FREESEL: 00178 case TOOL_RECTSEL: 00179 case TOOL_TEXT: 00180 if ((HIWORD(lParam) > 1) && (HIWORD(lParam) < 64)) 00181 { 00182 transpBg = (HIWORD(lParam) - 2) / 31; 00183 SendMessage(hwnd, WM_PAINT, 0, 0); 00184 } 00185 break; 00186 case TOOL_RUBBER: 00187 if ((HIWORD(lParam) > 1) && (HIWORD(lParam) < 62)) 00188 { 00189 rubberRadius = (HIWORD(lParam) - 2) / 15 + 2; 00190 SendMessage(hwnd, WM_PAINT, 0, 0); 00191 } 00192 break; 00193 case TOOL_BRUSH: 00194 if ((LOWORD(lParam) > 1) && (LOWORD(lParam) < 40) && (HIWORD(lParam) > 1) 00195 && (HIWORD(lParam) < 62)) 00196 { 00197 brushStyle = (HIWORD(lParam) - 2) / 15 * 3 + (LOWORD(lParam) - 2) / 13; 00198 SendMessage(hwnd, WM_PAINT, 0, 0); 00199 } 00200 break; 00201 case TOOL_AIRBRUSH: 00202 if (HIWORD(lParam) < 62) 00203 { 00204 if (HIWORD(lParam) < 30) 00205 { 00206 if (LOWORD(lParam) < 20) 00207 airBrushWidth = 5; 00208 else 00209 airBrushWidth = 8; 00210 } 00211 else 00212 { 00213 if (LOWORD(lParam) < 15) 00214 airBrushWidth = 3; 00215 else 00216 airBrushWidth = 12; 00217 } 00218 SendMessage(hwnd, WM_PAINT, 0, 0); 00219 } 00220 break; 00221 case TOOL_LINE: 00222 case TOOL_BEZIER: 00223 if (HIWORD(lParam) <= 62) 00224 { 00225 lineWidth = (HIWORD(lParam) - 2) / 12 + 1; 00226 SendMessage(hwnd, WM_PAINT, 0, 0); 00227 } 00228 break; 00229 case TOOL_RECT: 00230 case TOOL_SHAPE: 00231 case TOOL_ELLIPSE: 00232 case TOOL_RRECT: 00233 if (HIWORD(lParam) <= 60) 00234 { 00235 shapeStyle = (HIWORD(lParam) - 2) / 20; 00236 SendMessage(hwnd, WM_PAINT, 0, 0); 00237 } 00238 if ((HIWORD(lParam) >= 70) && (HIWORD(lParam) <= 132)) 00239 { 00240 lineWidth = (HIWORD(lParam) - 72) / 12 + 1; 00241 SendMessage(hwnd, WM_PAINT, 0, 0); 00242 } 00243 break; 00244 } 00245 break; 00246 } 00247 00248 default: 00249 return DefWindowProc(hwnd, message, wParam, lParam); 00250 } 00251 00252 return 0; 00253 } Generated on Sat May 26 2012 04:16:04 for ReactOS by
1.7.6.1
|