Reference Manual
Inti Logo
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

layout.h

Go to the documentation of this file.
00001 /*  Inti: Integrated Foundation Classes
00002  *  Copyright (C) 200-2003 The Inti Development Team.
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  */
00018  
00027 
00028 #ifndef INTI_PANGO_LAYOUT_H
00029 #define INTI_PANGO_LAYOUT_H
00030 
00031 #ifndef INTI_PANGO_ATTRIBUTES_H
00032 #include <inti/pango/attributes.h>
00033 #endif
00034 
00035 #ifndef INTI_PANGO_CONTEXT_H
00036 #include <inti/pango/context.h>
00037 #endif
00038 
00039 #ifndef INTI_PANGO_ITEM_H
00040 #include <inti/pango/item.h>
00041 #endif
00042 
00043 #ifndef INTI_PANGO_TABS_H
00044 #include <inti/pango/tabs.h>
00045 #endif
00046 
00047 #ifndef __PANGO_LAYOUT_H__
00048 #include <pango/pango-layout.h>
00049 #endif
00050 
00051 #ifndef _CPP_UTILITY
00052 #include <utility>
00053 #endif
00054 
00055 namespace Inti {
00056 
00057 namespace Gdk {
00058 class Region;
00059 }
00060 
00061 namespace Pango {
00062         
00063 class LogAttr;
00064 class GlyphString;
00065 
00070 
00071 enum Alignment
00072 {
00073         ALIGN_LEFT = PANGO_ALIGN_LEFT, 
00074         ALIGN_CENTER = PANGO_ALIGN_CENTER, 
00075         ALIGN_RIGHT = PANGO_ALIGN_RIGHT 
00076 };
00077 
00080 
00081 enum WrapMode
00082 {
00083         WRAP_WORD = PANGO_WRAP_WORD, 
00085 
00086         WRAP_CHAR = PANGO_WRAP_CHAR, 
00088 
00089         WRAP_WORD_CHAR = PANGO_WRAP_WORD_CHAR
00092 };
00093 
00101 
00102 class LayoutRun
00103 {
00104         PangoLayoutRun run_;
00105 
00106 public:
00109 
00110         PangoLayoutRun* pango_layout_run() const { return const_cast<PangoLayoutRun*>(&run_); }
00112 
00113         Pointer<Item> item() const;
00115 
00116         Pointer<GlyphString> glyphs() const;
00118 
00120 };
00121 
00130 
00131 class LayoutLine : public ReferencedObject
00132 {
00133         PangoLayoutLine *layout_line_;
00134 
00135 public:
00138 
00139         explicit LayoutLine(PangoLayoutLine *layout_line);
00142 
00143         LayoutLine(const LayoutLine& src);
00146 
00147         ~LayoutLine();
00149 
00150         LayoutLine& operator=(const LayoutLine& src);
00153 
00157 
00158         PangoLayoutLine* pango_layout_line() const { return layout_line_; }
00160 
00161         operator PangoLayoutLine* () const;
00163 
00164         int start_index() const;
00166 
00167         int length() const;
00169 
00170         std::vector<std::pair<int, int> > get_x_ranges(int start_index, int end_index) const;
00206 
00207         void get_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00216 
00217         void get_pixel_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00228         
00229         Pointer<Gdk::Region> get_clip_region(int x_origin, int y_origin, const std::vector<std::pair<int, int> >& index_ranges) const;
00248 
00252 
00253         bool x_to_index(int x_pos, int *index, int *trailing);
00265 
00266         int index_to_x(int index, bool trailing);
00271 
00273 };
00274 
00279 
00280 class LayoutIter : public ReferencedObject
00281 {
00282         LayoutIter(const LayoutIter&);
00283         LayoutIter& operator=(const LayoutIter&);
00284 
00285         PangoLayoutIter *iter_;
00286 
00287 public:
00290 
00291         explicit LayoutIter(PangoLayoutIter *iter);
00297 
00298         ~LayoutIter();
00300 
00304 
00305         PangoLayoutIter* pango_layout_iter() const { return (PangoLayoutIter*)iter_; }
00307 
00308         operator PangoLayoutIter* () const;
00310 
00311         int get_index() const;
00318 
00319         LayoutRun* get_run() const;
00326 
00327         Pointer<LayoutLine> get_line() const;
00329 
00330         bool at_last_line() const;
00332         
00333         void get_char_extents(Rectangle& logical_rect) const;
00341 
00342         Rectangle get_char_extents() const;
00345 
00346         void get_cluster_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00351 
00352         void get_run_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00357 
00358         void get_line_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00368 
00369         void get_line_yrange(int *y0, int *y1) const;
00379 
00380         void get_layout_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00387 
00388         int get_baseline() const;
00392 
00396 
00397         bool next_char();
00402 
00403         bool next_cluster();
00408 
00409         bool next_run();
00414 
00415         bool next_line();
00420 
00422 };
00423 
00449 
00450 class Layout : public G::Object
00451 {
00452         friend class G::Object;
00453 
00454         Layout(const Layout&);
00455         Layout& operator=(const Layout&);
00456 
00457 protected:
00460 
00461         explicit Layout(PangoLayout *layout, bool reference = true);
00468 
00470 
00471 public:
00474         
00475         explicit Layout(const Context& context);
00479 
00480         virtual ~Layout();
00482 
00486 
00487         PangoLayout* pango_layout() const { return (PangoLayout*)instance; }
00489 
00490         PangoLayoutClass* pango_layout_class() const;
00492 
00493         operator PangoLayout* () const;
00495 
00496         Context* get_context() const;
00500         
00501         Pointer<AttrList> get_attributes() const;
00503         
00504         String get_text() const;
00507 
00508         int get_width() const;
00511 
00512         WrapMode get_wrap() const;
00514         
00515         int get_indent() const;
00517         
00518         int get_spacing() const;
00520         
00521         bool get_justify() const;
00524 
00525         Alignment get_alignment() const;
00529 
00530         Pointer<TabArray> get_tabs() const;
00536         
00537         bool get_single_paragraph_mode() const;
00540 
00541         bool get_logical_attributes(std::vector<LogAttr>& attrs) const;
00547 
00548         void get_cursor_pos(int index, Rectangle *strong_pos, Rectangle *weak_pos) const;
00560 
00561         void get_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00571 
00572         void get_pixel_extents(Rectangle *ink_rect, Rectangle *logical_rect) const;
00581 
00582         void get_size(int *width, int *height) const;
00589 
00590         void get_pixel_size(int *width, int *height) const;
00597         
00598         int get_line_count() const;
00601 
00602         Pointer<LayoutLine> get_line(int line) const;
00608 
00609         bool get_lines(std::vector<Pointer<LayoutLine> >& lines) const;
00615         
00616         Pointer<LayoutIter> get_iter() const;
00619 
00620         Pointer<Gdk::Region> get_clip_region(int x_origin, int y_origin, const std::vector<std::pair<int, int> >& index_ranges) const;
00651 
00655 
00656         void set_attributes(AttrList& attrs);
00659 
00660         void set_text(const String& text);
00663 
00664         void set_markup(const String& markup);
00671         
00672         void set_markup(const String& markup, gunichar accel_marker, gunichar *accel_char);
00686 
00687         void set_font_description(const FontDescription *desc);
00693 
00694         void set_width(int width);
00697 
00698         void set_wrap(WrapMode wrap);
00704 
00705         void set_indent(int indent);
00712 
00713         void set_spacing(int spacing);
00716 
00717         void set_justify(bool justify);
00724 
00725         void set_alignment(Alignment alignment);
00729 
00730         void set_tabs(TabArray *tabs);
00738 
00739         void set_single_paragraph_mode(bool setting);
00746 
00747         void context_changed();
00751         
00752         void index_to_pos(int index, Rectangle& pos);
00762 
00763         void move_cursor_visually(bool strong, int old_index, int old_trailing, int direction, int *new_index, int *new_trailing);
00794 
00795         bool xy_to_index(int x, int y, int *index, int *trailing);
00811 
00813 };
00814 
00815 } // namespace Pango
00816 
00817 } // namespace Inti
00818 
00819 #endif // INTI_PANGO_LAYOUT_H
00820 
Main Page - Footer


Generated on Sun Sep 14 20:08:03 2003 for Inti by doxygen 1.3.2 written by Dimitri van Heesch, © 1997-2002