Mercurial > emacs
annotate src/w32font.h @ 94138:b6c3fde83add
Set coding-tag.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 17 Apr 2008 19:54:57 +0000 |
parents | 0fecf07dfe3c |
children | 283ee643ce8b |
rev | line source |
---|---|
91206 | 1 /* Shared GDI and Uniscribe Font backend declarations for the W32 API. |
91448
a9ab858a06c6
Update copyright years and GPL version.
Glenn Morris <rgm@gnu.org>
parents:
91254
diff
changeset
|
2 Copyright (C) 2007, 2008 Free Software Foundation, Inc. |
91206 | 3 |
4 This file is part of GNU Emacs. | |
5 | |
6 GNU Emacs is free software; you can redistribute it and/or modify | |
7 it under the terms of the GNU General Public License as published by | |
91448
a9ab858a06c6
Update copyright years and GPL version.
Glenn Morris <rgm@gnu.org>
parents:
91254
diff
changeset
|
8 the Free Software Foundation; either version 3, or (at your option) |
91206 | 9 any later version. |
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 | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
19 Boston, MA 02110-1301, USA. */ | |
20 | |
21 #ifndef EMACS_W32FONT_H | |
22 #define EMACS_W32FONT_H | |
23 | |
24 | |
25 /* 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
|
26 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
|
27 #ifndef NTM_PS_OPENTYPE |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
28 #define NTM_PS_OPENTYPE 0x00020000 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
29 #endif |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
30 #ifndef NTM_TT_OPENTYPE |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
31 #define NTM_TT_OPENTYPE 0x00040000 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
32 #endif |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
33 #ifndef NTM_TYPE1 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
34 #define NTM_TYPE1 0x00100000 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
35 #endif |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
36 |
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
37 #define NTMFLAGS_OPENTYPE (NTM_PS_OPENTYPE | NTM_TT_OPENTYPE) |
91206 | 38 |
93860
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
39 struct w32_metric_cache |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
40 { |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
41 short lbearing, rbearing, width; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
42 unsigned char status; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
43 }; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
44 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
45 #define W32METRIC_NO_ATTEMPT 0 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
46 #define W32METRIC_SUCCESS 1 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
47 #define W32METRIC_FAIL 2 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
48 |
91206 | 49 /* The actual structure for a w32 font, that can be cast to struct font. |
50 The Uniscribe backend extends this. */ | |
51 struct w32font_info | |
52 { | |
53 struct font font; | |
54 TEXTMETRIC metrics; | |
92408
a371504924ef
(NTM_PS_OPENTYPE, NTM_TT_OPENTYPE, NTM_TYPE1): Define
Jason Rumney <jasonr@gnu.org>
parents:
91593
diff
changeset
|
55 unsigned int glyph_idx; |
93860
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
56 struct w32_metric_cache **cached_metrics; |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
57 int n_cache_blocks; |
91206 | 58 }; |
59 | |
93860
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
60 #define CACHE_BLOCKSIZE 128 |
0fecf07dfe3c
(struct w32_metric_cache): New struct.
Jason Rumney <jasonr@gnu.org>
parents:
93594
diff
changeset
|
61 |
91254
21661755910b
(w32font_get_cache): Update declaration.
Jason Rumney <jasonr@gnu.org>
parents:
91213
diff
changeset
|
62 Lisp_Object w32font_get_cache P_ ((FRAME_PTR fe)); |
91206 | 63 Lisp_Object w32font_list_internal P_ ((Lisp_Object frame, |
64 Lisp_Object font_spec, | |
65 int opentype_only)); | |
66 Lisp_Object w32font_match_internal P_ ((Lisp_Object frame, | |
67 Lisp_Object font_spec, | |
68 int opentype_only)); | |
91210
4de7fe00ac26
(w32font_open_internal): New function.
Jason Rumney <jasonr@gnu.org>
parents:
91206
diff
changeset
|
69 int w32font_open_internal P_ ((FRAME_PTR f, Lisp_Object font_entity, |
4de7fe00ac26
(w32font_open_internal): New function.
Jason Rumney <jasonr@gnu.org>
parents:
91206
diff
changeset
|
70 int pixel_size, struct w32font_info *w32_font)); |
91206 | 71 void w32font_close P_ ((FRAME_PTR f, struct font *font)); |
72 int w32font_has_char P_ ((Lisp_Object entity, int c)); | |
73 int w32font_text_extents P_ ((struct font *font, unsigned *code, int nglyphs, | |
74 struct font_metrics *metrics)); | |
75 int w32font_draw P_ ((struct glyph_string *s, int from, int to, | |
76 int x, int y, int with_background)); | |
77 | |
93594
46b8fe649bbc
(uniscribe_check_otf): Declare.
Jason Rumney <jasonr@gnu.org>
parents:
92408
diff
changeset
|
78 |
46b8fe649bbc
(uniscribe_check_otf): Declare.
Jason Rumney <jasonr@gnu.org>
parents:
92408
diff
changeset
|
79 int uniscribe_check_otf P_ ((LOGFONT *font, Lisp_Object otf_spec)); |
46b8fe649bbc
(uniscribe_check_otf): Declare.
Jason Rumney <jasonr@gnu.org>
parents:
92408
diff
changeset
|
80 |
91206 | 81 #endif |
91213 | 82 |
83 /* arch-tag: ef9d9675-a2a5-4d01-9526-815e9a3da7cb | |
84 (do not change this comment) */ |