12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)/* From dev/ppb_truetype_font_dev.idl modified Tue Oct 15 05:52:52 2013. */ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef PPAPI_C_DEV_PPB_TRUETYPE_FONT_DEV_H_ 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PPAPI_C_DEV_PPB_TRUETYPE_FONT_DEV_H_ 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_array_output.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_bool.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_instance.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_macros.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_resource.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_stdint.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ppapi/c/pp_var.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PPB_TRUETYPEFONT_DEV_INTERFACE_0_1 "PPB_TrueTypeFont(Dev);0.1" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define PPB_TRUETYPEFONT_DEV_INTERFACE PPB_TRUETYPEFONT_DEV_INTERFACE_0_1 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @file 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * This file defines the <code>PPB_TrueTypeFont_Dev</code> interface. This 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * interface exposes font table data for 'sfnt' fonts on the host system. These 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * include TrueType and OpenType fonts. 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @addtogroup Enums 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @{ 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * The PP_TrueTypeFontFamily_Dev defines generic font families. These can be 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * used to create generic fonts consistent with the user's browser settings. 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef enum { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * For a description of these default families, see the 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <a href="http://www.w3.org/TR/css3-fonts/#generic-font-families"> 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 3.1.1 Generic font families</a> documentation. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTFAMILY_SERIF = 0, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTFAMILY_SANSSERIF = 1, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTFAMILY_CURSIVE = 2, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTFAMILY_FANTASY = 3, 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTFAMILY_MONOSPACE = 4 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} PP_TrueTypeFontFamily_Dev; 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TrueTypeFontFamily_Dev, 4); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The PP_TrueTypeFontStyle_Dev enum defines font styles. 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef enum { 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTSTYLE_NORMAL = 0, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTSTYLE_ITALIC = 1 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} PP_TrueTypeFontStyle_Dev; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TrueTypeFontStyle_Dev, 4); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The PP_TrueTypeFontWeight_Dev enum defines font weights. 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef enum { 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_THIN = 100, 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_ULTRALIGHT = 200, 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_LIGHT = 300, 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_NORMAL = 400, 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_MEDIUM = 500, 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_SEMIBOLD = 600, 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_BOLD = 700, 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_ULTRABOLD = 800, 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWEIGHT_HEAVY = 900 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} PP_TrueTypeFontWeight_Dev; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TrueTypeFontWeight_Dev, 4); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The PP_TrueTypeFontWidth_Dev enum defines font widths. 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef enum { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_ULTRACONDENSED = 0, 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_EXTRACONDENSED = 1, 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_CONDENSED = 2, 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_SEMICONDENSED = 3, 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_NORMAL = 4, 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_SEMIEXPANDED = 5, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_EXPANDED = 6, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_EXTRAEXPANDED = 7, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTWIDTH_ULTRAEXPANDED = 8 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} PP_TrueTypeFontWidth_Dev; 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TrueTypeFontWidth_Dev, 4); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The PP_TrueTypeFontCharset enum defines font character sets. 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef enum { 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_ANSI = 0, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_DEFAULT = 1, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_SYMBOL = 2, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_MAC = 77, 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_SHIFTJIS = 128, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_HANGUL = 129, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_JOHAB = 130, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_GB2312 = 134, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_CHINESEBIG5 = 136, 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_GREEK = 161, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_TURKISH = 162, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_VIETNAMESE = 163, 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_HEBREW = 177, 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_ARABIC = 178, 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_BALTIC = 186, 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_RUSSIAN = 204, 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_THAI = 222, 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_EASTEUROPE = 238, 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TRUETYPEFONTCHARSET_OEM = 255 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} PP_TrueTypeFontCharset_Dev; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TrueTypeFontCharset_Dev, 4); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @} 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @addtogroup Structs 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @{ 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The <code>PP_TrueTypeFontDesc</code> struct describes a TrueType font. It is 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * passed to Create(), and returned by Describe(). 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct PP_TrueTypeFontDesc_Dev { 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Font family name as a string. This can also be an undefined var, in which 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * case the generic family will be obeyed. If the face is not available on 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * the system, the browser will attempt to do font fallback or pick a default 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * font. 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_Var family; 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** This value specifies a generic font family. If a family name string is 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * provided when creating a font, this is ignored. */ 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TrueTypeFontFamily_Dev generic_family; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** This value specifies the font style. */ 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TrueTypeFontStyle_Dev style; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** This value specifies the font weight. */ 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TrueTypeFontWeight_Dev weight; 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** This value specifies the font width, for condensed or expanded fonts */ 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TrueTypeFontWidth_Dev width; 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** This value specifies a character set. */ 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_TrueTypeFontCharset_Dev charset; 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Ensure that this struct is 40-bytes wide by padding the end. In some 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * compilers, PP_Var is 8-byte aligned, so those compilers align this struct 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * on 8-byte boundaries as well and pad it to 16 bytes even without this 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * padding attribute. This padding makes its size consistent across 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * compilers. 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t padding; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_TrueTypeFontDesc_Dev, 40); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @} 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @addtogroup Interfaces 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @{ 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct PPB_TrueTypeFont_Dev_0_1 { 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Gets an array of TrueType font family names available on the host. 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * These names can be used to create a font from a specific family. 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> requesting the family names. 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] output A <code>PP_ArrayOutput</code> to hold the names. 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * The output is an array of PP_Vars, each holding a family name. 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * completion of GetFontFamilies. 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return If >= 0, the number of family names returned, otherwise an error 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * code from <code>pp_errors.h</code>. 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t (*GetFontFamilies)(PP_Instance instance, 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_ArrayOutput output, 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_CompletionCallback callback); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Gets an array of TrueType font descriptors for a given font family. These 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * descriptors can be used to create a font in that family and matching the 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * descriptor attributes. 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * 190c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> requesting the font 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * descriptors. 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param[in] family A <code>PP_Var</code> holding a string specifying the 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * font family. 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param[in] output A <code>PP_ArrayOutput</code> to hold the descriptors. 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The output is an array of <code>PP_TrueTypeFontDesc</code> structs. Each 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * desc contains a PP_Var for the family name which must be released. 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * completion of GetFontsInFamily. 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @return If >= 0, the number of font descriptors returned, otherwise an 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * error code from <code>pp_errors.h</code>. 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int32_t (*GetFontsInFamily)(PP_Instance instance, 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_Var family, 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_ArrayOutput output, 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) struct PP_CompletionCallback callback); 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Creates a font resource matching the given font characteristics. The 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * resource id will be non-zero on success, or zero on failure. 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> to own the font. 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] desc A pointer to a <code>PP_TrueTypeFontDesc</code> describing 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * the font. 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PP_Resource (*Create)(PP_Instance instance, 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const struct PP_TrueTypeFontDesc_Dev* desc); 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Determines if the given resource is a TrueType font. 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a resource. 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return <code>PP_TRUE</code> if the resource is a 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>PPB_TrueTypeFont_Dev</code>, <code>PP_FALSE</code> otherwise. 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PP_Bool (*IsTrueTypeFont)(PP_Resource resource); 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Returns a description of the given font resource. This description may 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * differ from the description passed to Create, reflecting the host's font 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * matching and fallback algorithm. 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] font A <code>PP_Resource</code> corresponding to a font. 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[out] desc A pointer to a <code>PP_TrueTypeFontDesc</code> to hold 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * the description. The internal 'family' PP_Var should be set to undefined, 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * since this function overwrites the <code>PP_TrueTypeFontDesc</code>. After 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * successful completion, the family will be set to a PP_Var with a single 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * reference, which the caller must release after use. 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * completion of Describe. 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return A return code from <code>pp_errors.h</code>. If an error code is 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * returned, the <code>PP_TrueTypeFontDesc</code> will be unchanged. 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t (*Describe)(PP_Resource font, 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_TrueTypeFontDesc_Dev* desc, 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_CompletionCallback callback); 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Gets an array of identifying tags for each table in the font. These tags 248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * can be used to request specific tables using GetTable. 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] font A <code>PP_Resource</code> corresponding to a font. 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] output A <code>PP_ArrayOutput</code> to hold the tags. 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * The output is an array of 4 byte integers, each representing a table tag. 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * completion of GetTableTags. 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return If >= 0, the number of table tags returned, otherwise an error 2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * code from <code>pp_errors.h</code>. 2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t (*GetTableTags)(PP_Resource font, 2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_ArrayOutput output, 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_CompletionCallback callback); 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Copies the given font table into client memory. 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] font A <code>PP_Resource</code> corresponding to a font. 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] table A 4 byte value indicating which table to copy. 2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * For example, 'glyf' will cause the outline table to be copied into the 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * output array. A zero tag value will cause the entire font to be copied. 2694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * @param[in] offset The offset into the font table. Passing an offset 2704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) * greater than or equal to the table size will succeed with 0 bytes copied. 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] max_data_length The maximum number of bytes to transfer from 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>offset</code>. 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] output A <code>PP_ArrayOutput</code> to hold the font data. 2742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * The output is an array of bytes. 2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 2762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * completion of GetTable. 2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @return If >= 0, the table size in bytes, otherwise an error code from 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * <code>pp_errors.h</code>. 2802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t (*GetTable)(PP_Resource font, 2822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t table, 2832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t offset, 2842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int32_t max_data_length, 2852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_ArrayOutput output, 2862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct PP_CompletionCallback callback); 2872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef struct PPB_TrueTypeFont_Dev_0_1 PPB_TrueTypeFont_Dev; 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @} 2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif /* PPAPI_C_DEV_PPB_TRUETYPE_FONT_DEV_H_ */ 2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 296