1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftimage.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType glyph image formats and default raster interface */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* (specification). */ 7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 8a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin/* Copyright 1996-2017 by */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note: A `raster' is simply a scan-line converter, used to render */ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outlines into FT_Bitmaps. */ 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 27055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#ifndef FTIMAGE_H_ 28055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#define FTIMAGE_H_ 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 31055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin /* STANDALONE_ is from ftgrays.c */ 32055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#ifndef STANDALONE_ 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* basic_types */ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Pos */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 54295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* The type FT_Pos is used to store vectorial coordinates. Depending */ 55295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* on the context, these can represent distances in integer font */ 56727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* units, or 16.16, or 26.6 fixed-point pixel coordinates. */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef signed long FT_Pos; 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Vector */ 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A simple structure used to store a 2D vector; coordinates are of */ 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the FT_Pos type. */ 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x :: The horizontal coordinate. */ 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y :: The vertical coordinate. */ 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Vector_ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos x; 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos y; 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Vector; 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_BBox */ 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to hold an outline's bounding box, i.e., the */ 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* coordinates of its extrema in the horizontal and vertical */ 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* directions. */ 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* xMin :: The horizontal minimum (left-most). */ 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* yMin :: The vertical minimum (bottom-most). */ 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* xMax :: The horizontal maximum (right-most). */ 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* yMax :: The vertical maximum (top-most). */ 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 101295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* <Note> */ 102295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* The bounding box is specified with the coordinates of the lower */ 103295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* left and the upper right corner. In PostScript, those values are */ 104295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* often called (llx,lly) and (urx,ury), respectively. */ 105295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 106295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* If `yMin' is negative, this value gives the glyph's descender. */ 107295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Otherwise, the glyph doesn't descend below the baseline. */ 108295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Similarly, if `ymax' is positive, this value gives the glyph's */ 109295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* ascender. */ 110295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 111295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* `xMin' gives the horizontal distance from the glyph's origin to */ 112295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* the left edge of the glyph's bounding box. If `xMin' is negative, */ 113295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* the glyph extends to the left of the origin. */ 114295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_BBox_ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos xMin, yMin; 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos xMax, yMax; 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_BBox; 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Enum> */ 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Pixel_Mode */ 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An enumeration type used to describe the format of pixels in a */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* given bitmap. Note that additional formats may be added in the */ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* future. */ 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Values> */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_NONE :: */ 1350a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Value~0 is reserved. */ 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_MONO :: */ 1380a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are stored in most-significant order (MSB), which means that */ 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the left-most pixel in a byte has value 128. */ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_GRAY :: */ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* images. Each pixel is stored in one byte. Note that the number */ 1450a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* of `gray' levels is stored in the `num_grays' field of the */ 1460a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* @FT_Bitmap structure (it generally is 256). */ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_GRAY2 :: */ 1490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* A 2-bit per pixel bitmap, used to represent embedded */ 1500a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* anti-aliased bitmaps in font files according to the OpenType */ 1510a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* specification. We haven't found a single font using this */ 1520a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* format, however. */ 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_GRAY4 :: */ 1550a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bitmaps in font files according to the OpenType specification. */ 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* We haven't found a single font using this format, however. */ 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_LCD :: */ 1600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ 1610a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* used for display on LCD displays; the bitmap is three times */ 1620a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* wider than the original glyph image. See also */ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_RENDER_MODE_LCD. */ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_PIXEL_MODE_LCD_V :: */ 1660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ 1670a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* used for display on rotated LCD displays; the bitmap is three */ 1680a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* times taller than the original glyph image. See also */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_RENDER_MODE_LCD_V. */ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 171727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* FT_PIXEL_MODE_BGRA :: */ 172727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* An image with four 8-bit channels per pixel, representing a */ 173727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* color image (such as emoticons) with alpha channel. For each */ 174727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* pixel, the format is BGRA, which means, the blue channel comes */ 175727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* first in memory. The color channels are pre-multiplied and in */ 176727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* the sRGB colorspace. For example, full red at half-translucent */ 177727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* opacity will be represented as `00,00,80,80', not `00,00,FF,80'. */ 178727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* See also @FT_LOAD_COLOR. */ 179727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum FT_Pixel_Mode_ 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_NONE = 0, 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_MONO, 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_GRAY, 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_GRAY2, 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_GRAY4, 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_LCD, 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_LCD_V, 189727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_PIXEL_MODE_BGRA, 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PIXEL_MODE_MAX /* do not remove */ 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Pixel_Mode; 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 196fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* these constants are deprecated; use the corresponding `FT_Pixel_Mode' */ 197fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* values instead. */ 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_pixel_mode_none FT_PIXEL_MODE_NONE 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Bitmap */ 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to describe a bitmap or pixmap to the raster. */ 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note that we now manage pixmaps of various depths through the */ 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `pixel_mode' field. */ 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* rows :: The number of bitmap rows. */ 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The number of pixels in bitmap row. */ 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pitch :: The pitch's absolute value is the number of bytes */ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* taken by one bitmap row, including padding. */ 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* However, the pitch is positive when the bitmap has */ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a `down' flow, and negative when it has an `up' */ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* flow. In all cases, the pitch is an offset to add */ 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to a bitmap pointer in order to go down one row. */ 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 227aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* Note that `padding' means the alignment of a */ 228aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* bitmap to a byte border, and FreeType functions */ 229aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* normally align to the smallest possible integer */ 230aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* value. */ 231aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* */ 232295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* For the B/W rasterizer, `pitch' is always an even */ 233295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* number. */ 234295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 235aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* To change the pitch of a bitmap (say, to make it a */ 236aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* multiple of 4), use @FT_Bitmap_Convert. */ 237aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* Alternatively, you might use callback functions to */ 238aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* directly render to the application's surface; see */ 239aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* the file `example2.cpp' in the tutorial for a */ 240aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* demonstration. */ 241aeb407daf3711a10a27f3bc2223c5eb05158076eDavid 'Digit' Turner /* */ 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* buffer :: A typeless pointer to the bitmap buffer. This */ 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* value should be aligned on 32-bit boundaries in */ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* most cases. */ 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_grays :: This field is only used with */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* levels used in the bitmap. */ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* See @FT_Pixel_Mode for possible values. */ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* palette_mode :: This field is intended for paletted pixel modes; */ 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it indicates how the palette is stored. Not */ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used currently. */ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* palette :: A typeless pointer to the bitmap palette; this */ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* field is intended for paletted pixel modes. Not */ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used currently. */ 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Bitmap_ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 263fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki unsigned int rows; 264fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki unsigned int width; 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int pitch; 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char* buffer; 267fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki unsigned short num_grays; 268fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki unsigned char pixel_mode; 269fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki unsigned char palette_mode; 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* palette; 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Bitmap; 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* outline_processing */ 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outline */ 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure is used to describe an outline to the scan-line */ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* converter. */ 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* n_contours :: The number of contours in the outline. */ 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* n_points :: The number of points in the outline. */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* points :: A pointer to an array of `n_points' @FT_Vector */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* elements, giving the outline's point coordinates. */ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* tags :: A pointer to an array of `n_points' chars, giving */ 301295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* each outline point's type. */ 302295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 303295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* If bit~0 is unset, the point is `off' the curve, */ 304295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* i.e., a Bézier control point, while it is `on' if */ 305295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* set. */ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 3070a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Bit~1 is meaningful for `off' points only. If set, */ 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* it indicates a third-order Bézier arc control point; */ 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and a second-order control point if unset. */ 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 311295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* If bit~2 is set, bits 5-7 contain the drop-out mode */ 312295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* (as defined in the OpenType specification; the value */ 313295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* is the same as the argument to the SCANMODE */ 314295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* instruction). */ 315295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 316295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Bits 3 and~4 are reserved for internal purposes. */ 317295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contours :: An array of `n_contours' shorts, giving the end */ 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* point of each contour within the outline. For */ 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* example, the first contour is defined by the points */ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `0' to `contours[0]', the second one is defined by */ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the points `contours[0]+1' to `contours[1]', etc. */ 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* flags :: A set of bit flags used to characterize the outline */ 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and give hints to the scan-converter and hinter on */ 326fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* how to convert/grid-fit it. See @FT_OUTLINE_XXX. */ 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 328295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* <Note> */ 329295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ 330295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* first point of each contour. The drop-out mode as given with */ 331295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ 332295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ 333295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Outline_ 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project short n_contours; /* number of contours in glyph */ 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project short n_points; /* number of points in the glyph */ 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector* points; /* the outline's points */ 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project char* tags; /* the points flags */ 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project short* contours; /* the contour end points */ 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int flags; /* outline masks */ 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Outline; 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 347fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 348fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki 349295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Following limits must be consistent with */ 350295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* FT_Outline.{n_contours,n_points} */ 351295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX 352295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_OUTLINE_POINTS_MAX SHRT_MAX 353295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Enum> */ 358fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_OUTLINE_XXX */ 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A list of bit-field constants use for the flags in an outline's */ 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `flags' field. */ 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Values> */ 3650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_NONE :: */ 3660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Value~0 is reserved. */ 3670a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 3680a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_OWNER :: */ 3690a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* If set, this flag indicates that the outline's field arrays */ 3700a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* (i.e., `points', `flags', and `contours') are `owned' by the */ 3710a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* outline object, and should thus be freed when it is destroyed. */ 3720a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 3730a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_EVEN_ODD_FILL :: */ 3740a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* By default, outlines are filled using the non-zero winding rule. */ 3750a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* If set to 1, the outline will be filled using the even-odd fill */ 376295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* rule (only works with the smooth rasterizer). */ 3770a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 3780a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_REVERSE_FILL :: */ 3790a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* By default, outside contours of an outline are oriented in */ 3800a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* clock-wise direction, as defined in the TrueType specification. */ 3810a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* This flag is set if the outline uses the opposite direction */ 3820a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* (typically for Type~1 fonts). This flag is ignored by the scan */ 3830a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* converter. */ 3840a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 3850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_IGNORE_DROPOUTS :: */ 3860a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* By default, the scan converter will try to detect drop-outs in */ 3870a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* an outline and correct the glyph bitmap to ensure consistent */ 3880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* shape continuity. If set, this flag hints the scan-line */ 389295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* converter to ignore such cases. See below for more information. */ 3900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 3910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_SMART_DROPOUTS :: */ 3920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Select smart dropout control. If unset, use simple dropout */ 393295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ 394295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* below for more information. */ 3950a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 3960a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_INCLUDE_STUBS :: */ 3970a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* If set, turn pixels on for `stubs', otherwise exclude them. */ 398295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ 399295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* more information. */ 4000a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 4010a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_HIGH_PRECISION :: */ 4020a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* This flag indicates that the scan-line converter should try to */ 4030a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* convert this outline to bitmaps with the highest possible */ 4040a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* quality. It is typically set for small character sizes. Note */ 4050a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* that this is only a hint that might be completely ignored by a */ 4060a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* given scan-converter. */ 4070a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 4080a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FT_OUTLINE_SINGLE_PASS :: */ 4090a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* This flag is set to force a given scan-converter to only use a */ 4100a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* single pass over the outline to render a bitmap glyph image. */ 4110a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Normally, it is set for very large character sizes. It is only */ 4120a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* a hint that might be completely ignored by a given */ 4130a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* scan-converter. */ 4140a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 4150a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* <Note> */ 416295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ 417295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ 418295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* rasterizer. */ 419295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 420295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* There exists a second mechanism to pass the drop-out mode to the */ 421295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* B/W rasterizer; see the `tags' field in @FT_Outline. */ 422295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 4230a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Please refer to the description of the `SCANTYPE' instruction in */ 4240a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* the OpenType specification (in file `ttinst1.doc') how simple */ 4250a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* drop-outs, smart drop-outs, and stubs are defined. */ 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_NONE 0x0 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_OWNER 0x1 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_EVEN_ODD_FILL 0x2 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_REVERSE_FILL 0x4 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 4320a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_OUTLINE_SMART_DROPOUTS 0x10 4330a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project#define FT_OUTLINE_INCLUDE_STUBS 0x20 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_HIGH_PRECISION 0x100 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_OUTLINE_SINGLE_PASS 0x200 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 439fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* these constants are deprecated; use the corresponding */ 440fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* `FT_OUTLINE_XXX' values instead */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_none FT_OUTLINE_NONE 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_owner FT_OUTLINE_OWNER 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_CURVE_TAG( flag ) ( flag & 3 ) 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 453295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_ON 1 454295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_CONIC 0 455295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_CUBIC 2 456295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 457295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_HAS_SCANMODE 4 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 459295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ 460295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 462295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ 463295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_CURVE_TAG_TOUCH_Y ) 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Curve_Tag_On FT_CURVE_TAG_ON 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outline_MoveToFunc */ 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function pointer type used to describe the signature of a `move */ 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to' function during outline walking/decomposition. */ 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A `move to' is emitted to start a new contour in an outline. */ 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to :: A pointer to the target point of the `move to'. */ 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 486ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* user :: A typeless pointer, which is passed from the caller of the */ 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* decomposition function. */ 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 4900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Error code. 0~means success. */ 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Outline_MoveToFunc)( const FT_Vector* to, 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outline_LineToFunc */ 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function pointer type used to describe the signature of a `line */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to' function during outline walking/decomposition. */ 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A `line to' is emitted to indicate a segment in the outline. */ 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to :: A pointer to the target point of the `line to'. */ 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 513ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* user :: A typeless pointer, which is passed from the caller of the */ 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* decomposition function. */ 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 5170a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Error code. 0~means success. */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Outline_LineToFunc)( const FT_Vector* to, 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Outline_LineTo_Func FT_Outline_LineToFunc 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outline_ConicToFunc */ 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 532295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* A function pointer type used to describe the signature of a `conic */ 533295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* to' function during outline walking or decomposition. */ 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A `conic to' is emitted to indicate a second-order Bézier arc in */ 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the outline. */ 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* control :: An intermediate control point between the last position */ 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and the new target in `to'. */ 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to :: A pointer to the target end point of the conic arc. */ 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 544ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* user :: A typeless pointer, which is passed from the caller of */ 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the decomposition function. */ 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 5480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Error code. 0~means success. */ 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Outline_ConicToFunc)( const FT_Vector* control, 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Vector* to, 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outline_CubicToFunc */ 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function pointer type used to describe the signature of a `cubic */ 565295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* to' function during outline walking or decomposition. */ 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* control1 :: A pointer to the first Bézier control point. */ 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* control2 :: A pointer to the second Bézier control point. */ 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to :: A pointer to the target end point. */ 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 576ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* user :: A typeless pointer, which is passed from the caller of */ 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the decomposition function. */ 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 5800a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Error code. 0~means success. */ 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Outline_CubicToFunc)( const FT_Vector* control1, 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Vector* control2, 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Vector* to, 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Outline_Funcs */ 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure to hold various function pointers used during outline */ 598295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* decomposition in order to emit segments, conic, and cubic Béziers. */ 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* move_to :: The `move to' emitter. */ 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* line_to :: The segment emitter. */ 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* conic_to :: The second-order Bézier arc emitter. */ 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cubic_to :: The third-order Bézier arc emitter. */ 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* shift :: The shift that is applied to coordinates before they */ 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are sent to the emitter. */ 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* delta :: The delta that is applied to coordinates before they */ 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are sent to the emitter, but after the shift. */ 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The point coordinates sent to the emitters are the transformed */ 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* version of the original coordinates (this is important for high */ 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* accuracy during scan-conversion). The transformation is simple: */ 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* { */ 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x' = (x << shift) - delta */ 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* y' = (x << shift) - delta */ 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* } */ 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 625295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Set the values of `shift' and `delta' to~0 to get the original */ 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* point coordinates. */ 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Outline_Funcs_ 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline_MoveToFunc move_to; 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline_LineToFunc line_to; 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline_ConicToFunc conic_to; 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline_CubicToFunc cubic_to; 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int shift; 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos delta; 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Outline_Funcs; 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* basic_types */ 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Macro> */ 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_IMAGE_TAG */ 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This macro converts four-letter tags to an unsigned long type. */ 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 6580a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Since many 16-bit compilers don't like 32-bit enumerations, you */ 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* should redefine this macro in case of problems to something like */ 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* this: */ 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* { */ 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* } */ 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to get a simple enumeration without assigning special numbers. */ 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef FT_IMAGE_TAG 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project value = ( ( (unsigned long)_x1 << 24 ) | \ 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (unsigned long)_x2 << 16 ) | \ 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (unsigned long)_x3 << 8 ) | \ 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (unsigned long)_x4 ) 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* FT_IMAGE_TAG */ 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Enum> */ 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Glyph_Format */ 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An enumeration type used to describe the format of a given glyph */ 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* image. Note that this version of FreeType only supports two image */ 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* formats, even though future font drivers will be able to register */ 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* their own format. */ 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Values> */ 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_GLYPH_FORMAT_NONE :: */ 6900a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* The value~0 is reserved. */ 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_GLYPH_FORMAT_COMPOSITE :: */ 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The glyph image is a composite of several other images. This */ 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* report compound glyphs (like accented characters). */ 696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_GLYPH_FORMAT_BITMAP :: */ 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The glyph image is a bitmap, and can be described as an */ 699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Bitmap. You generally need to access the `bitmap' field of */ 700049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the @FT_GlyphSlotRec structure to read it. */ 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_GLYPH_FORMAT_OUTLINE :: */ 703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The glyph image is a vectorial outline made of line segments */ 704049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* and Bézier arcs; it can be described as an @FT_Outline; you */ 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* generally want to access the `outline' field of the */ 706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_GlyphSlotRec structure to read it. */ 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_GLYPH_FORMAT_PLOTTER :: */ 709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The glyph image is a vectorial path with no inside and outside */ 7100a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* contours. Some Type~1 fonts, like those in the Hershey family, */ 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* contain glyphs in this format. These are described as */ 712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Outline, but FreeType isn't currently capable of rendering */ 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* them correctly. */ 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 715049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum FT_Glyph_Format_ 716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Glyph_Format; 725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 726049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 727fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* these constants are deprecated; use the corresponding */ 728fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* `FT_Glyph_Format' values instead. */ 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER 734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 739049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** R A S T E R D E F I N I T I O N S *****/ 741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A raster is a scan converter, in charge of rendering an outline into */ 750055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin /* a bitmap. This section contains the public API for rasters. */ 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note that in FreeType 2, all rasters are now encapsulated within */ 753ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* specific modules called `renderers'. See `ftrender.h' for more */ 754ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* details on renderers. */ 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 757049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 762049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster */ 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Title> */ 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Scanline Converter */ 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Abstract> */ 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* How vectorial outlines are converted into bitmaps and pixmaps. */ 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This section contains technical definitions. */ 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 773fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* <Order> */ 774fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster */ 775fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Span */ 776fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_SpanFunc */ 777fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 778fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_Params */ 779fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_RASTER_FLAG_XXX */ 780fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 781fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_NewFunc */ 782fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_DoneFunc */ 783fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_ResetFunc */ 784fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_SetModeFunc */ 785fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_RenderFunc */ 786fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FT_Raster_Funcs */ 787fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* */ 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster */ 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 797fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* An opaque handle (pointer) to a raster object. Each object can be */ 798fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* used independently to convert an outline into a bitmap or pixmap. */ 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_RasterRec_* FT_Raster; 801049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 802049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Span */ 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 809fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* A structure used to model a single span of gray pixels when */ 810fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* rendering an anti-aliased bitmap. */ 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 812049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 813049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* x :: The span's horizontal start position. */ 814049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* len :: The span's length in pixels. */ 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 817049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* coverage :: The span color/coverage, ranging from 0 (background) */ 818fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* to 255 (foreground). */ 819049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 820049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 821049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This structure is used by the span drawing callback type named */ 822ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* @FT_SpanFunc that takes the y~coordinate of the span as a */ 823ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* parameter. */ 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 8250a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* The coverage value is always between 0 and 255. If you want less */ 8260a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* gray values, the callback function has to reduce them. */ 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 828049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Span_ 829049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 830049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project short x; 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned short len; 832049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char coverage; 833049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Span; 835049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 836049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 837049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 838049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 839049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_SpanFunc */ 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 843049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function used as a call-back by the anti-aliased renderer in */ 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* order to let client applications draw themselves the gray pixel */ 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* spans on each scan line. */ 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 847049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 8480a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* y :: The scanline's y~coordinate. */ 849049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 850049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* count :: The number of spans to draw on this scanline. */ 851049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 852049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* spans :: A table of `count' spans to draw on the scanline. */ 853049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 854049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* user :: User-supplied data that is passed to the callback. */ 855049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 856049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 857049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This callback allows client applications to directly render the */ 858049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ 859049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 860049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This can be used to write anti-aliased outlines directly to a */ 861049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* given background bitmap, and even perform translucency. */ 862049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 863049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 864049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_SpanFunc)( int y, 865049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int count, 866049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Span* spans, 867049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 868049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 869049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Raster_Span_Func FT_SpanFunc 870049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 871049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 872049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 873049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 874049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 875049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_BitTest_Func */ 876049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 877049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 878fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* Deprecated, unimplemented. */ 879049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 880049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 881049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_BitTest_Func)( int y, 882049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int x, 883049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 884049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 885049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 886049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 887049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 888049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 889049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_BitSet_Func */ 890049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 891049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 892fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* Deprecated, unimplemented. */ 893049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 894049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 895049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_BitSet_Func)( int y, 896049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int x, 897049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user ); 898049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 899049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 900049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 901049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 902049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Enum> */ 903049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_RASTER_FLAG_XXX */ 904049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 905049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 906049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A list of bit flag constants as used in the `flags' field of a */ 907049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Raster_Params structure. */ 908049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 909049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Values> */ 910049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ 911049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 912049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ 913049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* anti-aliased glyph image should be */ 914049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* generated. Otherwise, it will be */ 915049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* monochrome (1-bit). */ 916049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 917049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ 918049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* rendering. In this mode, client */ 919049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* applications must provide their own span */ 920049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* callback. This lets them directly */ 921049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* draw or compose over an existing bitmap. */ 922049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If this bit is not set, the target */ 923049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pixmap's buffer _must_ be zeroed before */ 924049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* rendering. */ 925049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 926fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* Direct rendering is only possible with */ 927fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* anti-aliased glyphs. */ 928049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 929049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ 930049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* rendering mode. If set, the output will */ 931049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* be clipped to a box specified in the */ 932049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `clip_box' field of the */ 933049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Raster_Params structure. */ 934049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 935049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note that by default, the glyph bitmap */ 936049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is clipped to the target pixmap, except */ 937049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in direct rendering mode where all spans */ 938049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* are generated if no clipping box is set. */ 939049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 940049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_RASTER_FLAG_DEFAULT 0x0 941049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_RASTER_FLAG_AA 0x1 942049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_RASTER_FLAG_DIRECT 0x2 943049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_RASTER_FLAG_CLIP 0x4 944049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 945fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* these constants are deprecated; use the corresponding */ 946fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* `FT_RASTER_FLAG_XXX' values instead */ 947049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT 948049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_raster_flag_aa FT_RASTER_FLAG_AA 949049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT 950049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP 951049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 952049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 953049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 954049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 955049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 956049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_Params */ 957049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 958049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 959049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure to hold the arguments used by a raster's render */ 960049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* function. */ 961049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 962049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 963049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* target :: The target bitmap. */ 964049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 965049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* source :: A pointer to the source glyph image (e.g., an */ 966049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Outline). */ 967049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 968049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* flags :: The rendering flags. */ 969049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 970049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gray_spans :: The gray span drawing callback. */ 971049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 972fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* black_spans :: Unused. */ 973049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 974fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* bit_test :: Unused. */ 975049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 976fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* bit_set :: Unused. */ 977049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 978049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* user :: User-supplied data that is passed to each drawing */ 979049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* callback. */ 980049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 981049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* clip_box :: An optional clipping box. It is only used in */ 982049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* direct rendering mode. Note that coordinates here */ 983049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* should be expressed in _integer_ pixels (and not in */ 984049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 26.6 fixed-point units). */ 985049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 986049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 987049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ 988049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bit flag is set in the `flags' field, otherwise a monochrome */ 989049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bitmap is generated. */ 990049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 991049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ 992049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster will call the `gray_spans' callback to draw gray pixel */ 993fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* spans. This allows direct composition over a pre-existing bitmap */ 994fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* through user-provided callbacks to perform the span drawing and */ 995fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* composition. Not supported by the monochrome rasterizer. */ 996049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 997049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Raster_Params_ 998049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 999049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Bitmap* target; 1000049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const void* source; 1001049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project int flags; 1002049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_SpanFunc gray_spans; 1003fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_SpanFunc black_spans; /* unused */ 1004fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_Raster_BitTest_Func bit_test; /* unused */ 1005fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki FT_Raster_BitSet_Func bit_set; /* unused */ 1006049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user; 1007049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_BBox clip_box; 1008049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1009049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Raster_Params; 1010049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1011049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1012049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1013049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1014049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1015049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_NewFunc */ 1016049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1017049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1018049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function used to create a new raster object. */ 1019049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1020049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1021049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: A handle to the memory allocator. */ 1022049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1023049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 1024049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster :: A handle to the new raster object. */ 1025049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1026049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 10270a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Error code. 0~means success. */ 1028049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1029049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 1030049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The `memory' parameter is a typeless pointer in order to avoid */ 1031049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* un-wanted dependencies on the rest of the FreeType code. In */ 1032049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* practice, it is an @FT_Memory object, i.e., a handle to the */ 1033049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* standard FreeType memory allocator. However, this field can be */ 1034049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* completely ignored by a given raster implementation. */ 1035049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1036049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 1037049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_NewFunc)( void* memory, 1038049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Raster* raster ); 1039049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1040049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Raster_New_Func FT_Raster_NewFunc 1041049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1042049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1043049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1044049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1045049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1046049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_DoneFunc */ 1047049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1048049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1049049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function used to destroy a given raster object. */ 1050049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1051049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1052049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster :: A handle to the raster object. */ 1053049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1054049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 1055049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_DoneFunc)( FT_Raster raster ); 1056049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1057049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Raster_Done_Func FT_Raster_DoneFunc 1058049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1059049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1060049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1061049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1062049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1063049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_ResetFunc */ 1064049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1065049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1066fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* FreeType used to provide an area of memory called the `render */ 1067fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* pool' available to all registered rasters. This was not thread */ 1068fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* safe however and now FreeType never allocates this pool. NULL */ 1069fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* is always passed in as pool_base. */ 1070049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1071049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is called each time the render pool changes, or just */ 1072049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* after a new raster object is created. */ 1073049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1074049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1075049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster :: A handle to the new raster object. */ 1076049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1077049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pool_base :: The address in memory of the render pool. */ 1078049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1079049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pool_size :: The size in bytes of the render pool. */ 1080049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1081049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 1082fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* Rasters should ignore the render pool and rely on dynamic or stack */ 1083049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* allocation if they want to (a handle to the memory allocator is */ 1084fb6b5b10aaa74b8c8974714b41bac35bdd1c772dMakoto Onuki /* passed to the raster constructor). */ 1085049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1086049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 1087049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_ResetFunc)( FT_Raster raster, 1088049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char* pool_base, 1089049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned long pool_size ); 1090049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1091049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Raster_Reset_Func FT_Raster_ResetFunc 1092049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1093049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1094049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1095049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1096049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1097049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_SetModeFunc */ 1098049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1099049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is a generic facility to change modes or attributes */ 1101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in a given raster. This can be used for debugging purposes, or */ 1102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* simply to allow implementation-specific `features' in a given */ 1103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster module. */ 1104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster :: A handle to the new raster object. */ 1107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* mode :: A 4-byte tag used to name the mode or property. */ 1109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* args :: A pointer to the new mode/property to use. */ 1111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 1113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_SetModeFunc)( FT_Raster raster, 1114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned long mode, 1115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* args ); 1116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc 1118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 1123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_RenderFunc */ 1124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 11260a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Invoke a given raster to scan-convert a given glyph image into a */ 11270a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* target bitmap. */ 1128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster :: A handle to the raster object. */ 1131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* params :: A pointer to an @FT_Raster_Params structure used to */ 1133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* store the rendering parameters. */ 1134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 11360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Error code. 0~means success. */ 1137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 1139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The exact format of the source image depends on the raster's glyph */ 1140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format defined in its @FT_Raster_Funcs structure. It can be an */ 1141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Outline or anything else in order to support a large array of */ 1142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph formats. */ 1143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Note also that the render function can fail and return a */ 1145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ 1146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* not support direct composition. */ 1147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* XXX: For now, the standard raster doesn't support direct */ 1149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composition but this should change for the final release (see */ 1150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ 1151ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease /* for examples of distinct implementations that support direct */ 1152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* composition). */ 1153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef int 1155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Raster_RenderFunc)( FT_Raster raster, 1156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Raster_Params* params ); 1157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_Raster_Render_Func FT_Raster_RenderFunc 1159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 1162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 1164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Raster_Funcs */ 1165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to describe a given raster class to the library. */ 1168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 1170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph_format :: The supported glyph format for this raster. */ 1171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster_new :: The raster constructor. */ 1173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster_reset :: Used to reset the render pool within the raster. */ 1175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster_render :: A function to render a glyph into a given bitmap. */ 1177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* raster_done :: The raster destructor. */ 1179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Raster_Funcs_ 1181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 1182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Glyph_Format glyph_format; 1183a2527749993cb7f25560e4b1266787f1874435d4Jungshik Shin 1184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Raster_NewFunc raster_new; 1185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Raster_ResetFunc raster_reset; 1186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Raster_SetModeFunc raster_set_mode; 1187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Raster_RenderFunc raster_render; 1188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Raster_DoneFunc raster_done; 1189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Raster_Funcs; 1191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 1196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1197055aee28cedc3631434b2636fc6093c0d4d818abJungshik Shin#endif /* FTIMAGE_H_ */ 1198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 1201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Local Variables: */ 1204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* coding: utf-8 */ 1205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* End: */ 1206