ReactOS 0.4.15-dev-7842-g558ab78
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 583 of file colordlg.c.

◆ YSTEPS

#define YSTEPS   24

Definition at line 584 of file colordlg.c.

Typedef Documentation

◆ CCPRIV

Function Documentation

◆ CC_CheckDigitsInEdit()

static int CC_CheckDigitsInEdit ( HWND  hwnd,
int  maxval 
)
static

Definition at line 399 of file colordlg.c.

400{
401 int i, k, m, result, value;
402 long editpos;
403 char buffer[30];
404
406 m = strlen(buffer);
407 result = 0;
408
409 for (i = 0 ; i < m ; i++)
410 if (buffer[i] < '0' || buffer[i] > '9')
411 {
412 for (k = i + 1; k <= m; k++) /* delete bad character */
413 {
414 buffer[i] = buffer[k];
415 m--;
416 }
417 buffer[m] = 0;
418 result = 1;
419 }
420
421 value = atoi(buffer);
422 if (value > maxval) /* build a new string */
423 {
424#ifdef __REACTOS__
425 value = maxval;
426#endif
427 sprintf(buffer, "%d", maxval);
428 result = 2;
429 }
430 if (result)
431 {
432 editpos = SendMessageA(hwnd, EM_GETSEL, 0, 0);
434 SendMessageA(hwnd, EM_SETSEL, 0, editpos);
435 }
436 return value;
437}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define ARRAY_SIZE(A)
Definition: main.h:33
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:1330
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
BOOL WINAPI SetWindowTextA(_In_ HWND, _In_opt_ LPCSTR)
#define EM_GETSEL
Definition: winuser.h:1997
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define EM_SETSEL
Definition: winuser.h:2018

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:92
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 707 of file colordlg.c.

708{
709 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH) )) /* if full size */
710 {
711 infoPtr->updating = TRUE;
712 SetDlgItemInt(infoPtr->hwndSelf, IDC_COLOR_EDIT_H, infoPtr->h, TRUE);
713 SetDlgItemInt(infoPtr->hwndSelf, IDC_COLOR_EDIT_S, infoPtr->s, TRUE);
714 SetDlgItemInt(infoPtr->hwndSelf, IDC_COLOR_EDIT_L, infoPtr->l, TRUE);
715 infoPtr->updating = FALSE;
716 }
717 CC_PaintLumBar(infoPtr);
718}
#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:654
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
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 687 of file colordlg.c.

688{
689 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH) )) /* if full size */
690 {
691 COLORREF cr = infoPtr->lpcc->rgbResult;
692 int r = GetRValue(cr);
693 int g = GetGValue(cr);
694 int b = GetBValue(cr);
695
696 infoPtr->updating = TRUE;
700 infoPtr->updating = FALSE;
701 }
702}
#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 850 of file colordlg.c.

851{
852 if (lpcc)
853 if(lpcc->Flags & CC_ENABLEHOOK)
854 if (lpcc->lpfnHook)
855 return TRUE;
856 return FALSE;
857}
#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:1740
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 630 of file colordlg.c.

631{
633 HDC hDC;
634 RECT rect;
635
636 if (IsWindowVisible(hwnd)) /* if full size */
637 {
638 if (!infoPtr->hdcMem)
639 CC_PrepareColorGraph(infoPtr); /* should not be necessary */
640
641 hDC = GetDC(hwnd);
643 if (infoPtr->hdcMem)
644 BitBlt(hDC, 0, 0, rect.right, rect.bottom, infoPtr->hdcMem, 0, 0, SRCCOPY);
645 else
646 WARN("choose color: hdcMem is not defined\n");
648 }
649}
static HDC hDC
Definition: 3dtext.c:33
#define WARN(fmt,...)
Definition: debug.h:112
static void CC_PrepareColorGraph(CCPRIV *infoPtr)
Definition: colordlg.c:590
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 519 of file colordlg.c.

