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