diff options
Diffstat (limited to 'examples/viewer-qt.h')
-rw-r--r-- | examples/viewer-qt.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/examples/viewer-qt.h b/examples/viewer-qt.h new file mode 100644 index 00000000..75261ebb --- /dev/null +++ b/examples/viewer-qt.h @@ -0,0 +1,113 @@ +/* Pango + * viewer-qt.cc: Example program to view a UTF-8 encoding file + * using Pango to render result. + * + * Copyright (C) 1999-2000 Red Hat Software + * + * 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., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <qscrollview.h> +#include <qlist.h> +#include <qmainwindow.h> +#include <pango/pango.h> +#include <unicode.h> + +class QComboBox; +class QSpinBox; + +class ViewerPara +{ + public: + ViewerPara (PangoContext *context, const QString &text); + ~ViewerPara (); + + void setWidth (int width); + void contextChanged (); + int height (); + void draw (QPainter *painter, GC gc, int y); + QRect charBounds (int index); + unicode_char_t getChar (int index); + int findPoint (int x, int y); + + private: + QCString text_; + int height_; + PangoLayout *layout_; +}; + +class ViewerView : public QScrollView +{ + Q_OBJECT + + public: + + ViewerView::ViewerView (QWidget *parent, QStatusBar *status = NULL); + ~ViewerView (); + + void readFile (const QString &name); + void setFontDesc (PangoFontDescription *font_desc); + void setDirection (PangoDirection base_dir); + + void computeHeight (); + + PangoContext *context() { return context_; } + + protected: + virtual void drawContents (QPainter *p, int clipx, int clipy, int clipw, int cliph); + virtual void viewportResizeEvent ( QResizeEvent *event ); + virtual void contentsMousePressEvent (QMouseEvent *event); + + private: + void contextChanged (); + void updateHighlightChar (); + + QStatusBar *status_; + + PangoContext *context_; + QList<ViewerPara> paragraphs_; + + ViewerPara *highlight_para_; + int highlight_index_; +}; + +class ViewerWindow : public QMainWindow +{ + Q_OBJECT + + public: + + ViewerWindow (); + ~ViewerWindow (); + + private: + ViewerView *view_; + + PangoContext *context_; + + QComboBox *family_combo_; + QComboBox *style_combo_; + QSpinBox *size_box_; + + QPopupMenu *file_menu_; + + int right_to_left_item_; + + private slots: + void fillStyleCombo (int index); + void fontChanged (); + void setRightToLeft (); +}; |