ReactOS 0.4.16-dev-753-g705a985
colordlg.c File Reference
#include <stdarg.h>
#include <stdio.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "commdlg.h"
#include "dlgs.h"
#include "cderr.h"
#include "cdlg.h"
#include "wine/debug.h"
#include "wine/heap.h"
Include dependency graph for colordlg.c:

Go to the source code of this file.

Classes

struct  CCPRIVATE
 

Macros

#define CONV_LPARAMTOPOINT(lp, p)   do { (p)->x = (short)LOWORD(lp); (p)->y = (short)HIWORD(lp); } while(0)
 
#define DISTANCE   4
 
#define MAXVERT   240
 
#define MAXHORI   239
 
#define XSTEPS   48
 
#define YSTEPS   24
 

Typedefs

typedef struct CCPRIVATE CCPRIV
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (commdlg)
 
static INT_PTR CALLBACK ColorDlgProc (HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
 
static int hsl_to_x (int hue, int sat, int lum)
 
static COLORREF CC_HSLtoRGB (int hue, int sat, int lum)
 
static int CC_RGBtoHSL (char c, COLORREF rgb)
 
static void CC_DrawCurrentFocusRect (const CCPRIV *lpp)
 
static void CC_DrawFocusRect (CCPRIV *lpp, HWND hwnd, int x, int y, int rows, int cols)
 
static BOOL CC_MouseCheckPredefColorArray (CCPRIV *lpp, int rows, int cols, LPARAM lParam)
 
static BOOL CC_MouseCheckUserColorArray (CCPRIV *lpp, int rows, int cols, LPARAM lParam)
 
static BOOL CC_MouseCheckColorGraph (HWND hDlg, int dlgitem, int *hori, int *vert, LPARAM lParam)
 
static BOOL CC_MouseCheckResultWindow (HWND hDlg, LPARAM lParam)
 
static int CC_CheckDigitsInEdit (HWND hwnd, int maxval)
 
static void CC_PaintSelectedColor (const CCPRIV *infoPtr)
 
static void CC_PaintTriangle (CCPRIV *infoPtr)
 
static void CC_PaintCross (CCPRIV *infoPtr)
 
static void CC_PrepareColorGraph (CCPRIV *infoPtr)
 
static void CC_PaintColorGraph (CCPRIV *infoPtr)
 
static void CC_PaintLumBar (const CCPRIV *infoPtr)
 
static void CC_EditSetRGB (CCPRIV *infoPtr)
 
static void CC_EditSetHSL (CCPRIV *infoPtr)
 
static void CC_SwitchToFullSize (CCPRIV *infoPtr, const RECT *lprect)
 
static void CC_PaintPredefColorArray (const CCPRIV *infoPtr, int rows, int cols)
 
static void CC_PaintUserColorArray (const CCPRIV *infoPtr, int rows, int cols)
 
static BOOL CC_HookCallChk (const CHOOSECOLORW *lpcc)
 
static LRESULT CC_WMInitDialog (HWND hDlg, WPARAM wParam, LPARAM lParam)
 
static LRESULT CC_WMCommand (CCPRIV *lpp, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl)
 
static LRESULT CC_WMPaint (CCPRIV *lpp)
 
static LRESULT CC_WMLButtonUp (CCPRIV *infoPtr)
 
static LRESULT CC_WMMouseMove (CCPRIV *infoPtr, LPARAM lParam)
 
static LRESULT CC_WMLButtonDown (CCPRIV *infoPtr, LPARAM lParam)
 
BOOL WINAPI ChooseColorW (CHOOSECOLORW *lpChCol)
 
BOOL WINAPI ChooseColorA (LPCHOOSECOLORA lpChCol)
 

Variables

static const COLORREF predefcolors [6][8]
 
static const WCHAR szColourDialogProp []
 

Macro Definition Documentation

◆ CONV_LPARAMTOPOINT

#define CONV_LPARAMTOPOINT (   lp,
  p 
)    do { (p)->x = (short)LOWORD(lp); (p)->y = (short)HIWORD(lp); } while(0)

Definition at line 44 of file colordlg.c.

◆ DISTANCE

#define DISTANCE   4

Definition at line 257 of file colordlg.c.

◆ MAXHORI

#define MAXHORI   239

Definition at line 327 of file colordlg.c.

◆ MAXVERT

#define MAXVERT   240

Definition at line 326 of file colordlg.c.

◆ XSTEPS

#define XSTEPS   48

Definition at line 593 of file colordlg.c.

◆ YSTEPS

#define YSTEPS   24

Definition at line 594 of file colordlg.c.

Typedef Documentation

◆ CCPRIV

Function Documentation

◆ CC_CheckDigitsInEdit()

static int CC_CheckDigitsInEdit ( HWND  hwnd,
int  maxval 
)
static

Definition at line 402 of file colordlg.c.

404{
405 int i, k, m, result, value;
406 long editpos;
407 char buffer[30];
408
410 m = strlen(buffer);
411 result = 0;
412
413 for (i = 0 ; i < m ; i++)
414 if (buffer[i] < '0' || buffer[i] > '9')
415 {
416 for (k = i + 1; k <= m; k++) /* delete bad character */
417 {
418 buffer[i] = buffer[k];
419 m--;
420 }
421 buffer[m] = 0;
422 result = 1;
423 }
424
425 value = atoi(buffer);
426 if (value > maxval) /* build a new string */
427 {
428#ifdef __REACTOS__
429 value = maxval;
430#endif
431 sprintf(buffer, "%d", maxval);
432 result = 2;
433 }
434 if (result)
435 {
436 editpos = SendMessageA(hwnd, EM_GETSEL, 0, 0);
437#ifdef __REACTOS__
438 infoPtr->updating = TRUE;
439#endif
441#ifdef __REACTOS__
442 infoPtr->updating = FALSE;
443#endif
444 SendMessageA(hwnd, EM_SETSEL, 0, editpos);
445 }
446 return value;
447}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define ARRAY_SIZE(A)
Definition: main.h:20
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
GLuint buffer
Definition: glext.h:5915
GLuint64EXT * result
Definition: glext.h:11304
const GLfloat * m
Definition: glext.h:10848
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
#define sprintf(buf, format,...)
Definition: sprintf.c:55
int k
Definition: mpi.c:3369
Definition: pdh_main.c:94
int WINAPI GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
Definition: window.c:1312
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
#define EM_GETSEL
Definition: winuser.h:2000
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define EM_SETSEL
Definition: winuser.h:2021

Referenced by CC_WMCommand().

◆ CC_DrawCurrentFocusRect()

static void CC_DrawCurrentFocusRect ( const CCPRIV lpp)
static

Definition at line 221 of file colordlg.c.

222{
223 if (lpp->hwndFocus)
224 {
225 HDC hdc = GetDC(lpp->hwndFocus);
227 ReleaseDC(lpp->hwndFocus, hdc);
228 }
229}
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
RECT focusRect
Definition: colordlg.c:89
HWND hwndFocus
Definition: colordlg.c:90
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
BOOL WINAPI DrawFocusRect(_In_ HDC, _In_ LPCRECT)

Referenced by CC_DrawFocusRect(), CC_PaintPredefColorArray(), and CC_PaintUserColorArray().

◆ CC_DrawFocusRect()

static void CC_DrawFocusRect ( CCPRIV lpp,
HWND  hwnd,
int  x,
int  y,
int  rows,
int  cols 
)
static

Definition at line 234 of file colordlg.c.

235{
236 RECT rect;
237 int dx, dy;
238 HDC hdc;
239
240 CC_DrawCurrentFocusRect(lpp); /* remove current focus rect */
241 /* calculate new rect */
243 dx = (rect.right - rect.left) / cols;
244 dy = (rect.bottom - rect.top) / rows;
245 rect.left += (x * dx) - 2;
246 rect.top += (y * dy) - 2;
247 rect.right = rect.left + dx;
248 rect.bottom = rect.top + dy;
249 /* draw it */
250 hdc = GetDC(hwnd);
252 lpp->focusRect = rect;
253 lpp->hwndFocus = hwnd;
255}
static void CC_DrawCurrentFocusRect(const CCPRIV *lpp)
Definition: colordlg.c:221
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint dy
Definition: linetemp.h:97
GLint dx
Definition: linetemp.h:97
& rect
Definition: startmenu.cpp:1413
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)

Referenced by CC_MouseCheckPredefColorArray(), and CC_MouseCheckUserColorArray().

