X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtktextlayout.h;h=819aaf23692e196e8e1da55a8d872cd289f2ca09;hb=d97861bd8b338c3d25d7ffb5496edee9eee9bfbb;hp=c794e3b9b7878874211d970fc269ee69be335cb9;hpb=e5d1ea8cfefac95f9011fffcff66345e4d2de70d;p=~andy%2Fgtk diff --git a/gtk/gtktextlayout.h b/gtk/gtktextlayout.h index c794e3b9b..819aaf236 100644 --- a/gtk/gtktextlayout.h +++ b/gtk/gtktextlayout.h @@ -23,8 +23,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * License along with this library. If not, see . * * Original Tk license: * @@ -76,12 +75,8 @@ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ -#ifndef GTK_TEXT_LAYOUT_H -#define GTK_TEXT_LAYOUT_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +#ifndef __GTK_TEXT_LAYOUT_H__ +#define __GTK_TEXT_LAYOUT_H__ /* This is a "semi-private" header; it is intended for * use by the text widget, and the text canvas item, @@ -93,8 +88,9 @@ extern "C" { #error "You are not supposed to be including this file; the equivalent public API is in gtktextview.h" #endif -#include -#include +#include + +G_BEGIN_DECLS /* forward declarations that have to be here to avoid including * gtktextbtree.h @@ -112,7 +108,6 @@ typedef struct _GtkTextLineData GtkTextLineData; typedef struct _GtkTextLayout GtkTextLayout; typedef struct _GtkTextLayoutClass GtkTextLayoutClass; typedef struct _GtkTextLineDisplay GtkTextLineDisplay; -typedef struct _GtkTextCursorDisplay GtkTextCursorDisplay; typedef struct _GtkTextAttrAppearance GtkTextAttrAppearance; struct _GtkTextLayout @@ -163,7 +158,12 @@ struct _GtkTextLayout /* For what GtkTextDirection to draw cursor GTK_TEXT_DIR_NONE - * means draw both cursors. */ - gint cursor_direction : 2; + guint cursor_direction : 2; + + /* The keyboard direction is used to default the alignment when + there are no strong characters. + */ + guint keyboard_direction : 2; /* The preedit string and attributes, if any */ @@ -171,6 +171,8 @@ struct _GtkTextLayout PangoAttrList *preedit_attrs; gint preedit_len; gint preedit_cursor; + + guint overwrite_mode : 1; }; struct _GtkTextLayoutClass @@ -206,11 +208,14 @@ struct _GtkTextLayoutClass gint x, gint y); + void (*invalidate_cursors) (GtkTextLayout *layout, + const GtkTextIter *start, + const GtkTextIter *end); + /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); void (*_gtk_reserved3) (void); - void (*_gtk_reserved4) (void); }; struct _GtkTextAttrAppearance @@ -218,20 +223,12 @@ struct _GtkTextAttrAppearance PangoAttribute attr; GtkTextAppearance appearance; }; -struct _GtkTextCursorDisplay -{ - gint x; - gint y; - gint height; - guint is_strong : 1; - guint is_weak : 1; -}; + struct _GtkTextLineDisplay { PangoLayout *layout; - GSList *cursors; - GSList *shaped_objects; - + GArray *cursors; /* indexes of cursors in the PangoLayout */ + GtkTextDirection direction; gint width; /* Width of layout */ @@ -247,11 +244,22 @@ struct _GtkTextLineDisplay gint bottom_margin; gint insert_index; /* Byte index of insert cursor within para or -1 */ - gboolean size_only; GtkTextLine *line; + + GdkColor *pg_bg_color; + + GdkRectangle block_cursor; + guint cursors_invalid : 1; + guint has_block_cursor : 1; + guint cursor_at_line_end : 1; + guint size_only : 1; + + GdkRGBA *pg_bg_rgba; }; -extern PangoAttrType gtk_text_attr_appearance_type; +#ifdef GTK_COMPILATION +extern G_GNUC_INTERNAL PangoAttrType gtk_text_attr_appearance_type; +#endif GType gtk_text_layout_get_type (void) G_GNUC_CONST; @@ -265,7 +273,11 @@ void gtk_text_layout_set_contexts (GtkTextLayout *lay PangoContext *ltr_context, PangoContext *rtl_context); void gtk_text_layout_set_cursor_direction (GtkTextLayout *layout, - GtkTextDirection direction); + GtkTextDirection direction); +void gtk_text_layout_set_overwrite_mode (GtkTextLayout *layout, + gboolean overwrite); +void gtk_text_layout_set_keyboard_direction (GtkTextLayout *layout, + GtkTextDirection keyboard_dir); void gtk_text_layout_default_style_changed (GtkTextLayout *layout); void gtk_text_layout_set_screen_width (GtkTextLayout *layout, @@ -312,9 +324,17 @@ void gtk_text_layout_get_iter_at_pixel (GtkTextLayout *layout, GtkTextIter *iter, gint x, gint y); +void gtk_text_layout_get_iter_at_position (GtkTextLayout *layout, + GtkTextIter *iter, + gint *trailing, + gint x, + gint y); void gtk_text_layout_invalidate (GtkTextLayout *layout, const GtkTextIter *start, const GtkTextIter *end); +void gtk_text_layout_invalidate_cursors(GtkTextLayout *layout, + const GtkTextIter *start, + const GtkTextIter *end); void gtk_text_layout_free_line_data (GtkTextLayout *layout, GtkTextLine *line, GtkTextLineData *line_data); @@ -322,8 +342,8 @@ void gtk_text_layout_free_line_data (GtkTextLayout *layout, gboolean gtk_text_layout_is_valid (GtkTextLayout *layout); void gtk_text_layout_validate_yrange (GtkTextLayout *layout, GtkTextIter *anchor_line, - gint y0, - gint y1); + gint y0_, + gint y1_); void gtk_text_layout_validate (GtkTextLayout *layout, gint max_pixels); @@ -341,6 +361,10 @@ void gtk_text_layout_changed (GtkTextLayout *layout, gint y, gint old_height, gint new_height); +void gtk_text_layout_cursors_changed (GtkTextLayout *layout, + gint y, + gint old_height, + gint new_height); void gtk_text_layout_get_iter_location (GtkTextLayout *layout, const GtkTextIter *iter, GdkRectangle *rect); @@ -356,6 +380,8 @@ void gtk_text_layout_get_cursor_locations (GtkTextLayout *layout, GtkTextIter *iter, GdkRectangle *strong_pos, GdkRectangle *weak_pos); +gboolean _gtk_text_layout_get_block_cursor (GtkTextLayout *layout, + GdkRectangle *pos); gboolean gtk_text_layout_clamp_iter_to_vrange (GtkTextLayout *layout, GtkTextIter *iter, gint top, @@ -402,8 +428,6 @@ void gtk_text_anchored_child_set_layout (GtkWidget *child, void gtk_text_layout_spew (GtkTextLayout *layout); -#ifdef __cplusplus -} -#endif /* __cplusplus */ +G_END_DECLS -#endif /* GTK_TEXT_LAYOUT_H */ +#endif /* __GTK_TEXT_LAYOUT_H__ */