1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  ftsizes.h                                                              */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    FreeType size objects management (specification).                    */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Copyright 1996-2001, 2003, 2004, 2006, 2009 by                         */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Typical application would normally not need to use these functions.   */
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* However, they have been placed in a public API for the rare cases     */
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* where they are needed.                                                */
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTSIZES_H__
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTSIZES_H__
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../ft2build.h"
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "freetype.h"
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FREETYPE_H
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "freetype.h of FreeType 1 has been loaded!"
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Please fix the directory search order for header files"
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "so that freetype.h of FreeType 2 is found first."
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Section>                                                             */
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    sizes_management                                                   */
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Title>                                                               */
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Size Management                                                    */
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Abstract>                                                            */
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Managing multiple sizes per face.                                  */
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    When creating a new face object (e.g., with @FT_New_Face), an      */
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Size object is automatically created and used to store all     */
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    pixel-size dependent information, available in the `face->size'    */
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    field.                                                             */
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    It is however possible to create more sizes for a given face,      */
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    mostly in order to manage several character pixel sizes of the     */
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    same font family and style.  See @FT_New_Size and @FT_Done_Size.   */
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only           */
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    modify the contents of the current `active' size; you thus need    */
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    to use @FT_Activate_Size to change it.                             */
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    99% of applications won't need the functions provided here,        */
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    especially if they use the caching sub-system, so be cautious      */
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    when using these.                                                  */
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_New_Size                                                        */
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Create a new size object from a given face object.                 */
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face :: A handle to a parent face object.                          */
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    asize :: A handle to a new size object.                            */
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    You need to call @FT_Activate_Size in order to select the new size */
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size,      */
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Load_Glyph, @FT_Load_Char, etc.                                */
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_New_Size( FT_Face   face,
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov               FT_Size*  size );
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Done_Size                                                       */
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Discard a given size object.  Note that @FT_Done_Face              */
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    automatically discards all size objects allocated with             */
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_New_Size.                                                      */
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    size :: A handle to a target size object.                          */
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Done_Size( FT_Size  size );
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Function>                                                            */
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FT_Activate_Size                                                   */
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Even though it is possible to create several size objects for a    */
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    given face (see @FT_New_Size for details), functions like          */
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    @FT_Load_Glyph or @FT_Load_Char only use the one which has been    */
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    activated last to determine the `current character pixel size'.    */
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This function can be used to `activate' a previously created size  */
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    object.                                                            */
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    size :: A handle to a target size object.                          */
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0~means success.                             */
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    If `face' is the size's parent face object, this function changes  */
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the value of `face->size' to the input size handle.                */
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Activate_Size( FT_Size  size );
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTSIZES_H__ */
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
160