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