◆ CC_EditSetHSL()

static void CC_EditSetHSL ( CCPRIV infoPtr)
static

Definition at line 717 of file colordlg.c.

718{
719 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH) )) /* if full size */
720 {
721 infoPtr->updating = TRUE;
722 SetDlgItemInt(infoPtr->hwndSelf, IDC_COLOR_EDIT_H, infoPtr->h, TRUE);
723 SetDlgItemInt(infoPtr->hwndSelf, IDC_COLOR_EDIT_S, infoPtr->s, TRUE);
724 SetDlgItemInt(infoPtr->hwndSelf, IDC_COLOR_EDIT_L, infoPtr->l, TRUE);
725 infoPtr->updating = FALSE;
726 }
727 CC_PaintLumBar(infoPtr);
728}
#define IDC_COLOR_EDIT_L
Definition: cdlg.h:158
#define IDC_COLOR_EDIT_H
Definition: cdlg.h:156
#define IDC_COLOR_GRAPH
Definition: cdlg.h:163
#define IDC_COLOR_EDIT_S
Definition: cdlg.h:157
static void CC_PaintLumBar(const CCPRIV *infoPtr)
Definition: colordlg.c:664
HWND hwndSelf
Definition: colordlg.c:76
int s
Definition: colordlg.c:86
int l
Definition: colordlg.c:87
BOOL updating
Definition: colordlg.c:84
int h
Definition: colordlg.c:85
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
BOOL WINAPI SetDlgItemInt(_In_ HWND, _In_ int, _In_ UINT, _In_ BOOL)
BOOL WINAPI IsWindowVisible(_In_ HWND)

Referenced by CC_SwitchToFullSize(), CC_WMCommand(), CC_WMLButtonDown(), and CC_WMMouseMove().

◆ CC_EditSetRGB()

static void CC_EditSetRGB ( CCPRIV infoPtr)
static

Definition at line 697 of file colordlg.c.

698{
699 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH) )) /* if full size */
700 {
701 COLORREF cr = infoPtr->lpcc->rgbResult;
702 int r = GetRValue(cr);
703 int g = GetGValue(cr);
704 int b = GetBValue(cr);
705
706 infoPtr->updating = TRUE;
710 infoPtr->updating = FALSE;
711 }
712}
#define IDC_COLOR_EDIT_G
Definition: cdlg.h:160
#define IDC_COLOR_EDIT_B
Definition: cdlg.h:161
#define IDC_COLOR_EDIT_R
Definition: cdlg.h:159
#define GetBValue(quad)
Definition: precomp.h:75
#define GetGValue(quad)
Definition: precomp.h:74
#define GetRValue(quad)
Definition: precomp.h:73
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean g
Definition: glext.h:6204
LPCHOOSECOLORW lpcc
Definition: colordlg.c:75
COLORREF rgbResult
Definition: commdlg.h:253
DWORD COLORREF
Definition: windef.h:300

Referenced by CC_SwitchToFullSize(), CC_WMCommand(), CC_WMLButtonDown(), and CC_WMMouseMove().

◆ CC_HookCallChk()

static BOOL CC_HookCallChk ( const CHOOSECOLORW lpcc)
static

Definition at line 860 of file colordlg.c.

861{
862 if (lpcc)
863 if(lpcc->Flags & CC_ENABLEHOOK)
864 if (lpcc->lpfnHook)
865 return TRUE;
866 return FALSE;
867}
#define CC_ENABLEHOOK
Definition: commdlg.h:54
LPCCHOOKPROC lpfnHook
Definition: commdlg.h:257

Referenced by CC_WMCommand(), CC_WMInitDialog(), and ColorDlgProc().

◆ CC_HSLtoRGB()

static COLORREF CC_HSLtoRGB ( int  hue,
int  sat,
int  lum 
)
static

Definition at line 130 of file colordlg.c.

131{
132 int h, r, g, b;
133
134 /* r */
135 h = hue > 80 ? hue-80 : hue+160;
136 r = hsl_to_x(h, sat, lum);
137 /* g */
138 h = hue > 160 ? hue-160 : hue+80;
139 g = hsl_to_x(h, sat, lum);
140 /* b */
141 b = hsl_to_x(hue, sat, lum);
142
143 return RGB(r, g, b);
144}
static int hsl_to_x(int hue, int sat, int lum)
Definition: colordlg.c:93
#define RGB(r, g, b)
Definition: precomp.h:71
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
#define b
Definition: ke_i.h:79

Referenced by CC_PaintLumBar(), CC_PrepareColorGraph(), CC_WMCommand(), CC_WMLButtonDown(), and CC_WMMouseMove().

◆ CC_MouseCheckColorGraph()

static BOOL CC_MouseCheckColorGraph ( HWND  hDlg,
int  dlgitem,
int hori,
int vert,
LPARAM  lParam 
)
static

Definition at line 339 of file colordlg.c.

340{
341 HWND hwnd;
342 POINT point;
343 RECT rect;
344 long x,y;
345
347 ClientToScreen(hDlg, &point);
348 hwnd = GetDlgItem( hDlg, dlgitem );
350
351 if (!PtInRect(&rect, point))
352 return FALSE;
353
356
357 x = (long) point.x * MAXHORI;
358 x /= rect.right;
359 y = (long) (rect.bottom - point.y) * MAXVERT;
360 y /= rect.bottom;
361
362 if (x < 0) x = 0;
363 if (y < 0) y = 0;
364 if (x > MAXHORI) x = MAXHORI;
365 if (y > MAXVERT) y = MAXVERT;
366
367 if (hori)
368 *hori = x;
369 if (vert)
370 *vert = y;
371
372 return TRUE;
373}
#define MAXHORI
Definition: colordlg.c:327
#define MAXVERT
Definition: colordlg.c:326
#define CONV_LPARAMTOPOINT(lp, p)
Definition: colordlg.c:44
LPARAM lParam
Definition: combotst.c:139
POINTL point
Definition: edittest.c:50
#define long
Definition: qsort.c:33
LONG y
Definition: windef.h:330
LONG x
Definition: windef.h:329
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI ClientToScreen(_In_ HWND, _Inout_ LPPOINT)
BOOL WINAPI PtInRect(_In_ LPCRECT, _In_ POINT)
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)

Referenced by CC_WMLButtonDown(), and CC_WMMouseMove().

◆ CC_MouseCheckPredefColorArray()

static BOOL CC_MouseCheckPredefColorArray ( CCPRIV lpp,
int  rows,
int  cols,
LPARAM  lParam 
)
static

Definition at line 263 of file colordlg.c.

264{
265 HWND hwnd;
266 POINT point;
267 RECT rect;
268 int dx, dy, x, y;
269
274 if (PtInRect(&rect, point))
275 {
276 dx = (rect.right - rect.left) / cols;
277 dy = (rect.bottom - rect.top) / rows;
279
280 if (point.x % dx < ( dx - DISTANCE) && point.y % dy < ( dy - DISTANCE))
281 {
282 x = point.x / dx;
283 y = point.y / dy;
284 lpp->lpcc->rgbResult = predefcolors[y][x];
285 CC_DrawFocusRect(lpp, hwnd, x, y, rows, cols);
286 return TRUE;
287 }
288 }
289 return FALSE;
290}
#define IDC_COLOR_PREDEF
Definition: cdlg.h:167
static void CC_DrawFocusRect(CCPRIV *lpp, HWND hwnd, int x, int y, int rows, int cols)
Definition: colordlg.c:234
static const COLORREF predefcolors[6][8]
Definition: colordlg.c:46
#define DISTANCE
Definition: colordlg.c:257

Referenced by CC_WMLButtonDown().

◆ CC_MouseCheckResultWindow()

static BOOL CC_MouseCheckResultWindow ( HWND  hDlg,
LPARAM  lParam 
)
static

Definition at line 378 of file colordlg.c.

379{
380 HWND hwnd;
381 POINT point;
382 RECT rect;
383
385 ClientToScreen(hDlg, &point);
388 if (PtInRect(&rect, point))
389 {
391 return TRUE;
392 }
393 return FALSE;
394}
#define IDC_COLOR_RES
Definition: cdlg.h:165
#define IDC_COLOR_RESULT
Definition: cdlg.h:162
#define WM_COMMAND
Definition: winuser.h:1743
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by ColorDlgProc().

◆ CC_MouseCheckUserColorArray()

