Download

Support

lib/ewl_text_fmt.h

Go to the documentation of this file.
00001 /* vim: set sw=8 ts=8 sts=8 expandtab: */
00002 #ifndef EWL_TEXT_FMT_H
00003 #define EWL_TEXT_FMT_H
00004 
00005 #include "ewl_base.h"
00006 #include "ewl_text.h"
00007 #include "ewl_text_context.h"
00008 
00020 typedef struct Ewl_Text_Fmt_Node Ewl_Text_Fmt_Node;
00021 
00025 struct Ewl_Text_Fmt_Node
00026 {
00027         Ewl_Text_Context *tx;                
00028         unsigned int char_len;                
00029         unsigned int byte_len;                
00030 };
00031 
00035 typedef struct Ewl_Text_Fmt Ewl_Text_Fmt;
00036 
00040 struct Ewl_Text_Fmt
00041 {
00042         Ecore_DList *nodes;                
00043         void *text;                        
00045         struct
00046         {
00047                 unsigned int char_idx;        
00048                 unsigned int byte_idx;        
00049         } current_node;                        
00051         struct
00052         {
00053                 unsigned int char_len;        
00054                 unsigned int byte_len;        
00055         } length;                        
00056 };
00057 
00058 Ewl_Text_Fmt        *ewl_text_fmt_new(Ewl_Text *t);
00059 void                 ewl_text_fmt_destroy(Ewl_Text_Fmt *fmt);
00060 void                 ewl_text_fmt_clear(Ewl_Text_Fmt *fmt);
00061 
00062 void                 ewl_text_fmt_node_prepend(Ewl_Text_Fmt *fmt,
00063                                         Ewl_Text_Context *tx,
00064                                         unsigned int char_len,
00065                                         unsigned int byte_len);
00066 void                 ewl_text_fmt_node_append(Ewl_Text_Fmt *fmt,
00067                                         Ewl_Text_Context *tx,
00068                                         unsigned int char_len,
00069                                         unsigned int byte_len);
00070 void                 ewl_text_fmt_node_insert(Ewl_Text_Fmt *fmt,
00071                                         unsigned int char_idx,
00072                                         Ewl_Text_Context *tx,
00073                                         unsigned int char_len,
00074                                         unsigned int byte_len);
00075 void                 ewl_text_fmt_node_delete(Ewl_Text_Fmt *fmt,
00076                                         unsigned int idx,
00077                                         unsigned int char_len);
00078 unsigned int         ewl_text_fmt_node_count_get(Ewl_Text_Fmt *fmt);
00079 
00080 Ewl_Text_Fmt_Node *ewl_text_fmt_get(Ewl_Text_Fmt *fmt, unsigned int char_idx);
00081 Ewl_Text_Fmt_Node *ewl_text_fmt_get_last(Ewl_Text_Fmt *fmt);
00082 Ewl_Text_Fmt_Node *ewl_text_fmt_get_first(Ewl_Text_Fmt *fmt);
00083 Ewl_Text_Fmt_Node *ewl_text_fmt_get_current(Ewl_Text_Fmt *fmt);
00084 
00085 void                  ewl_text_fmt_goto(Ewl_Text_Fmt *fmt, unsigned int idx);
00086 
00087 void                 ewl_text_fmt_apply(Ewl_Text_Fmt *fmt, unsigned int context_mask,
00088                                         Ewl_Text_Context *change,
00089                                         unsigned int char_idx,
00090                                         unsigned int char_len);
00091 
00092 void                 ewl_text_fmt_char_to_byte(Ewl_Text_Fmt *fmt,
00093                                 unsigned int char_idx, unsigned int char_len,
00094                                 unsigned int *byte_idx, unsigned int *byte_len);
00095 void                  ewl_text_fmt_byte_to_char(Ewl_Text_Fmt *fmt,
00096                                 unsigned int byte_idx, unsigned int byte_len,
00097                                 unsigned int *char_idx, unsigned int *char_len);
00098 
00099 void                 ewl_text_fmt_walk(Ewl_Text_Fmt *fmt,
00100                                 void (*cb)(Ewl_Text_Fmt_Node *, Ewl_Text *,
00101                                                 unsigned int byte_idx));
00102 
00103 void                 ewl_text_fmt_dump(Ewl_Text_Fmt *fmt);
00104 
00105 
00106 Ewl_Text_Fmt_Node *ewl_text_fmt_node_new(Ewl_Text_Context *tx,
00107                                         unsigned int char_len,
00108                                                unsigned int byte_len);
00113 #endif
00114 

Copyright © Enlightenment.org

Enlightened Widget Library Documentation Generated: Sat May 17 16:49:08 2008