520{
522
523 if (IsWindowVisible(hwnd)) /* if full size */
524 {
525 HDC hDC;
526#ifdef __REACTOS__
527 int w = 8, wc = 6;
528#else
529 int w = GetDialogBaseUnits() - 1;
530 int wc = GetDialogBaseUnits() * 3 / 4;
531#endif
532 RECT rect;
533 POINT point, p;
534 HRGN region;
535 HPEN hPen;
536 int x, y;
537
538 x = infoPtr->h;
539 y = infoPtr->s;
540
542 hDC = GetDC(hwnd);
543 region = CreateRectRgnIndirect(&rect);
544 SelectClipRgn(hDC, region);
545 DeleteObject(region);
546
547 point.x = ((long)rect.right * (long)x) / (long)MAXHORI;
548 point.y = rect.bottom - ((long)rect.bottom * (long)y) / (long)MAXVERT;
549 if ( infoPtr->oldcross.left != infoPtr->oldcross.right )
550 BitBlt(hDC, infoPtr->oldcross.left, infoPtr->oldcross.top,
551 infoPtr->oldcross.right - infoPtr->oldcross.left,
552 infoPtr->oldcross.bottom - infoPtr->oldcross.top,
553 infoPtr->hdcMem, infoPtr->oldcross.left, infoPtr->oldcross.top, SRCCOPY);
554#ifdef __REACTOS__
555 infoPtr->oldcross.left = point.x - w - 3;
556 infoPtr->oldcross.right = point.x + w + 3;
557 infoPtr->oldcross.top = point.y - w - 3;
558 infoPtr->oldcross.bottom = point.y + w + 3;
559#else
560 infoPtr->oldcross.left = point.x - w - 1;
561 infoPtr->oldcross.right = point.x + w + 1;
562 infoPtr->oldcross.top = point.y - w - 1;
563 infoPtr->oldcross.bottom = point.y + w + 1;
564#endif
565
566 hPen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); /* -black- color */
567 hPen = SelectObject(hDC, hPen);
568 MoveToEx(hDC, point.x - w, point.y, &p);
569 LineTo(hDC, point.x - wc, point.y);
570 MoveToEx(hDC, point.x + wc, point.y, &p);
571 LineTo(hDC, point.x + w, point.y);
572 MoveToEx(hDC, point.x, point.y - w, &p);
573 LineTo(hDC, point.x, point.y - wc);
574 MoveToEx(hDC, point.x, point.y + wc, &p);
575 LineTo(hDC, point.x, point.y + w);
577
579 }
580}
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:1539
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 654 of file colordlg.c.

655{
658 int lum, ldif, ydif;
659 HBRUSH hbrush;
660 HDC hDC;
661
663 {
664 hDC = GetDC(hwnd);
666 rect = client;
667
668 ldif = 240 / YSTEPS;
669 ydif = client.bottom / YSTEPS+1;
670 for (lum = 0; lum < 240 + ldif; lum += ldif)
671 {
672 rect.top = max(0, rect.bottom - ydif);
673 hbrush = CreateSolidBrush(CC_HSLtoRGB(infoPtr->h, infoPtr->s, lum));
676 rect.bottom = rect.top;
677 }
681 }
682}
static HBRUSH hbrush
#define IDC_COLOR_LUMBAR
Definition: cdlg.h:155
#define YSTEPS
Definition: colordlg.c:584
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(), and CC_WMPaint().

◆ CC_PaintPredefColorArray()

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

Definition at line 754 of file colordlg.c.

755{
757 RECT rect, blockrect;
758 HDC hdc;
759 HBRUSH hBrush;
760 int dx, dy, i, j, k;
761
763 dx = rect.right / cols;
764 dy = rect.bottom / rows;
765 k = rect.left;
766
767 hdc = GetDC(hwnd);
769 hBrush = (HBRUSH)GetClassLongPtrW( hwnd, GCLP_HBRBACKGROUND);
770 if (!hBrush) hBrush = GetSysColorBrush(COLOR_BTNFACE);
771 FillRect(hdc, &rect, hBrush);
772 for ( j = 0; j < rows; j++ )
773 {
774 for ( i = 0; i < cols; i++ )
775 {
776 hBrush = CreateSolidBrush(predefcolors[j][i]);
777 if (hBrush)
778 {
779 blockrect.left = rect.left;
780 blockrect.top = rect.top;
781 blockrect.right = rect.left + dx - DISTANCE;
782 blockrect.bottom = rect.top + dy - DISTANCE;
783 FillRect(hdc, &blockrect, hBrush);
784 DrawEdge(hdc, &blockrect, BDR_SUNKEN, BF_RECT);
785 DeleteObject(hBrush);
786 }
787 rect.left += dx;
788 }
789 rect.top += dy;
790 rect.left = k;
791 }
793 if (infoPtr->hwndFocus == hwnd)
795}
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:4564
#define GCLP_HBRBACKGROUND
Definition: winuser.h:672
#define COLOR_BTNFACE
Definition: winuser.h:928

Referenced by CC_WMPaint().

◆ CC_PaintSelectedColor()

static void CC_PaintSelectedColor ( const CCPRIV infoPtr)
static

Definition at line 444 of file colordlg.c.

