header_utils
Loading...
Searching...
No Matches
gfx.h
1
4
5#pragma once
6
7#include "common.h"
8
9namespace ghassanpl::win
10{
11 GHPL_WIN_DECLARE_HANDLE(HMENU);
12 GHPL_WIN_DECLARE_HANDLE(HCURSOR);
13 GHPL_WIN_DECLARE_HANDLE(HBRUSH);
14 GHPL_WIN_DECLARE_HANDLE(HINSTANCE);
15 GHPL_WIN_DECLARE_HANDLE(HGDIOBJ);
16 GHPL_WIN_DECLARE_HANDLE(HGLRC);
17 GHPL_WIN_DECLARE_HANDLE(HDC);
18
19 enum PFDPixelType : BYTE
20 {
21 PFD_TYPE_RGBA_ = 0,
22 PFD_TYPE_COLORINDEX_ = 1,
23 };
24 static_assert(sizeof(PFDPixelType) == sizeof(BYTE) && alignof(PFDPixelType) == alignof(BYTE));
25
26 enum PFDLayerType : BYTE
27 {
28 PFD_MAIN_PLANE_ = 0,
29 PFD_OVERLAY_PLANE_ = 1,
30 PFD_UNDERLAY_PLANE_ = BYTE(-1),
31 };
32 static_assert(sizeof(PFD_UNDERLAY_PLANE_) == sizeof(BYTE) && alignof(PFDLayerType) == alignof(BYTE));
33
34 enum PFDFlags
35 {
36 PFD_DOUBLEBUFFER_ = 0x1,
37 PFD_STEREO_ = 0x2,
38 PFD_DRAW_TO_WINDOW_ = 0x4,
39 PFD_DRAW_TO_BITMAP_ = 0x8,
40 PFD_SUPPORT_GDI_ = 0x10,
41 PFD_SUPPORT_OPENGL_ = 0x20,
42 PFD_GENERIC_FORMAT_ = 0x40,
43 PFD_NEED_PALETTE_ = 0x80,
44 PFD_NEED_SYSTEM_PALETTE_ = 0x100,
45 PFD_SWAP_EXCHANGE_ = 0x200,
46 PFD_SWAP_COPY_ = 0x400,
47 PFD_SWAP_LAYER_BUFFERS_ = 0x800,
48 PFD_GENERIC_ACCELERATED_ = 0x1000,
49 PFD_SUPPORT_DIRECTDRAW_ = 0x2000,
50 PFD_DIRECT3D_ACCELERATED_ = 0x4000,
51 PFD_SUPPORT_COMPOSITION_ = 0x8000,
52 PFD_DEPTH_DONTCARE_ = 0x20000000,
53 PFD_DOUBLEBUFFER_DONTCARE_ = 0x40000000,
54 PFD_STEREO_DONTCARE_ = 0x80000000,
55 };
56
57 typedef struct tagPIXELFORMATDESCRIPTOR {
58 WORD nSize;
59 WORD nVersion;
60 DWORD dwFlags;
61 PFDPixelType iPixelType;
62 BYTE cColorBits;
63 BYTE cRedBits;
64 BYTE cRedShift;
65 BYTE cGreenBits;
66 BYTE cGreenShift;
67 BYTE cBlueBits;
68 BYTE cBlueShift;
69 BYTE cAlphaBits;
70 BYTE cAlphaShift;
71 BYTE cAccumBits;
72 BYTE cAccumRedBits;
73 BYTE cAccumGreenBits;
74 BYTE cAccumBlueBits;
75 BYTE cAccumAlphaBits;
76 BYTE cDepthBits;
77 BYTE cStencilBits;
78 BYTE cAuxBuffers;
79 PFDLayerType iLayerType;
80 BYTE bReserved;
81 DWORD dwLayerMask;
82 DWORD dwVisibleMask;
83 DWORD dwDamageMask;
84 } PIXELFORMATDESCRIPTOR, * LPPIXELFORMATDESCRIPTOR;
85
86 enum
87 {
88 WHITE_BRUSH_ = 0,
89 LTGRAY_BRUSH_ = 1,
90 GRAY_BRUSH_ = 2,
91 DKGRAY_BRUSH_ = 3,
92 BLACK_BRUSH_ = 4,
93 NULL_BRUSH_ = 5,
94 HOLLOW_BRUSH_ = NULL_BRUSH_,
95 WHITE_PEN_ = 6,
96 BLACK_PEN_ = 7,
97 NULL_PEN_ = 8,
98 OEM_FIXED_FONT_ = 10,
99 ANSI_FIXED_FONT_ = 11,
100 ANSI_VAR_FONT_ = 12,
101 SYSTEM_FONT_ = 13,
102 DEVICE_DEFAULT_FONT_ = 14,
103 DEFAULT_PALETTE_ = 15,
104 SYSTEM_FIXED_FONT_ = 16,
105 DEFAULT_GUI_FONT_ = 17,
106 DC_BRUSH_ = 18,
107 DC_PEN_ = 19,
108 };
109
110 extern "C"
111 {
112 GHPL_WINAPI HGDIOBJ GHPL_APIENTRY GetStockObject(int fnObject);
113 GHPL_WINAPI int GHPL_APIENTRY ChoosePixelFormat(HDC hdc, const PIXELFORMATDESCRIPTOR* ppfd);
114 GHPL_WINAPI BOOL GHPL_APIENTRY SetPixelFormat(HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR* ppfd);
115 GHPL_WINAPI BOOL GHPL_APIENTRY SwapBuffers(HDC hdc);
116 GHPL_WINAPI int GHPL_APIENTRY GetPixelFormat(HDC hdc);
117 GHPL_WINAPI int GHPL_APIENTRY DescribePixelFormat(HDC hdc, int iPixelFormat, UINT nBytes, LPPIXELFORMATDESCRIPTOR ppfd);
118
119 GHPL_WINAPI HGLRC GHPL_APIENTRY wglCreateContext(HDC hdc);
120 GHPL_WINAPI HGLRC GHPL_APIENTRY wglGetCurrentContext();
121 GHPL_WINAPI BOOL GHPL_APIENTRY wglDeleteContext(HGLRC context);
122 GHPL_WINAPI HDC GHPL_APIENTRY wglGetCurrentDC();
123 GHPL_WINAPI BOOL GHPL_APIENTRY wglMakeCurrent(HDC hdc, HGLRC hglrc);
124 GHPL_WINAPI PROC GHPL_APIENTRY wglGetProcAddress(LPCSTR lpszProc);
125
126 GHPL_WINAPI HDC GHPL_APIENTRY GetDC(HWND hWnd);
127 GHPL_WINAPI int GHPL_APIENTRY ReleaseDC(HWND hWnd, HDC hDC);
128
129 static constexpr intptr_t DPI_AWARENESS_CONTEXT_UNAWARE = (-1);
130 static constexpr intptr_t DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = (-2);
131 static constexpr intptr_t DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = (-3);
132 static constexpr intptr_t DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = (-4);
133 static constexpr intptr_t DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED = (-5);
134
135 GHPL_WINAPI int GHPL_APIENTRY SetProcessDpiAwarenessContext(intptr_t value);
136 GHPL_WINAPI UINT GHPL_APIENTRY GetDpiForSystem(VOID);
137 GHPL_WINAPI UINT GHPL_APIENTRY GetDpiForWindow(HWND hwnd);
138 }
139}
constexpr auto bit_count
Equal to the number of bits in the type.
Definition bits.h:33
void VOID
typedef char TCHAR, * PTCHAR; typedef const TCHAR* LPCTSTR;
Definition common.h:41