summaryrefslogtreecommitdiff
path: root/libs/gtkmm2/pango/pangomm/layoutiter.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gtkmm2/pango/pangomm/layoutiter.h')
-rw-r--r--libs/gtkmm2/pango/pangomm/layoutiter.h235
1 files changed, 235 insertions, 0 deletions
diff --git a/libs/gtkmm2/pango/pangomm/layoutiter.h b/libs/gtkmm2/pango/pangomm/layoutiter.h
new file mode 100644
index 0000000000..ccb24ded81
--- /dev/null
+++ b/libs/gtkmm2/pango/pangomm/layoutiter.h
@@ -0,0 +1,235 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _PANGOMM_LAYOUTITER_H
+#define _PANGOMM_LAYOUTITER_H
+
+#include <glibmm.h>
+
+/* $Id$ */
+
+/* layoutiter.h
+ *
+ * Copyright 2001-2002 The gtkmm Development Team
+ *
+ * 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, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <pangomm/layoutline.h>
+#include <pangomm/layoutrun.h>
+#include <pango/pango-layout.h>
+
+
+namespace Pango
+{
+
+/** A Pango::LayoutIter can be used to iterate over the visual extents of a Pango::Layout.
+ */
+class LayoutIter
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef LayoutIter CppObjectType;
+ typedef PangoLayoutIter BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+
+public:
+ // There's no other ctor, and the default ctor creates an invalid object.
+ // Therefore, Pango::LayoutIter is usable only as output argument.
+ LayoutIter();
+ ~LayoutIter();
+
+
+ /** Gets the current byte index. Note that iterating forward by char
+ * moves in visual order, not logical order, so indexes may not be
+ * sequential. Also, the index may be equal to the length of the text
+ * in the layout, if on the <tt>0</tt> run (see pango_layout_iter_get_run()).
+ * @return Current byte index.
+ */
+ int get_index() const;
+
+ /** Gets the current run. When iterating by run, at the end of each
+ * line, there's a position with a <tt>0</tt> run, so this function can return
+ * <tt>0</tt>. The <tt>0</tt> run at the end of each line ensures that all lines have
+ * at least one run, even lines consisting of only a newline.
+ * @return The current run.
+ */
+ LayoutRun get_run() const;
+
+ /** Gets the current line.
+ * @return The current line.
+ */
+ Glib::RefPtr<LayoutLine> get_line() const;
+
+ /** Determines whether @a iter is on the last line of the layout.
+ * @return <tt>true</tt> if @a iter is on the last line.
+ */
+ bool at_last_line() const;
+
+
+ /** Moves @a iter forward to the next character in visual order. If @a iter was already at
+ * the end of the layout, returns <tt>false</tt>.
+ * @return Whether motion was possible.
+ */
+ bool next_char();
+
+ /** Moves @a iter forward to the next cluster in visual order. If @a iter
+ * was already at the end of the layout, returns <tt>false</tt>.
+ * @return Whether motion was possible.
+ */
+ bool next_cluster();
+
+ /** Moves @a iter forward to the next run in visual order. If @a iter was
+ * already at the end of the layout, returns <tt>false</tt>.
+ * @return Whether motion was possible.
+ */
+ bool next_run();
+
+ /** Moves @a iter forward to the start of the next line. If @a iter is
+ * already on the last line, returns <tt>false</tt>.
+ * @return Whether motion was possible.
+ */
+ bool next_line();
+
+ /** Gets the extents of the current character, in layout coordinates (origin is the top left of the entire layout).
+ * Only logical extents can sensibly be obtained for characters; ink extents make sense only down to the level of clusters.
+ * @return The logical extents of the current character.
+ */
+ Rectangle get_char_extents() const;
+
+
+ /** Gets the extents of the current cluster, in layout coordinates
+ * (origin is the top left of the entire layout).
+ * @param ink_rect Rectangle to fill with ink extents.
+ * @param logical_rect Rectangle to fill with logical extents.
+ */
+ void get_cluster_extents(Rectangle& ink_rect, Rectangle& logical_rect) const;
+
+ /** Gets the ink extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).
+ * @return The extents of the current cluster as drawn.
+ */
+ Rectangle get_cluster_ink_extents() const;
+
+ /** Gets the logical extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).
+ * @return The logical extents of the current cluster.
+ */
+ Rectangle get_cluster_logical_extents() const;
+
+
+ /** Gets the extents of the current run in layout coordinates
+ * (origin is the top left of the entire layout).
+ * @param ink_rect Rectangle to fill with ink extents.
+ * @param logical_rect Rectangle to fill with logical extents.
+ */
+ void get_run_extents(Rectangle& ink_rect, Rectangle& logical_rect) const;
+
+ /** Gets the ink extents of the current run in layout coordinates (origin is the top left of the entire layout).
+ * @return The extents of the current run as drawn.
+ */
+ Rectangle get_run_ink_extents() const;
+
+ /** Gets the logical extents of the current run in layout coordinates (origin is the top left of the entire layout).
+ * @return The logical extents of the current run.
+ */
+ Rectangle get_run_logical_extents() const;
+
+
+ /** Obtains the extents of the current line. @a ink_rect or @a logical_rect
+ * can be <tt>0</tt> if you aren't interested in them. Extents are in layout
+ * coordinates (origin is the top-left corner of the entire
+ * Pango::Layout). Thus the extents returned by this function will be
+ * the same width/height but not at the same x/y as the extents
+ * returned from pango_layout_line_get_extents().
+ * @param ink_rect Rectangle to fill with ink extents.
+ * @param logical_rect Rectangle to fill with logical extents.
+ */
+ void get_line_extents(Rectangle& ink_rect, Rectangle& logical_rect) const;
+
+ /** Obtains the ink extents of the current line.
+ * @return The extents of the current line as drawn.
+ */
+ Rectangle get_line_ink_extents() const;
+
+ /** Obtains the logical extents of the current line.
+ * @return The logical extents of the current line.
+ */
+ Rectangle get_line_logical_extents() const;
+
+
+ /** Divides the vertical space in the Pango::Layout being iterated over
+ * between the lines in the layout, and returns the space belonging to
+ * the current line. A line's range includes the line's logical
+ * extents, plus half of the spacing above and below the line, if
+ * pango_layout_set_spacing() has been called to set layout spacing.
+ * The y positions are in layout coordinates (origin at top left of the
+ * entire layout).
+ * @param y0 Start of line.
+ * @param y1 End of line.
+ */
+ void get_line_yrange(int& y0, int& y1) const;
+
+
+ /** Obtains the extents of the Pango::Layout being iterated
+ * over. @a ink_rect or @a logical_rect can be <tt>0</tt> if you
+ * aren't interested in them.
+ * @param ink_rect Rectangle to fill with ink extents.
+ * @param logical_rect Rectangle to fill with logical extents.
+ */
+ void get_layout_extents(Rectangle& ink_rect, Rectangle& logical_rect) const;
+
+ /** Obtains the ink extents of the Pango::Layout being iterated over.
+ * @return The extents of the layout as drawn.
+ */
+ Rectangle get_layout_ink_extents() const;
+
+ /** Obtains the logical extents of the Pango::Layout being iterated over.
+ * @return The logical extents of the layout.
+ */
+ Rectangle get_layout_logical_extents() const;
+
+
+ /** Gets the y position of the current line's baseline, in layout
+ * coordinates (origin at top left of the entire layout).
+ * @return Baseline of current line.
+ */
+ int get_baseline() const;
+
+ /// Provides access to the underlying C GObject.
+ PangoLayoutIter* gobj() { return gobject_; }
+ /// Provides access to the underlying C GObject.
+ const PangoLayoutIter* gobj() const { return gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ void assign_gobj(PangoLayoutIter* src);
+#endif
+
+protected:
+ PangoLayoutIter* gobject_;
+
+private:
+ // noncopyable
+ LayoutIter(const LayoutIter&);
+ LayoutIter& operator=(const LayoutIter&);
+
+
+};
+
+} //namespace Pango
+
+
+#endif /* _PANGOMM_LAYOUTITER_H */
+