Mercurial > emacs
annotate src/w32font.h @ 110237:b02c6c7716e4
Merge changes from emacs-23 branch.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Mon, 06 Sep 2010 12:40:56 -0400 |
parents | 1dc371b29285 |
children | 417b1e4d63cd |
rev | line source |
---|---|
91206 | 1 /* Shared GDI and Uniscribe Font backend declarations for the W32 API. |
106815 | 2 Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
91206 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94916
diff
changeset
|
6 GNU Emacs is free software: you can redistribute it and/or modify |
91206 | 7 it under the terms of the GNU General Public License as published by |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94916
diff
changeset
|
8 the Free Software Foundation, either version 3 of the License, or |
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94916
diff
changeset
|
9 (at your option) any later version. |
91206 | 10 |
11 GNU Emacs is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94916
diff
changeset
|
17 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
91206 | 18 |
19 #ifndef EMACS_W32FONT_H | |
20 #define EMACS_W32FONT_H | |
21 | |
22 | |
23 /* Bit 17 of ntmFlags in NEWTEXTMETRIC is set for Postscript OpenType fonts, | |
92408
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
24 bit 18 for Truetype OpenType fonts, bit 20 for Type1 fonts. */ |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
25 #ifndef NTM_PS_OPENTYPE |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
26 #define NTM_PS_OPENTYPE 0x00020000 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
27 #endif |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
28 #ifndef NTM_TT_OPENTYPE |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
29 #define NTM_TT_OPENTYPE 0x00040000 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
30 #endif |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
31 #ifndef NTM_TYPE1 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
32 #define NTM_TYPE1 0x00100000 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
33 #endif |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
34 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
35 #define NTMFLAGS_OPENTYPE (NTM_PS_OPENTYPE | NTM_TT_OPENTYPE) |
91206 | 36 |
93860
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
37 struct w32_metric_cache |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
38 { |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
39 short lbearing, rbearing, width; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
40 unsigned char status; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
41 }; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
42 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
43 #define W32METRIC_NO_ATTEMPT 0 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
44 #define W32METRIC_SUCCESS 1 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
45 #define W32METRIC_FAIL 2 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
46 |
91206 | 47 /* The actual structure for a w32 font, that can be cast to struct font. |
48 The Uniscribe backend extends this. */ | |
49 struct w32font_info | |
50 { | |
51 struct font font; | |
97135
09abb4487286
* w32font.h (struct w32font_info): Use unicode version of textmetrics.
Jason Rumney <jasonr@gnu.org>
parents:
96343
diff
changeset
|
52 TEXTMETRICW metrics; |
92408
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
53 unsigned int glyph_idx; |
93860
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
54 struct w32_metric_cache **cached_metrics; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
55 int n_cache_blocks; |
96327
2fc5aff56d81
* w32bdf.c, w32bdf.h: Remove obsolete files.
Jason Rumney <jasonr@gnu.org>
parents:
94994
diff
changeset
|
56 HFONT hfont; |
91206 | 57 }; |
58 | |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
59 /* Macros for getting OS specific information from a font struct. */ |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
60 #define FONT_HANDLE(f) (((struct w32font_info *)(f))->hfont) |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
61 #define FONT_TEXTMETRIC(f) (((struct w32font_info *)(f))->metrics) |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
62 |
93860
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
63 #define CACHE_BLOCKSIZE 128 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
64 |
109103 | 65 Lisp_Object w32font_get_cache (FRAME_PTR fe); |
66 Lisp_Object w32font_list_internal (Lisp_Object frame, | |
67 Lisp_Object font_spec, | |
68 int opentype_only); | |
69 Lisp_Object w32font_match_internal (Lisp_Object frame, | |
70 Lisp_Object font_spec, | |
71 int opentype_only); | |
72 int w32font_open_internal (FRAME_PTR f, Lisp_Object font_entity, | |
73 int pixel_size, Lisp_Object font_object); | |
74 void w32font_close (FRAME_PTR f, struct font *font); | |
75 int w32font_has_char (Lisp_Object entity, int c); | |
76 int w32font_text_extents (struct font *font, unsigned *code, int nglyphs, | |
77 struct font_metrics *metrics); | |
78 int w32font_draw (struct glyph_string *s, int from, int to, | |
79 int x, int y, int with_background); | |
91206 | 80 |
93594
46b8fe649bbc
(uniscribe_check_otf): Declare.
Jason Rumney <jasonr@gnu.org>
parents:
92408
diff
changeset
|
81 |
109103 | 82 int uniscribe_check_otf (LOGFONT *font, Lisp_Object otf_spec); |
93594
46b8fe649bbc
(uniscribe_check_otf): Declare.
Jason Rumney <jasonr@gnu.org>
parents:
92408
diff
changeset
|
83 |
109103 | 84 Lisp_Object intern_font_name (char *); |
100409
4be3711ceff9
* w32font.c (intern_font_name): New function.
Jason Rumney <jasonr@gnu.org>
parents:
97135
diff
changeset
|
85 |
91206 | 86 #endif |
91213 | 87 |
88 /* arch-tag: ef9d9675-a2a5-4d01-9526-815e9a3da7cb | |
89 (do not change this comment) */ |