445{
446 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH) )) /* if full size */
447 {
448 RECT rect;
449 HDC hdc;
450 HBRUSH hBrush;
452
453 hdc = GetDC(hwnd);
455 hBrush = CreateSolidBrush(infoPtr->lpcc->rgbResult);
456 if (hBrush)
457 {
458 FillRect(hdc, &rect, hBrush);
460 DeleteObject(hBrush);
461 }
463 }
464}

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 469 of file colordlg.c.

470{
471 HDC hDC;
472 long temp;
473 int w = LOWORD(GetDialogBaseUnits()) / 2;
474 POINT points[3];
475 int height;
476 int oben;
477 RECT rect;
478 HBRUSH hbr;
480
481 if (IsWindowVisible( GetDlgItem(infoPtr->hwndSelf, IDC_COLOR_GRAPH))) /* if full size */
482 {
484 height = rect.bottom;
485 hDC = GetDC(infoPtr->hwndSelf);
486 points[0].y = rect.top;
487 points[0].x = rect.right; /* | /| */
488 ClientToScreen(hwnd, points); /* | / | */
489 ScreenToClient(infoPtr->hwndSelf, points); /* |< | */
490 oben = points[0].y; /* | \ | */
491 /* | \| */
492 temp = (long)height * (long)infoPtr->l;
493 points[0].x += 1;
494 points[0].y = oben + height - temp / (long)MAXVERT;
495 points[1].y = points[0].y + w;
496 points[2].y = points[0].y - w;
497 points[2].x = points[1].x = points[0].x + w;
498
500 if (!hbr) hbr = GetSysColorBrush(COLOR_BTNFACE);
501 FillRect(hDC, &infoPtr->old3angle, hbr);
502 infoPtr->old3angle.left = points[0].x;
503 infoPtr->old3angle.right = points[1].x + 1;
504 infoPtr->old3angle.top = points[2].y - 1;
505 infoPtr->old3angle.bottom= points[1].y + 1;
506
508 Polygon(hDC, points, 3);
509 SelectObject(hDC, hbr);
510
511 ReleaseDC(infoPtr->hwndSelf, hDC);
512 }
513}
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 800 of file colordlg.c.

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

Referenced by CC_WMCommand(), and CC_WMPaint().

◆ CC_PrepareColorGraph()

static void CC_PrepareColorGraph ( CCPRIV infoPtr)
static

Definition at line 590 of file colordlg.c.

591{
592 int sdif, hdif, xdif, ydif, hue, sat;
594 HBRUSH hbrush;
595 HDC hdc ;
597 HCURSOR hcursor = SetCursor( LoadCursorW(0, (LPCWSTR)IDC_WAIT) );
598
600 hdc = GetDC(hwnd);
601 infoPtr->hdcMem = CreateCompatibleDC(hdc);
602 infoPtr->hbmMem = CreateCompatibleBitmap(hdc, client.right, client.bottom);
603 SelectObject(infoPtr->hdcMem, infoPtr->hbmMem);
604
605 xdif = client.right / XSTEPS;
606 ydif = client.bottom / YSTEPS+1;
607 hdif = 239 / XSTEPS;
608 sdif = 240 / YSTEPS;
609 for (rect.left = hue = 0; hue < 239 + hdif; hue += hdif)
610 {
611 rect.right = rect.left + xdif;
612 rect.bottom = client.bottom;
613 for(sat = 0; sat < 240 + sdif; sat += sdif)
614 {
615 rect.top = rect.bottom - ydif;
616 hbrush = CreateSolidBrush(CC_HSLtoRGB(hue, sat, 120));
617 FillRect(infoPtr->hdcMem, &rect, hbrush);
619 rect.bottom = rect.top;
620 }
621 rect.left = rect.right;
622 }
624 SetCursor(hcursor);
625}
#define XSTEPS
Definition: colordlg.c:583
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:2105
#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 723 of file colordlg.c.

724{
725 int i;
726
728 CC_PrepareColorGraph(infoPtr);
729 for (i = IDC_COLOR_EDIT_H; i <= IDC_COLOR_EDIT_B; i++)
730 ShowWindow( GetDlgItem(infoPtr->hwndSelf, i), SW_SHOW);
731 for (i = IDC_COLOR_HL; i <= IDC_COLOR_BL; i++)
732 ShowWindow( GetDlgItem(infoPtr->hwndSelf, i), SW_SHOW);
735 ShowWindow( GetDlgItem(infoPtr->hwndSelf, 1090), SW_SHOW);
736
737 if (lprect)
738 SetWindowPos(infoPtr->hwndSelf, 0, 0, 0, lprect->right-lprect->left,
739 lprect->bottom-lprect->top, SWP_NOMOVE|SWP_NOZORDER);
740
743
744 CC_EditSetRGB(infoPtr);
745 CC_EditSetHSL(infoPtr);
748}
#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:687
static void CC_EditSetHSL(CCPRIV *infoPtr)
Definition: colordlg.c:707
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:1244
BOOL WINAPI UpdateWindow(_In_ HWND)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define SW_SHOW
Definition: winuser.h:775
#define SWP_NOZORDER
Definition: winuser.h:1247

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 972 of file colordlg.c.

