Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
font.c
Package: unicap-0.2.19.tar.gz [view]
Upload User: shyika
Upload Date: 2017-11-25
Package Size: 1227k
Code Size: 3k
Category:
Video Capture
Development Platform:
Unix_Linux
- /*
- ** font.c
- **
- ** Made by (Arne Caspari)
- ** Login <arne@arne-laptop>
- **
- ** Started on Tue Dec 19 18:30:39 2006 Arne Caspari
- ** Last update Tue Jan 9 11:38:49 2007 Arne Caspari
- */
- //#include "yuvfont.h"
- #include "unicap.h"
- #include "ucil.h"
- #include <pango/pangoft2.h>
- #include <ft2build.h>
- #include FT_FREETYPE_H
- #define DEFAULT_FONT "Sans"
- static void draw_bitmap( unicap_data_buffer_t *dest,
- ucil_color_t *color,
- int xpos, int ypos,
- FT_Bitmap* bitmap,
- FT_Int x,
- FT_Int y)
- {
- FT_Int i, j, p, q;
- FT_Int x_max = x + bitmap->width;
- FT_Int y_max = y + bitmap->rows;
- for ( i = x, p = 0; i < x_max; i++, p++ )
- {
- for ( j = y, q = 0; j < y_max; j++, q++ )
- {
- if ( ( i < 0 ) ||
- ( j < 0 ) ||
- ( ( i + xpos ) >= dest->format.size.width ) ||
- ( ( j + ypos ) >= dest->format.size.height ) )
- {
- continue;
- }
- if( bitmap->buffer[q * bitmap->width + p] )
- {
- ucil_set_pixel_alpha( dest, color, bitmap->buffer[q * bitmap->width + p], i + xpos, j + ypos );
- }
- }
- }
- }
- ucil_font_object_t *ucil_create_font_object( int size, const char *font )
- {
- ucil_font_object_t *fobj;
- PangoFontDescription *desc;
- PangoFT2FontMap *fontmap;
- fobj = g_malloc( sizeof( ucil_font_object_t ) );
- if( font == NULL )
- {
- font = DEFAULT_FONT;
- }
- fontmap = PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ());
- fobj->context = pango_ft2_font_map_create_context (fontmap);
- g_object_weak_ref( G_OBJECT( (PangoContext*)fobj->context ),
- (GWeakNotify) pango_ft2_font_map_substitute_changed,
- fontmap );
- g_object_unref( fontmap );
- desc = pango_font_description_from_string( font );
- if (size > 0)
- {
- pango_font_description_set_size (desc, size * PANGO_SCALE);
- }
- fobj->layout = pango_layout_new( (PangoContext*)fobj->context );
- pango_layout_set_font_description( (PangoLayout*)fobj->layout, desc );
- pango_font_description_free( desc );
- return fobj;
- }
- void ucil_destroy_font_object( ucil_font_object_t *fobj )
- {
- g_object_unref( (PangoLayout*)fobj->layout );
- g_object_unref( (PangoContext*)fobj->context );
- g_free( fobj );
- }
- void ucil_draw_text( unicap_data_buffer_t *dest, ucil_color_t *color, ucil_font_object_t *fobj, const char *text, int x, int y )
- {
- FT_Bitmap bitmap;
- int width;
- int height;
- pango_layout_set_text( (PangoLayout*)fobj->layout, text, -1 );
- pango_layout_get_size( (PangoLayout*)fobj->layout, &width, &height );
- width /= PANGO_SCALE;
- height /= PANGO_SCALE;
- bitmap.width = width;
- bitmap.pitch = width;//(bitmap.width + 3) & ~3;
- bitmap.rows = height;
- bitmap.buffer = malloc( bitmap.pitch * bitmap.rows );
- bitmap.num_grays = 256;
- bitmap.pixel_mode = ft_pixel_mode_grays;
- memset( bitmap.buffer, 0x00, bitmap.pitch * bitmap.rows );
- pango_ft2_render_layout( &bitmap, (PangoLayout*)fobj->layout, 0, 0 );
- draw_bitmap (dest, color, x, y, &bitmap, 0, 0);
- free (bitmap.buffer);
- }
- void ucil_text_get_size( ucil_font_object_t *fobj, const char *text, int *width, int *height )
- {
- pango_layout_set_text( (PangoLayout*)fobj->layout, text, -1 );
- pango_layout_get_pixel_size( (PangoLayout*)fobj->layout, width, height );
- }