/* PIKA - Photo and Image Kooker Application * a rebranding of The GNU Image Manipulation Program (created with heckimp) * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio * * Original copyright, applying to most contents (license remains unchanged): * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * PikaTextBuffer * Copyright (C) 2010 Michael Natterer * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __PIKA_TEXT_BUFFER_H__ #define __PIKA_TEXT_BUFFER_H__ #define PIKA_TYPE_TEXT_BUFFER (pika_text_buffer_get_type ()) #define PIKA_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_TEXT_BUFFER, PikaTextBuffer)) #define PIKA_IS_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_TEXT_BUFFER)) #define PIKA_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_TEXT_BUFFER, PikaTextBufferClass)) #define PIKA_IS_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_TEXT_BUFFER)) typedef struct _PikaTextBufferClass PikaTextBufferClass; struct _PikaTextBuffer { GtkTextBuffer parent_instance; GtkTextTag *bold_tag; GtkTextTag *italic_tag; GtkTextTag *underline_tag; GtkTextTag *strikethrough_tag; GList *size_tags; GList *baseline_tags; GList *kerning_tags; GList *font_tags; GList *color_tags; GtkTextTag *preedit_underline_tag; GList *preedit_color_tags; GList *preedit_bg_color_tags; gboolean insert_tags_set; GList *insert_tags; GList *remove_tags; GdkAtom markup_atom; }; struct _PikaTextBufferClass { GtkTextBufferClass parent_class; void (* color_applied) (PikaTextBuffer *buffer, const PikaRGB *color); }; GType pika_text_buffer_get_type (void) G_GNUC_CONST; PikaTextBuffer * pika_text_buffer_new (void); void pika_text_buffer_set_text (PikaTextBuffer *buffer, const gchar *text); gchar * pika_text_buffer_get_text (PikaTextBuffer *buffer); void pika_text_buffer_set_markup (PikaTextBuffer *buffer, const gchar *markup); gchar * pika_text_buffer_get_markup (PikaTextBuffer *buffer); gboolean pika_text_buffer_has_markup (PikaTextBuffer *buffer); GtkTextTag * pika_text_buffer_get_iter_size (PikaTextBuffer *buffer, const GtkTextIter *iter, gint *size); GtkTextTag * pika_text_buffer_get_size_tag (PikaTextBuffer *buffer, gint size); void pika_text_buffer_set_size (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, gint size); void pika_text_buffer_change_size (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, gint amount); GtkTextTag * pika_text_buffer_get_iter_baseline (PikaTextBuffer *buffer, const GtkTextIter *iter, gint *baseline); void pika_text_buffer_set_baseline (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, gint count); void pika_text_buffer_change_baseline (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, gint count); GtkTextTag * pika_text_buffer_get_iter_kerning (PikaTextBuffer *buffer, const GtkTextIter *iter, gint *kerning); void pika_text_buffer_set_kerning (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, gint count); void pika_text_buffer_change_kerning (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, gint count); GtkTextTag * pika_text_buffer_get_iter_font (PikaTextBuffer *buffer, const GtkTextIter *iter, gchar **font); GtkTextTag * pika_text_buffer_get_font_tag (PikaTextBuffer *buffer, const gchar *font); void pika_text_buffer_set_font (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, const gchar *font); GtkTextTag * pika_text_buffer_get_iter_color (PikaTextBuffer *buffer, const GtkTextIter *iter, PikaRGB *color); GtkTextTag * pika_text_buffer_get_color_tag (PikaTextBuffer *buffer, const PikaRGB *color); void pika_text_buffer_set_color (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, const PikaRGB *color); GtkTextTag * pika_text_buffer_get_preedit_color_tag (PikaTextBuffer *buffer, const PikaRGB *color); void pika_text_buffer_set_preedit_color (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, const PikaRGB *color); GtkTextTag * pika_text_buffer_get_preedit_bg_color_tag (PikaTextBuffer *buffer, const PikaRGB *color); void pika_text_buffer_set_preedit_bg_color (PikaTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, const PikaRGB *color); const gchar * pika_text_buffer_tag_to_name (PikaTextBuffer *buffer, GtkTextTag *tag, const gchar **attribute, gchar **value); GtkTextTag * pika_text_buffer_name_to_tag (PikaTextBuffer *buffer, const gchar *name, const gchar *attribute, const gchar *value); void pika_text_buffer_set_insert_tags (PikaTextBuffer *buffer, GList *insert_tags, GList *remove_tags); void pika_text_buffer_clear_insert_tags (PikaTextBuffer *buffer); void pika_text_buffer_insert (PikaTextBuffer *buffer, const gchar *text); gint pika_text_buffer_get_iter_index (PikaTextBuffer *buffer, GtkTextIter *iter, gboolean layout_index); void pika_text_buffer_get_iter_at_index (PikaTextBuffer *buffer, GtkTextIter *iter, gint index, gboolean layout_index); gboolean pika_text_buffer_load (PikaTextBuffer *buffer, GFile *file, GError **error); gboolean pika_text_buffer_save (PikaTextBuffer *buffer, GFile *file, gboolean selection_only, GError **error); GList * pika_text_buffer_get_tags_on_iter (PikaTextBuffer *buffer, const GtkTextIter *iter); GList * pika_text_buffer_get_all_tags (PikaTextBuffer *buffer); #endif /* __PIKA_TEXT_BUFFER_H__ */