@@ -12,47 +12,53 @@ import (
12
12
var (
13
13
modgdi32 = syscall .NewLazyDLL ("gdi32.dll" )
14
14
15
- procGetDeviceCaps = modgdi32 .NewProc ("GetDeviceCaps" )
16
- procDeleteObject = modgdi32 .NewProc ("DeleteObject" )
17
- procCreateFontIndirect = modgdi32 .NewProc ("CreateFontIndirectW" )
18
- procAbortDoc = modgdi32 .NewProc ("AbortDoc" )
19
- procBitBlt = modgdi32 .NewProc ("BitBlt" )
20
- procCloseEnhMetaFile = modgdi32 .NewProc ("CloseEnhMetaFile" )
21
- procCopyEnhMetaFile = modgdi32 .NewProc ("CopyEnhMetaFileW" )
22
- procCreateBrushIndirect = modgdi32 .NewProc ("CreateBrushIndirect" )
23
- procCreateCompatibleDC = modgdi32 .NewProc ("CreateCompatibleDC" )
24
- procCreateDC = modgdi32 .NewProc ("CreateDCW" )
25
- procCreateDIBSection = modgdi32 .NewProc ("CreateDIBSection" )
26
- procCreateEnhMetaFile = modgdi32 .NewProc ("CreateEnhMetaFileW" )
27
- procCreateIC = modgdi32 .NewProc ("CreateICW" )
28
- procDeleteDC = modgdi32 .NewProc ("DeleteDC" )
29
- procDeleteEnhMetaFile = modgdi32 .NewProc ("DeleteEnhMetaFile" )
30
- procEllipse = modgdi32 .NewProc ("Ellipse" )
31
- procEndDoc = modgdi32 .NewProc ("EndDoc" )
32
- procEndPage = modgdi32 .NewProc ("EndPage" )
33
- procExtCreatePen = modgdi32 .NewProc ("ExtCreatePen" )
34
- procGetEnhMetaFile = modgdi32 .NewProc ("GetEnhMetaFileW" )
35
- procGetEnhMetaFileHeader = modgdi32 .NewProc ("GetEnhMetaFileHeader" )
36
- procGetObject = modgdi32 .NewProc ("GetObjectW" )
37
- procGetStockObject = modgdi32 .NewProc ("GetStockObject" )
38
- procGetTextExtentExPoint = modgdi32 .NewProc ("GetTextExtentExPointW" )
39
- procGetTextExtentPoint32 = modgdi32 .NewProc ("GetTextExtentPoint32W" )
40
- procGetTextMetrics = modgdi32 .NewProc ("GetTextMetricsW" )
41
- procLineTo = modgdi32 .NewProc ("LineTo" )
42
- procMoveToEx = modgdi32 .NewProc ("MoveToEx" )
43
- procPlayEnhMetaFile = modgdi32 .NewProc ("PlayEnhMetaFile" )
44
- procRectangle = modgdi32 .NewProc ("Rectangle" )
45
- procResetDC = modgdi32 .NewProc ("ResetDCW" )
46
- procSelectObject = modgdi32 .NewProc ("SelectObject" )
47
- procSetBkMode = modgdi32 .NewProc ("SetBkMode" )
48
- procSetBrushOrgEx = modgdi32 .NewProc ("SetBrushOrgEx" )
49
- procSetStretchBltMode = modgdi32 .NewProc ("SetStretchBltMode" )
50
- procSetTextColor = modgdi32 .NewProc ("SetTextColor" )
51
- procSetBkColor = modgdi32 .NewProc ("SetBkColor" )
52
- procStartDoc = modgdi32 .NewProc ("StartDocW" )
53
- procStartPage = modgdi32 .NewProc ("StartPage" )
54
- procStretchBlt = modgdi32 .NewProc ("StretchBlt" )
55
- procSetDIBitsToDevice = modgdi32 .NewProc ("SetDIBitsToDevice" )
15
+ procGetDeviceCaps = modgdi32 .NewProc ("GetDeviceCaps" )
16
+ procDeleteObject = modgdi32 .NewProc ("DeleteObject" )
17
+ procCreateFontIndirect = modgdi32 .NewProc ("CreateFontIndirectW" )
18
+ procAbortDoc = modgdi32 .NewProc ("AbortDoc" )
19
+ procBitBlt = modgdi32 .NewProc ("BitBlt" )
20
+ procCloseEnhMetaFile = modgdi32 .NewProc ("CloseEnhMetaFile" )
21
+ procCopyEnhMetaFile = modgdi32 .NewProc ("CopyEnhMetaFileW" )
22
+ procCreateBrushIndirect = modgdi32 .NewProc ("CreateBrushIndirect" )
23
+ procCreateCompatibleDC = modgdi32 .NewProc ("CreateCompatibleDC" )
24
+ procCreateDC = modgdi32 .NewProc ("CreateDCW" )
25
+ procCreateDIBSection = modgdi32 .NewProc ("CreateDIBSection" )
26
+ procCreateEnhMetaFile = modgdi32 .NewProc ("CreateEnhMetaFileW" )
27
+ procCreateIC = modgdi32 .NewProc ("CreateICW" )
28
+ procDeleteDC = modgdi32 .NewProc ("DeleteDC" )
29
+ procDeleteEnhMetaFile = modgdi32 .NewProc ("DeleteEnhMetaFile" )
30
+ procEllipse = modgdi32 .NewProc ("Ellipse" )
31
+ procEndDoc = modgdi32 .NewProc ("EndDoc" )
32
+ procEndPage = modgdi32 .NewProc ("EndPage" )
33
+ procExtCreatePen = modgdi32 .NewProc ("ExtCreatePen" )
34
+ procGetEnhMetaFile = modgdi32 .NewProc ("GetEnhMetaFileW" )
35
+ procGetEnhMetaFileHeader = modgdi32 .NewProc ("GetEnhMetaFileHeader" )
36
+ procGetObject = modgdi32 .NewProc ("GetObjectW" )
37
+ procGetStockObject = modgdi32 .NewProc ("GetStockObject" )
38
+ procGetTextExtentExPoint = modgdi32 .NewProc ("GetTextExtentExPointW" )
39
+ procGetTextExtentPoint32 = modgdi32 .NewProc ("GetTextExtentPoint32W" )
40
+ procGetTextMetrics = modgdi32 .NewProc ("GetTextMetricsW" )
41
+ procLineTo = modgdi32 .NewProc ("LineTo" )
42
+ procMoveToEx = modgdi32 .NewProc ("MoveToEx" )
43
+ procPlayEnhMetaFile = modgdi32 .NewProc ("PlayEnhMetaFile" )
44
+ procRectangle = modgdi32 .NewProc ("Rectangle" )
45
+ procResetDC = modgdi32 .NewProc ("ResetDCW" )
46
+ procSelectObject = modgdi32 .NewProc ("SelectObject" )
47
+ procSetBkMode = modgdi32 .NewProc ("SetBkMode" )
48
+ procSetBrushOrgEx = modgdi32 .NewProc ("SetBrushOrgEx" )
49
+ procSetStretchBltMode = modgdi32 .NewProc ("SetStretchBltMode" )
50
+ procSetTextColor = modgdi32 .NewProc ("SetTextColor" )
51
+ procSetBkColor = modgdi32 .NewProc ("SetBkColor" )
52
+ procStartDoc = modgdi32 .NewProc ("StartDocW" )
53
+ procStartPage = modgdi32 .NewProc ("StartPage" )
54
+ procStretchBlt = modgdi32 .NewProc ("StretchBlt" )
55
+ procSetDIBitsToDevice = modgdi32 .NewProc ("SetDIBitsToDevice" )
56
+ procChoosePixelFormat = modgdi32 .NewProc ("ChoosePixelFormat" )
57
+ procDescribePixelFormat = modgdi32 .NewProc ("DescribePixelFormat" )
58
+ procGetEnhMetaFilePixelFormat = modgdi32 .NewProc ("GetEnhMetaFilePixelFormat" )
59
+ procGetPixelFormat = modgdi32 .NewProc ("GetPixelFormat" )
60
+ procSetPixelFormat = modgdi32 .NewProc ("SetPixelFormat" )
61
+ procSwapBuffers = modgdi32 .NewProc ("SwapBuffers" )
56
62
)
57
63
58
64
func GetDeviceCaps (hdc HDC , index int ) int {
@@ -453,3 +459,51 @@ func SetDIBitsToDevice(hdc HDC, xDest, yDest, dwWidth, dwHeight, xSrc, ySrc int,
453
459
454
460
return int (ret )
455
461
}
462
+
463
+ func ChoosePixelFormat (hdc HDC , pfd * PIXELFORMATDESCRIPTOR ) int {
464
+ ret , _ , _ := procChoosePixelFormat .Call (
465
+ uintptr (hdc ),
466
+ uintptr (unsafe .Pointer (pfd )),
467
+ )
468
+ return int (ret )
469
+ }
470
+
471
+ func DescribePixelFormat (hdc HDC , iPixelFormat int , nBytes uint , pfd * PIXELFORMATDESCRIPTOR ) int {
472
+ ret , _ , _ := procDescribePixelFormat .Call (
473
+ uintptr (hdc ),
474
+ uintptr (iPixelFormat ),
475
+ uintptr (nBytes ),
476
+ uintptr (unsafe .Pointer (pfd )),
477
+ )
478
+ return int (ret )
479
+ }
480
+
481
+ func GetEnhMetaFilePixelFormat (hemf HENHMETAFILE , cbBuffer uint32 , pfd * PIXELFORMATDESCRIPTOR ) uint {
482
+ ret , _ , _ := procGetEnhMetaFilePixelFormat .Call (
483
+ uintptr (hemf ),
484
+ uintptr (cbBuffer ),
485
+ uintptr (unsafe .Pointer (pfd )),
486
+ )
487
+ return uint (ret )
488
+ }
489
+
490
+ func GetPixelFormat (hdc HDC ) int {
491
+ ret , _ , _ := procGetPixelFormat .Call (
492
+ uintptr (hdc ),
493
+ )
494
+ return int (ret )
495
+ }
496
+
497
+ func SetPixelFormat (hdc HDC , iPixelFormat int , pfd * PIXELFORMATDESCRIPTOR ) bool {
498
+ ret , _ , _ := procSetPixelFormat .Call (
499
+ uintptr (hdc ),
500
+ uintptr (iPixelFormat ),
501
+ uintptr (unsafe .Pointer (pfd )),
502
+ )
503
+ return ret == TRUE
504
+ }
505
+
506
+ func SwapBuffers (hdc HDC ) bool {
507
+ ret , _ , _ := procSwapBuffers .Call (uintptr (hdc ))
508
+ return ret == TRUE
509
+ }
0 commit comments