973{
974 int r, g, b, i, xx;
975 UINT cokmsg;
976 HDC hdc;
977 COLORREF *cr;
978
979 TRACE("CC_WMCommand wParam=%lx lParam=%lx\n", wParam, lParam);
980 switch (LOWORD(wParam))
981 {
982 case IDC_COLOR_EDIT_R: /* edit notify RGB */
983 case IDC_COLOR_EDIT_G:
984 case IDC_COLOR_EDIT_B:
985 if (notifyCode == EN_UPDATE && !lpp->updating)
986 {
987 i = CC_CheckDigitsInEdit(hwndCtl, 255);
988 r = GetRValue(lpp->lpcc->rgbResult);
989 g = GetGValue(lpp->lpcc->rgbResult);
990 b= GetBValue(lpp->lpcc->rgbResult);
991 xx = 0;
992 switch (LOWORD(wParam))
993 {
994 case IDC_COLOR_EDIT_R: if ((xx = (i != r))) r = i; break;
995 case IDC_COLOR_EDIT_G: if ((xx = (i != g))) g = i; break;
996 case IDC_COLOR_EDIT_B: if ((xx = (i != b))) b = i; break;
997 }
998 if (xx) /* something has changed */
999 {
1000 lpp->lpcc->rgbResult = RGB(r, g, b);
1002 lpp->h = CC_RGBtoHSL('H', lpp->lpcc->rgbResult);
1003 lpp->s = CC_RGBtoHSL('S', lpp->lpcc->rgbResult);
1004 lpp->l = CC_RGBtoHSL('L', lpp->lpcc->rgbResult);
1005 CC_EditSetHSL(lpp);
1006 CC_PaintCross(lpp);
1007 CC_PaintTriangle(lpp);
1008 }
1009 }
1010 break;
1011
1012 case IDC_COLOR_EDIT_H: /* edit notify HSL */
1013 case IDC_COLOR_EDIT_S:
1014 case IDC_COLOR_EDIT_L:
1015 if (notifyCode == EN_UPDATE && !lpp->updating)
1016 {
1017 i = CC_CheckDigitsInEdit(hwndCtl , LOWORD(wParam) == IDC_COLOR_EDIT_H ? 239 : 240);
1018 xx = 0;
1019 switch (LOWORD(wParam))
1020 {
1021 case IDC_COLOR_EDIT_H: if ((xx = ( i != lpp->h))) lpp->h = i; break;
1022 case IDC_COLOR_EDIT_S: if ((xx = ( i != lpp->s))) lpp->s = i; break;
1023 case IDC_COLOR_EDIT_L: if ((xx = ( i != lpp->l))) lpp->l = i; break;
1024 }
1025 if (xx) /* something has changed */
1026 {
1027 lpp->lpcc->rgbResult = CC_HSLtoRGB(lpp->h, lpp->s, lpp->l);
1029 CC_EditSetRGB(lpp);
1030 CC_PaintCross(lpp);
1031 CC_PaintTriangle(lpp);
1032 }
1033 }
1034 break;
1035
1036 case IDC_COLOR_DEFINE:
1037 CC_SwitchToFullSize(lpp, &lpp->fullsize);
1039 break;
1040
1041 case IDC_COLOR_ADD: /* add colors ... column by column */
1042 cr = lpp->lpcc->lpCustColors;
1043 cr[(lpp->nextuserdef % 2) * 8 + lpp->nextuserdef / 2] = lpp->lpcc->rgbResult;
1044 if (++lpp->nextuserdef == 16)
1045 lpp->nextuserdef = 0;
1046 CC_PaintUserColorArray(lpp, 2, 8);
1047 break;
1048
1049 case IDC_COLOR_RES: /* resulting color */
1050 hdc = GetDC(lpp->hwndSelf);
1052 ReleaseDC(lpp->hwndSelf, hdc);
1053 CC_EditSetRGB(lpp);
1055 lpp->h = CC_RGBtoHSL('H', lpp->lpcc->rgbResult);
1056 lpp->s = CC_RGBtoHSL('S', lpp->lpcc->rgbResult);
1057 lpp->l = CC_RGBtoHSL('L', lpp->lpcc->rgbResult);
1058 CC_EditSetHSL(lpp);
1059 CC_PaintCross(lpp);
1060 CC_PaintTriangle(lpp);
1061 break;
1062
1063 case pshHelp: /* Help! */ /* The Beatles, 1965 ;-) */
1065 if (lpp->lpcc->hwndOwner)
1066 SendMessageA(lpp->lpcc->hwndOwner, i, 0, (LPARAM)lpp->lpcc);
1067 if ( CC_HookCallChk(lpp->lpcc))
1069 WM_COMMAND, psh15, (LPARAM)lpp->lpcc);
1070 break;
1071
1072 case IDOK :
1074 if (lpp->lpcc->hwndOwner)
1075 if (SendMessageA(lpp->lpcc->hwndOwner, cokmsg, 0, (LPARAM)lpp->lpcc))
1076 break; /* do NOT close */
1077 EndDialog(lpp->hwndSelf, 1) ;
1078 return TRUE ;
1079
1080 case IDCANCEL :
1081 EndDialog(lpp->hwndSelf, 0) ;
1082 return TRUE ;
1083
1084 }
1085 return FALSE;
1086}
static void CC_PaintSelectedColor(const CCPRIV *infoPtr)
Definition: colordlg.c:444
static void CC_PaintTriangle(CCPRIV *infoPtr)
Definition: colordlg.c:469
static void CC_PaintCross(CCPRIV *infoPtr)
Definition: colordlg.c:519
static int CC_CheckDigitsInEdit(HWND hwnd, int maxval)
Definition: colordlg.c:399
static BOOL CC_HookCallChk(const CHOOSECOLORW *lpcc)
Definition: colordlg.c:850
static void CC_SwitchToFullSize(CCPRIV *infoPtr, const RECT *lprect)
Definition: colordlg.c:723
static void CC_PaintUserColorArray(const CCPRIV *infoPtr, int rows, int cols)
Definition: colordlg.c:800
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:831
#define EN_UPDATE
Definition: winuser.h:2028
#define IDOK
Definition: winuser.h:830
HWND WINAPI SetFocus(_In_opt_ HWND)
LRESULT(CALLBACK * WNDPROC)(HWND, UINT, WPARAM, LPARAM)
Definition: winuser.h:2906
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 862 of file colordlg.c.

