// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _PANGOMM_CONTEXT_H #define _PANGOMM_CONTEXT_H #include /* $Id$ */ /* context.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 #include #include #include #include #include #include #include #include #include //For Matrix #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _PangoContext PangoContext; typedef struct _PangoContextClass PangoContextClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Pango { class Context_Class; } // namespace Pango namespace Pango { /** @addtogroup pangommEnums Enums and Flags */ /** * @ingroup pangommEnums */ enum Direction { DIRECTION_LTR, DIRECTION_RTL, DIRECTION_TTB_LTR, DIRECTION_TTB_RTL, DIRECTION_WEAK_LTR, DIRECTION_WEAK_RTL, DIRECTION_NEUTRAL }; } // namespace Pango #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Pango { /** A Pango::Context stores global information used to control the itemization process. * You can retrieve a Pango::Context object with Gtk::Widget::create_pango_context() or * Gtk::Widget::get_pango_context(). If you don't use gtkmm call some c function of the * pango backend you intend to use and create a wrapper for the returned context, * e.g. Glib::wrap(pango_x_get_context()). * * Creating a Pango::Context object is the starting point of every rendering process. * You can either use it to create a high level Pango::Layout object which does all * the hard work for you by passing it into * Pango::Layout::create() or to generate glyph strings from character strings with * the help of itemize() and Pango::Item::shape() subsequently. * * Which fonts are used for rendering can be influenced by setting the default * font description, language and base direction of the context. * * If you want to calculate the space some text will need to be displayed you * might find the functions of Pango::FontMetrics useful. Use get_metrics() to * obtain the Pango::FontMetrics object for a specific Pango::FontDescription. * For more detailed calculations in a rendering-system-independant manner * and to determine whether specific characters can be represented by the * font that would be used for a specific Pango::FontDescription load a * Pango::Fontset with load_fontset() (load_font() returns the Pango::Font * that is the closest match for a Pango::FontDescription; however that's not * necessarily the font that will be used for rendering). */ class Context : public Glib::Object { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: typedef Context CppObjectType; typedef Context_Class CppClassType; typedef PangoContext BaseObjectType; typedef PangoContextClass BaseClassType; private: friend class Context_Class; static CppClassType context_class_; private: // noncopyable Context(const Context&); Context& operator=(const Context&); protected: explicit Context(const Glib::ConstructParams& construct_params); explicit Context(PangoContext* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: virtual ~Context(); #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_type() G_GNUC_CONST; static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GObject. PangoContext* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const PangoContext* gobj() const { return reinterpret_cast(gobject_); } ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. PangoContext* gobj_copy(); private: //PANGO_ENABLE_BACKEND protected: Context(); public: /** List all available font families for a context. * You can specify one of these as your desired font family in the Pango::FontDesciption * objects you use, e.g. in the default font description of the context. * @return An array of Pango::FontFamily objects. */ Glib::ArrayHandle< Glib::RefPtr > list_families() const; /** Gets the Pango::Fontmap used to look up fonts for this context. * @return The font map for the Pango::Context. This value * is owned by Pango and should not be unreferenced. * * Since: 1.6. */ Glib::RefPtr get_font_map(); /** Gets the Pango::Fontmap used to look up fonts for this context. * @return The font map for the Pango::Context. This value * is owned by Pango and should not be unreferenced. * * Since: 1.6. */ Glib::RefPtr get_font_map() const; /** Loads the font in one of the fontmaps in the context * that is the closest match for @a desc . * @param desc A Pango::FontDescription describing the font to load. * @return The font loaded, or 0 if no font matched. */ Glib::RefPtr load_font(const FontDescription& desc) const; /** Load a set of fonts in the context that can be used to render * a font matching @a desc . * @param desc A Pango::FontDescription describing the fonts to load. * @param language A Pango::Language the fonts will be used for. * @return The fontset, or 0 if no font matched. */ Glib::RefPtr load_fontset(const FontDescription& desc, const Language& language) const; /** Get overall metric information for a particular font description. * The metrics may be substantially different for different scripts. However this * function overload returns the metrics of the entire font. * @param desc A Pango::FontDescription object. * @return A Pango::FontMetrics object. */ FontMetrics get_metrics(const FontDescription& desc) const; /** Get overall metric information for a font particular font * description. Since the metrics may be substantially different for * different scripts, a language tag can be provided to indicate that * the metrics should be retrieved that correspond to the script(s) * used by that language. * * The Pango::FontDescription is interpreted in the same way as * by pango_itemize(), and the family name may be a comma separated * list of figures. If characters from multiple of these families * would be used to render the string, then the returned fonts would * be a composite of the metrics for the fonts loaded for the * individual families. * @param desc A Pango::FontDescription structure. * @param language Language tag used to determine which script to get the metrics * for. * @return A Pango::Metrics object. */ FontMetrics get_metrics(const FontDescription& desc, const Language& language) const; /** Set the default font description for the context * @param desc The new pango font description. */ void set_font_description(const FontDescription& desc); /** Retrieve the default font description for the context. * @return A pointer to the context's default font description. * This value must not be modified or freed. */ FontDescription get_font_description() const; /** Retrieves the global language tag for the context. * @return The global language tag. */ Language get_language() const; /** Sets the global language tag for the context. * @param language The new language tag. */ void set_language(const Language& language); /** Sets the base direction for the context. * * The base direction is used in applying the Unicode bidirectional * algorithm; if the @a direction is Pango::DIRECTION_LTR or * Pango::DIRECTION_RTL, then the value will be used as the paragraph * direction in the Unicode bidirectional algorithm. A value of * Pango::DIRECTION_WEAK_LTR or Pango::DIRECTION_WEAK_RTL is used only * for paragraphs that do not contain any strong characters themselves. * @param direction The new base direction. */ void set_base_dir(Direction direction); /** Retrieves the base direction for the context. See * pango_context_set_base_dir(). * @return The base direction for the context. */ Direction get_base_dir() const; /** Sets the transformation matrix that will be applied when rendering * with this context. Note that reported metrics are in the user space * coordinates before the application of the matrix, not device-space * coordiantes after the application of the matrix. So, they don't scale * with the matrix, though they may change slightly for different * matrices, depending on how the text is fit to the pixel grid. * * Since: 1.6 * @param matrix A Pango::Matrix, or 0 to unset any existing matrix. * (No matrix set is the same as setting the identity matrix.). */ void set_matrix(const Matrix& matrix); Matrix get_matrix() const; /** Breaks a piece of text into segments with consistent directional level and shaping engine. * Each byte of @a text will be contained in exactly one of the items in the returned list. * The generated list of items will be in logical order (the start offsets of the items * are ascending). * @param text The text to itemize. * @param attrs The set of attributes that apply. * @return A list of Pango::Item objects. */ ListHandle_Item itemize(const Glib::ustring& text, const AttrList& attrs) const; /** Breaks a piece of text into segments with consistent directional level and shaping engine. * Each byte of @a text will be contained in exactly one of the items in the returned list. * The generated list of items will be in logical order (the start offsets of the items * are ascending). * * @a cached_iter should be an iterator over @a attrs currently positioned at a range before * or containing @a start_index. @a cached_iter will be advanced to the range covering the * position just after @a start_index + @a length. (i.e. if itemizing in a loop, just keep * passing in the same @a cached_iter). * * @param text The text to itemize. * @param start_index First byte in @a text to process. * @param length The number of bytes (not characters) to process after @a start_index. This must be >= 0. * @param attrs The set of attributes that apply to @a text. * @param cached_iter Cached attribute iterator. * @return A list of Pango::Item structures. */ ListHandle_Item itemize(const Glib::ustring& text, int start_index, int length, const AttrList& attrs, AttrIter& cached_iter) const; /** Updates a Pango Context previously created for use with Cairo to * match the current transformation and target surface of a Cairo * Context. If any layouts have been created for the context, * it's necessary to call Pango::Layout::context_changed() on those * layouts. * * @param context A Cairo context, from CairoFontMap::create_context(). */ void update_from_cairo_context(const Cairo::RefPtr& context); void set_cairo_font_options(const Cairo::FontOptions& options); Cairo::FontOptions get_font_options() const; void set_resolution(double dpi); double get_resolution() const; public: public: //C++ methods used to invoke GTK+ virtual functions: #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED protected: //GTK+ Virtual Functions (override these to change behaviour): #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED //Default Signal Handlers:: #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED }; } /* namespace Pango */ namespace Glib { /** @relates Pango::Context * @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. */ Glib::RefPtr wrap(PangoContext* object, bool take_copy = false); } #endif /* _PANGOMM_CONTEXT_H */