static BOOL CC_MouseCheckUserColorArray ( CCPRIV lpp,
int  rows,
int  cols,
LPARAM  lParam 
)
static

Definition at line 296 of file colordlg.c.

297{
298 HWND hwnd;
299 POINT point;
300 RECT rect;
301 int dx, dy, x, y;
302 COLORREF *crarr = lpp->lpcc->lpCustColors;
303
308 if (PtInRect(&rect, point))
309 {
310 dx = (rect.right - rect.left) / cols;
311 dy = (rect.bottom - rect.top) / rows;
313
314 if (point.x % dx < (dx - DISTANCE) && point.y % dy < (dy - DISTANCE))
315 {
316 x = point.x / dx;
317 y = point.y / dy;
318 lpp->lpcc->rgbResult = crarr[x + (cols * y) ];
319 CC_DrawFocusRect(lpp, hwnd, x, y, rows, cols);
320 return TRUE;
321 }
322 }
323 return FALSE;
324}
#define IDC_COLOR_USRDEF
Definition: cdlg.h:168
COLORREF * lpCustColors
Definition: commdlg.h:254

Referenced by CC_WMLButtonDown().

◆ CC_PaintColorGraph()

static void CC_PaintColorGraph ( CCPRIV infoPtr)
static

Definition at line 640 of file colordlg.c.

641{
643 HDC hDC;
644 RECT rect;
645
646 if (IsWindowVisible(hwnd)) /* if full size */
647 {
648 if (!infoPtr->hdcMem)
649 CC_PrepareColorGraph(infoPtr); /* should not be necessary */
650
651 hDC = GetDC(hwnd);
653 if (infoPtr->hdcMem)
654 BitBlt(hDC, 0, 0, rect.right, rect.bottom, infoPtr->hdcMem, 0, 0, SRCCOPY);
655 else
656 WARN("choose color: hdcMem is not defined\n");
658 }
659}
static HDC hDC
Definition: 3dtext.c:33
#define WARN(fmt,...)
Definition: precomp.h:61
static void CC_PrepareColorGraph(CCPRIV *infoPtr)
Definition: colordlg.c:600
static VOID BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:57
HDC hdcMem
Definition: colordlg.c:78
#define SRCCOPY
Definition: wingdi.h:333

Referenced by CC_WMPaint().

◆ CC_PaintCross()

static void CC_PaintCross ( CCPRIV infoPtr)
static

Definition at line 529 of file colordlg.c.

530{
532
533 if (IsWindowVisible(hwnd)) /* if full size */
534 {
535 HDC hDC;
536#ifdef __REACTOS__
537 int w = 8, wc = 6;
538#else
539 int w = GetDialogBaseUnits() - 1;
540 int wc = GetDialogBaseUnits() * 3 / 4;
541#endif
542 RECT rect;
543 POINT point, p;
544 HRGN region;
545 HPEN hPen;
546 int x, y;
547
548 x = infoPtr->h;
549 y = infoPtr->s;
550
552 hDC = GetDC(hwnd);
553 region = CreateRectRgnIndirect(&rect);
554 SelectClipRgn(hDC, region);
555 DeleteObject(region);
556
557 point.x = ((long)rect.right * (long)x) / (long)MAXHORI;
558 point.y = rect.bottom - ((long)rect.bottom * (long)y) / (long)MAXVERT;
559 if ( infoPtr->oldcross.left != infoPtr->oldcross.right )
560 BitBlt(hDC, infoPtr->oldcross.left, infoPtr->oldcross.top,
561 infoPtr->oldcross.right - infoPtr->oldcross.left,
562 infoPtr->oldcross.bottom - infoPtr->oldcross.top,
563 infoPtr->hdcMem, infoPtr->oldcross.left, infoPtr->oldcross.top, SRCCOPY);
564#ifdef __REACTOS__
565 infoPtr->oldcross.left = point.x - w - 3;
566 infoPtr->oldcross.right = point.x + w + 3;
567 infoPtr->oldcross.top = point.y - w - 3;
568 infoPtr->oldcross.bottom = point.y + w + 3;
569#else
570 infoPtr->oldcross.left = point.x - w - 1;
571 infoPtr->oldcross.right = point.x + w + 1;
572 infoPtr->oldcross.top = point.y - w - 1;
573 infoPtr->oldcross.bottom = point.y + w + 1;
574#endif
575
576 hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); /* -black- color */
577 hPen = SelectObject(hDC, hPen);
578 MoveToEx(hDC, point.x - w, point.y, &p);
579 LineTo(hDC, point.x - wc, point.y);
580 MoveToEx(hDC, point.x + wc, point.y, &p);
581 LineTo(hDC, point.x + w, point.y);
582 MoveToEx(hDC, point.x, point.y - w, &p);
583 LineTo(hDC, point.x, point.y - wc);
584 MoveToEx(hDC, point.x, point.y + wc, &p);
585 LineTo(hDC, point.x, point.y + w);
587
589 }
590}
pKey DeleteObject()
GLfloat GLfloat p
Definition: glext.h:8902
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
RECT oldcross
Definition: colordlg.c:83
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
HRGN WINAPI CreateRectRgnIndirect(_In_ LPCRECT)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
int WINAPI SelectClipRgn(_In_ HDC, _In_opt_ HRGN)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
#define PS_SOLID
Definition: wingdi.h:586
LONG WINAPI GetDialogBaseUnits(void)
Definition: dialog.c:2144

Referenced by CC_WMCommand(), CC_WMInitDialog(), CC_WMLButtonDown(), CC_WMLButtonUp(), CC_WMMouseMove(), and CC_WMPaint().

◆ CC_PaintLumBar()

static void CC_PaintLumBar ( const CCPRIV infoPtr)
static

Definition at line 664 of file colordlg.c.

665{
668 int lum, ldif, ydif;
669 HBRUSH hbrush;
670 HDC hDC;
671
673 {
674 hDC = GetDC(hwnd);
676 rect = client;
677
678 ldif = 240 / YSTEPS;
679 ydif = client.bottom / YSTEPS+1;
680 for (lum = 0; lum < 240 + ldif; lum += ldif)
681 {
682 rect.top = max(0, rect.bottom - ydif);
683 hbrush = CreateSolidBrush(CC_HSLtoRGB(infoPtr->h, infoPtr->s, lum));
686 rect.bottom = rect.top;
687 }
691 }
692}
static HBRUSH hbrush
#define IDC_COLOR_LUMBAR
Definition: cdlg.h:155
#define YSTEPS
Definition: colordlg.c:594
static COLORREF CC_HSLtoRGB(int hue, int sat, int lum)
Definition: colordlg.c:130
static FILE * client
Definition: client.c:41
#define max(a, b)
Definition: svc.c:63
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
#define BDR_SUNKENOUTER
Definition: winuser.h:443
BOOL WINAPI DrawEdge(_In_ HDC, _Inout_ LPRECT, _In_ UINT, _In_ UINT)
#define BF_RECT
Definition: winuser.h:462

Referenced by CC_EditSetHSL(), CC_WMCommand(), and CC_WMPaint().

◆ CC_PaintPredefColorArray()

static void CC_PaintPredefColorArray ( const CCPRIV infoPtr,
int  rows,
int  cols 
)
static

Definition at line 764 of file colordlg.c.

765{
767 RECT rect, blockrect;
768 HDC hdc;
769 HBRUSH hBrush;
770 int dx, dy, i, j, k;
771
773 dx = rect.right / cols;
774 dy = rect.bottom / rows;
775 k = rect.left;
776
777 hdc = GetDC(hwnd);
779 hBrush = (HBRUSH)GetClassLongPtrW( hwnd, GCLP_HBRBACKGROUND);
780 if (!hBrush) hBrush = GetSysColorBrush(COLOR_BTNFACE);
781 FillRect(hdc, &rect, hBrush);
782 for ( j = 0; j < rows; j++ )
783 {
784 for ( i = 0; i < cols; i++ )
785 {
786 hBrush = CreateSolidBrush(predefcolors[j][i]);
787 if (hBrush)
788 {
789 blockrect.left = rect.left;
790 blockrect.top = rect.top;
791 blockrect.right = rect.left + dx - DISTANCE;
792 blockrect.bottom = rect.top + dy - DISTANCE;
793 FillRect(hdc, &blockrect, hBrush);
794 DrawEdge(hdc, &blockrect, BDR_SUNKEN, BF_RECT);
795 DeleteObject(hBrush);
796 }
797 rect.left += dx;
798 }
799 rect.top += dy;
800 rect.left = k;
801 }
803 if (infoPtr->hwndFocus == hwnd)
805}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define BDR_SUNKEN
Definition: winuser.h:449
HBRUSH WINAPI GetSysColorBrush(_In_ int)
#define GetClassLongPtrW
Definition: winuser.h:4567
#define GCLP_HBRBACKGROUND
Definition: winuser.h:672
#define COLOR_BTNFACE
Definition: winuser.h:931

