From be7ebe2d57083905edfc3c607ea8734e3e8cf46e Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Fri, 30 Nov 2012 15:30:42 +0100 Subject: [PATCH] Fix example documentation for OpenGL module and (widget) Tools. Change-Id: Id9dc39752bcae915f618e1a5696115a5e6923251 Reviewed-by: Eskil Abrahamsen Blomfeldt --- examples/opengl/doc/src/2dpainting.qdoc | 1 + examples/opengl/doc/src/cube.qdoc | 2 +- .../opengl/doc/src/framebufferobject2.qdoc | 1 + examples/opengl/doc/src/grabber.qdoc | 1 + examples/opengl/doc/src/hellogl.qdoc | 1 + examples/opengl/doc/src/hellogl_es.qdoc | 128 ------------------ examples/opengl/doc/src/overpainting.qdoc | 1 + examples/opengl/doc/src/pbuffers.qdoc | 1 + examples/opengl/doc/src/pbuffers2.qdoc | 1 + examples/opengl/doc/src/samplebuffers.qdoc | 1 + examples/opengl/doc/src/textures.qdoc | 1 + examples/widgets/doc/src/completer.qdoc | 1 + examples/widgets/doc/src/echoplugin.qdoc | 1 + examples/widgets/doc/src/i18n.qdoc | 1 + examples/widgets/doc/src/plugandpaint.qdoc | 1 + examples/widgets/doc/src/regexp.qdoc | 1 + examples/widgets/doc/src/settingseditor.qdoc | 1 + examples/widgets/doc/src/styleplugin.qdoc | 1 + .../widgets/doc/src/treemodelcompleter.qdoc | 3 +- examples/widgets/doc/src/undo.qdoc | 1 + examples/widgets/doc/src/undoframework.qdoc | 1 + src/opengl/doc/images/opengl-examples.png | Bin 0 -> 25685 bytes src/opengl/doc/src/qtopengl-examples.qdoc | 46 +++++++ src/widgets/doc/src/qtwidgets-examples.qdoc | 14 +- 24 files changed, 71 insertions(+), 140 deletions(-) delete mode 100644 examples/opengl/doc/src/hellogl_es.qdoc create mode 100644 src/opengl/doc/images/opengl-examples.png create mode 100644 src/opengl/doc/src/qtopengl-examples.qdoc diff --git a/examples/opengl/doc/src/2dpainting.qdoc b/examples/opengl/doc/src/2dpainting.qdoc index 24ff54b7ff..9059852add 100644 --- a/examples/opengl/doc/src/2dpainting.qdoc +++ b/examples/opengl/doc/src/2dpainting.qdoc @@ -28,6 +28,7 @@ /*! \example 2dpainting \title 2D Painting Example + \ingroup examples-widgets-opengl \brief The 2D Painting example shows how QPainter and QGLWidget can be used together to display accelerated 2D graphics on supported hardware. diff --git a/examples/opengl/doc/src/cube.qdoc b/examples/opengl/doc/src/cube.qdoc index 4885c59049..af82f2bb46 100644 --- a/examples/opengl/doc/src/cube.qdoc +++ b/examples/opengl/doc/src/cube.qdoc @@ -27,7 +27,7 @@ /*! \example cube - \group all-examples + \ingroup examples-widgets-opengl \title Cube OpenGL ES 2.0 example \brief The Cube OpenGL ES 2.0 example shows how to write mouse rotateable diff --git a/examples/opengl/doc/src/framebufferobject2.qdoc b/examples/opengl/doc/src/framebufferobject2.qdoc index 96104d41a2..4014760d3e 100644 --- a/examples/opengl/doc/src/framebufferobject2.qdoc +++ b/examples/opengl/doc/src/framebufferobject2.qdoc @@ -29,6 +29,7 @@ \example framebufferobject2 \title Framebuffer Object 2 Example + \ingroup examples-widgets-opengl \brief The Framebuffer Object 2 example demonstrates how to use the QGLFramebufferObject class to render into an off-screen buffer and use the contents as a texture in a QGLWidget. diff --git a/examples/opengl/doc/src/grabber.qdoc b/examples/opengl/doc/src/grabber.qdoc index 5bcf8cc1bd..fa4915c7c9 100644 --- a/examples/opengl/doc/src/grabber.qdoc +++ b/examples/opengl/doc/src/grabber.qdoc @@ -28,6 +28,7 @@ /*! \example grabber \title Grabber Example + \ingroup examples-widgets-opengl \brief The Grabber examples shows how to retrieve the contents of an OpenGL framebuffer. diff --git a/examples/opengl/doc/src/hellogl.qdoc b/examples/opengl/doc/src/hellogl.qdoc index 3d513912c8..440141ef85 100644 --- a/examples/opengl/doc/src/hellogl.qdoc +++ b/examples/opengl/doc/src/hellogl.qdoc @@ -28,6 +28,7 @@ /*! \example hellogl \title Hello GL Example + \ingroup examples-widgets-opengl \brief The Hello GL example demonstrates the basic use of the OpenGL-related classes provided with Qt. diff --git a/examples/opengl/doc/src/hellogl_es.qdoc b/examples/opengl/doc/src/hellogl_es.qdoc deleted file mode 100644 index 6f31178768..0000000000 --- a/examples/opengl/doc/src/hellogl_es.qdoc +++ /dev/null @@ -1,128 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: http://www.gnu.org/copyleft/fdl.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \example hellogl_es - \title Hello GL ES Example - - \brief The Hello GL ES example is the \l{Hello GL Example} ported to OpenGL ES. - It also included some effects from the OpenGL \l{Overpainting Example}. - - \image hellogl-es-example.png - - A complete introduction to OpenGL ES and a description of all differences - between OpenGL and OpenGL ES is out of the scope of this document; but - we will describe some of the major issues and differences. - - Since Hello GL ES is a direct port of standard OpenGL code, it is a fairly - good example for porting OpenGL code to OpenGL ES. - - \tableofcontents - - \section1 Using QGLWidget - - QGLWidget can be used for OpenGL ES similar to the way it is used with - standard OpenGL; but there are some differences. We use EGL 1.0 to embedd - the OpenGL ES window within the native window manager. In - QGLWidget::initializeGL() we initialize OpenGL ES. - - \section1 Porting OpenGL to OpenGL ES - - Since OpenGL ES is missing the immediate mode and does not support quads, - we have to create triangle arrays. - - We create a quad by adding vertices to a QList of vertices. We create both - sides of the quad and hardcode a distance of 0.05f. We also compute the - correct normal for each face and store them in another QList. - - \snippet hellogl_es/glwidget.cpp 0 - - And then we convert the complete list of vertexes and the list of normals - into the native OpenGL ES format that we can use with the OpenGL ES API. - - \snippet hellogl_es/glwidget.cpp 1 - - In \c paintQtLogo() we draw the triangle array using OpenGL ES. We use - q_vertexTypeEnum to abstract the fact that our vertex and normal arrays - are either in float or in fixed point format. - - \snippet hellogl_es/glwidget.cpp 2 - - \section1 Using QGLPainter - - Since the \c QGLPainter is slower for OpenGL ES we paint the bubbles with - the rasterizer and cache them in a QImage. This happends only once during - the initialiazation. - - \snippet hellogl_es/bubble.cpp 0 - - For each bubble this QImage is then drawn to the QGLWidget by using the - according QPainter with transparency enabled. - - \snippet hellogl_es/bubble.cpp 1 - - Another difference beetwen OpenGL and OpenGL ES is that OpenGL ES does not - support glPushAttrib(GL_ALL_ATTRIB_BITS). So we have to restore all the - OpenGL states ourselves, after we created the QPainter in - GLWidget::paintGL(). - - \snippet hellogl_es/glwidget.cpp 3 - - Setting up up the model view matrix and setting the right OpenGL states is - done in the same way as for standard OpenGL. - - \snippet hellogl_es/glwidget.cpp 4 - - Now we have to restore the OpenGL state for the QPainter. This is not done - automatically for OpenGL ES. - - \snippet hellogl_es/glwidget.cpp 5 - - Now we use the QPainter to draw the transparent bubbles. - - \snippet hellogl_es/glwidget.cpp 6 - - In the end, we calculate the framerate and display it using the QPainter - again. - - \snippet hellogl_es/glwidget.cpp 7 - - After we finished all the drawing operations we swap the screen buffer. - - \snippet hellogl_es/glwidget.cpp 8 - - \section1 Summary - - Similar to the \l{Hello GL Example}, we subclass QGLWidget to render - a 3D scene using OpenGL ES calls. QGLWidget is a subclass of QWidget. - Hence, its \l{QGLWidget}'s subclasses can be placed in layouts and - provided with interactive features just like normal custom widgets. - - QGLWidget allows pure OpenGL ES rendering to be mixed with QPainter calls, - but care must be taken to maintain the state of the OpenGL ES - implementation. -*/ diff --git a/examples/opengl/doc/src/overpainting.qdoc b/examples/opengl/doc/src/overpainting.qdoc index 22ae4f874d..6a9be3d361 100644 --- a/examples/opengl/doc/src/overpainting.qdoc +++ b/examples/opengl/doc/src/overpainting.qdoc @@ -29,6 +29,7 @@ \example overpainting \title Overpainting Example + \ingroup examples-widgets-opengl \brief The Overpainting example shows how QPainter can be used to overpaint a scene rendered using OpenGL in a QGLWidget. diff --git a/examples/opengl/doc/src/pbuffers.qdoc b/examples/opengl/doc/src/pbuffers.qdoc index 29f5b3c891..7994c59373 100644 --- a/examples/opengl/doc/src/pbuffers.qdoc +++ b/examples/opengl/doc/src/pbuffers.qdoc @@ -29,6 +29,7 @@ \example pbuffers \title Pixel Buffers Example + \ingroup examples-widgets-opengl \brief The Pixel Buffers example demonstrates how to use the QGLPixelBuffer class to render into an off-screen buffer and use the contents as a dynamic texture in a QGLWidget. diff --git a/examples/opengl/doc/src/pbuffers2.qdoc b/examples/opengl/doc/src/pbuffers2.qdoc index 975feb5f0d..20a8de6caa 100644 --- a/examples/opengl/doc/src/pbuffers2.qdoc +++ b/examples/opengl/doc/src/pbuffers2.qdoc @@ -29,6 +29,7 @@ \example pbuffers2 \title Pixel Buffers 2 Example + \ingroup examples-widgets-opengl \brief The Pixel Buffers 2 example demonstrates how to use the QGLPixelBuffer class to render into an off-screen buffer and use the contents as a dynamic texture in a QGLWidget. diff --git a/examples/opengl/doc/src/samplebuffers.qdoc b/examples/opengl/doc/src/samplebuffers.qdoc index 7891b71acc..d20a36860c 100644 --- a/examples/opengl/doc/src/samplebuffers.qdoc +++ b/examples/opengl/doc/src/samplebuffers.qdoc @@ -29,6 +29,7 @@ \example samplebuffers \title Sample Buffers Example + \ingroup examples-widgets-opengl \brief The Sample Buffers example demonstrates how to use and enable sample buffers in a QGLWidget. diff --git a/examples/opengl/doc/src/textures.qdoc b/examples/opengl/doc/src/textures.qdoc index 390272ac9c..6fdcbfc598 100644 --- a/examples/opengl/doc/src/textures.qdoc +++ b/examples/opengl/doc/src/textures.qdoc @@ -28,6 +28,7 @@ /*! \example textures \title Textures Example + \ingroup examples-widgets-opengl \brief The Textures example demonstrates the use of Qt's image classes as textures in applications that use both OpenGL and Qt to display graphics. diff --git a/examples/widgets/doc/src/completer.qdoc b/examples/widgets/doc/src/completer.qdoc index baa3a55ea6..a2a6d2fc52 100644 --- a/examples/widgets/doc/src/completer.qdoc +++ b/examples/widgets/doc/src/completer.qdoc @@ -28,6 +28,7 @@ /*! \example tools/completer \title Completer Example + \ingroup example-widgets-tools \brief The Completer example shows how to provide string-completion facilities for an input widget based on data provided by a model. diff --git a/examples/widgets/doc/src/echoplugin.qdoc b/examples/widgets/doc/src/echoplugin.qdoc index 1ab29c1c39..52247bbb65 100644 --- a/examples/widgets/doc/src/echoplugin.qdoc +++ b/examples/widgets/doc/src/echoplugin.qdoc @@ -28,6 +28,7 @@ /*! \example tools/echoplugin \title Echo Plugin Example + \group examples-widgets-tools \brief This example shows how to create a Qt plugin. diff --git a/examples/widgets/doc/src/i18n.qdoc b/examples/widgets/doc/src/i18n.qdoc index 0b38abf34a..ae97a4869b 100644 --- a/examples/widgets/doc/src/i18n.qdoc +++ b/examples/widgets/doc/src/i18n.qdoc @@ -28,6 +28,7 @@ /*! \example tools/i18n \title I18N Example + \ingroup examples-widgets-tools \brief The Internationalization (I18N) example demonstrates Qt's support for translated text. Developers can write the initial application text in one language, and diff --git a/examples/widgets/doc/src/plugandpaint.qdoc b/examples/widgets/doc/src/plugandpaint.qdoc index a9d3f7cf27..88433a5e2f 100644 --- a/examples/widgets/doc/src/plugandpaint.qdoc +++ b/examples/widgets/doc/src/plugandpaint.qdoc @@ -28,6 +28,7 @@ /*! \example tools/plugandpaint \title Plug & Paint Example + \ingroup examples-widgets-tools \brief The Plug & Paint example demonstrates how to write Qt applications that can be extended through plugins. diff --git a/examples/widgets/doc/src/regexp.qdoc b/examples/widgets/doc/src/regexp.qdoc index 9c9957e28a..07143f6350 100644 --- a/examples/widgets/doc/src/regexp.qdoc +++ b/examples/widgets/doc/src/regexp.qdoc @@ -28,6 +28,7 @@ /*! \example tools/regexp \title Regular Expressions Example + \ingroup example-widgets-tools \brief The Regular Expressions (RegExp) example shows how regular expressions in Qt are applied to text by providing an environment in which new regular expressions can be diff --git a/examples/widgets/doc/src/settingseditor.qdoc b/examples/widgets/doc/src/settingseditor.qdoc index 1f7a8b271b..5fdc1ba00a 100644 --- a/examples/widgets/doc/src/settingseditor.qdoc +++ b/examples/widgets/doc/src/settingseditor.qdoc @@ -28,6 +28,7 @@ /*! \example tools/settingseditor \title Settings Editor Example + \ingroup examples-widgets-tools \brief The Settings Editor example shows how Qt's standard settings support is used in an application by providing an editor that enables the user to view the settings for diff --git a/examples/widgets/doc/src/styleplugin.qdoc b/examples/widgets/doc/src/styleplugin.qdoc index 158f1d4769..615ca0f0bf 100644 --- a/examples/widgets/doc/src/styleplugin.qdoc +++ b/examples/widgets/doc/src/styleplugin.qdoc @@ -28,6 +28,7 @@ /*! \example tools/styleplugin \title Style Plugin Example + \ingroup examples-widgets-tools \brief This example shows how to create a plugin that extends Qt with a new GUI look and feel. diff --git a/examples/widgets/doc/src/treemodelcompleter.qdoc b/examples/widgets/doc/src/treemodelcompleter.qdoc index 1d204907aa..9e74cad88e 100644 --- a/examples/widgets/doc/src/treemodelcompleter.qdoc +++ b/examples/widgets/doc/src/treemodelcompleter.qdoc @@ -1,4 +1,4 @@ -/**************************************************************************** + /**************************************************************************** ** ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal @@ -28,6 +28,7 @@ /*! \example tools/treemodelcompleter \title Tree Model Completer Example + \ingroup examples-widgets-tools \brief The Tree Model Completer example shows how to provide completion facilities for a hierarchical model, using a period as the separator diff --git a/examples/widgets/doc/src/undo.qdoc b/examples/widgets/doc/src/undo.qdoc index f802aa4ffb..b2dd9c51b2 100644 --- a/examples/widgets/doc/src/undo.qdoc +++ b/examples/widgets/doc/src/undo.qdoc @@ -28,6 +28,7 @@ /*! \example tools/undo \title Undo Framework + \ingroup examples-widgets-tools \brief This example shows Qt's undo framework in action. diff --git a/examples/widgets/doc/src/undoframework.qdoc b/examples/widgets/doc/src/undoframework.qdoc index d0aaa785d2..3ed1ed290b 100644 --- a/examples/widgets/doc/src/undoframework.qdoc +++ b/examples/widgets/doc/src/undoframework.qdoc @@ -28,6 +28,7 @@ /*! \example tools/undoframework \title Undo Framework Example + \ingroup examples-widgets-tools \brief This example shows how to implement undo/redo functionality with the Qt undo framework. diff --git a/src/opengl/doc/images/opengl-examples.png b/src/opengl/doc/images/opengl-examples.png new file mode 100644 index 0000000000000000000000000000000000000000..8acdf8cabdf596a503856c0a81e2e4f950f87c87 GIT binary patch literal 25685 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 M07*qoM6N<$f@B>vPyhe` literal 0 HcmV?d00001 diff --git a/src/opengl/doc/src/qtopengl-examples.qdoc b/src/opengl/doc/src/qtopengl-examples.qdoc new file mode 100644 index 0000000000..2ad4f27404 --- /dev/null +++ b/src/opengl/doc/src/qtopengl-examples.qdoc @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: http://www.gnu.org/copyleft/fdl.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \ingroup all-examples + \title OpenGL Examples from the Qt OpenGL module + \brief Accessing OpenGL from Qt. + \group examples-widgets-opengl + + \image opengl-examples.png + + These examples describe how to use the Qt OpenGL Module. For new code, + please use the OpenGL classes in the \l {Qt GUI Module}. + + + Qt provides support for integration with OpenGL implementations on all + platforms, giving developers the opportunity to display hardware accelerated + 3D graphics alongside a more conventional user interface. + + These examples demonstrate the basic techniques used to take advantage of + OpenGL in Qt applications. +*/ diff --git a/src/widgets/doc/src/qtwidgets-examples.qdoc b/src/widgets/doc/src/qtwidgets-examples.qdoc index 05402d98bc..b321942a70 100644 --- a/src/widgets/doc/src/qtwidgets-examples.qdoc +++ b/src/widgets/doc/src/qtwidgets-examples.qdoc @@ -26,10 +26,10 @@ ****************************************************************************/ /*! - \page qtwidgets-examples.html \title Qt Widgets Examples \brief Lots of examples of how to use different kinds of widgets. \ingroup all-examples + \group examples-widgets \image widget-examples.png @@ -43,12 +43,9 @@ be used to change the appearance of standard widgets and appropriately written custom widgets. - \annotatedlist examples-widgets - */ /*! - \page examples-painting.html \ingroup all-examples \title Painting Examples \brief How to use the Qt painting system. @@ -56,19 +53,17 @@ \image painting-examples.png - Qt's painting system is able to render vector graphics, images, and outline - font-based text with sub-pixel accuracy accuracy using anti-aliasing to - improve rendering quality. + Qt's painting system is able to render vector graphics, images, + and outline font-based text with sub-pixel accuracy using + anti-aliasing to improve rendering quality. These examples show the most common techniques that are used when painting with Qt, from basic concepts such as drawing simple primitives to the use of transformations. - \annotatedlist{painting-examples} */ /*! - \page examples-richtext.html \ingroup all-examples \title Rich Text Examples \brief Using the document-oriented rich text engine. @@ -84,7 +79,6 @@ */ /*! - \page examples-desktop.html \ingroup all-examples \title Desktop Examples \brief Integrating your Qt application with your favorite desktop.