00001 
00002 
00003 
00004 
00005 
00006 
00007 
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   
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   
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   
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   
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; 
00333 struct kate_decode_state; 
00334 
00336 typedef struct kate_state {
00337   kate_const kate_info *ki;                      
00339   
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   
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; 
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     
00432     unsigned int pad0:31;
00433     
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   
00444   kate_float region_x;                          
00445   kate_float region_y;                          
00446   kate_float region_w;                          
00447   kate_float region_h;                          
00449   
00450   kate_float text_halign;                       
00451   kate_float text_valign;                       
00453   
00454   kate_float text_x;                            
00455   kate_float text_y;                            
00457   
00458   kate_float text_size_x;                       
00459   kate_float text_size_y;                       
00461   
00462   kate_float marker_x[4];                       
00463   kate_float marker_y[4];                       
00465   
00466   kate_color text_color;                        
00468   
00469   kate_color background_color;                  
00471   
00472   kate_color draw_color;                        
00474   
00475   kate_float glyph_pointer[4];                  
00476   kate_float glyph_height[4];                   
00478   
00479   kate_float path_start;                        
00480   kate_float path_end;                          
00482   
00483   kate_float draw_x;                            
00484   kate_float draw_y;                            
00486   
00487   kate_float visible_x;                         
00488   kate_float visible_y;                         
00490   
00491   kate_float z;                                 
00493   
00494   kate_float left_margin;                       
00495   kate_float right_margin;                      
00497   
00498   kate_float top_margin;                        
00499   kate_float bottom_margin;                     
00501   
00502   kate_float bitmap_x;                          
00503   kate_float bitmap_y;                          
00505   
00506   kate_float bitmap_size_x;                     
00507   kate_float bitmap_size_y;                     
00509   
00510   const kate_bitmap *marker_bitmap[4];          
00512   
00513   const kate_bitmap *glyph_pointer_bitmap[4];   
00515   
00516   kate_float draw_width;                        
00518   
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); 
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); 
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); 
00606 extern int kate_encode_finish_raw_times(kate_state *k,kate_int64_t t,kate_packet *kp); 
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); 
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); 
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