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