本文整理汇总了C++中FT_Done_Size函数的典型用法代码示例。如果您正苦于以下问题:C++ FT_Done_Size函数的具体用法?C++ FT_Done_Size怎么用?C++ FT_Done_Size使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了FT_Done_Size函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ftc_size_node_flush
ftc_size_node_flush( FTC_SizeNode node,
FTC_SizeQuery query )
{
FT_Size size = node->size;
FT_Error error;
if ( size->face == query->face )
{
FT_Activate_Size( size );
error = FT_Set_Pixel_Sizes( query->face, query->width, query->height );
if ( error )
{
FT_Done_Size( size );
node->size = NULL;
}
}
else
{
FT_Done_Size( size );
node->size = NULL;
error = ftc_size_node_init( node, query );
}
return error;
}
开发者ID:8l,项目名称:inferno,代码行数:26,代码来源:ftcmanag.c
示例2: ftc_face_node_init
ftc_face_node_init( FTC_MruNode ftcnode,
FT_Pointer ftcface_id,
FT_Pointer ftcmanager )
{
FTC_FaceNode node = (FTC_FaceNode)ftcnode;
FTC_FaceID face_id = (FTC_FaceID)ftcface_id;
FTC_Manager manager = (FTC_Manager)ftcmanager;
FT_Error error;
node->face_id = face_id;
error = manager->request_face( face_id,
manager->library,
manager->request_data,
&node->face );
if ( !error )
{
/* destroy initial size object; it will be re-created later */
if ( node->face->size )
FT_Done_Size( node->face->size );
}
return error;
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:25,代码来源:ftcmanag.c
示例3: ftc_scaler_lookup_size
static FT_Error
ftc_scaler_lookup_size( FTC_Manager manager,
FTC_Scaler scaler,
FT_Size *asize )
{
FT_Face face;
FT_Size size = NULL;
FT_Error error;
error = FTC_Manager_LookupFace( manager, scaler->face_id, &face );
if ( error )
goto Exit;
error = FT_New_Size( face, &size );
if ( error )
goto Exit;
FT_Activate_Size( size );
if ( scaler->pixel )
error = FT_Set_Pixel_Sizes( face, scaler->width, scaler->height );
else
error = FT_Set_Char_Size( face, scaler->width, scaler->height,
scaler->x_res, scaler->y_res );
if ( error )
{
FT_Done_Size( size );
size = NULL;
}
Exit:
*asize = size;
return error;
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:35,代码来源:ftcmanag.c
示例4: ftc_size_node_done
ftc_size_node_done( FTC_SizeNode node )
{
if ( node->size )
{
FT_Done_Size( node->size );
node->size = NULL;
}
}
开发者ID:8l,项目名称:inferno,代码行数:8,代码来源:ftcmanag.c
示例5: FT_Done_Size
Font::~Font() {
if(m_size) {
FT_Done_Size(m_size);
}
delete m_textures;
}
开发者ID:nikos-maximus,项目名称:ArxLibertatis,代码行数:9,代码来源:Font.cpp
示例6: ftc_size_node_done
ftc_size_node_done( FTC_MruNode ftcnode,
FT_Pointer data )
{
FTC_SizeNode node = (FTC_SizeNode)ftcnode;
FT_Size size = node->size;
FT_UNUSED( data );
if ( size )
FT_Done_Size( size );
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:11,代码来源:ftcmanag.c
示例7: FT_Done_Size
/*
* Class: sage_FreetypeFont
* Method: closeFontFace0
* Signature: (J)Z
*/
JNIEXPORT jboolean JNICALL Java_sage_FreetypeFont_closeFontFace0
(JNIEnv *env, jobject jo, jlong fontPtr)
{
FTDataStruct* fontData = (FTDataStruct*)(intptr_t) fontPtr;
// NOTE: WE CAN ONLY CLOSE THE SIZE SINCE OTHERS MIGHT STILL BE USING THE FACE!!!!
// THIS LEAKS MEMORY IF YOU THINK IT'LL CLOSE THE FONT FACE!!!!!
// THIS LEAKS MEMORY IF YOU THINK IT'LL CLOSE THE FONT FACE!!!!!
//FT_Face face = (FT_Face) facePtr;
jboolean rv = FT_Done_Size(fontData->sizePtr) == 0;//FT_Done_Face(face) == 0;
free(fontData);
return rv;
}
开发者ID:BOTCrusher,项目名称:sagetv,代码行数:17,代码来源:sage_FreetypeFont.c
示例8: glDeleteTextures
xd::font::~font()
{
// free all textures
for (auto i = m_glyph_map.begin(); i != m_glyph_map.end(); ++i) {
glDeleteTextures(1, &i->second->texture_id);
}
// free font sizes
for (auto i = m_face->sizes.begin(); i != m_face->sizes.end(); ++i) {
FT_Done_Size(i->second);
}
// free the font handle
FT_Done_Face(m_face->handle);
}
开发者ID:Greyze,项目名称:xd,代码行数:13,代码来源:font.cpp
示例9: T42_Size_Done
T42_Size_Done( T42_Size size )
{
FT_Face face = size->root.face;
T42_Face t42face = (T42_Face)face;
FT_ListNode node;
node = FT_List_Find( &t42face->ttf_face->sizes_list, size->ttsize );
if ( node )
{
FT_Done_Size( size->ttsize );
size->ttsize = NULL;
}
}
开发者ID:0uyangsheng,项目名称:xbmc,代码行数:14,代码来源:t42objs.c
示例10: FT_Done_Size
SkScalerContext_FreeType::~SkScalerContext_FreeType() {
if (fFTSize != NULL) {
FT_Done_Size(fFTSize);
}
SkAutoMutexAcquire ac(gFTMutex);
if (fFace != NULL) {
unref_ft_face(fFace);
}
if (--gFTCount == 0) {
// SkDEBUGF(("FT_Done_FreeType\n"));
FT_Done_FreeType(gFTLibrary);
SkDEBUGCODE(gFTLibrary = NULL;)
}
开发者ID:avary,项目名称:skia,代码行数:15,代码来源:SkFontHost_FreeType.cpp
示例11: ftc_size_node_reset
ftc_size_node_reset( FTC_MruNode ftcnode,
FT_Pointer ftcscaler,
FT_Pointer ftcmanager )
{
FTC_SizeNode node = (FTC_SizeNode)ftcnode;
FTC_Scaler scaler = (FTC_Scaler)ftcscaler;
FTC_Manager manager = (FTC_Manager)ftcmanager;
FT_Done_Size( node->size );
node->scaler = scaler[0];
return ftc_scaler_lookup_size( manager, scaler, &node->size );
}
开发者ID:AbdelghaniDr,项目名称:mirror,代码行数:15,代码来源:ftcmanag.c
示例12: T42_Size_Done
T42_Size_Done( FT_Size t42size ) /* T42_Size */
{
T42_Size size = (T42_Size)t42size;
FT_Face face = t42size->face;
T42_Face t42face = (T42_Face)face;
FT_ListNode node;
node = FT_List_Find( &t42face->ttf_face->sizes_list, size->ttsize );
if ( node )
{
FT_Done_Size( size->ttsize );
size->ttsize = NULL;
}
}
开发者ID:03050903,项目名称:libgdx,代码行数:15,代码来源:t42objs.hpp
示例13: ftc_size_node_init
ftc_size_node_init( FTC_SizeNode node,
FTC_SizeQuery query )
{
FT_Face face = query->face;
FT_Size size;
FT_Error error;
node->size = NULL;
error = FT_New_Size( face, &size );
if ( !error )
{
FT_Activate_Size( size );
error = FT_Set_Pixel_Sizes( query->face,
query->width,
query->height );
if ( error )
FT_Done_Size( size );
else
node->size = size;
}
return error;
}
开发者ID:8l,项目名称:inferno,代码行数:23,代码来源:ftcmanag.c
示例14: T42_Face_Init
//.........这里部分代码省略.........
family++;
full++;
}
root->style_name = ( *full == ' ' ? full + 1
: (char *)"Regular" );
}
else
root->style_name = (char *)"Regular";
}
else
{
/* do we have a `/FontName'? */
if ( face->type1.font_name )
{
root->family_name = face->type1.font_name;
root->style_name = (char *)"Regular";
}
}
/* no embedded bitmap support */
root->num_fixed_sizes = 0;
root->available_sizes = 0;
/* Load the TTF font embedded in the T42 font */
error = FT_New_Memory_Face( FT_FACE_LIBRARY( face ),
face->ttf_data,
face->ttf_size,
0,
&face->ttf_face );
if ( error )
goto Exit;
FT_Done_Size( face->ttf_face->size );
/* Ignore info in FontInfo dictionary and use the info from the */
/* loaded TTF font. The PostScript interpreter also ignores it. */
root->bbox = face->ttf_face->bbox;
root->units_per_EM = face->ttf_face->units_per_EM;
root->ascender = face->ttf_face->ascender;
root->descender = face->ttf_face->descender;
root->height = face->ttf_face->height;
root->max_advance_width = face->ttf_face->max_advance_width;
root->max_advance_height = face->ttf_face->max_advance_height;
root->underline_position = face->type1.font_info.underline_position;
root->underline_thickness = face->type1.font_info.underline_thickness;
root->internal->max_points = 0;
root->internal->max_contours = 0;
/* compute style flags */
root->style_flags = 0;
if ( face->type1.font_info.italic_angle )
root->style_flags |= FT_STYLE_FLAG_ITALIC;
if ( face->ttf_face->style_flags & FT_STYLE_FLAG_BOLD )
root->style_flags |= FT_STYLE_FLAG_BOLD;
if ( face->ttf_face->face_flags & FT_FACE_FLAG_VERTICAL )
root->face_flags |= FT_FACE_FLAG_VERTICAL;
#ifdef FT_CONFIG_OPTION_USE_CMAPS
开发者ID:dikerex,项目名称:theqvd,代码行数:66,代码来源:t42objs.c
示例15: T42_Face_Init
//.........这里部分代码省略.........
{
/* do we have a `/FontName'? */
if ( type1->font_name )
root->family_name = type1->font_name;
}
/* no embedded bitmap support */
root->num_fixed_sizes = 0;
root->available_sizes = 0;
/* Load the TTF font embedded in the T42 font */
{
FT_Open_Args args;
args.flags = FT_OPEN_MEMORY;
args.memory_base = face->ttf_data;
args.memory_size = face->ttf_size;
if ( num_params )
{
args.flags |= FT_OPEN_PARAMS;
args.num_params = num_params;
args.params = params;
}
error = FT_Open_Face( FT_FACE_LIBRARY( face ),
&args, 0, &face->ttf_face );
}
if ( error )
goto Exit;
FT_Done_Size( face->ttf_face->size );
/* Ignore info in FontInfo dictionary and use the info from the */
/* loaded TTF font. The PostScript interpreter also ignores it. */
root->bbox = face->ttf_face->bbox;
root->units_per_EM = face->ttf_face->units_per_EM;
root->ascender = face->ttf_face->ascender;
root->descender = face->ttf_face->descender;
root->height = face->ttf_face->height;
root->max_advance_width = face->ttf_face->max_advance_width;
root->max_advance_height = face->ttf_face->max_advance_height;
root->underline_position = (FT_Short)info->underline_position;
root->underline_thickness = (FT_Short)info->underline_thickness;
/* compute style flags */
root->style_flags = 0;
if ( info->italic_angle )
root->style_flags |= FT_STYLE_FLAG_ITALIC;
if ( face->ttf_face->style_flags & FT_STYLE_FLAG_BOLD )
root->style_flags |= FT_STYLE_FLAG_BOLD;
if ( face->ttf_face->face_flags & FT_FACE_FLAG_VERTICAL )
root->face_flags |= FT_FACE_FLAG_VERTICAL;
{
if ( psnames && psaux )
{
FT_CharMapRec charmap;
T1_CMap_Classes cmap_classes = psaux->t1_cmap_classes;
开发者ID:0uyangsheng,项目名称:xbmc,代码行数:67,代码来源:t42objs.c
示例16: invalid_font_type
void xd::font::render(const std::string& text, const font_style& style,
xd::shader_program::handle shader, const glm::mat4& mvp, glm::vec2 *pos)
{
// check if we're rendering using this font or a linked font
if (style.m_type && style.m_type->length() != 0) {
font_map_t::iterator i = m_linked_fonts.find(*style.m_type);
if (i == m_linked_fonts.end())
throw invalid_font_type(*style.m_type);
font_style linked_style = style;
linked_style.m_type = boost::none;
i->second->render(text, linked_style, shader, mvp, pos);
return;
}
// check if the font size is already loaded
auto it = m_face->sizes.find(style.m_size);
if (it == m_face->sizes.end()) {
// create a new size
FT_Size size;
if (FT_New_Size(m_face->handle, &size) != 0)
throw font_load_failed(m_filename);
// free the size in catch block if something goes wrong
try {
if (FT_Activate_Size(size) != 0)
throw font_load_failed(m_filename);
// set the pixel size
if (FT_Set_Pixel_Sizes(m_face->handle, 0, style.m_size) != 0)
throw font_load_failed(m_filename);
// pre-load 7-bit ASCII glyphs
for (int i = 0; i < 128; i++) {
load_glyph(i, style.m_size);
}
} catch (...) {
// free the size and re-throw
FT_Done_Size(size);
throw;
}
// insert the newly loaded size in the map
m_face->sizes.insert(std::make_pair(style.m_size, size));
} else {
// activate the size
FT_Activate_Size(it->second);
}
// bind to first texture unit
glActiveTexture(GL_TEXTURE0);
// setup the shader
shader->use();
shader->bind_uniform(m_mvp_uniform, mvp);
shader->bind_uniform(m_color_uniform, style.m_color);
shader->bind_uniform(m_texture_uniform, 0);
// is kerning supported
FT_Bool kerning = FT_HAS_KERNING(m_face->handle);
// render each glyph in the string
glm::vec2 text_pos;
if (pos)
text_pos = *pos;
FT_UInt prev_glyph_index = 0;
auto i = text.begin();
while (i != text.end()) {
// get the unicode code point
utf8::uint32_t char_index = utf8::next(i, text.end());
// get the cached glyph, or cache if it is not yet cached
const detail::font::glyph& glyph = load_glyph(char_index, style.m_size);
// bind the texture
glBindTexture(GL_TEXTURE_2D, glyph.texture_id);
// check for kerning
if (kerning && glyph.glyph_index && prev_glyph_index) {
FT_Vector kerning_delta;
FT_Get_Kerning(m_face->handle, prev_glyph_index, glyph.glyph_index, FT_KERNING_DEFAULT, &kerning_delta);
text_pos.x += kerning_delta.x >> 6;
}
// calculate exact offset
glm::vec2 glyph_pos = text_pos;
glyph_pos.x += glyph.offset.x;
glyph_pos.y += glyph.offset.y;
// add optional letter spacing
glyph_pos.x += style.m_letter_spacing/2;
// if shadow is enabled, draw the shadow first
if (style.m_shadow) {
// calculate shadow position
glm::vec2 shadow_pos = glyph_pos;
shadow_pos.x += style.m_shadow->x;
shadow_pos.y += style.m_shadow->y;
// calculate shadow color
glm::vec4 shadow_color = style.m_shadow->color;
shadow_color.a *= style.m_color.a;
// bind uniforms
//.........这里部分代码省略.........
开发者ID:Greyze,项目名称:xd,代码行数:101,代码来源:font.cpp
示例17: T42_Face_Init
//.........这里部分代码省略.........
family++;
full++;
}
root->style_name = ( *full == ' ' ? full + 1
: (char *)"Regular" );
}
else
root->style_name = (char *)"Regular";
}
else
{
/* do we have a `/FontName'? */
if ( face->type1.font_name )
{
root->family_name = face->type1.font_name;
root->style_name = (char *)"Regular";
}
}
/* no embedded bitmap support */
root->num_fixed_sizes = 0;
root->available_sizes = 0;
/* Load the TTF font embedded in the T42 font */
error = FT_New_Memory_Face( FT_FACE_LIBRARY( face ),
face->ttf_data,
face->ttf_size,
0,
&face->ttf_face );
if ( error )
goto Exit;
FT_Done_Size( face->ttf_face->size );
/* Ignore info in FontInfo dictionary and use the info from the */
/* loaded TTF font. The PostScript interpreter also ignores it. */
root->bbox = face->ttf_face->bbox;
root->units_per_EM = face->ttf_face->units_per_EM;
root->ascender = face->ttf_face->ascender;
root->descender = face->ttf_face->descender;
root->height = face->ttf_face->height;
root->max_advance_width = face->ttf_face->max_advance_width;
root->max_advance_height = face->ttf_face->max_advance_height;
root->underline_position = face->type1.font_info.underline_position;
root->underline_thickness = face->type1.font_info.underline_thickness;
root->internal->max_points = 0;
root->internal->max_contours = 0;
/* compute style flags */
root->style_flags = 0;
if ( face->type1.font_info.italic_angle )
root->style_flags |= FT_STYLE_FLAG_ITALIC;
if ( face->ttf_face->style_flags & FT_STYLE_FLAG_BOLD )
root->style_flags |= FT_STYLE_FLAG_BOLD;
if ( face->ttf_face->face_flags & FT_FACE_FLAG_VERTICAL )
root->face_flags |= FT_FACE_FLAG_VERTICAL;
{
if ( psnames && psaux )
开发者ID:AudriusButkevicius,项目名称:TurboVNC,代码行数:67,代码来源:t42objs.c
示例18: _font_slave_int_load
static Font_Info *
_font_slave_int_load(const Slave_Msg_Font_Load *msg, Font_Source_Info *fsi)
{
int error;
int val, dv;
int ret;
Font_Info *fi = calloc(1, sizeof(*fi));
error = FT_New_Size(fsi->face, &(fi->size));
if (!error)
FT_Activate_Size(fi->size);
fi->fsize = msg->size;
fi->dpi = msg->dpi;
fi->real_size = msg->size * 64;
fi->fsi = fsi;
error = FT_Set_Char_Size(fsi->face, 0, fi->real_size, msg->dpi, msg->dpi);
if (error)
error = FT_Set_Pixel_Sizes(fsi->face, 0, fi->real_size);
if (error)
{
int i, maxd = 0x7fffffff;
int chosen_size = 0;
int chosen_size2 = 0;
for (i = 0; i < fsi->face->num_fixed_sizes; i++)
{
int s, cd;
s = fsi->face->available_sizes[i].size;
cd = chosen_size - fi->real_size;
if (cd < 0) cd = -cd;
if (cd < maxd)
{
maxd = cd;
chosen_size = s;
chosen_size2 = fsi->face->available_sizes[i].y_ppem;
if (maxd == 0) break;
}
}
fi->real_size = chosen_size;
error = FT_Set_Pixel_Sizes(fsi->face, 0, fi->real_size);
if (error)
{
error = FT_Set_Char_Size(fsi->face, 0, fi->real_size, fi->dpi, fi->dpi);
if (error)
{
/* hack around broken fonts */
fi->real_size = (chosen_size2 / 64) * 60;
error = FT_Set_Char_Size(fsi->face, 0, fi->real_size, fi->dpi, fi->dpi);
if (error)
{
ERR("Could not choose the font size for font: '%s:%s'.",
msg->file, msg->name);
FT_Done_Size(fi->size);
free(fi);
return NULL;
}
}
}
}
fi->max_h = 0;
val = (int)fsi->face->bbox.yMax;
if (fsi->face->units_per_EM != 0)
{
dv = (fsi->orig_upem * 2048) / fsi->face->units_per_EM;
ret = (val * fsi->face->size->metrics.y_scale) / (dv * dv);
}
else ret = val;
fi->max_h += ret;
val = -(int)fsi->face->bbox.yMin;
if (fsi->face->units_per_EM != 0)
{
dv = (fsi->orig_upem * 2048) / fsi->face->units_per_EM;
ret = (val * fsi->face->size->metrics.y_scale) / (dv * dv);
}
else ret = val;
fi->max_h += ret;
fi->runtime_rend = FONT_REND_REGULAR;
if ((msg->rend_flags & FONT_REND_SLANT) &&
!(fsi->face->style_flags & FT_STYLE_FLAG_ITALIC))
fi->runtime_rend |= FONT_REND_SLANT;
if ((msg->rend_flags & FONT_REND_WEIGHT) &&
!(fsi->face->style_flags & FT_STYLE_FLAG_BOLD))
fi->runtime_rend |= FONT_REND_WEIGHT;
return fi;
}
开发者ID:RomainNaour,项目名称:efl,代码行数:92,代码来源:evas_cserve2_fonts.c
注:本文中的FT_Done_Size函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论