xref: /petsc/src/sys/classes/draw/impls/win32/win32draw.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1 #pragma once
2 
3 #if defined(PETSC_HAVE_WINDOWS_H)
4   #include <windows.h>
5 #endif
6 #if defined(PETSC_HAVE_WINDOWSX_H)
7   #include <windowsx.h>
8 #endif
9 #include <petscdraw.h>
10 
11 /* Nodes that record mouse actions when needed */
12 typedef struct _p_MouseNode *MouseNode;
13 struct _p_MouseNode {
14   PetscDrawButton Button;
15   POINT           user;
16   POINT           phys;
17   MouseNode       mnext;
18   int             Length;
19 };
20 
21 /* nodes that contain handle to all user created windows */
22 typedef struct _p_WindowNode *WindowNode;
23 struct _p_WindowNode {
24   HWND       hWnd;
25   WindowNode wnext, wprev;
26   HANDLE     event;
27   MouseNode  MouseListHead;
28   MouseNode  MouseListTail;
29   BOOL       IsGetMouseOn;
30   PetscBool  DoubleBuffered;
31   HDC        Buffer, DoubleBuffer;
32   HBITMAP    BufferBit, DoubleBufferBit;
33   HGDIOBJ    store, dbstore;
34   int        bitwidth, bitheight;
35 };
36 
37 /* Nodes that hold all information about a windows device context */
38 typedef struct {
39   HDC        hdc;
40   HWND       hWnd;
41   int        linewidth;
42   int        pointdiameter;
43   COLORREF   currentcolor;
44   int        stringheight;
45   int        stringwidth;
46   int        pause;
47   PetscBool  haveresized;
48   HANDLE     hReadyEvent;
49   int        x, y, w, h; /* Size and location of window */
50   WindowNode node;       /* so we can grab windownode info if needed */
51   DWORD      popup, caption, overlapped;
52 
53 } PetscDraw_Win32;
54