libkate 0.4.1
/home/mandrake/rpm/BUILD/libkate-0.4.1/include/kate/kate.h
Go to the documentation of this file.
00001 /* Copyright (C) 2008, 2009 Vincent Penquerc'h.
00002    This file is part of the Kate codec library.
00003    Written by Vincent Penquerc'h.
00004 
00005    Use, distribution and reproduction of this library is governed
00006    by a BSD style source license included with this source in the
00007    file 'COPYING'. Please read these terms before distributing. */
00008 
00009 
00010 #ifndef KATE_kate_h_GUARD
00011 #define KATE_kate_h_GUARD
00012 
00017 #include "kate/kate_config.h"
00018 
00021 #define KATE_VERSION_MAJOR 0             
00022 #define KATE_VERSION_MINOR 4             
00023 #define KATE_VERSION_PATCH 1             
00028 #define KATE_BITSTREAM_VERSION_MAJOR 0   
00029 #define KATE_BITSTREAM_VERSION_MINOR 7   
00033 typedef enum {
00034   kate_utf8                      
00035 } kate_text_encoding;
00036 
00038 typedef enum {
00039   kate_markup_none,              
00040   kate_markup_simple             
00041 } kate_markup_type;
00042 
00044 typedef enum {
00045   kate_pixel,                    
00046   kate_percentage,               
00047   kate_millionths                
00048 } kate_space_metric;
00049 
00050 struct kate_meta;
00051 typedef struct kate_meta kate_meta;
00052 
00054 typedef struct kate_region {
00055   kate_space_metric metric;      
00056   int x;                         
00057   int y;                         
00058   int w;                         
00059   int h;                         
00060   int style;                     
00061   unsigned int clip:1;           
00062   unsigned int pad0:31;
00063   kate_meta *meta;
00064   kate_uintptr_t pad1[5];
00065 } kate_region;
00066 
00068 typedef struct kate_color {
00069   unsigned char r;               
00070   unsigned char g;               
00071   unsigned char b;               
00072   unsigned char a;               
00073 } kate_color;
00074 
00076 typedef enum {
00077   kate_wrap_word,                
00078   kate_wrap_none                 
00079 } kate_wrap_mode;
00080 
00082 typedef struct kate_style {
00083   kate_float halign;                 
00084   kate_float valign;                 
00086   kate_color text_color;             
00087   kate_color background_color;       
00088   kate_color draw_color;             
00090   kate_space_metric font_metric;     
00091   kate_float font_width;             
00092   kate_float font_height;            
00094   kate_space_metric margin_metric;   
00095   kate_float left_margin;            
00096   kate_float top_margin;             
00097   kate_float right_margin;           
00098   kate_float bottom_margin;          
00100   unsigned int bold:1;               
00101   unsigned int italics:1;            
00102   unsigned int underline:1;          
00103   unsigned int strike:1;             
00104   unsigned int justify:1;            
00105   unsigned int wrap_mode:2;          
00106   unsigned int pad0:25;
00107 
00108   kate_const char *font;             
00110   kate_meta *meta;
00111 
00112   kate_uintptr_t pad1[8];
00113 } kate_style;
00114 
00116 typedef enum kate_curve_type {
00117   kate_curve_none,                   
00118   kate_curve_static,                 
00119   kate_curve_linear,                 
00120   kate_curve_catmull_rom_spline,     
00121   kate_curve_bezier_cubic_spline,    
00122   kate_curve_bspline                 
00123 } kate_curve_type;
00124 
00126 typedef struct kate_curve {
00127   kate_curve_type type;              
00128   size_t npts;                       
00129   kate_float *pts;                   
00130   kate_uintptr_t pad[5];
00131 } kate_curve;
00132 
00134 typedef enum kate_motion_mapping {
00135   /* these can be used for a x/y position mapping */
00136   kate_motion_mapping_none,                  
00137   kate_motion_mapping_frame,                 
00138   kate_motion_mapping_window,                
00139   kate_motion_mapping_region,                
00140   kate_motion_mapping_event_duration,        
00141   kate_motion_mapping_bitmap_size,           
00143 #if 0
00144   text is useful, find a way to readd it easily
00145   kate_motion_mapping_text,                  
00146 #endif
00147 
00148   /* more mapping may be added in future versions */
00149 
00150   kate_motion_mapping_user=128               
00151 } kate_motion_mapping;
00152 
00154 typedef enum kate_motion_semantics {
00155   kate_motion_semantics_time,                    
00156   kate_motion_semantics_z,                       
00157   kate_motion_semantics_region_position,         
00158   kate_motion_semantics_region_size,             
00159   kate_motion_semantics_text_alignment_int,      
00160   kate_motion_semantics_text_alignment_ext,      
00161   kate_motion_semantics_text_position,           
00162   kate_motion_semantics_text_size,               
00163   kate_motion_semantics_marker1_position,        
00164   kate_motion_semantics_marker2_position,        
00165   kate_motion_semantics_marker3_position,        
00166   kate_motion_semantics_marker4_position,        
00167   kate_motion_semantics_glyph_pointer_1,         
00168   kate_motion_semantics_glyph_pointer_2,         
00169   kate_motion_semantics_glyph_pointer_3,         
00170   kate_motion_semantics_glyph_pointer_4,         
00171   kate_motion_semantics_text_color_rg,           
00172   kate_motion_semantics_text_color_ba,           
00173   kate_motion_semantics_background_color_rg,     
00174   kate_motion_semantics_background_color_ba,     
00175   kate_motion_semantics_draw_color_rg,           
00176   kate_motion_semantics_draw_color_ba,           
00177   kate_motion_semantics_style_morph,             
00178   kate_motion_semantics_text_path,               
00179   kate_motion_semantics_text_path_section,       
00180   kate_motion_semantics_draw,                    
00181   kate_motion_semantics_text_visible_section,    
00182   kate_motion_semantics_horizontal_margins,      
00183   kate_motion_semantics_vertical_margins,        
00184   kate_motion_semantics_bitmap_position,         
00185   kate_motion_semantics_bitmap_size,             
00186   kate_motion_semantics_marker1_bitmap,          
00187   kate_motion_semantics_marker2_bitmap,          
00188   kate_motion_semantics_marker3_bitmap,          
00189   kate_motion_semantics_marker4_bitmap,          
00190   kate_motion_semantics_glyph_pointer_1_bitmap,  
00191   kate_motion_semantics_glyph_pointer_2_bitmap,  
00192   kate_motion_semantics_glyph_pointer_3_bitmap,  
00193   kate_motion_semantics_glyph_pointer_4_bitmap,  
00194   kate_motion_semantics_draw_width,              
00196   /* more semantics may be added in future versions */
00197 
00198   kate_motion_semantics_user = 128               
00199 } kate_motion_semantics;
00200 
00202 typedef struct kate_motion {
00203   size_t ncurves;                                
00204   kate_curve **curves;                           
00205   kate_float *durations;                         
00206   kate_motion_mapping x_mapping;                 
00207   kate_motion_mapping y_mapping;                 
00208   kate_motion_semantics semantics;               
00209   unsigned int periodic:1;                       
00210   unsigned int pad0:31;
00211   kate_meta *meta;
00212   kate_uintptr_t pad1[4];
00213 } kate_motion;
00214 
00216 typedef enum kate_text_directionality {
00217   kate_l2r_t2b,                                  
00218   kate_r2l_t2b,                                  
00219   kate_t2b_r2l,                                  
00220   kate_t2b_l2r                                   
00221 } kate_text_directionality;
00222 
00224 typedef struct kate_palette {
00225   size_t ncolors;                                
00226   kate_color *colors;                            
00227   kate_meta *meta;
00228   kate_uintptr_t pad[1];
00229 } kate_palette;
00230 
00232 typedef enum kate_bitmap_type {
00233   kate_bitmap_type_paletted,                     
00234   kate_bitmap_type_png                           
00235 } kate_bitmap_type;
00236 
00238 typedef struct kate_bitmap {
00239   size_t width;                                  
00240   size_t height;                                 
00241   unsigned char bpp;                             
00242   kate_bitmap_type type;                         
00243   unsigned char pad0[1];
00244   unsigned char internal;
00245   int palette;                                   
00246   unsigned char *pixels;                         
00247   size_t size;                                   
00248   int x_offset;                                  
00249   int y_offset;                                  
00250   kate_meta *meta;
00251   kate_uintptr_t pad1[14];
00252 } kate_bitmap;
00253 
00255 typedef struct kate_font_range {
00256   int first_code_point;                          
00257   int last_code_point;                           
00258   int first_bitmap;                              
00259   kate_uintptr_t pad[5];
00260 } kate_font_range;
00261 
00263 typedef struct kate_font_mapping {
00264   size_t nranges;                                
00265   kate_font_range **ranges;                      
00266   kate_uintptr_t pad[6];
00267 } kate_font_mapping;
00268 
00274 typedef struct kate_info {
00275   unsigned char bitstream_version_major;         
00276   unsigned char bitstream_version_minor;         
00277   unsigned char pad0[2];
00278 
00279   kate_text_encoding text_encoding;              
00280   kate_text_directionality text_directionality;  
00282   unsigned char num_headers;                     
00283   unsigned char granule_shift;                   
00284   unsigned char pad1[2];
00285 
00286   kate_uint32_t gps_numerator;                   
00287   kate_uint32_t gps_denominator;                 
00289   kate_const char *language;                     
00291   kate_const char *category;                     
00293   size_t nregions;                               
00294   kate_const kate_region *kate_const *regions;   
00296   size_t nstyles;                                
00297   kate_const kate_style *kate_const *styles;     
00299   size_t ncurves;                                
00300   kate_const kate_curve *kate_const *curves;     
00302   size_t nmotions;                               
00303   kate_const kate_motion *kate_const *motions;   
00305   size_t npalettes;                              
00306   kate_const kate_palette *kate_const *palettes; 
00308   size_t nbitmaps;                               
00309   kate_const kate_bitmap *kate_const *bitmaps;   
00311   size_t nfont_ranges;                                       
00312   kate_const kate_font_range *kate_const *font_ranges;       
00314   size_t nfont_mappings;                                     
00315   kate_const kate_font_mapping *kate_const *font_mappings;   
00317   kate_markup_type text_markup_type;             
00319   size_t original_canvas_width;                  
00320   size_t original_canvas_height;                 
00322   kate_uintptr_t pad2[11];
00323 
00324   /* internal */
00325   int remove_markup;
00326   int no_limits;
00327   int probe;
00328 
00329   kate_uintptr_t pad3[13];
00330 } kate_info;
00331 
00332 struct kate_encode_state; /* internal */
00333 struct kate_decode_state; /* internal */
00334 
00336 typedef struct kate_state {
00337   kate_const kate_info *ki;                      
00339   /* internal */
00340   kate_const struct kate_encode_state *kes;
00341   kate_const struct kate_decode_state *kds;
00342 
00343   kate_uintptr_t pad[5];
00344 } kate_state;
00345 
00347 typedef struct kate_comment {
00348   char **user_comments;                         
00349   int *comment_lengths;                         
00350   int comments;                                 
00351   char *vendor;                                 
00352 } kate_comment;
00353 
00358 typedef struct kate_event {
00359   kate_int64_t start;                           
00360   kate_int64_t duration;                        
00361   kate_int64_t backlink;                        
00363   kate_float start_time;                        
00364   kate_float end_time;                          
00366   kate_int32_t id;                              
00368   kate_text_encoding text_encoding;             
00369   kate_text_directionality text_directionality; 
00370   kate_const char *language;                    
00371   kate_const char *text;                        
00372   size_t len;                                   
00373   size_t len0;                                  
00375   size_t nmotions;                              
00376   kate_const kate_motion *kate_const *motions;  
00378   kate_const kate_region *region;               
00379   kate_const kate_style *style;                 
00380   kate_const kate_style *secondary_style;       
00381   kate_const kate_font_mapping *font_mapping;   
00382   kate_const kate_palette *palette;             
00383   kate_const kate_bitmap *bitmap;               
00385   kate_markup_type text_markup_type;            
00387   size_t nbitmaps;                              
00388   kate_const kate_bitmap *kate_const *bitmaps;  
00390   kate_meta *meta;
00391 
00392   kate_uintptr_t pad0[5];
00393 
00394   /* internal */
00395   const kate_info *ki;
00396   size_t trackers;
00397 
00398   kate_uintptr_t pad1[10];
00399 } kate_event;
00400 
00401 struct kate_tracker_internal; /* internal */
00402 
00404 typedef struct kate_tracker {
00405   const kate_info *ki;                          
00406   kate_const kate_event *event;                 
00407   kate_float t;                                 
00409   struct {
00410     unsigned int region:1;                      
00411     unsigned int text_alignment_int:1;          
00412     unsigned int text_alignment_ext:1;          
00413     unsigned int text_pos:1;                    
00414     unsigned int text_size:1;                   
00415     unsigned int marker_pos:4;                  
00416     unsigned int text_color:1;                  
00417     unsigned int background_color:1;            
00418     unsigned int draw_color:1;                  
00419     unsigned int glyph_pointer:4;               
00420     unsigned int path:1;                        
00421     unsigned int draw:1;                        
00422     unsigned int visible_section:1;             
00423     unsigned int z:1;                           
00424     unsigned int hmargins:1;                    
00425     unsigned int vmargins:1;                    
00426     unsigned int bitmap_pos:1;                  
00427     unsigned int bitmap_size:1;                 
00428     unsigned int marker_bitmap:4;               
00429     unsigned int glyph_pointer_bitmap:4;        
00430     unsigned int draw_width:1;                  
00431     /* 33 bits */
00432     unsigned int pad0:31;
00433     /* 64 bits */
00434   } has;                                        
00436   int window_w;                                 
00437   int window_h;                                 
00438   int frame_x;                                  
00439   int frame_y;                                  
00440   int frame_w;                                  
00441   int frame_h;                                  
00443   /* has.region */
00444   kate_float region_x;                          
00445   kate_float region_y;                          
00446   kate_float region_w;                          
00447   kate_float region_h;                          
00449   /* has.text_alignment (int/ext) */
00450   kate_float text_halign;                       
00451   kate_float text_valign;                       
00453   /* has.text_pos */
00454   kate_float text_x;                            
00455   kate_float text_y;                            
00457   /* has.text_size */
00458   kate_float text_size_x;                       
00459   kate_float text_size_y;                       
00461   /* has.marker_pos&(1<<n) */
00462   kate_float marker_x[4];                       
00463   kate_float marker_y[4];                       
00465   /* has.text_color */
00466   kate_color text_color;                        
00468   /* has.background_color */
00469   kate_color background_color;                  
00471   /* has.draw_color */
00472   kate_color draw_color;                        
00474   /* has.glyph_pointer&(1<<n) */
00475   kate_float glyph_pointer[4];                  
00476   kate_float glyph_height[4];                   
00478   /* has.path */
00479   kate_float path_start;                        
00480   kate_float path_end;                          
00482   /* has.draw */
00483   kate_float draw_x;                            
00484   kate_float draw_y;                            
00486   /* has.visible_section */
00487   kate_float visible_x;                         
00488   kate_float visible_y;                         
00490   /* has.z */
00491   kate_float z;                                 
00493   /* has.hmargins */
00494   kate_float left_margin;                       
00495   kate_float right_margin;                      
00497   /* has.vmargins */
00498   kate_float top_margin;                        
00499   kate_float bottom_margin;                     
00501   /* has.bitmap_pos */
00502   kate_float bitmap_x;                          
00503   kate_float bitmap_y;                          
00505   /* has.bitmap_size */
00506   kate_float bitmap_size_x;                     
00507   kate_float bitmap_size_y;                     
00509   /* has.marker_bitmap&(1<<n) */
00510   const kate_bitmap *marker_bitmap[4];          
00512   /* has.glyph_pointer_bitmap&(1<<n) */
00513   const kate_bitmap *glyph_pointer_bitmap[4];   
00515   /* has.draw_width */
00516   kate_float draw_width;                        
00518   /* internal */
00519   struct kate_tracker_internal *internal;
00520 
00521   kate_uintptr_t pad[19];
00522 
00523 } kate_tracker;
00524 
00526 typedef struct kate_packet {
00527   size_t nbytes;             
00528   void *data;                
00529 } kate_packet;
00530 
00531 #ifdef __cplusplus
00532 extern "C" {
00533 #endif
00534 
00536 extern int kate_get_version(void);
00537 extern const char *kate_get_version_string(void);
00538 extern int kate_get_bitstream_version(void);
00539 extern const char *kate_get_bitstream_version_string(void);
00540 
00542 extern int kate_info_init(kate_info *ki);
00543 extern int kate_info_set_granule_encoding(kate_info *ki,kate_float resolution,kate_float max_length,kate_float max_event_lifetime);
00544 extern int kate_info_set_language(kate_info *ki,const char *language);
00545 extern int kate_info_set_text_directionality(kate_info *ki,kate_text_directionality text_directionality);
00546 extern int kate_info_set_markup_type(kate_info *ki,kate_markup_type text_markup_type);
00547 extern int kate_info_set_category(kate_info *ki,const char *category);
00548 extern int kate_info_set_original_canvas_size(kate_info *ki,size_t width,size_t height);
00549 extern int kate_info_add_region(kate_info *ki,kate_region *kr);
00550 extern int kate_info_add_style(kate_info *ki,kate_style *ks);
00551 extern int kate_info_add_curve(kate_info *ki,kate_curve *kc);
00552 extern int kate_info_add_motion(kate_info *ki,kate_motion *km);
00553 extern int kate_info_add_palette(kate_info *ki,kate_palette *kp);
00554 extern int kate_info_add_bitmap(kate_info *ki,kate_bitmap *kb);
00555 extern int kate_info_add_font_range(kate_info *ki,kate_font_range *kfr);
00556 extern int kate_info_add_font_mapping(kate_info *ki,kate_font_mapping *kfm);
00557 extern int kate_info_matches_language(const kate_info *ki,const char *language);
00558 extern int kate_info_remove_markup(kate_info *ki,int flag);
00559 extern int kate_info_no_limits(kate_info *ki,int flag);
00560 extern int kate_info_clear(kate_info *ki);
00561 
00563 extern int kate_granule_shift(const kate_info *ki);
00564 extern int kate_granule_split_time(const kate_info *ki,kate_int64_t granulepos,kate_float *base,kate_float *offset);
00565 extern kate_float kate_granule_time(const kate_info *ki,kate_int64_t granulepos);
00566 extern kate_int64_t kate_duration_granule(const kate_info *ki,kate_float duration);
00567 extern kate_float kate_granule_duration(const kate_info *ki,kate_int64_t duration);
00568 
00570 extern int kate_clear(kate_state *k);
00571 extern int kate_motion_get_point(const kate_motion *km,kate_float duration,kate_float t,kate_float *x,kate_float *y);
00572 extern int kate_curve_get_point(const kate_curve *kc,kate_float t,kate_float *x,kate_float *y);
00573 extern int kate_region_init(kate_region *kr);
00574 extern int kate_style_init(kate_style *ks);
00575 extern int kate_palette_init(kate_palette *kp);
00576 extern int kate_bitmap_init(kate_bitmap *kb);
00577 extern int kate_bitmap_init_new(kate_bitmap *kb);
00578 extern int kate_curve_init(kate_curve *kc);
00579 extern int kate_motion_init(kate_motion *km);
00580 
00582 extern int kate_text_get_character(kate_text_encoding text_encoding,const char ** const text,size_t *len0);
00583 extern int kate_text_set_character(kate_text_encoding text_encoding,int c,char ** const text,size_t *len0);
00584 extern int kate_text_remove_markup(kate_text_encoding text_encoding,char *text,size_t *len0);
00585 extern int kate_text_validate(kate_text_encoding text_encoding,const char *text,size_t len0);
00586 
00588 extern int kate_comment_init(kate_comment *kc);
00589 extern int kate_comment_clear(kate_comment *kc);
00590 extern int kate_comment_add(kate_comment *kc,const char *comment);
00591 extern int kate_comment_add_length(kate_comment *kc,const char *comment,size_t len);
00592 extern int kate_comment_add_tag(kate_comment *kc,const char *tag,const char *value);
00593 extern const char *kate_comment_query(const kate_comment *kc,const char *tag,int count);
00594 extern int kate_comment_query_count(const kate_comment *kc,const char *tag);
00595 
00597 extern int kate_encode_init(kate_state *k,kate_info *ki);
00598 extern int kate_encode_headers(kate_state *k,kate_comment *kc,kate_packet *kp);
00599 extern int kate_encode_text(kate_state *k,kate_float start_time,kate_float stop_time,const char *text,size_t sz,kate_packet *kp); /* text is not null terminated */
00600 extern int kate_encode_text_raw_times(kate_state *k,kate_int64_t start_time,kate_int64_t stop_time,const char *text,size_t sz,kate_packet *kp); /* text is not null terminated */
00601 extern int kate_encode_keepalive(kate_state *k,kate_float t,kate_packet *kp);
00602 extern int kate_encode_keepalive_raw_times(kate_state *k,kate_int64_t t,kate_packet *kp);
00603 extern int kate_encode_repeat(kate_state *k,kate_float t,kate_float threshold,kate_packet *kp);
00604 extern int kate_encode_repeat_raw_times(kate_state *k,kate_int64_t t,kate_int64_t threshold,kate_packet *kp);
00605 extern int kate_encode_finish(kate_state *k,kate_float t,kate_packet *kp); /* t may be negative to use the end granule of the last event */
00606 extern int kate_encode_finish_raw_times(kate_state *k,kate_int64_t t,kate_packet *kp); /* t may be negative to use the end granule of the last event */
00607 extern int kate_encode_set_id(kate_state *k,kate_int32_t id);
00608 extern int kate_encode_set_language(kate_state *k,const char *language); /* language can be NULL */
00609 extern int kate_encode_set_text_encoding(kate_state *k,kate_text_encoding text_encoding);
00610 extern int kate_encode_set_text_directionality(kate_state *k,kate_text_directionality text_directionality);
00611 extern int kate_encode_set_region_index(kate_state *k,size_t region);
00612 extern int kate_encode_set_region(kate_state *k,const kate_region *kr);
00613 extern int kate_encode_set_style_index(kate_state *k,size_t style);
00614 extern int kate_encode_set_style(kate_state *k,const kate_style *ks);
00615 extern int kate_encode_set_secondary_style_index(kate_state *k,size_t style);
00616 extern int kate_encode_set_secondary_style(kate_state *k,const kate_style *ks);
00617 extern int kate_encode_set_font_mapping_index(kate_state *k,size_t font_mapping);
00618 extern int kate_encode_add_motion(kate_state *k,kate_motion *km,int destroy);
00619 extern int kate_encode_add_motion_index(kate_state *k,size_t motion);
00620 extern int kate_encode_set_palette_index(kate_state *k,size_t palette);
00621 extern int kate_encode_set_palette(kate_state *k,const kate_palette *kp);
00622 extern int kate_encode_set_bitmap_index(kate_state *k,size_t bitmap);
00623 extern int kate_encode_set_bitmap(kate_state *k,const kate_bitmap *kb);
00624 extern int kate_encode_add_bitmap(kate_state *k,const kate_bitmap *kb);
00625 extern int kate_encode_add_bitmap_index(kate_state *k,size_t bitmap);
00626 extern int kate_encode_set_markup_type(kate_state *k,int markup_type);
00627 extern int kate_encode_merge_meta(kate_state *k,kate_meta *meta);
00628 extern int kate_encode_add_meta(kate_state *k,const kate_meta *meta);
00629 extern kate_int64_t kate_encode_get_granule(const kate_state *k);
00630 
00632 extern int kate_decode_is_idheader(const kate_packet *kp);
00633 extern int kate_decode_init(kate_state *k,kate_info *ki);
00634 extern int kate_decode_headerin(kate_info *ki,kate_comment *kc,kate_packet *kp);
00635 extern int kate_decode_packetin(kate_state *k,kate_packet *kp);
00636 extern int kate_decode_eventout(kate_state *k,kate_const kate_event **ev); /* event can be NULL */
00637 extern int kate_decode_seek(kate_state *k);
00638 
00640 extern int kate_tracker_init(kate_tracker *kin,const kate_info *ki,kate_const kate_event *ev);
00641 extern int kate_tracker_clear(kate_tracker *kin);
00642 extern int kate_tracker_update(kate_tracker *kin,kate_float t,int window_w,int window_h,int frame_x,int frame_y,int frame_w,int frame_h);
00643 extern int kate_tracker_morph_styles(kate_style *style,kate_float t,const kate_style *from,const kate_style *to);
00644 extern int kate_tracker_get_text_path_position(kate_tracker *kin,size_t glyph,int *x,int *y);
00645 extern int kate_tracker_update_property_at_duration(const kate_tracker *kin,kate_float duration,kate_float t,kate_motion_semantics semantics,kate_float *x,kate_float *y);
00646 extern int kate_tracker_remap(const kate_tracker *kin,kate_motion_mapping x_mapping,kate_motion_mapping y_mapping,kate_float *x,kate_float *y);
00647 
00649 extern int kate_font_get_index_from_code_point(const kate_font_mapping *kfm,int c);
00650 
00652 extern int kate_high_decode_init(kate_state *k);
00653 extern int kate_high_decode_packetin(kate_state *k,kate_packet *kp,kate_const kate_event **ev);
00654 extern int kate_high_decode_clear(kate_state *k);
00655 extern const kate_comment *kate_high_decode_get_comments(kate_state *k);
00656 
00658 extern int kate_packet_wrap(kate_packet *kp,size_t nbytes,const void *data);
00659 extern int kate_packet_init(kate_packet *kp,size_t nbytes,const void *data);
00660 extern int kate_packet_clear(kate_packet *kp);
00661 
00663 extern int kate_meta_create(kate_meta **km);
00664 extern int kate_meta_destroy(kate_meta *km);
00665 extern int kate_meta_add(kate_meta *km,const char *tag,const char *value,size_t len);
00666 extern int kate_meta_add_string(kate_meta *km,const char *tag,const char *value);
00667 extern int kate_meta_query_tag_count(const kate_meta *km,const char *tag);
00668 extern int kate_meta_query_tag(const kate_meta *km,const char *tag,unsigned int idx,const char **value,size_t *len);
00669 extern int kate_meta_remove_tag(kate_meta *km,const char *tag,unsigned int idx);
00670 extern int kate_meta_query_count(const kate_meta *km);
00671 extern int kate_meta_query(const kate_meta *km,unsigned int idx,const char **tag,const char **value,size_t *len);
00672 extern int kate_meta_remove(kate_meta *km,unsigned int idx);
00673 extern int kate_meta_merge(kate_meta *km,kate_meta *km2);
00674 
00675 #ifdef __cplusplus
00676 }
00677 #endif
00678 
00681 #define KATE_E_NOT_FOUND (-1)            
00682 #define KATE_E_INVALID_PARAMETER (-2)    
00683 #define KATE_E_OUT_OF_MEMORY (-3)        
00684 #define KATE_E_BAD_GRANULE (-4)          
00685 #define KATE_E_INIT (-5)                 
00686 #define KATE_E_BAD_PACKET (-6)           
00687 #define KATE_E_TEXT (-7)                 
00688 #define KATE_E_LIMIT (-8)                
00689 #define KATE_E_VERSION (-9)              
00690 #define KATE_E_NOT_KATE (-10)            
00691 #define KATE_E_BAD_TAG (-11)             
00692 #define KATE_E_IMPL (-12)                
00695 #endif
00696