Referenced by CC_WMPaint().

◆ CC_PaintSelectedColor()

static void CC_PaintSelectedColor ( const CCPRIV infoPtr)
static

Definition at line 454 of file colordlg.c.

455{
456 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH) )) /* if full size */
457 {
458 RECT rect;
459 HDC hdc;
460 HBRUSH hBrush;
462
463 hdc = GetDC(hwnd);
465 hBrush = CreateSolidBrush(infoPtr->lpcc->rgbResult);
466 if (hBrush)
467 {
468 FillRect(hdc, &rect, hBrush);
470 DeleteObject(hBrush);
471 }
473 }
474}

Referenced by CC_WMCommand(), CC_WMInitDialog(), CC_WMLButtonDown(), CC_WMMouseMove(), and CC_WMPaint().

◆ CC_PaintTriangle()

static void CC_PaintTriangle ( CCPRIV infoPtr)
static

Definition at line 479 of file colordlg.c.

480{
481 HDC hDC;
482 long temp;
483 int w = LOWORD(GetDialogBaseUnits()) / 2;
484 POINT points[3];
485 int height;
486 int oben;
487 RECT rect;
488 HBRUSH hbr;
490
491 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH))) /* if full size */
492 {
494 height = rect.bottom;
495 hDC = GetDC(infoPtr->hwndSelf);
496 points[0].y = rect.top;
497 points[0].x = rect.right; /* | /| */
498 ClientToScreen(hwnd, points); /* | / | */
499 ScreenToClient(infoPtr->hwndSelf, points); /* |< | */
500 oben = points[0].y; /* | \ | */
501 /* | \| */
502 temp = (long)height * (long)infoPtr->l;
503 points[0].x += 1;
504 points[0].y = oben + height - temp / (long)MAXVERT;
505 points[1].y = points[0].y + w;
506 points[2].y = points[0].y - w;
507 points[2].x = points[1].x = points[0].x + w;
508
510 if (!hbr) hbr = GetSysColorBrush(COLOR_BTNFACE);
511 FillRect(hDC, &infoPtr->old3angle, hbr);
512 infoPtr->old3angle.left = points[0].x;
513 infoPtr->old3angle.right = points[1].x + 1;
514 infoPtr->old3angle.top = points[2].y - 1;
515 infoPtr->old3angle.bottom= points[1].y + 1;
516
518 Polygon(hDC, points, 3);
519 SelectObject(hDC, hbr);
520
521 ReleaseDC(infoPtr->hwndSelf, hDC);
522 }
523}
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLsizei const GLfloat * points
Definition: glext.h:8112
#define LOWORD(l)
Definition: pedump.c:82
BOOL Polygon(CONST PPOINT UnsafePoints, int Count, int polyFillMode)
Definition: polytest.cpp:730
static calc_node_t temp
Definition: rpn_ieee.c:38
RECT old3angle
Definition: colordlg.c:82
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define BLACK_BRUSH
Definition: wingdi.h:896

Referenced by CC_WMCommand(), CC_WMInitDialog(), CC_WMLButtonDown(), CC_WMMouseMove(), and CC_WMPaint().

◆ CC_PaintUserColorArray()

static void CC_PaintUserColorArray ( const CCPRIV infoPtr,
int  rows,
int  cols 
)
static

Definition at line 810 of file colordlg.c.

811{
813 RECT rect, blockrect;
814 HDC hdc;
815 HBRUSH hBrush;
816 int dx, dy, i, j, k;
817
819
820 dx = rect.right / cols;
821 dy = rect.bottom / rows;
822 k = rect.left;
823
824 hdc = GetDC(hwnd);
825 if (hdc)
826 {
827 hBrush = (HBRUSH)GetClassLongPtrW( hwnd, GCLP_HBRBACKGROUND);
828 if (!hBrush) hBrush = GetSysColorBrush(COLOR_BTNFACE);
829 FillRect( hdc, &rect, hBrush );
830 for (j = 0; j < rows; j++)
831 {
832 for (i = 0; i < cols; i++)
833 {
834 hBrush = CreateSolidBrush(infoPtr->lpcc->lpCustColors[i+j*cols]);
835 if (hBrush)
836 {
837 blockrect.left = rect.left;
838 blockrect.top = rect.top;
839 blockrect.right = rect.left + dx - DISTANCE;
840 blockrect.bottom = rect.top + dy - DISTANCE;
841 FillRect(hdc, &blockrect, hBrush);
842 DrawEdge(hdc, &blockrect, BDR_SUNKEN, BF_RECT);
843 DeleteObject(hBrush);
844 }
845 rect.left += dx;
846 }
847 rect.top += dy;
848 rect.left = k;
849 }
851 }
852 if (infoPtr->hwndFocus == hwnd)
854}

Referenced by CC_WMCommand(), and CC_WMPaint().

◆ CC_PrepareColorGraph()

static void CC_PrepareColorGraph ( CCPRIV infoPtr)
static

Definition at line 600 of file colordlg.c.

601{
602 int sdif, hdif, xdif, ydif, hue, sat;
604 HBRUSH hbrush;
605 HDC hdc ;
607 HCURSOR hcursor = SetCursor( LoadCursorW(0, (LPCWSTR)IDC_WAIT) );
608
610 hdc = GetDC(hwnd);
611 infoPtr->hdcMem = CreateCompatibleDC(hdc);
612 infoPtr->hbmMem = CreateCompatibleBitmap(hdc, client.right, client.bottom);
613 SelectObject(infoPtr->hdcMem, infoPtr->hbmMem);
614
615 xdif = client.right / XSTEPS;
616 ydif = client.bottom / YSTEPS+1;
617 hdif = 239 / XSTEPS;
618 sdif = 240 / YSTEPS;
619 for (rect.left = hue = 0; hue < 239 + hdif; hue += hdif)
620 {
621 rect.right = rect.left + xdif;
622 rect.bottom = client.bottom;
623 for(sat = 0; sat < 240 + sdif; sat += sdif)
624 {
625 rect.top = rect.bottom - ydif;
626 hbrush = CreateSolidBrush(CC_HSLtoRGB(hue, sat, 120));
627 FillRect(infoPtr->hdcMem, &rect, hbrush);
629 rect.bottom = rect.top;
630 }
631 rect.left = rect.right;
632 }
634 SetCursor(hcursor);
635}
#define XSTEPS
Definition: colordlg.c:593
HBITMAP hbmMem
Definition: colordlg.c:79
HICON HCURSOR
Definition: windef.h:299
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2191
#define IDC_WAIT
Definition: winuser.h:689
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

Referenced by CC_PaintColorGraph(), and CC_SwitchToFullSize().

◆ CC_RGBtoHSL()

static int CC_RGBtoHSL ( char  c,
COLORREF  rgb 
)
static

Definition at line 149 of file colordlg.c.

150{
151 WORD maxi, mini, mmsum, mmdif, result = 0;
152 int iresult = 0, r, g, b;
153
154 r = GetRValue(rgb);
155 g = GetGValue(rgb);
156 b = GetBValue(rgb);
157
158 maxi = max(r, b);
159 maxi = max(maxi, g);
160 mini = min(r, b);
161 mini = min(mini, g);
162
163 mmsum = maxi + mini;
164 mmdif = maxi - mini;
165
166 switch(c)
167 {
168 /* lum */
169 case 'L': mmsum *= 120; /* 0...61200=(255+255)*120 */
170 result = mmsum / 255; /* 0...240 */
171 break;
172 /* saturation */
173 case 'S': if (!mmsum)
174 result = 0;
175 else
176 if (!mini || maxi == 255)
177 result = 240;
178 else
179 {
180 result = mmdif * 240; /* 0...61200=255*240 */
181 result /= (mmsum > 255 ? 510 - mmsum : mmsum); /* 0..255 */
182 }
183 break;
184 /* hue */
185 case 'H': if (!mmdif)
186 result = 160;
187 else
188 {
189 if (maxi == r)
190 {
191 iresult = 40 * (g - b); /* -10200 ... 10200 */
192 iresult /= (int) mmdif; /* -40 .. 40 */
193 if (iresult < 0)
194 iresult += 240; /* 0..40 and 200..240 */
195 }
196 else
197 if (maxi == g)
198 {
199 iresult = 40 * (b - r);
200 iresult /= (int) mmdif;
201 iresult += 80; /* 40 .. 120 */
202 }
203 else
204 if (maxi == b)
205 {
206 iresult = 40 * (r - g);
207 iresult /= (int) mmdif;
208 iresult += 160; /* 120 .. 200 */
209 }
210 result = iresult;
211 }
212 break;
213 }
214 return result; /* is this integer arithmetic precise enough ? */
215}
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
unsigned short WORD
Definition: ntddk_ex.h:93
const GLubyte * c
Definition: glext.h:8905
#define min(a, b)
Definition: monoChain.cc:55
_In_ ULONG _In_ ULONG rgb
Definition: winddi.h:3521

