lib/ewl_text_fmt.h
Go to the documentation of this file.00001
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