2008-05-28 Mark Doffman <mark.doffman@codethink.co.uk>
[platform/core/uifw/at-spi2-atk.git] / tests / dummyatk / my-atk-text.h
1 #ifndef MY_ATK_TEXT_H
2 #define MY_ATK_TEXT_H
3 /*
4  * MyAtkText: implements AtkText and AtkEditableText
5  */
6 #include <atk/atk.h>
7         
8 #define MY_TYPE_ATK_TEXT             (my_atk_text_get_type ())
9 #define MY_ATK_TEXT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), MY_TYPE_ATK_TEXT, MyAtkText))
10 #define MY_ATK_TEXT_CLASS(vtable)    (G_TYPE_CHECK_CLASS_CAST ((vtable), MY_TYPE_ATK_TEXT, MyAtkTextClass))
11 #define MY_IS_ATK_TEXT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MY_TYPE_ATK_TEXT))
12 #define MY_IS_ATK_TEXT_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), MY_TYPE_ATK_TEXT))
13 #define MY_ATK_TEXT_GET_CLASS(inst)  (G_TYPE_INSTANCE_GET_CLASS ((inst), MY_TYPE_ATK_TEXT, MyAtkTextClass))
14
15 typedef struct _MyAtkText MyAtkText;
16 typedef struct _MyAtkTextClass MyAtkTextClass;
17
18 //Struct, describing bounds of one selection.
19 typedef struct
20 {
21     gint start_offset, end_offset;
22 }TextSelection;
23 //Struct, describing values, needed for determine extent of characters 
24 typedef struct
25 {
26     gint base_x, base_y;//coordinates of the top-left corner of text
27     gint pixels_above_line;
28     gint pixels_below_line;
29     gint size;//size of the character(height in pixels)
30     gint pixels_between_characters;//monoscaped font
31     gint width;//width of character
32 }TextBounds; 
33
34 struct _MyAtkText
35 {
36     AtkObject parent;
37     
38     gchar* str;//string, containing text
39     GList* attributes;//running atributes
40     AtkAttributeSet *default_attributes;//default attributes
41     
42     TextBounds bounds;
43     
44     GArray* selections;
45     
46     gint caret_offset;
47 };
48
49 struct _MyAtkTextClass
50 {
51     AtkObjectClass parent;
52     gchar* clipboard;
53 };
54
55 GType my_atk_text_get_type();
56
57 void my_atk_text_interface_init(gpointer g_iface, gpointer iface_data);
58 #endif /*MY_ATK_TEXT_H*/