Referenced by CC_WMCommand(), CC_WMInitDialog(), and CC_WMLButtonDown().

◆ CC_SwitchToFullSize()

static void CC_SwitchToFullSize ( CCPRIV infoPtr,
const RECT lprect 
)
static

Definition at line 733 of file colordlg.c.

734{
735 int i;
736
738 CC_PrepareColorGraph(infoPtr);
739 for (i = IDC_COLOR_EDIT_H; i <= IDC_COLOR_EDIT_B; i++)
740 ShowWindow( GetDlgItem(infoPtr->hwndSelf, i), SW_SHOW);
741 for (i = IDC_COLOR_HL; i <= IDC_COLOR_BL; i++)
742 ShowWindow( GetDlgItem(infoPtr->hwndSelf, i), SW_SHOW);
745 ShowWindow( GetDlgItem(infoPtr->hwndSelf, 1090), SW_SHOW);
746
747 if (lprect)
748 SetWindowPos(infoPtr->hwndSelf, 0, 0, 0, lprect->right-lprect->left,
749 lprect->bottom-lprect->top, SWP_NOMOVE|SWP_NOZORDER);
750
753
754 CC_EditSetRGB(infoPtr);
755 CC_EditSetHSL(infoPtr);
758}
#define IDC_COLOR_ADD
Definition: cdlg.h:164
#define IDC_COLOR_DEFINE
Definition: cdlg.h:166
#define IDC_COLOR_BL
Definition: cdlg.h:174
#define IDC_COLOR_HL
Definition: cdlg.h:169
static void CC_EditSetRGB(CCPRIV *infoPtr)
Definition: colordlg.c:697
static void CC_EditSetHSL(CCPRIV *infoPtr)
Definition: colordlg.c:717
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define SWP_NOMOVE
Definition: winuser.h:1247
BOOL WINAPI UpdateWindow(_In_ HWND)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define SW_SHOW
Definition: winuser.h:778
#define SWP_NOZORDER
Definition: winuser.h:1250

Referenced by CC_WMCommand(), and CC_WMInitDialog().

◆ CC_WMCommand()

static LRESULT CC_WMCommand ( CCPRIV lpp,
WPARAM  wParam,
LPARAM  lParam,
WORD  notifyCode,
HWND  hwndCtl 
)
static

Definition at line 982 of file colordlg.c.

983{
984 int r, g, b, i, xx;
985 UINT cokmsg;
986 HDC hdc;
987 COLORREF *cr;
988
989 TRACE("CC_WMCommand wParam=%lx lParam=%lx\n", wParam, lParam);
990 switch (LOWORD(wParam))
991 {
992 case IDC_COLOR_EDIT_R: /* edit notify RGB */
993 case IDC_COLOR_EDIT_G:
994 case IDC_COLOR_EDIT_B:
995 if (notifyCode == EN_UPDATE && !lpp->updating)
996 {
997#ifdef __REACTOS__
998 i = CC_CheckDigitsInEdit(lpp, hwndCtl, 255);
999#else
1000 i = CC_CheckDigitsInEdit(hwndCtl, 255);
1001#endif
1002 r = GetRValue(lpp->lpcc->rgbResult);
1003 g = GetGValue(lpp->lpcc->rgbResult);
1004 b= GetBValue(lpp->lpcc->rgbResult);
1005 xx = 0;
1006 switch (LOWORD(wParam))
1007 {
1008 case IDC_COLOR_EDIT_R: if ((xx = (i != r))) r = i; break;
1009 case IDC_COLOR_EDIT_G: if ((xx = (i != g))) g = i; break;
1010 case IDC_COLOR_EDIT_B: if ((xx = (i != b))) b = i; break;
1011 }
1012 if (xx) /* something has changed */
1013 {
1014 lpp->lpcc->rgbResult = RGB(r, g, b);
1016 lpp->h = CC_RGBtoHSL('H', lpp->lpcc->rgbResult);
1017 lpp->s = CC_RGBtoHSL('S', lpp->lpcc->rgbResult);
1018 lpp->l = CC_RGBtoHSL('L', lpp->lpcc->rgbResult);
1019 CC_EditSetHSL(lpp);
1020 CC_PaintCross(lpp);
1021 CC_PaintTriangle(lpp);
1022#ifdef __REACTOS__
1023 CC_PaintLumBar(lpp);
1024#endif
1025 }
1026 }
1027 break;
1028
1029 case IDC_COLOR_EDIT_H: /* edit notify HSL */
1030 case IDC_COLOR_EDIT_S:
1031 case IDC_COLOR_EDIT_L:
1032 if (notifyCode == EN_UPDATE && !lpp->updating)
1033 {
1034#ifdef __REACTOS__
1035 i = CC_CheckDigitsInEdit(lpp, hwndCtl , LOWORD(wParam) == IDC_COLOR_EDIT_H ? 239 : 240);
1036#else
1037 i = CC_CheckDigitsInEdit(hwndCtl , LOWORD(wParam) == IDC_COLOR_EDIT_H ? 239 : 240);
1038#endif
1039 xx = 0;
1040 switch (LOWORD(wParam))
1041 {
1042 case IDC_COLOR_EDIT_H: if ((xx = ( i != lpp->h))) lpp->h = i; break;
1043 case IDC_COLOR_EDIT_S: if ((xx = ( i != lpp->s))) lpp->s = i; break;
1044 case IDC_COLOR_EDIT_L: if ((xx = ( i != lpp->l))) lpp->l = i; break;
1045 }
1046 if (xx) /* something has changed */
1047 {
1048 lpp->lpcc->rgbResult = CC_HSLtoRGB(lpp->h, lpp->s, lpp->l);
1050 CC_EditSetRGB(lpp);
1051 CC_PaintCross(lpp);
1052 CC_PaintTriangle(lpp);
1053 }
1054 }
1055 break;
1056
1057 case IDC_COLOR_DEFINE:
1058 CC_SwitchToFullSize(lpp, &lpp->fullsize);
1060 break;
1061
1062 case IDC_COLOR_ADD: /* add colors ... column by column */
1063 cr = lpp->lpcc->lpCustColors;
1064 cr[(lpp->nextuserdef % 2) * 8 + lpp->nextuserdef / 2] = lpp->lpcc->rgbResult;
1065 if (++lpp->nextuserdef == 16)
1066 lpp->nextuserdef = 0;
1067 CC_PaintUserColorArray(lpp, 2, 8);
1068 break;
1069
1070 case IDC_COLOR_RES: /* resulting color */
1071 hdc = GetDC(lpp->hwndSelf);
1073 ReleaseDC(lpp->hwndSelf, hdc);
1074 CC_EditSetRGB(lpp);
1076 lpp->h = CC_RGBtoHSL('H', lpp->lpcc->rgbResult);
1077 lpp->s = CC_RGBtoHSL('S', lpp->lpcc->rgbResult);
1078 lpp->l = CC_RGBtoHSL('L', lpp->lpcc->rgbResult);
1079 CC_EditSetHSL(lpp);
1080 CC_PaintCross(lpp);
1081 CC_PaintTriangle(lpp);
1082 break;
1083
1084 case pshHelp: /* Help! */ /* The Beatles, 1965 ;-) */
1086 if (lpp->lpcc->hwndOwner)
1087 SendMessageA(lpp->lpcc->hwndOwner, i, 0, (LPARAM)lpp->lpcc);
1088 if ( CC_HookCallChk(lpp->lpcc))
1090 WM_COMMAND, psh15, (LPARAM)lpp->lpcc);
1091 break;
1092
1093 case IDOK :
1095 if (lpp->lpcc->hwndOwner)
1096 if (SendMessageA(lpp->lpcc->hwndOwner, cokmsg, 0, (LPARAM)lpp->lpcc))
1097 break; /* do NOT close */
1098 EndDialog(lpp->hwndSelf, 1) ;
1099 return TRUE ;
1100
1101 case IDCANCEL :
1102 EndDialog(lpp->hwndSelf, 0) ;
1103 return TRUE ;
1104
1105 }
1106 return FALSE;
1107}
static void CC_PaintSelectedColor(const CCPRIV *infoPtr)
Definition: colordlg.c:454
static void CC_PaintTriangle(CCPRIV *infoPtr)
Definition: colordlg.c:479
static void CC_PaintCross(CCPRIV *infoPtr)
Definition: colordlg.c:529
static int CC_CheckDigitsInEdit(HWND hwnd, int maxval)
Definition: colordlg.c:402
static BOOL CC_HookCallChk(const CHOOSECOLORW *lpcc)
Definition: colordlg.c:860
static void CC_SwitchToFullSize(CCPRIV *infoPtr, const RECT *lprect)
Definition: colordlg.c:733
static void CC_PaintUserColorArray(const CCPRIV *infoPtr, int rows, int cols)
Definition: colordlg.c:810
static int CC_RGBtoHSL(char c, COLORREF rgb)
Definition: colordlg.c:149
WPARAM wParam
Definition: combotst.c:138
#define HELPMSGSTRINGA
Definition: commdlg.h:20
#define COLOROKSTRINGA
Definition: commdlg.h:18
#define pshHelp
Definition: dlgs.h:127
#define psh15
Definition: dlgs.h:126
if(dx< 0)
Definition: linetemp.h:194
unsigned int UINT
Definition: ndis.h:50
int xx
Definition: npserver.c:29
#define TRACE(s)
Definition: solgame.cpp:4
int nextuserdef
Definition: colordlg.c:77
RECT fullsize
Definition: colordlg.c:80
HWND hwndOwner
Definition: commdlg.h:251
LONG_PTR LPARAM
Definition: windef.h:208
COLORREF WINAPI GetNearestColor(_In_ HDC, _In_ COLORREF)
UINT WINAPI RegisterWindowMessageA(_In_ LPCSTR)
#define IDCANCEL
Definition: winuser.h:834
#define EN_UPDATE
Definition: winuser.h:2031
#define IDOK
Definition: winuser.h:833
HWND WINAPI SetFocus(_In_opt_ HWND)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2909
LRESULT WINAPI CallWindowProcA(_In_ WNDPROC, _In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)

