diff options
Diffstat (limited to 'libs/gtkmm2/pango/pangomm/glyphstring.h')
-rw-r--r-- | libs/gtkmm2/pango/pangomm/glyphstring.h | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/libs/gtkmm2/pango/pangomm/glyphstring.h b/libs/gtkmm2/pango/pangomm/glyphstring.h new file mode 100644 index 0000000000..7313e41766 --- /dev/null +++ b/libs/gtkmm2/pango/pangomm/glyphstring.h @@ -0,0 +1,223 @@ +// -*- c++ -*- +// Generated by gtkmmproc -- DO NOT MODIFY! +#ifndef _PANGOMM_GLYPHSTRING_H +#define _PANGOMM_GLYPHSTRING_H + +#include <glibmm.h> + +/* $Id$ */ + +/* glyphstring.h + * + * Copyright (C) 1998-1999 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/font.h> +#include <pangomm/glyph.h> +#include <pangomm/item.h> +#include <pango/pango-glyph.h> +#include <pango/pango-item.h> //For PangoAnalysis. + + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +extern "C" { typedef struct _PangoGlyphString PangoGlyphString; } +#endif + +namespace Pango +{ + +/** A Pango::GlyphString is used to store strings of glyphs with geometry and visual attribute information. + * It can be measured or drawn to the screen. + */ +class GlyphString +{ + public: +#ifndef DOXYGEN_SHOULD_SKIP_THIS + typedef GlyphString CppObjectType; + typedef PangoGlyphString BaseObjectType; + + static GType get_type() G_GNUC_CONST; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + + GlyphString(); + + explicit GlyphString(PangoGlyphString* gobject, bool make_a_copy = true); + + GlyphString(const GlyphString& other); + GlyphString& operator=(const GlyphString& other); + + ~GlyphString(); + + void swap(GlyphString& other); + + ///Provides access to the underlying C instance. + PangoGlyphString* gobj() { return gobject_; } + + ///Provides access to the underlying C instance. + const PangoGlyphString* gobj() const { return gobject_; } + + ///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs. + PangoGlyphString* gobj_copy() const; + +protected: + PangoGlyphString* gobject_; + +private: + + +public: + /** Construct a string of glyphs from a string of characters. + * Given a segment of text and the corresponding Pango::Analysis structure + * returned from Pango::Context::itemize(), convert the characters into glyphs. + * You may also pass in only a sub-string of the item. + * @param text The text to process. You must pass the same string into those member functions expecting a const Glib::ustring&. + * @param analysis The analysis information return from Pango::Context::itemize(). + */ + GlyphString(const Glib::ustring& text, const Analysis& analysis); + + + /** Resize a glyph string to the given length. + * @param new_len The new length of the string. + */ + void set_size (int new_len); + + + /** Compute the logical and ink extents of a glyph string. See the documentation + * for Pango::Font::get_glyph_extents() for details about the interpretation + * of the rectangles. + * @param font A Pango::Font. + * @param ink_rect Rectangle used to store the extents of the glyph string as drawn. + * @param logical_rect Rectangle used to store the logical extents of the glyph string. + */ + void get_extents(const Glib::RefPtr<const Font>& font, Rectangle& ink_rect, Rectangle& logical_rect) const; + + /** Computes the extents of a sub-portion of a glyph string. The extents are + * relative to the start of the glyph string range (the origin of their + * coordinate system is at the start of the range, not at the start of the entire + * glyph string). + * @param start Start index. + * @param end End index (the range is the set of bytes with + * indices such that start <= index < end). + * @param font A Pango::Font. + * @param ink_rect Rectangle used to store the extents of the glyph string range as drawn. + * @param logical_rect Rectangle used to store the logical extents of the glyph string range. + */ + void get_extents(int start, int end, const Glib::RefPtr<const Font>& font, Rectangle& ink_rect, Rectangle& logical_rect) const; + + /** Computes the extents of the glyph string as drawn. + * @param font A Pango::Font. + * @return The extents of the glyph string as drawn. + */ + Rectangle get_ink_extents(const Glib::RefPtr<const Font>& font) const; + + /** Computes the extents of a sub-portion of the glyph string as drawn. + * @param start The start index. + * @param end The end index. + * @param font A Panog::Font + * @return The extents of the sub-portion of the glyph string as drawn. + */ + Rectangle get_ink_extents(int start, int end, const Glib::RefPtr<const Font>& font) const; + + /** Computes the logical extents of a sub-portion of the glyph string. + * @param font A Pango::Font. + * @return The logical extents of the glyph string. + */ + Rectangle get_logical_extents(const Glib::RefPtr<const Font>& font) const; + + /** Computes the logical extents of a sub-portion of the glyph string. + * @param start The start index. + * @param end The end index. + * @param font A Pango::Font. + * @return The logical extents of the sub-portion of the glyph string. + */ + Rectangle get_logical_extents(int start, int end, const Glib::RefPtr<const Font>& font) const; + + /** Determine the screen width corresponding to each character. + * When multiple characters compose a single cluster, the width of the entire cluster + * is divided equally among the characters. + * @param text The text corresponding to the glyphs. + * @param embedding_level The embedding level of the string. + * @return An array of integers representing the resulting character widths. + */ + Glib::ArrayHandle<int> get_logical_widths(const Glib::ustring& text, int embedding_level) const; + + /** Converts from character position to x position. + * (X position is measured from the left edge of the run). Character positions are computed by dividing up each cluster into equal portions. + * @param text The text corresponding to the glyphs. + * @param analysis The analysis information return from Pango::Context::itemize(). + * @param index The byte index within text. + * @param trailing Whether we should compute the result for the beginning or end of the character. + * @return The x position. + */ + int index_to_x(const Glib::ustring& text, const Analysis& analysis, int index, bool trailing) const; + + /** Convert from x offset to character position. + * Character positions are computed by dividing up each cluster into equal portions. + * In scripts where positioning within a cluster is not allowed (such as Thai), + * the returned value may not be a valid cursor position; the caller must combine the + * result with the logical attributes for the text to compute the valid cursor position. + * @param text The text corresponding to the glyphs. + * @param analysis The analysis information return from Pango::Context::itemize(). + * @param x_pos The x offset (in thousands of a device unit). + * @param index The location to store calculated byte index within. + * @param trailing The location to store a boolean indicating whether the user clicked on the leading or trailing edge of the character. + */ + void x_to_index(const Glib::ustring& text, const Analysis& analysis, int x_pos, int& index, bool& trailing) const; + + /** Gharacter positions are computed by dividing up each cluster into equal portions. + * @return An array of Pango::GlyphInfo objects. + */ + Glib::ArrayHandle<GlyphInfo> get_glyphs() const; + + +}; + +} //namespace Pango + + +namespace Pango +{ + +/** @relates Pango::GlyphString + * @param lhs The left-hand side + * @param rhs The right-hand side + */ +inline void swap(GlyphString& lhs, GlyphString& rhs) + { lhs.swap(rhs); } + +} // namespace Pango + +namespace Glib +{ + +/** @relates Pango::GlyphString + * @param object The C instance + * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. + * @result A C++ instance that wraps this C instance. + */ +Pango::GlyphString wrap(PangoGlyphString* object, bool take_copy = false); + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +template <> +class Value<Pango::GlyphString> : public Glib::Value_Boxed<Pango::GlyphString> +{}; +#endif /* DOXYGEN_SHOULD_SKIP_THIS */ + +} // namespace Glib + +#endif /* _PANGOMM_GLYPHSTRING_H */ + |