summaryrefslogtreecommitdiff
path: root/gtk/gtktextbufferrichtext.h
blob: ecc11001b7c60f9079bc1dba2a649af5b14e7221 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* gtkrichtext.h
 *
 * Copyright (C) 2006 Imendio AB
 * Contact: Michael Natterer <mitch@imendio.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __GTK_TEXT_BUFFER_RICH_TEXT_H__
#define __GTK_TEXT_BUFFER_RICH_TEXT_H__

#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

#include <gtk/gtktextbuffer.h>

G_BEGIN_DECLS

/**
 * GtkTextBufferSerializeFunc:
 * @register_buffer: the #GtkTextBuffer for which the format is registered
 * @content_buffer: the #GtkTextBuffer to serialize
 * @start: start of the block of text to serialize
 * @end: end of the block of text to serialize
 * @length: Return location for the length of the serialized data
 * @user_data: user data that was specified when registering the format
 *
 * A function that is called to serialize the content of a text buffer.
 * It must return the serialized form of the content.
 *
 * Returns: (nullable): a newly-allocated array of guint8 which contains
 * the serialized data, or %NULL if an error occurred
 */
typedef guint8 * (* GtkTextBufferSerializeFunc)   (GtkTextBuffer     *register_buffer,
                                                   GtkTextBuffer     *content_buffer,
                                                   const GtkTextIter *start,
                                                   const GtkTextIter *end,
                                                   gsize             *length,
                                                   gpointer           user_data);

/**
 * GtkTextBufferDeserializeFunc:
 * @register_buffer: the #GtkTextBuffer the format is registered with
 * @content_buffer: the #GtkTextBuffer to deserialize into
 * @iter: insertion point for the deserialized text
 * @data: (array length=length): data to deserialize
 * @length: length of @data
 * @create_tags: %TRUE if deserializing may create tags
 * @user_data: user data that was specified when registering the format
 * @error: return location for a #GError
 *
 * A function that is called to deserialize rich text that has been
 * serialized with gtk_text_buffer_serialize(), and insert it at @iter.
 *
 * Returns: %TRUE on success, %FALSE otherwise
 */
typedef gboolean (* GtkTextBufferDeserializeFunc) (GtkTextBuffer     *register_buffer,
                                                   GtkTextBuffer     *content_buffer,
                                                   GtkTextIter       *iter,
                                                   const guint8      *data,
                                                   gsize              length,
                                                   gboolean           create_tags,
                                                   gpointer           user_data,
                                                   GError           **error);

GDK_AVAILABLE_IN_ALL
GdkAtom   gtk_text_buffer_register_serialize_format   (GtkTextBuffer                *buffer,
                                                       const gchar                  *mime_type,
                                                       GtkTextBufferSerializeFunc    function,
                                                       gpointer                      user_data,
                                                       GDestroyNotify                user_data_destroy);
GDK_AVAILABLE_IN_ALL
GdkAtom   gtk_text_buffer_register_serialize_tagset   (GtkTextBuffer                *buffer,
                                                       const gchar                  *tagset_name);

GDK_AVAILABLE_IN_ALL
GdkAtom   gtk_text_buffer_register_deserialize_format (GtkTextBuffer                *buffer,
                                                       const gchar                  *mime_type,
                                                       GtkTextBufferDeserializeFunc  function,
                                                       gpointer                      user_data,
                                                       GDestroyNotify                user_data_destroy);
GDK_AVAILABLE_IN_ALL
GdkAtom   gtk_text_buffer_register_deserialize_tagset (GtkTextBuffer                *buffer,
                                                       const gchar                  *tagset_name);

GDK_AVAILABLE_IN_ALL
void    gtk_text_buffer_unregister_serialize_format   (GtkTextBuffer                *buffer,
                                                       GdkAtom                       format);
GDK_AVAILABLE_IN_ALL
void    gtk_text_buffer_unregister_deserialize_format (GtkTextBuffer                *buffer,
                                                       GdkAtom                       format);

GDK_AVAILABLE_IN_ALL
void     gtk_text_buffer_deserialize_set_can_create_tags (GtkTextBuffer             *buffer,
                                                          GdkAtom                    format,
                                                          gboolean                   can_create_tags);
GDK_AVAILABLE_IN_ALL
gboolean gtk_text_buffer_deserialize_get_can_create_tags (GtkTextBuffer             *buffer,
                                                          GdkAtom                    format);

GDK_AVAILABLE_IN_ALL
GdkAtom * gtk_text_buffer_get_serialize_formats       (GtkTextBuffer                *buffer,
                                                       gint                         *n_formats);
GDK_AVAILABLE_IN_ALL
GdkAtom * gtk_text_buffer_get_deserialize_formats     (GtkTextBuffer                *buffer,
                                                       gint                         *n_formats);

GDK_AVAILABLE_IN_ALL
guint8  * gtk_text_buffer_serialize                   (GtkTextBuffer                *register_buffer,
                                                       GtkTextBuffer                *content_buffer,
                                                       GdkAtom                       format,
                                                       const GtkTextIter            *start,
                                                       const GtkTextIter            *end,
                                                       gsize                        *length);
GDK_AVAILABLE_IN_ALL
gboolean  gtk_text_buffer_deserialize                 (GtkTextBuffer                *register_buffer,
                                                       GtkTextBuffer                *content_buffer,
                                                       GdkAtom                       format,
                                                       GtkTextIter                  *iter,
                                                       const guint8                 *data,
                                                       gsize                         length,
                                                       GError                      **error);

G_END_DECLS

#endif /* __GTK_TEXT_BUFFER_RICH_TEXT_H__ */