Referenced by ColorDlgProc().

◆ CC_WMInitDialog()

static LRESULT CC_WMInitDialog ( HWND  hDlg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 872 of file colordlg.c.

873{
875 int i, res;
876 int r, g, b;
877 HWND hwnd;
878 RECT rect;
879 POINT point;
880 CCPRIV *lpp;
881
882 TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
883
884 if (cc->lStructSize != sizeof(CHOOSECOLORW))
885 {
886 EndDialog(hDlg, 0);
887 return FALSE;
888 }
889
890 lpp = heap_alloc_zero(sizeof(*lpp));
891 lpp->lpcc = cc;
892 lpp->hwndSelf = hDlg;
893
894 SetPropW( hDlg, szColourDialogProp, lpp );
895
896 if (!(lpp->lpcc->Flags & CC_SHOWHELP))
899
900#if 0
901 cpos = MAKELONG(5,7); /* init */
902 if (lpp->lpcc->Flags & CC_RGBINIT)
903 {
904 for (i = 0; i < 6; i++)
905 for (j = 0; j < 8; j++)
906 if (predefcolors[i][j] == lpp->lpcc->rgbResult)
907 {
908 cpos = MAKELONG(i,j);
909 goto found;
910 }
911 }
912 found:
913 /* FIXME: Draw_a_focus_rect & set_init_values */
914#endif
915
916 GetWindowRect(hDlg, &lpp->fullsize);
917 if (lpp->lpcc->Flags & CC_FULLOPEN || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
918 {
921 }
922 if (!(lpp->lpcc->Flags & CC_FULLOPEN ) || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
923 {
924 rect = lpp->fullsize;
925 res = rect.bottom - rect.top;
926 hwnd = GetDlgItem(hDlg, IDC_COLOR_GRAPH); /* cut at left border */
927 point.x = point.y = 0;
929 ScreenToClient(hDlg,&point);
930 GetClientRect(hDlg, &rect);
932 SetWindowPos(hDlg, 0, 0, 0, point.x, res, SWP_NOMOVE|SWP_NOZORDER);
933
934 for (i = IDC_COLOR_EDIT_H; i <= IDC_COLOR_EDIT_B; i++)
935 ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
936 for (i = IDC_COLOR_HL; i <= IDC_COLOR_BL; i++)
937 ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
942 ShowWindow( GetDlgItem(hDlg, 1090 ), SW_HIDE);
943 }
944 else
946 res = TRUE;
947 for (i = IDC_COLOR_EDIT_H; i <= IDC_COLOR_EDIT_B; i++)
948 SendMessageA( GetDlgItem(hDlg, i), EM_LIMITTEXT, 3, 0); /* max 3 digits: xyz */
949 if (CC_HookCallChk(lpp->lpcc))
950 {
952 }
953
954 /* Set the initial values of the color chooser dialog */
955 r = GetRValue(lpp->lpcc->rgbResult);
956 g = GetGValue(lpp->lpcc->rgbResult);
957 b = GetBValue(lpp->lpcc->rgbResult);
958
960 lpp->h = CC_RGBtoHSL('H', lpp->lpcc->rgbResult);
961 lpp->s = CC_RGBtoHSL('S', lpp->lpcc->rgbResult);
962 lpp->l = CC_RGBtoHSL('L', lpp->lpcc->rgbResult);
963
964 /* Doing it the long way because CC_EditSetRGB/HSL doesn't seem to work */
965 SetDlgItemInt(hDlg, IDC_COLOR_EDIT_H, lpp->h, TRUE);
966 SetDlgItemInt(hDlg, IDC_COLOR_EDIT_S, lpp->s, TRUE);
967 SetDlgItemInt(hDlg, IDC_COLOR_EDIT_L, lpp->l, TRUE);
971
972 CC_PaintCross(lpp);
973 CC_PaintTriangle(lpp);
974
975 return res;
976}
static const WCHAR szColourDialogProp[]
Definition: colordlg.c:64
#define CC_SHOWHELP
Definition: commdlg.h:53
#define CC_RGBINIT
Definition: commdlg.h:50
#define SETRGBSTRINGA
Definition: commdlg.h:19
#define CC_PREVENTFULLOPEN
Definition: commdlg.h:52
#define CC_FULLOPEN
Definition: commdlg.h:51
#define NULL
Definition: types.h:112
GLuint res
Definition: glext.h:9613
uint32_t cc
Definition: isohybrid.c:75
UINT msetrgb
Definition: colordlg.c:81
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define SW_HIDE
Definition: winuser.h:771
#define EM_LIMITTEXT
Definition: winuser.h:2003
#define WM_INITDIALOG
Definition: winuser.h:1742
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
#define SM_CXDLGFRAME
Definition: winuser.h:969
int WINAPI GetSystemMetrics(_In_ int)

Referenced by ColorDlgProc().

◆ CC_WMLButtonDown()

static LRESULT CC_WMLButtonDown ( CCPRIV infoPtr,
LPARAM  lParam 
)
static

Definition at line 1183 of file colordlg.c.

1184{
1185 int i = 0;
1186
1187 if (CC_MouseCheckPredefColorArray(infoPtr, 6, 8, lParam))
1188 i = 1;
1189 else
1190 if (CC_MouseCheckUserColorArray(infoPtr, 2, 8, lParam))
1191 i = 1;
1192 else
1193 if (CC_MouseCheckColorGraph(infoPtr->hwndSelf, IDC_COLOR_GRAPH, &infoPtr->h, &infoPtr->s, lParam))
1194 {
1195 i = 2;
1196 infoPtr->capturedGraph = IDC_COLOR_GRAPH;
1197 }
1198 else
1199 if (CC_MouseCheckColorGraph(infoPtr->hwndSelf, IDC_COLOR_LUMBAR, NULL, &infoPtr->l, lParam))
1200 {
1201 i = 2;
1203 }
1204 if ( i == 2 )
1205 {
1206 SetCapture(infoPtr->hwndSelf);
1207 infoPtr->lpcc->rgbResult = CC_HSLtoRGB(infoPtr->h, infoPtr->s, infoPtr->l);
1208 }
1209 if ( i == 1 )
1210 {
1211 infoPtr->h = CC_RGBtoHSL('H', infoPtr->lpcc->rgbResult);
1212 infoPtr->s = CC_RGBtoHSL('S', infoPtr->lpcc->rgbResult);
1213 infoPtr->l = CC_RGBtoHSL('L', infoPtr->lpcc->rgbResult);
1214 }
1215 if (i)
1216 {
1217#ifdef __REACTOS__
1218 if (infoPtr->capturedGraph)
1219 {
1220 RECT rect;
1221 GetWindowRect(GetDlgItem(infoPtr->hwndSelf, infoPtr->capturedGraph), &rect);
1222 ClipCursor(&rect);
1223 }
1224#endif
1225 CC_EditSetRGB(infoPtr);
1226 CC_EditSetHSL(infoPtr);
1227 CC_PaintCross(infoPtr);
1228 CC_PaintTriangle(infoPtr);
1229 CC_PaintSelectedColor(infoPtr);
1230 return TRUE;
1231 }
1232 return FALSE;
1233}
static BOOL CC_MouseCheckPredefColorArray(CCPRIV *lpp, int rows, int cols, LPARAM lParam)
Definition: colordlg.c:263
static BOOL CC_MouseCheckUserColorArray(CCPRIV *lpp, int rows, int cols, LPARAM lParam)
Definition: colordlg.c:296
static BOOL CC_MouseCheckColorGraph(HWND hDlg, int dlgitem, int *hori, int *vert, LPARAM lParam)
Definition: colordlg.c:339
int capturedGraph
Definition: colordlg.c:88
HWND WINAPI SetCapture(_In_ HWND hWnd)
BOOL WINAPI ClipCursor(_In_opt_ LPCRECT)

Referenced by ColorDlgProc().

◆ CC_WMLButtonUp()

static LRESULT CC_WMLButtonUp ( CCPRIV infoPtr)
static

Definition at line 1133 of file colordlg.c.

1134{
1135 if (infoPtr->capturedGraph)
1136 {
1137#ifdef __REACTOS__
1139#endif
1140 infoPtr->capturedGraph = 0;
1142 CC_PaintCross(infoPtr);
1143 return 1;
1144 }
1145 return 0;
1146}
BOOL WINAPI ReleaseCapture(void)
Definition: message.c:2890

Referenced by ColorDlgProc().

◆ CC_WMMouseMove()

static LRESULT CC_WMMouseMove ( CCPRIV infoPtr,
LPARAM  lParam 
)
static

Definition at line 1151 of file colordlg.c.

1152{
1153 if (infoPtr->capturedGraph)
1154 {
1155 int *ptrh = NULL, *ptrs = &infoPtr->l;
1156 if (infoPtr->capturedGraph == IDC_COLOR_GRAPH)
1157 {
1158 ptrh = &infoPtr->h;
1159 ptrs = &infoPtr->s;
1160 }
1161 if (CC_MouseCheckColorGraph( infoPtr->hwndSelf, infoPtr->capturedGraph, ptrh, ptrs, lParam))
1162 {
1163 infoPtr->lpcc->rgbResult = CC_HSLtoRGB(infoPtr->h, infoPtr->s, infoPtr->l);
1164 CC_EditSetRGB(infoPtr);
1165 CC_EditSetHSL(infoPtr);
1166 CC_PaintCross(infoPtr);
1167 CC_PaintTriangle(infoPtr);
1168 CC_PaintSelectedColor(infoPtr);
1169 }
1170 else
1171 {
1173 infoPtr->capturedGraph = 0;
1174 }
1175 return 1;
1176 }
1177 return 0;
1178}

Referenced by ColorDlgProc().

◆ CC_WMPaint()

static LRESULT CC_WMPaint ( CCPRIV lpp)
static

Definition at line 1112 of file colordlg.c.

1113{
1114 PAINTSTRUCT ps;
1115
1116 BeginPaint(lpp->hwndSelf, &ps);
1117 /* we have to paint dialog children except text and buttons */
1118 CC_PaintPredefColorArray(lpp, 6, 8);
1119 CC_PaintUserColorArray(lpp, 2, 8);
1120 CC_PaintLumBar(lpp);
1121 CC_PaintTriangle(lpp);
1123 CC_PaintColorGraph(lpp);
1124 CC_PaintCross(lpp);
1125 EndPaint(lpp->hwndSelf, &ps);
1126
1127 return TRUE;
1128}
static void CC_PaintColorGraph(CCPRIV *infoPtr)
Definition: colordlg.c:640
static void CC_PaintPredefColorArray(const CCPRIV *infoPtr, int rows, int cols)
Definition: colordlg.c:764
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)

Referenced by ColorDlgProc().

◆ ChooseColorA()

BOOL WINAPI ChooseColorA ( LPCHOOSECOLORA  lpChCol)

Definition at line 1384 of file colordlg.c.

1386{
1387 LPWSTR template_name = NULL;
1388 BOOL ret;
1389
1390 CHOOSECOLORW *lpcc = heap_alloc_zero(sizeof(*lpcc));
1391 lpcc->lStructSize = sizeof(*lpcc);
1392 lpcc->hwndOwner = lpChCol->hwndOwner;
1393 lpcc->hInstance = lpChCol->hInstance;
1394 lpcc->rgbResult = lpChCol->rgbResult;
1395 lpcc->lpCustColors = lpChCol->lpCustColors;
1396 lpcc->Flags = lpChCol->Flags;
1397 lpcc->lCustData = lpChCol->lCustData;
1398 lpcc->lpfnHook = lpChCol->lpfnHook;
1399 if ((lpcc->Flags & CC_ENABLETEMPLATE) && (lpChCol->lpTemplateName)) {
1400 if (!IS_INTRESOURCE(lpChCol->lpTemplateName)) {
1401 INT len = MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, NULL, 0);
1402 template_name = heap_alloc( len * sizeof(WCHAR) );
1403 MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, template_name, len );
1404 lpcc->lpTemplateName = template_name;
1405 } else {
1406 lpcc->lpTemplateName = (LPCWSTR)lpChCol->lpTemplateName;
1407 }
1408 }
1409
1410 ret = ChooseColorW(lpcc);
1411
1412 if (ret)
1413 lpChCol->rgbResult = lpcc->rgbResult;
1414
1415 heap_free(template_name);
1416 heap_free(lpcc);
1417 return ret;
1418}
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
BOOL WINAPI ChooseColorW(CHOOSECOLORW *lpChCol)
Definition: colordlg.c:1323
#define CC_ENABLETEMPLATE
Definition: commdlg.h:55
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
unsigned int BOOL
Definition: ntddk_ex.h:94
GLenum GLsizei len
Definition: glext.h:6722
HWND hInstance
Definition: commdlg.h:241
COLORREF rgbResult
Definition: commdlg.h:242
HWND hwndOwner
Definition: commdlg.h:240
LPARAM lCustData
Definition: commdlg.h:245
COLORREF * lpCustColors
Definition: commdlg.h:243
LPCCHOOKPROC lpfnHook
Definition: commdlg.h:246
LPCSTR lpTemplateName
Definition: commdlg.h:247
HWND hInstance
Definition: commdlg.h:252
LPARAM lCustData
Definition: commdlg.h:256
DWORD lStructSize
Definition: commdlg.h:250
LPCWSTR lpTemplateName
Definition: commdlg.h:258
int32_t INT
Definition: typedefs.h:58
int ret
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ ChooseColorW()

