diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-01 16:16:50 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-01 16:16:50 +0000 |
commit | 1758e88fd909ea0ffd49621e8066ffad5627ffdf (patch) | |
tree | c304a5eed047cae5665f5af1739d84655fb5815d /ppapi/c/dev/ppb_font_dev.h | |
parent | e7d8b51953b7d3b2b8a0aba46132305b32f3efce (diff) | |
download | chromium_src-1758e88fd909ea0ffd49621e8066ffad5627ffdf.zip chromium_src-1758e88fd909ea0ffd49621e8066ffad5627ffdf.tar.gz chromium_src-1758e88fd909ea0ffd49621e8066ffad5627ffdf.tar.bz2 |
Move PPAPI into the Chrome repo. The old repo was
http://ppapi.googlecode.com/
TEST=none
BUG=none
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@64613 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/c/dev/ppb_font_dev.h')
-rw-r--r-- | ppapi/c/dev/ppb_font_dev.h | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/ppapi/c/dev/ppb_font_dev.h b/ppapi/c/dev/ppb_font_dev.h new file mode 100644 index 0000000..48dc91f --- /dev/null +++ b/ppapi/c/dev/ppb_font_dev.h @@ -0,0 +1,161 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_C_DEV_PPB_FONT_DEV_H_ +#define PPAPI_C_DEV_PPB_FONT_DEV_H_ + +#include "ppapi/c/pp_module.h" +#include "ppapi/c/pp_resource.h" +#include "ppapi/c/pp_stdint.h" +#include "ppapi/c/pp_var.h" + +#define PPB_FONT_DEV_INTERFACE "PPB_Font(Dev);0.1" + +struct PP_Point; +struct PP_Rect; + +typedef enum { + // Uses the user's default web page font (normally either the default serif + // or sans serif font). + PP_FONTFAMILY_DEFAULT = 0, + + // These families will use the default web page font corresponding to the + // given family. + PP_FONTFAMILY_SERIF = 1, + PP_FONTFAMILY_SANSSERIF = 2, + PP_FONTFAMILY_MONOSPACE = 3 +} PP_FontFamily_Dev; + +typedef enum { + PP_FONTWEIGHT_100 = 0, + PP_FONTWEIGHT_200, + PP_FONTWEIGHT_300, + PP_FONTWEIGHT_400, + PP_FONTWEIGHT_500, + PP_FONTWEIGHT_600, + PP_FONTWEIGHT_700, + PP_FONTWEIGHT_800, + PP_FONTWEIGHT_900, + PP_FONTWEIGHT_NORMAL = PP_FONTWEIGHT_400, + PP_FONTWEIGHT_BOLD = PP_FONTWEIGHT_700 +} PP_FontWeight_Dev; + +struct PP_FontDescription_Dev { + // Font face name as a string. This can also be a Null var, in which case the + // generic family will be obeyed. + struct PP_Var face; + + // When face is a Null string, this specifies the generic font family type + // to use. If the face is specified, this will be ignored. + PP_FontFamily_Dev family; + + uint32_t size; + + // Normally you will use either PP_FONTWEIGHT_NORMAL or PP_FONTWEIGHT_BOLD. + PP_FontWeight_Dev weight; + + bool italic; + bool small_caps; + + // Adjustment to apply to letter and word spacing, respectively. Initialize + // to 0 to get normal spacing. Negative values bring letters/words closer + // together, positive values separate them. + int letter_spacing; + int word_spacing; +}; + +struct PP_FontMetrics_Dev { + int32_t height; + int32_t ascent; + int32_t descent; + int32_t line_spacing; + int32_t x_height; +}; + +struct PP_TextRun_Dev { + // This var must either be a string or a null var (which will be treated as + // a 0-length string). + struct PP_Var text; + + // Set to true if the text is right-to-left. + bool rtl; + + // Set to true to force the directionality of the text regardless of content + bool override_direction; +}; + +struct PPB_Font_Dev { + // Returns a font which best matches the given description. The return value + // will have a non-zero ID on success, or zero on failure. + PP_Resource (*Create)(PP_Module module, + const struct PP_FontDescription_Dev* description); + + // Returns true if the given resource is a Font. Returns false if the + // resource is invalid or some type other than a Font. + bool (*IsFont)(PP_Resource resource); + + // Loads the description and metrics of the font into the given structures. + // The description will be different than the description the font was + // created with since it will be filled with the real values from the font + // that was actually selected. + // + // The PP_Var in the description should be of type Void on input. On output, + // this will contain the string and will have a reference count of 1. The + // plugin is responsible for calling Release on this var. + // + // Returns true on success, false if the font is invalid or if the Var in + // the description isn't Null (to prevent leaks). + bool (*Describe)(PP_Resource font, + struct PP_FontDescription_Dev* description, + struct PP_FontMetrics_Dev* metrics); + + // Draws the text to the image buffer. + // + // The given point represents the baseline of the left edge of the font, + // regardless of whether it is left-to-right or right-to-left (in the case of + // RTL text, this will actually represent the logical end of the text). + // + // The clip is optional and may be NULL. In this case, the text will be + // clipped to the image. + // + // The image_data_is_opaque flag indicates whether subpixel antialiasing can + // be performend, if it is supported. When the image below the text is + // opaque, subpixel antialiasing is supported and you should set this to true + // to pick up the user's default preferences. If your plugin is partially + // transparent, then subpixel antialiasing is not possible and grayscale + // antialiasing will be used instead (assuming the user has antialiasing + // enabled at all). + bool (*DrawTextAt)(PP_Resource font, + PP_Resource image_data, + const struct PP_TextRun_Dev* text, + const struct PP_Point* position, + uint32_t color, + const struct PP_Rect* clip, + bool image_data_is_opaque); + + // Returns the width of the given string. If the font is invalid or the var + // isn't a valid string, this will return -1. + // + // Note that this function handles complex scripts such as Arabic, combining + // accents, etc. so that adding the width of substrings won't necessarily + // produce the correct width of the entire string. + int32_t (*MeasureText)(PP_Resource font, + const struct PP_TextRun_Dev* text); + + // Returns the character at the given pixel X position from the beginning of + // the string. This handles complex scripts such as Arabic, where characters + // may be combined or replaced depending on the context. + uint32_t (*CharacterOffsetForPixel)(PP_Resource font, + const struct PP_TextRun_Dev* text, + int32_t pixel_position); + + // Returns the horizontal advance to the given character if the string was + // placed at the given position. This handles complex scripts such as Arabic, + // where characters may be combined or replaced depending on context. + int32_t (*PixelOffsetForCharacter)(PP_Resource font, + const struct PP_TextRun_Dev* text, + uint32_t char_offset); +}; + +#endif // PPAPI_C_DEV_PPB_FONT_DEV_H_ |