xref: /vim-8.2.3635/src/gui_dwrite.h (revision a338adcf)
1 /* vi:set ts=8 sts=4 sw=4 noet: */
2 /*
3  * Author: MURAOKA Taro <[email protected]>
4  *
5  * Contributors:
6  *  - Ken Takata
7  *  - Yasuhiro Matsumoto
8  *
9  * Copyright (C) 2013 MURAOKA Taro <[email protected]>
10  * THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
11  */
12 
13 #ifndef GUI_DWRITE_H
14 #define GUI_DWRITE_H
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 typedef struct DWriteContext DWriteContext;
21 
22 typedef struct DWriteRenderingParams {
23     float gamma;
24     float enhancedContrast;
25     float clearTypeLevel;
26     /*
27      * pixelGeometry:
28      *	0 - DWRITE_PIXEL_GEOMETRY_FLAT
29      *	1 - DWRITE_PIXEL_GEOMETRY_RGB
30      *	2 - DWRITE_PIXEL_GEOMETRY_BGR
31      */
32     int pixelGeometry;
33     /*
34      * renderingMode:
35      *	0 - DWRITE_RENDERING_MODE_DEFAULT
36      *	1 - DWRITE_RENDERING_MODE_ALIASED
37      *	2 - DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC
38      *	3 - DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL
39      *	4 - DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL
40      *	5 - DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC
41      *	6 - DWRITE_RENDERING_MODE_OUTLINE
42      */
43     int renderingMode;
44     /*
45      * antialiasMode:
46      *	0 - D2D1_TEXT_ANTIALIAS_MODE_DEFAULT
47      *	1 - D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE
48      *	2 - D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE
49      *	3 - D2D1_TEXT_ANTIALIAS_MODE_ALIASED
50      */
51     int textAntialiasMode;
52 } DWriteRenderingParams;
53 
54 void DWrite_Init(void);
55 void DWrite_Final(void);
56 
57 DWriteContext *DWriteContext_Open(void);
58 void DWriteContext_BindDC(DWriteContext *ctx, HDC hdc, const RECT *rect);
59 void DWriteContext_SetFont(DWriteContext *ctx, HFONT hFont);
60 void DWriteContext_DrawText(
61 	DWriteContext *ctx,
62 	const WCHAR *text,
63 	int len,
64 	int x,
65 	int y,
66 	int w,
67 	int h,
68 	int cellWidth,
69 	COLORREF color,
70 	UINT fuOptions,
71 	const RECT *lprc,
72 	const INT *lpDx);
73 void DWriteContext_FillRect(DWriteContext *ctx, const RECT *rc, COLORREF color);
74 void DWriteContext_DrawLine(DWriteContext *ctx, int x1, int y1, int x2, int y2,
75 	COLORREF color);
76 void DWriteContext_SetPixel(DWriteContext *ctx, int x, int y, COLORREF color);
77 void DWriteContext_Scroll(DWriteContext *ctx, int x, int y, const RECT *rc);
78 void DWriteContext_Flush(DWriteContext *ctx);
79 void DWriteContext_Close(DWriteContext *ctx);
80 
81 void DWriteContext_SetRenderingParams(
82 	DWriteContext *ctx,
83 	const DWriteRenderingParams *params);
84 
85 DWriteRenderingParams *DWriteContext_GetRenderingParams(
86 	DWriteContext *ctx,
87 	DWriteRenderingParams *params);
88 
89 #ifdef __cplusplus
90 }
91 #endif
92 #endif/*GUI_DWRITE_H*/
93