BOOL WINAPI ChooseColorW ( CHOOSECOLORW lpChCol)

Definition at line 1323 of file colordlg.c.

1324{
1325 HANDLE hDlgTmpl = 0;
1326 const void *template;
1327
1328 TRACE("(%p)\n", lpChCol);
1329
1330 if (!lpChCol) return FALSE;
1331
1332 if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE)
1333 {
1334 if (!(template = LockResource(lpChCol->hInstance)))
1335 {
1337 return FALSE;
1338 }
1339 }
1340 else if (lpChCol->Flags & CC_ENABLETEMPLATE)
1341 {
1342 HRSRC hResInfo;
1343 if (!(hResInfo = FindResourceW((HINSTANCE)lpChCol->hInstance,
1344 lpChCol->lpTemplateName,
1345 (LPWSTR)RT_DIALOG)))
1346 {
1348 return FALSE;
1349 }
1350 if (!(hDlgTmpl = LoadResource((HINSTANCE)lpChCol->hInstance, hResInfo)) ||
1351 !(template = LockResource(hDlgTmpl)))
1352 {
1354 return FALSE;
1355 }
1356 }
1357 else
1358 {
1359 HRSRC hResInfo;
1360 HGLOBAL hDlgTmpl;
1361 static const WCHAR wszCHOOSE_COLOR[] = {'C','H','O','O','S','E','_','C','O','L','O','R',0};
1362 if (!(hResInfo = FindResourceW(COMDLG32_hInstance, wszCHOOSE_COLOR, (LPWSTR)RT_DIALOG)))
1363 {
1365 return FALSE;
1366 }
1367 if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) ||
1368 !(template = LockResource(hDlgTmpl)))
1369 {
1371 return FALSE;
1372 }
1373 }
1374
1375 return DialogBoxIndirectParamW(COMDLG32_hInstance, template, lpChCol->hwndOwner,
1376 ColorDlgProc, (LPARAM)lpChCol);
1377}
#define CDERR_LOADRESFAILURE
Definition: cderr.h:12
#define CDERR_FINDRESFAILURE
Definition: cderr.h:11
DECLSPEC_HIDDEN HINSTANCE COMDLG32_hInstance
Definition: cdlg32.c:42
void COMDLG32_SetCommDlgExtendedError(DWORD err) DECLSPEC_HIDDEN
Definition: cdlg32.c:128
static INT_PTR CALLBACK ColorDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
Definition: colordlg.c:1239
#define CC_ENABLETEMPLATEHANDLE
Definition: commdlg.h:56
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
#define RT_DIALOG
Definition: pedump.c:367
INT_PTR WINAPI DialogBoxIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)