863{
865 int i, res;
866 int r, g, b;
867 HWND hwnd;
868 RECT rect;
869 POINT point;
870 CCPRIV *lpp;
871
872 TRACE("WM_INITDIALOG lParam=%08lX\n", lParam);
873
874 if (cc->lStructSize != sizeof(CHOOSECOLORW))
875 {
876 EndDialog(hDlg, 0);
877 return FALSE;
878 }
879
880 lpp = heap_alloc_zero(sizeof(*lpp));
881 lpp->lpcc = cc;
882 lpp->hwndSelf = hDlg;
883
884 SetPropW( hDlg, szColourDialogProp, lpp );
885
886 if (!(lpp->lpcc->Flags & CC_SHOWHELP))
889
890#if 0
891 cpos = MAKELONG(5,7); /* init */
892 if (lpp->lpcc->Flags & CC_RGBINIT)
893 {
894 for (i = 0; i < 6; i++)
895 for (j = 0; j < 8; j++)
896 if (predefcolors[i][j] == lpp->lpcc->rgbResult)
897 {
898 cpos = MAKELONG(i,j);
899 goto found;
900 }
901 }
902 found:
903 /* FIXME: Draw_a_focus_rect & set_init_values */
904#endif
905
906 GetWindowRect(hDlg, &lpp->fullsize);
907 if (lpp->lpcc->Flags & CC_FULLOPEN || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
908 {
911 }
912 if (!(lpp->lpcc->Flags & CC_FULLOPEN ) || lpp->lpcc->Flags & CC_PREVENTFULLOPEN)
913 {
914 rect = lpp->fullsize;
915 res = rect.bottom - rect.top;
916 hwnd = GetDlgItem(hDlg, IDC_COLOR_GRAPH); /* cut at left border */
917 point.x = point.y = 0;
919 ScreenToClient(hDlg,&point);
920 GetClientRect(hDlg, &rect);
922 SetWindowPos(hDlg, 0, 0, 0, point.x, res, SWP_NOMOVE|SWP_NOZORDER);
923
924 for (i = IDC_COLOR_EDIT_H; i <= IDC_COLOR_EDIT_B; i++)
925 ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
926 for (i = IDC_COLOR_HL; i <= IDC_COLOR_BL; i++)
927 ShowWindow( GetDlgItem(hDlg, i), SW_HIDE);
932 ShowWindow( GetDlgItem(hDlg, 1090 ), SW_HIDE);
933 }
934 else
936 res = TRUE;
937 for (i = IDC_COLOR_EDIT_H; i <= IDC_COLOR_EDIT_B; i++)
938 SendMessageA( GetDlgItem(hDlg, i), EM_LIMITTEXT, 3, 0); /* max 3 digits: xyz */
939 if (CC_HookCallChk(lpp->lpcc))
940 {
942 }
943
944 /* Set the initial values of the color chooser dialog */
945 r = GetRValue(lpp->lpcc->rgbResult);
946 g = GetGValue(lpp->lpcc->rgbResult);
947 b = GetBValue(lpp->lpcc->rgbResult);
948
950 lpp->h = CC_RGBtoHSL('H', lpp->lpcc->rgbResult);
951 lpp->s = CC_RGBtoHSL('S', lpp->lpcc->rgbResult);
952 lpp->l = CC_RGBtoHSL('L', lpp->lpcc->rgbResult);
953
954 /* Doing it the long way because CC_EditSetRGB/HSL doesn't seem to work */
955 SetDlgItemInt(hDlg, IDC_COLOR_EDIT_H, lpp->h, TRUE);
956 SetDlgItemInt(hDlg, IDC_COLOR_EDIT_S, lpp->s, TRUE);
957 SetDlgItemInt(hDlg, IDC_COLOR_EDIT_L, lpp->l, TRUE);
961
962 CC_PaintCross(lpp);
963 CC_PaintTriangle(lpp);
964
965 return res;
966}
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:768
#define EM_LIMITTEXT
Definition: winuser.h:2000
#define WM_INITDIALOG
Definition: winuser.h:1739
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
#define SM_CXDLGFRAME
Definition: winuser.h:966
int WINAPI GetSystemMetrics(_In_ int)

Referenced by ColorDlgProc().

◆ CC_WMLButtonDown()

static LRESULT CC_WMLButtonDown ( CCPRIV infoPtr,
LPARAM  lParam 
)
static

Definition at line 1162 of file colordlg.c.

1163{
1164 int i = 0;
1165
1166 if (CC_MouseCheckPredefColorArray(infoPtr, 6, 8, lParam))
1167 i = 1;
1168 else
1169 if (CC_MouseCheckUserColorArray(infoPtr, 2, 8, lParam))
1170 i = 1;
1171 else
1172 if (CC_MouseCheckColorGraph(infoPtr->hwndSelf, IDC_COLOR_GRAPH, &infoPtr->h, &infoPtr->s, lParam))
1173 {
1174 i = 2;
1175 infoPtr->capturedGraph = IDC_COLOR_GRAPH;
1176 }
1177 else
1178 if (CC_MouseCheckColorGraph(infoPtr->hwndSelf, IDC_COLOR_LUMBAR, NULL, &infoPtr->l, lParam))
1179 {
1180 i = 2;
1182 }
1183 if ( i == 2 )
1184 {
1185 SetCapture(infoPtr->hwndSelf);
1186 infoPtr->lpcc->rgbResult = CC_HSLtoRGB(infoPtr->h, infoPtr->s, infoPtr->l);
1187 }
1188 if ( i == 1 )
1189 {
1190 infoPtr->h = CC_RGBtoHSL('H', infoPtr->lpcc->rgbResult);
1191 infoPtr->s = CC_RGBtoHSL('S', infoPtr->lpcc->rgbResult);
1192 infoPtr->l = CC_RGBtoHSL('L', infoPtr->lpcc->rgbResult);
1193 }
1194 if (i)
1195 {
1196#ifdef __REACTOS__
1197 if (infoPtr->capturedGraph)
1198 {
1199 RECT rect;
1200 GetWindowRect(GetDlgItem(infoPtr->hwndSelf, infoPtr->capturedGraph), &rect);
1201 ClipCursor(&rect);
1202 }
1203#endif
1204 CC_EditSetRGB(infoPtr);
1205 CC_EditSetHSL(infoPtr);
1206 CC_PaintCross(infoPtr);
1207 CC_PaintTriangle(infoPtr);
1208 CC_PaintSelectedColor(infoPtr);
1209 return TRUE;
1210 }
1211 return FALSE;
1212}
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 1112 of file colordlg.c.

1113{
1114 if (infoPtr->capturedGraph)
1115 {
1116#ifdef __REACTOS__
1118#endif
1119 infoPtr->capturedGraph = 0;
1121 CC_PaintCross(infoPtr);
1122 return 1;
1123 }
1124 return 0;
1125}
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 1130 of file colordlg.c.

1131{
1132 if (infoPtr->capturedGraph)
1133 {
1134 int *ptrh = NULL, *ptrs = &infoPtr->l;
1135 if (infoPtr->capturedGraph == IDC_COLOR_GRAPH)
1136 {
1137 ptrh = &infoPtr->h;
1138 ptrs = &infoPtr->s;
1139 }
1140 if (CC_MouseCheckColorGraph( infoPtr->hwndSelf, infoPtr->capturedGraph, ptrh, ptrs, lParam))
1141 {
1142 infoPtr->lpcc->rgbResult = CC_HSLtoRGB(infoPtr->h, infoPtr->s, infoPtr->l);
1143 CC_EditSetRGB(infoPtr);
1144 CC_EditSetHSL(infoPtr);
1145 CC_PaintCross(infoPtr);
1146 CC_PaintTriangle(infoPtr);
1147 CC_PaintSelectedColor(infoPtr);
1148 }
1149 else
1150 {
1152 infoPtr->capturedGraph = 0;
1153 }
1154 return 1;
1155 }
1156 return 0;
1157}

Referenced by ColorDlgProc().

◆ CC_WMPaint()

static LRESULT CC_WMPaint ( CCPRIV lpp)
static

Definition at line 1091 of file colordlg.c.

1092{
1093 PAINTSTRUCT ps;
1094
1095 BeginPaint(lpp->hwndSelf, &ps);
1096 /* we have to paint dialog children except text and buttons */
1097 CC_PaintPredefColorArray(lpp, 6, 8);
1098 CC_PaintUserColorArray(lpp, 2, 8);
1099 CC_PaintLumBar(lpp);
1100 CC_PaintTriangle(lpp);
1102 CC_PaintColorGraph(lpp);
1103 CC_PaintCross(lpp);
1104 EndPaint(lpp->hwndSelf, &ps);
1105
1106 return TRUE;
1107}
static void CC_PaintColorGraph(CCPRIV *infoPtr)
Definition: colordlg.c:630
static void CC_PaintPredefColorArray(const CCPRIV *infoPtr, int rows, int cols)
Definition: colordlg.c:754
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 1363 of file colordlg.c.

1365{
1366 LPWSTR template_name = NULL;
1367 BOOL ret;
1368
1369 CHOOSECOLORW *lpcc = heap_alloc_zero(sizeof(*lpcc));
1370 lpcc->lStructSize = sizeof(*lpcc);
1371 lpcc->hwndOwner = lpChCol->hwndOwner;
1372 lpcc->hInstance = lpChCol->hInstance;
1373 lpcc->rgbResult = lpChCol->rgbResult;
1374 lpcc->lpCustColors = lpChCol->lpCustColors;
1375 lpcc->Flags = lpChCol->Flags;
1376 lpcc->lCustData = lpChCol->lCustData;
1377 lpcc->lpfnHook = lpChCol->lpfnHook;
1378 if ((lpcc->Flags & CC_ENABLETEMPLATE) && (lpChCol->lpTemplateName)) {
1379 if (!IS_INTRESOURCE(lpChCol->lpTemplateName)) {
1380 INT len = MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, NULL, 0);
1381 template_name = heap_alloc( len * sizeof(WCHAR) );
1382 MultiByteToWideChar( CP_ACP, 0, lpChCol->lpTemplateName, -1, template_name, len );
1383 lpcc->lpTemplateName = template_name;
1384 } else {
1385 lpcc->lpTemplateName = (LPCWSTR)lpChCol->lpTemplateName;
1386 }
1387 }
1388
1389 ret = ChooseColorW(lpcc);
1390
1391 if (ret)
1392 lpChCol->rgbResult = lpcc->rgbResult;
1393
1394 heap_free(template_name);
1395 heap_free(lpcc);
1396 return ret;
1397}
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:1302
#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 1302 of file colordlg.c.

