ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

toolsettings.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.