Referenced by ChooseColorA().

◆ ColorDlgProc()

static INT_PTR CALLBACK ColorDlgProc ( HWND  hWnd,
UINT  wMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 1239 of file colordlg.c.

1241{
1242
1243 int res;
1244 CCPRIV *lpp = GetPropW( hDlg, szColourDialogProp );
1245
1246 if (message != WM_INITDIALOG)
1247 {
1248 if (!lpp)
1249 return FALSE;
1250 res = 0;
1251 if (CC_HookCallChk(lpp->lpcc))
1253 if ( res )
1254 return res;
1255 }
1256
1257 /* FIXME: SetRGB message
1258 if (message && message == msetrgb)
1259 return HandleSetRGB(hDlg, lParam);
1260 */
1261
1262 switch (message)
1263 {
1264 case WM_INITDIALOG:
1265 return CC_WMInitDialog(hDlg, wParam, lParam);
1266 case WM_NCDESTROY:
1267#ifdef __REACTOS__
1268 // Ensure clipping is released, in case the dialog is closed before WM_LBUTTONUP is received.
1270#endif
1271 DeleteDC(lpp->hdcMem);
1272 DeleteObject(lpp->hbmMem);
1273 heap_free(lpp);
1275 break;
1276 case WM_COMMAND:
1278 return TRUE;
1279 break;
1280 case WM_PAINT:
1281 if (CC_WMPaint(lpp))
1282 return TRUE;
1283 break;
1284 case WM_LBUTTONDBLCLK:
1286 return TRUE;
1287 break;
1288 case WM_MOUSEMOVE:
1289 if (CC_WMMouseMove(lpp, lParam))
1290 return TRUE;
1291 break;
1292#ifdef __REACTOS__
1293 /* ReactOS: The following comment doesn't apply */
1294#endif
1295 case WM_LBUTTONUP: /* FIXME: ClipCursor off (if in color graph)*/
1296 if (CC_WMLButtonUp(lpp))
1297 return TRUE;
1298 break;
1299#ifdef __REACTOS__
1300 /* ReactOS: The following comment doesn't apply */
1301#endif
1302 case WM_LBUTTONDOWN:/* FIXME: ClipCursor on (if in color graph)*/
1303 if (CC_WMLButtonDown(lpp, lParam))
1304 return TRUE;
1305 break;
1306 }
1307 return FALSE ;
1308}
static BOOL CC_MouseCheckResultWindow(HWND hDlg, LPARAM lParam)
Definition: colordlg.c:378
static LRESULT CC_WMLButtonDown(CCPRIV *infoPtr, LPARAM lParam)
Definition: colordlg.c:1183
static LRESULT CC_WMMouseMove(CCPRIV *infoPtr, LPARAM lParam)
Definition: colordlg.c:1151
static LRESULT CC_WMLButtonUp(CCPRIV *infoPtr)
Definition: colordlg.c:1133
static LRESULT CC_WMCommand(CCPRIV *lpp, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl)
Definition: colordlg.c:982
static LRESULT CC_WMPaint(CCPRIV *lpp)
Definition: colordlg.c:1112
static LRESULT CC_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam)
Definition: colordlg.c:872
Definition: tftpd.h:60
#define HIWORD(l)
Definition: typedefs.h:247
BOOL WINAPI DeleteDC(_In_ HDC)
#define WM_PAINT
Definition: winuser.h:1623
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1781
#define WM_MOUSEMOVE
Definition: winuser.h:1778
#define WM_LBUTTONDOWN
Definition: winuser.h:1779
#define WM_LBUTTONUP
Definition: winuser.h:1780
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define WM_NCDESTROY
Definition: winuser.h:1687

Referenced by ChooseColorW().

◆ hsl_to_x()

static int hsl_to_x ( int  hue,
int  sat,
int  lum 
)
static

Definition at line 93 of file colordlg.c.

94{
95 int res = 0, maxrgb;
96
97 /* l below 120 */
98 maxrgb = (256 * min(120,lum)) / 120; /* 0 .. 256 */
99 if (hue < 80)
100 res = 0;
101 else
102 if (hue < 120)
103 {
104 res = (hue - 80) * maxrgb; /* 0...10240 */
105 res /= 40; /* 0...256 */
106 }
107 else
108 if (hue < 200)
109 res = maxrgb;
110 else
111 {
112 res= (240 - hue) * maxrgb;
113 res /= 40;
114 }
115 res = res - maxrgb / 2; /* -128...128 */
116
117 /* saturation */
118 res = maxrgb / 2 + (sat * res) / 240; /* 0..256 */
119
120 /* lum above 120 */
121 if (lum > 120 && res < 256)
122 res += ((lum - 120) * (256 - res)) / 120;
123
124 return min(res, 255);
125}

Referenced by CC_HSLtoRGB().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( commdlg  )

Variable Documentation

◆ predefcolors

const COLORREF predefcolors[6][8]
static
Initial value:
=
{
{ 0x008080FFL, 0x0080FFFFL, 0x0080FF80L, 0x0080FF00L,
0x00FFFF80L, 0x00FF8000L, 0x00C080FFL, 0x00FF80FFL },
{ 0x000000FFL, 0x0000FFFFL, 0x0000FF80L, 0x0040FF00L,
0x00FFFF00L, 0x00C08000L, 0x00C08080L, 0x00FF00FFL },
{ 0x00404080L, 0x004080FFL, 0x0000FF00L, 0x00808000L,
0x00804000L, 0x00FF8080L, 0x00400080L, 0x008000FFL },
{ 0x00000080L, 0x000080FFL, 0x00008000L, 0x00408000L,
0x00FF0000L, 0x00A00000L, 0x00800080L, 0x00FF0080L },
{ 0x00000040L, 0x00004080L, 0x00004000L, 0x00404000L,
0x00800000L, 0x00400000L, 0x00400040L, 0x00800040L },
{ 0x00000000L, 0x00008080L, 0x00408080L, 0x00808080L,
0x00808040L, 0x00C0C0C0L, 0x00400040L, 0x00FFFFFFL },
}

Definition at line 46 of file colordlg.c.

Referenced by CC_MouseCheckPredefColorArray(), CC_PaintPredefColorArray(), and CC_WMInitDialog().

◆ szColourDialogProp

const WCHAR szColourDialogProp[]
static
Initial value:
= {
'c','o','l','o','u','r','d','i','a','l','o','g','p','r','o','p',0 }

Definition at line 64 of file colordlg.c.

Referenced by CC_WMInitDialog(), and ColorDlgProc().