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