1303{
1304 HANDLE hDlgTmpl = 0;
1305 const void *template;
1306
1307 TRACE("(%p)\n", lpChCol);
1308
1309 if (!lpChCol) return FALSE;
1310
1311 if (lpChCol->Flags & CC_ENABLETEMPLATEHANDLE)
1312 {
1313 if (!(template = LockResource(lpChCol->hInstance)))
1314 {
1316 return FALSE;
1317 }
1318 }
1319 else if (lpChCol->Flags & CC_ENABLETEMPLATE)
1320 {
1321 HRSRC hResInfo;
1322 if (!(hResInfo = FindResourceW((HINSTANCE)lpChCol->hInstance,
1323 lpChCol->lpTemplateName,
1324 (LPWSTR)RT_DIALOG)))
1325 {
1327 return FALSE;
1328 }
1329 if (!(hDlgTmpl = LoadResource((HINSTANCE)lpChCol->hInstance, hResInfo)) ||
1330 !(template = LockResource(hDlgTmpl)))
1331 {
1333 return FALSE;
1334 }
1335 }
1336 else
1337 {
1338 HRSRC hResInfo;
1339 HGLOBAL hDlgTmpl;
1340 static const WCHAR wszCHOOSE_COLOR[] = {'C','H','O','O','S','E','_','C','O','L','O','R',0};
1341 if (!(hResInfo = FindResourceW(COMDLG32_hInstance, wszCHOOSE_COLOR, (LPWSTR)RT_DIALOG)))
1342 {
1344 return FALSE;
1345 }
1346 if (!(hDlgTmpl = LoadResource(COMDLG32_hInstance, hResInfo )) ||
1347 !(template = LockResource(hDlgTmpl)))
1348 {
1350 return FALSE;
1351 }
1352 }
1353
1354 return DialogBoxIndirectParamW(COMDLG32_hInstance, template, lpChCol->hwndOwner,
1355 ColorDlgProc, (LPARAM)lpChCol);
1356}
#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:1218
#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 1218 of file colordlg.c.

