Code

Filters. Custom predefined filters update and new ABC filters.
[inkscape.git] / src / text-editing.h
1 #ifndef SEEN_SP_TEXT_EDITING_H
2 #define SEEN_SP_TEXT_EDITING_H
4 /*
5  * Text editing functions common for for text and flowtext
6  *
7  * Authors:
8  *   bulia byak
9  *   Richard Hughes
10  *
11  * Copyright (C) 2004-5 authors
12  *
13  * Released under GNU GPL, read the file 'COPYING' for more information
14  */
16 #include <glib/gtypes.h>
17 #include <utility>   // std::pair
18 #include "libnrtype/Layout-TNG.h"
19 #include <libnr/nr-forward.h>
20 #include "text-tag-attributes.h"
22 class SPCSSAttr;
23 struct SPItem;
24 struct SPObject;
25 struct SPStyle;
27 typedef std::pair<Inkscape::Text::Layout::iterator, Inkscape::Text::Layout::iterator> iterator_pair; 
30 Inkscape::Text::Layout const * te_get_layout (SPItem const *item);
32 /** Returns true if there are no visible characters on the canvas. */
33 bool sp_te_output_is_empty(SPItem const *item);
35 /** Returns true if the user has typed nothing in the text box. */
36 bool sp_te_input_is_empty(SPObject const *item);
38 /** Recursively gets the length of all the SPStrings at or below the given
39 \a item. Also adds 1 for each line break encountered. */
40 unsigned sp_text_get_length(SPObject const *item);
42 /** Recursively gets the length of all the SPStrings at or below the given
43 \a item, before and not including \a upto. Also adds 1 for each line break encountered. */
44 unsigned sp_text_get_length_upto(SPObject const *item, SPObject const *upto);
46 std::vector<Geom::Point> sp_te_create_selection_quads(SPItem const *item, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, Geom::Matrix const &transform);
48 Inkscape::Text::Layout::iterator sp_te_get_position_by_coords (SPItem const *item, Geom::Point const &i_p);
49 void sp_te_get_cursor_coords (SPItem const *item, Inkscape::Text::Layout::iterator const &position, Geom::Point &p0, Geom::Point &p1);
50 double sp_te_get_average_linespacing (SPItem *text);
52 SPStyle const * sp_te_style_at_position(SPItem const *text, Inkscape::Text::Layout::iterator const &position);
53 SPObject const * sp_te_object_at_position(SPItem const *text, Inkscape::Text::Layout::iterator const &position);
55 Inkscape::Text::Layout::iterator sp_te_insert(SPItem *item, Inkscape::Text::Layout::iterator const &position, gchar const *utf8);
56 Inkscape::Text::Layout::iterator sp_te_replace(SPItem *item, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, gchar const *utf8);
57 Inkscape::Text::Layout::iterator sp_te_insert_line (SPItem *text, Inkscape::Text::Layout::iterator const &position);
58 bool sp_te_delete (SPItem *item, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, iterator_pair &iter_pair);
60 gchar *sp_te_get_string_multiline(SPItem const *text);
61 Glib::ustring sp_te_get_string_multiline(SPItem const *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end);
62 void sp_te_set_repr_text_multiline(SPItem *text, gchar const *str);
64 TextTagAttributes*
65 text_tag_attributes_at_position(SPItem *item, Inkscape::Text::Layout::iterator const &position, unsigned *char_index);
67 void sp_te_adjust_kerning_screen(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, Geom::Point by);
68 void sp_te_adjust_dx (SPItem *item, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, double delta);
69 void sp_te_adjust_dy (SPItem *item, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, double delta);
71 void sp_te_adjust_rotation_screen(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, gdouble pixels);
72 void sp_te_adjust_rotation(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, gdouble degrees);
73 void sp_te_set_rotation(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, gdouble degrees);
75 void sp_te_adjust_tspan_letterspacing_screen(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, gdouble by);
76 void sp_te_adjust_linespacing_screen(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPDesktop *desktop, gdouble by);
77 void sp_te_apply_style(SPItem *text, Inkscape::Text::Layout::iterator const &start, Inkscape::Text::Layout::iterator const &end, SPCSSAttr const *css);
79 bool is_part_of_text_subtree (SPObject *obj);
80 bool is_top_level_text_object (SPObject *obj);
81 bool has_visible_text (SPObject *obj);
83 #endif // SEEN_SP_TEXT_EDITING_H