aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib/engines/common/evas_text_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/evas/src/lib/engines/common/evas_text_utils.h')
-rw-r--r--libraries/evas/src/lib/engines/common/evas_text_utils.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_text_utils.h b/libraries/evas/src/lib/engines/common/evas_text_utils.h
new file mode 100644
index 0000000..7f1c802
--- /dev/null
+++ b/libraries/evas/src/lib/engines/common/evas_text_utils.h
@@ -0,0 +1,89 @@
1#ifndef _EVAS_TEXT_UTILS_H
2# define _EVAS_TEXT_UTILS_H
3
4typedef struct _Evas_Text_Props Evas_Text_Props;
5typedef struct _Evas_Text_Props_Info Evas_Text_Props_Info;
6typedef struct _Evas_Font_Glyph_Info Evas_Font_Glyph_Info;
7
8# include "evas_font_ot.h"
9# include "language/evas_bidi_utils.h"
10# include "language/evas_language_utils.h"
11
12/* Used for showing "malformed" or missing chars */
13#define REPLACEMENT_CHAR 0xFFFD
14
15struct _Evas_Text_Props
16{
17 /* Start and len represent the start offset and the length in the
18 * glyphs_info and ot_data fields, they are both internal */
19 size_t start;
20 size_t len;
21 size_t text_offset; /* The text offset from the start of the info */
22 size_t text_len; /* The length of the original text */
23 Evas_BiDi_Props bidi;
24 Evas_Script_Type script;
25 Evas_Text_Props_Info *info;
26 void *font_instance;
27};
28
29struct _Evas_Text_Props_Info
30{
31 unsigned int refcount;
32 Evas_Font_Glyph_Info *glyph;
33 Evas_Font_OT_Info *ot;
34};
35
36/* Sorted in visual order when created */
37struct _Evas_Font_Glyph_Info
38{
39 unsigned int index; /* Should conform to FT */
40 Evas_Coord x_bear;
41#if 0
42 /* This one is rarely used, only in draw, in which we already get the glyph
43 * so it doesn't really save time. Leaving it here just so no one will
44 * add it thinking it was accidentally skipped */
45 Evas_Coord y_bear;
46#endif
47 Evas_Coord width;
48 Evas_Coord pen_after;
49};
50
51
52void
53evas_common_text_props_bidi_set(Evas_Text_Props *props,
54 Evas_BiDi_Paragraph_Props *bidi_par_props, size_t start);
55
56void
57evas_common_text_props_script_set(Evas_Text_Props *props, Evas_Script_Type scr);
58
59EAPI Eina_Bool
60evas_common_text_props_content_create(void *_fi, const Eina_Unicode *text,
61 Evas_Text_Props *text_props, const Evas_BiDi_Paragraph_Props *par_props,
62 size_t par_pos, int len);
63
64void
65evas_common_text_props_content_copy_and_ref(Evas_Text_Props *dst,
66 const Evas_Text_Props *src);
67
68void
69evas_common_text_props_content_ref(Evas_Text_Props *props);
70
71void
72evas_common_text_props_content_unref(Evas_Text_Props *props);
73
74EAPI int
75evas_common_text_props_cluster_next(const Evas_Text_Props *props, int pos);
76
77EAPI int
78evas_common_text_props_cluster_prev(const Evas_Text_Props *props, int pos);
79
80EAPI int
81evas_common_text_props_index_find(const Evas_Text_Props *props, int _cutoff);
82
83EAPI void
84evas_common_text_props_split(Evas_Text_Props *base, Evas_Text_Props *ext,
85 int cutoff);
86EAPI void
87evas_common_text_props_merge(Evas_Text_Props *item1, const Evas_Text_Props *item2);
88
89#endif