1220{
1221
1222 int res;
1223 CCPRIV *lpp = GetPropW( hDlg, szColourDialogProp );
1224
1225 if (message != WM_INITDIALOG)
1226 {
1227 if (!lpp)
1228 return FALSE;
1229 res = 0;
1230 if (CC_HookCallChk(lpp->lpcc))
1232 if ( res )
1233 return res;
1234 }
1235
1236 /* FIXME: SetRGB message
1237 if (message && message == msetrgb)
1238 return HandleSetRGB(hDlg, lParam);
1239 */
1240
1241 switch (message)
1242 {
1243 case WM_INITDIALOG:
1244 return CC_WMInitDialog(hDlg, wParam, lParam);
1245 case WM_NCDESTROY:
1246#ifdef __REACTOS__
1247 // Ensure clipping is released, in case the dialog is closed before WM_LBUTTONUP is received.
1249#endif
1250 DeleteDC(lpp->hdcMem);
1251 DeleteObject(lpp->hbmMem);
1252 heap_free(lpp);
1254 break;
1255 case WM_COMMAND:
1257 return TRUE;
1258 break;
1259 case WM_PAINT:
1260 if (CC_WMPaint(lpp))
1261 return TRUE;
1262 break;
1263 case WM_LBUTTONDBLCLK:
1265 return TRUE;
1266 break;
1267 case WM_MOUSEMOVE:
1268 if (CC_WMMouseMove(lpp, lParam))
1269 return TRUE;
1270 break;
1271#ifdef __REACTOS__
1272 /* ReactOS: The following comment doesn't apply */
1273#endif
1274 case WM_LBUTTONUP: /* FIXME: ClipCursor off (if in color graph)*/
1275 if (CC_WMLButtonUp(lpp))
1276 return TRUE;
1277 break;
1278#ifdef __REACTOS__
1279 /* ReactOS: The following comment doesn't apply */
1280#endif
1281 case WM_LBUTTONDOWN:/* FIXME: ClipCursor on (if in color graph)*/
1282 if (CC_WMLButtonDown(lpp, lParam))
1283 return TRUE;
1284 break;
1285 }
1286 return FALSE ;
1287}
static BOOL CC_MouseCheckResultWindow(HWND hDlg, LPARAM lParam)
Definition: colordlg.c:378
static LRESULT CC_WMLButtonDown(CCPRIV *infoPtr, LPARAM lParam)
Definition: colordlg.c:1162
static LRESULT CC_WMMouseMove(CCPRIV *infoPtr, LPARAM lParam)
Definition: colordlg.c:1130
static LRESULT CC_WMLButtonUp(CCPRIV *infoPtr)
Definition: colordlg.c:1112
static LRESULT CC_WMCommand(CCPRIV *lpp, WPARAM wParam, LPARAM lParam, WORD notifyCode, HWND hwndCtl)
Definition: colordlg.c:972
static LRESULT CC_WMPaint(CCPRIV *lpp)
Definition: colordlg.c:1091
static LRESULT CC_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam)
Definition: colordlg.c:862
Definition: tftpd.h:60
#define HIWORD(l)
Definition: typedefs.h:247
BOOL WINAPI DeleteDC(_In_ HDC)
#define WM_PAINT
Definition: winuser.h:1620
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
#define WM_LBUTTONDBLCLK
Definition: winuser.h:1778
#define WM_MOUSEMOVE
Definition: winuser.h:1775
#define WM_LBUTTONDOWN
Definition: winuser.h:1776
#define WM_LBUTTONUP
Definition: winuser.h:1777
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define WM_NCDESTROY
Definition: winuser.h:1684

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().