Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(365)

Side by Side Diff: ppapi/c/dev/ppb_font_dev.h

Issue 5674004: Add compile assertions to enforce the sizes of all structs and enums in the C... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_C_DEV_PPB_FONT_DEV_H_ 5 #ifndef PPAPI_C_DEV_PPB_FONT_DEV_H_
6 #define PPAPI_C_DEV_PPB_FONT_DEV_H_ 6 #define PPAPI_C_DEV_PPB_FONT_DEV_H_
7 7
8 #include "ppapi/c/pp_bool.h" 8 #include "ppapi/c/pp_bool.h"
9 #include "ppapi/c/pp_macros.h"
9 #include "ppapi/c/pp_module.h" 10 #include "ppapi/c/pp_module.h"
10 #include "ppapi/c/pp_resource.h" 11 #include "ppapi/c/pp_resource.h"
11 #include "ppapi/c/pp_stdint.h" 12 #include "ppapi/c/pp_stdint.h"
12 #include "ppapi/c/pp_var.h" 13 #include "ppapi/c/pp_var.h"
13 14
14 #define PPB_FONT_DEV_INTERFACE "PPB_Font(Dev);0.2" 15 #define PPB_FONT_DEV_INTERFACE "PPB_Font(Dev);0.4"
15 16
16 struct PP_Point; 17 struct PP_Point;
17 struct PP_Rect; 18 struct PP_Rect;
18 19
19 typedef enum { 20 typedef enum {
20 // Uses the user's default web page font (normally either the default serif 21 // Uses the user's default web page font (normally either the default serif
21 // or sans serif font). 22 // or sans serif font).
22 PP_FONTFAMILY_DEFAULT = 0, 23 PP_FONTFAMILY_DEFAULT = 0,
23 24
24 // These families will use the default web page font corresponding to the 25 // These families will use the default web page font corresponding to the
25 // given family. 26 // given family.
26 PP_FONTFAMILY_SERIF = 1, 27 PP_FONTFAMILY_SERIF = 1,
27 PP_FONTFAMILY_SANSSERIF = 2, 28 PP_FONTFAMILY_SANSSERIF = 2,
28 PP_FONTFAMILY_MONOSPACE = 3 29 PP_FONTFAMILY_MONOSPACE = 3
29 } PP_FontFamily_Dev; 30 } PP_FontFamily_Dev;
31 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_FontFamily_Dev, 4);
30 32
31 typedef enum { 33 typedef enum {
32 PP_FONTWEIGHT_100 = 0, 34 PP_FONTWEIGHT_100 = 0,
33 PP_FONTWEIGHT_200, 35 PP_FONTWEIGHT_200,
34 PP_FONTWEIGHT_300, 36 PP_FONTWEIGHT_300,
35 PP_FONTWEIGHT_400, 37 PP_FONTWEIGHT_400,
36 PP_FONTWEIGHT_500, 38 PP_FONTWEIGHT_500,
37 PP_FONTWEIGHT_600, 39 PP_FONTWEIGHT_600,
38 PP_FONTWEIGHT_700, 40 PP_FONTWEIGHT_700,
39 PP_FONTWEIGHT_800, 41 PP_FONTWEIGHT_800,
40 PP_FONTWEIGHT_900, 42 PP_FONTWEIGHT_900,
41 PP_FONTWEIGHT_NORMAL = PP_FONTWEIGHT_400, 43 PP_FONTWEIGHT_NORMAL = PP_FONTWEIGHT_400,
42 PP_FONTWEIGHT_BOLD = PP_FONTWEIGHT_700 44 PP_FONTWEIGHT_BOLD = PP_FONTWEIGHT_700
43 } PP_FontWeight_Dev; 45 } PP_FontWeight_Dev;
46 PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_FontWeight_Dev, 4);
44 47
45 struct PP_FontDescription_Dev { 48 struct PP_FontDescription_Dev {
46 // Font face name as a string. This can also be a Null var, in which case the 49 // Font face name as a string. This can also be a Null var, in which case the
47 // generic family will be obeyed. 50 // generic family will be obeyed.
48 struct PP_Var face; 51 struct PP_Var face;
49 52
50 // When face is a Null string, this specifies the generic font family type 53 // When face is a Null string, this specifies the generic font family type
51 // to use. If the face is specified, this will be ignored. 54 // to use. If the face is specified, this will be ignored.
52 PP_FontFamily_Dev family; 55 PP_FontFamily_Dev family;
53 56
54 uint32_t size; 57 uint32_t size;
55 58
56 // Normally you will use either PP_FONTWEIGHT_NORMAL or PP_FONTWEIGHT_BOLD. 59 // Normally you will use either PP_FONTWEIGHT_NORMAL or PP_FONTWEIGHT_BOLD.
57 PP_FontWeight_Dev weight; 60 PP_FontWeight_Dev weight;
58 61
59 PP_Bool italic; 62 PP_Bool italic;
60 PP_Bool small_caps; 63 PP_Bool small_caps;
61 64
62 // Adjustment to apply to letter and word spacing, respectively. Initialize 65 // Adjustment to apply to letter and word spacing, respectively. Initialize
63 // to 0 to get normal spacing. Negative values bring letters/words closer 66 // to 0 to get normal spacing. Negative values bring letters/words closer
64 // together, positive values separate them. 67 // together, positive values separate them.
65 int letter_spacing; 68 int32_t letter_spacing;
66 int word_spacing; 69 int32_t word_spacing;
70
71 // Ensure that this struct is 48-bytes wide by padding the end. In some
72 // compilers, PP_Var is 8-byte aligned, so those compilers align this struct
73 // on 8-byte boundaries as well and pad it to 16 bytes even without this
74 // padding attribute. This padding makes its size consistent across
75 // compilers.
76 int32_t padding;
67 }; 77 };
78 PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_FontDescription_Dev, 48);
68 79
69 struct PP_FontMetrics_Dev { 80 struct PP_FontMetrics_Dev {
70 int32_t height; 81 int32_t height;
71 int32_t ascent; 82 int32_t ascent;
72 int32_t descent; 83 int32_t descent;
73 int32_t line_spacing; 84 int32_t line_spacing;
74 int32_t x_height; 85 int32_t x_height;
75 }; 86 };
87 PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_FontMetrics_Dev, 20);
76 88
77 struct PP_TextRun_Dev { 89 struct PP_TextRun_Dev {
78 // This var must either be a string or a null var (which will be treated as 90 // This var must either be a string or a null var (which will be treated as
79 // a 0-length string). 91 // a 0-length string).
80 struct PP_Var text; 92 struct PP_Var text;
81 93
82 // Set to PP_TRUE if the text is right-to-left. 94 // Set to PP_TRUE if the text is right-to-left.
83 PP_Bool rtl; 95 PP_Bool rtl;
84 96
85 // Set to PP_TRUE to force the directionality of the text regardless of 97 // Set to PP_TRUE to force the directionality of the text regardless of
86 // content 98 // content
87 PP_Bool override_direction; 99 PP_Bool override_direction;
88 }; 100 };
101 PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_TextRun_Dev, 24);
89 102
90 struct PPB_Font_Dev { 103 struct PPB_Font_Dev {
91 // Returns a font which best matches the given description. The return value 104 // Returns a font which best matches the given description. The return value
92 // will have a non-zero ID on success, or zero on failure. 105 // will have a non-zero ID on success, or zero on failure.
93 PP_Resource (*Create)(PP_Module module, 106 PP_Resource (*Create)(PP_Module module,
94 const struct PP_FontDescription_Dev* description); 107 const struct PP_FontDescription_Dev* description);
95 108
96 // Returns PP_TRUE if the given resource is a Font. Returns PP_FALSE if the 109 // Returns PP_TRUE if the given resource is a Font. Returns PP_FALSE if the
97 // resource is invalid or some type other than a Font. 110 // resource is invalid or some type other than a Font.
98 PP_Bool (*IsFont)(PP_Resource resource); 111 PP_Bool (*IsFont)(PP_Resource resource);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 167
155 // Returns the horizontal advance to the given character if the string was 168 // Returns the horizontal advance to the given character if the string was
156 // placed at the given position. This handles complex scripts such as Arabic, 169 // placed at the given position. This handles complex scripts such as Arabic,
157 // where characters may be combined or replaced depending on context. 170 // where characters may be combined or replaced depending on context.
158 int32_t (*PixelOffsetForCharacter)(PP_Resource font, 171 int32_t (*PixelOffsetForCharacter)(PP_Resource font,
159 const struct PP_TextRun_Dev* text, 172 const struct PP_TextRun_Dev* text,
160 uint32_t char_offset); 173 uint32_t char_offset);
161 }; 174 };
162 175
163 #endif // PPAPI_C_DEV_PPB_FONT_DEV_H_ 176 #endif // PPAPI_C_DEV_PPB_FONT_DEV_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698