这篇教程C++ FT_Done_Size函数代码示例写得很实用,希望能帮到您。
本文整理汇总了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,
示例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,
示例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,
示例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,
示例5: FT_Done_SizeFont::~Font() { if(m_size) { FT_Done_Size(m_size); } delete m_textures; }
开发者ID:nikos-maximus,项目名称:ArxLibertatis,代码行数:9,
示例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,
示例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,
示例8: glDeleteTexturesxd::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,
示例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,
示例10: FT_Done_SizeSkScalerContext_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,
示例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,
示例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,
示例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,
示例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,
示例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,
示例16: invalid_font_typevoid 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,
示例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,
示例18: _font_slave_int_loadstatic 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,
注:本文中的FT_Done_Size函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ FT_ERR函数代码示例 C++ FT_Done_FreeType函数代码示例 |