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