summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/config/compat.qdocconf31
-rw-r--r--doc/config/images/arrow_down.pngbin0 -> 177 bytes
-rwxr-xr-xdoc/config/images/bg_l.pngbin0 -> 100 bytes
-rwxr-xr-xdoc/config/images/bg_l_blank.pngbin0 -> 84 bytes
-rw-r--r--doc/config/images/bg_ll_blank.pngbin0 -> 320 bytes
-rwxr-xr-xdoc/config/images/bg_r.pngbin0 -> 96 bytes
-rw-r--r--doc/config/images/bg_ul_blank.pngbin0 -> 304 bytes
-rwxr-xr-xdoc/config/images/box_bg.pngbin0 -> 89 bytes
-rwxr-xr-xdoc/config/images/breadcrumb.pngbin0 -> 134 bytes
-rw-r--r--doc/config/images/bullet_dn.pngbin0 -> 230 bytes
-rwxr-xr-xdoc/config/images/bullet_gt.pngbin0 -> 124 bytes
-rwxr-xr-xdoc/config/images/bullet_sq.pngbin0 -> 74 bytes
-rw-r--r--doc/config/images/bullet_up.pngbin0 -> 210 bytes
-rwxr-xr-xdoc/config/images/feedbackground.pngbin0 -> 263 bytes
-rw-r--r--doc/config/images/header_bg.pngbin0 -> 114 bytes
-rwxr-xr-xdoc/config/images/horBar.pngbin0 -> 2807 bytes
-rw-r--r--doc/config/images/page.pngbin0 -> 3102 bytes
-rwxr-xr-xdoc/config/images/page_bg.pngbin0 -> 84 bytes
-rw-r--r--doc/config/images/qt-logo.pngbin0 -> 5149 bytes
-rw-r--r--doc/config/images/spinner.gifbin0 -> 2037 bytes
-rwxr-xr-xdoc/config/images/sprites-combined.pngbin0 -> 62534 bytes
-rw-r--r--doc/config/macros.qdocconf37
-rw-r--r--doc/config/qt-cpp-ignore.qdocconf99
-rw-r--r--doc/config/qt-defines.qdocconf17
-rw-r--r--doc/config/qt-html-default-styles.qdocconf34
-rw-r--r--doc/config/qt-html-online-styles.qdocconf74
-rw-r--r--doc/config/qt-html-templates-online.qdocconf204
-rw-r--r--doc/config/qt-html-templates.qdocconf56
-rw-r--r--doc/config/qt3d-online.qdocconf2
-rw-r--r--doc/config/qt3d-project.qdocconf38
-rw-r--r--doc/config/qt3d.qdocconf2
-rw-r--r--doc/config/scripts/functions.js258
-rw-r--r--doc/config/scripts/jquery.js152
-rw-r--r--doc/config/scripts/narrow.js133
-rw-r--r--doc/config/scripts/superfish.js121
-rw-r--r--doc/config/style/narrow.css271
-rw-r--r--doc/config/style/offline.css673
-rw-r--r--doc/config/style/style.css1731
-rw-r--r--doc/config/style/style_ie6.css54
-rw-r--r--doc/config/style/style_ie7.css19
-rw-r--r--doc/config/style/style_ie8.css0
-rw-r--r--doc/config/style/superfish.css51
-rw-r--r--doc/doc.pri32
-rw-r--r--doc/src/acceptance/qt3d-acceptance.qdoc196
-rw-r--r--doc/src/classes.qdoc101
-rw-r--r--doc/src/classic.css284
-rw-r--r--doc/src/demos/monkeygod.qdoc38
-rw-r--r--doc/src/demos/pageflip.qdoc39
-rw-r--r--doc/src/demos/shapes.qdoc38
-rw-r--r--doc/src/demos/teaservice-qml.qdoc44
-rw-r--r--doc/src/demos/teaservice.qdoc43
-rw-r--r--doc/src/examples/basket.qdoc80
-rw-r--r--doc/src/examples/nesting.qdoc135
-rw-r--r--doc/src/examples/painter.qdoc38
-rw-r--r--doc/src/examples/teapot-qml.qdoc73
-rw-r--r--doc/src/examples/teapot.qdoc101
-rw-r--r--doc/src/images/REAME-ODF5
-rw-r--r--doc/src/images/affine-transform.odfbin0 -> 4948 bytes
-rw-r--r--doc/src/images/affine-transform.pngbin0 -> 2739 bytes
-rw-r--r--doc/src/images/attenuation.odfbin0 -> 5273 bytes
-rw-r--r--doc/src/images/attenuation.pngbin0 -> 1894 bytes
-rw-r--r--doc/src/images/basket-screenshot.pngbin0 -> 50121 bytes
-rw-r--r--doc/src/images/cube-screenshot.pngbin0 -> 19476 bytes
-rw-r--r--doc/src/images/cylinder-texture-coords.pngbin0 -> 26839 bytes
-rw-r--r--doc/src/images/faceted-q.pngbin0 -> 16750 bytes
-rw-r--r--doc/src/images/forest-screenshot.pngbin0 -> 17397 bytes
-rw-r--r--doc/src/images/forest-screenshot2.pngbin0 -> 17598 bytes
-rw-r--r--doc/src/images/forest-screenshot3.pngbin0 -> 13444 bytes
-rw-r--r--doc/src/images/gradient.pngbin0 -> 222 bytes
-rw-r--r--doc/src/images/line-int-1.pngbin0 -> 4951 bytes
-rw-r--r--doc/src/images/line-int-2.pngbin0 -> 3430 bytes
-rw-r--r--doc/src/images/line-intersection.odfbin0 -> 4699 bytes
-rw-r--r--doc/src/images/line-intersection.pdfbin0 -> 38106 bytes
-rw-r--r--doc/src/images/line-intersection2.odfbin0 -> 4608 bytes
-rw-r--r--doc/src/images/line-intersection2.pdfbin0 -> 34557 bytes
-rw-r--r--doc/src/images/monkeygod-screenshot.pngbin0 -> 63435 bytes
-rw-r--r--doc/src/images/moon-screenshot.pngbin0 -> 25441 bytes
-rw-r--r--doc/src/images/mouse3dtest-screenshot.pngbin0 -> 21487 bytes
-rw-r--r--doc/src/images/nesting-screenshot.pngbin0 -> 30541 bytes
-rw-r--r--doc/src/images/normalized.odfbin0 -> 5384 bytes
-rw-r--r--doc/src/images/pageflip-screenshot.pngbin0 -> 72355 bytes
-rw-r--r--doc/src/images/painter-screenshot.pngbin0 -> 5301 bytes
-rw-r--r--doc/src/images/penguin-0-screenshot.pngbin0 -> 15847 bytes
-rw-r--r--doc/src/images/penguin-screenshot.pngbin0 -> 11862 bytes
-rw-r--r--doc/src/images/pvcolor.pngbin0 -> 84258 bytes
-rw-r--r--doc/src/images/pyramid-screenshot.pngbin0 -> 30058 bytes
-rw-r--r--doc/src/images/qray3d-project.pngbin0 -> 9210 bytes
-rw-r--r--doc/src/images/qt-creator-config-3ds.pngbin0 -> 23690 bytes
-rw-r--r--doc/src/images/qt-creator-lib-path.pngbin0 -> 56119 bytes
-rw-r--r--doc/src/images/qt-creator-plugins.pngbin0 -> 23085 bytes
-rw-r--r--doc/src/images/qt-creator-shadow-build.pngbin0 -> 25272 bytes
-rw-r--r--doc/src/images/qt-logo.pngbin0 -> 5149 bytes
-rw-r--r--doc/src/images/quad-extrude.pngbin0 -> 24814 bytes
-rw-r--r--doc/src/images/quad-extrude.xcfbin0 -> 65613 bytes
-rw-r--r--doc/src/images/quads.pngbin0 -> 16511 bytes
-rw-r--r--doc/src/images/shapes-screenshot.pngbin0 -> 15746 bytes
-rw-r--r--doc/src/images/soup.pngbin0 -> 107851 bytes
-rw-r--r--doc/src/images/sphere-detail.pngbin0 -> 62359 bytes
-rw-r--r--doc/src/images/spiky-teapot.pngbin0 -> 332191 bytes
-rw-r--r--doc/src/images/stereo-nhd-screenshot.pngbin0 -> 25718 bytes
-rw-r--r--doc/src/images/stereo-screenshot-qml.pngbin0 -> 131278 bytes
-rw-r--r--doc/src/images/stereo-screenshot-qml2.pngbin0 -> 156885 bytes
-rw-r--r--doc/src/images/stereo-screenshot.pngbin0 -> 20521 bytes
-rw-r--r--doc/src/images/stereo-wide-screenshot.pngbin0 -> 29985 bytes
-rw-r--r--doc/src/images/teapot-china-screenshot.pngbin0 -> 17811 bytes
-rw-r--r--doc/src/images/teapot-distortion.pngbin0 -> 13840 bytes
-rw-r--r--doc/src/images/teapot-distortion2.pngbin0 -> 7852 bytes
-rw-r--r--doc/src/images/teapot-logo.pngbin0 -> 3322 bytes
-rw-r--r--doc/src/images/teapot-qml-screenshot.pngbin0 -> 12028 bytes
-rw-r--r--doc/src/images/teapot-qt-screenshot.pngbin0 -> 37868 bytes
-rw-r--r--doc/src/images/teapot-rotated.pngbin0 -> 14324 bytes
-rw-r--r--doc/src/images/teapot-screenshot.pngbin0 -> 11910 bytes
-rw-r--r--doc/src/images/teaservice-qml-screenshot.pngbin0 -> 37272 bytes
-rw-r--r--doc/src/images/teaservice-screenshot.pngbin0 -> 33040 bytes
-rw-r--r--doc/src/images/texture-coords-gen.pngbin0 -> 97886 bytes
-rw-r--r--doc/src/images/texture-coords-gen.xcfbin0 -> 369331 bytes
-rw-r--r--doc/src/images/texture-seam.pngbin0 -> 61028 bytes
-rw-r--r--doc/src/images/triangle3d-center.pngbin0 -> 14042 bytes
-rw-r--r--doc/src/images/triangle3d-dimensions.pngbin0 -> 23779 bytes
-rw-r--r--doc/src/images/triangle3d.xcfbin0 -> 73394 bytes
-rw-r--r--doc/src/images/triangulated-face.pngbin0 -> 17764 bytes
-rw-r--r--doc/src/images/triangulated-face.xcfbin0 -> 51119 bytes
-rw-r--r--doc/src/images/tutorials/converting-screenshot.pngbin0 -> 1945 bytes
-rw-r--r--doc/src/images/tutorials/cube1-screenshot.pngbin0 -> 3213 bytes
-rw-r--r--doc/src/images/tutorials/cube2-screenshot.pngbin0 -> 3794 bytes
-rw-r--r--doc/src/images/tutorials/cube3-screenshot.pngbin0 -> 4315 bytes
-rw-r--r--doc/src/images/tutorials/cube4-screenshot.pngbin0 -> 13243 bytes
-rw-r--r--doc/src/images/tutorials/shader-tutorial-varying.pngbin0 -> 1174 bytes
-rw-r--r--doc/src/images/tutorials/shader-tutorial.pngbin0 -> 21649 bytes
-rw-r--r--doc/src/images/vector-mag.odfbin0 -> 4453 bytes
-rw-r--r--doc/src/images/vector-mag.pngbin0 -> 1720 bytes
-rw-r--r--doc/src/images/vector-normalized.pngbin0 -> 1111 bytes
-rw-r--r--doc/src/images/vector-point.odfbin0 -> 4453 bytes
-rw-r--r--doc/src/images/vector-point.pngbin0 -> 3369 bytes
-rw-r--r--doc/src/index.qdoc102
-rw-r--r--doc/src/qline3d-math.qdoc211
-rw-r--r--doc/src/qt3d-all-classes.qdoc41
-rw-r--r--doc/src/qt3d-arrays.qdoc34
-rw-r--r--doc/src/qt3d-building.qdoc252
-rw-r--r--doc/src/qt3d-contrib.qdoc54
-rw-r--r--doc/src/qt3d-examples.qdoc71
-rw-r--r--doc/src/qt3d-geometry.qdoc34
-rw-r--r--doc/src/qt3d-graphicsview.qdoc34
-rw-r--r--doc/src/qt3d-materials.qdoc34
-rw-r--r--doc/src/qt3d-math.qdoc34
-rw-r--r--doc/src/qt3d-painting.qdoc64
-rw-r--r--doc/src/qt3d-qml3d.qdoc55
-rw-r--r--doc/src/qt3d-scene.qdoc34
-rw-r--r--doc/src/qt3d-textures.qdoc34
-rw-r--r--doc/src/qt3d-viewing.qdoc34
-rw-r--r--doc/src/style/OfflineStyle.css251
-rw-r--r--doc/src/style/narrow.css250
-rw-r--r--doc/src/style/style.css1567
-rw-r--r--doc/src/style/style_ie6.css54
-rw-r--r--doc/src/style/style_ie7.css19
-rw-r--r--doc/src/style/style_ie8.css0
-rw-r--r--doc/src/style/superfish.css51
-rw-r--r--doc/src/style/superfish_skin.css83
-rw-r--r--doc/src/tutorials/converting.qdoc172
-rw-r--r--doc/src/tutorials/penguin.qdoc106
-rw-r--r--doc/src/tutorials/sceneformat.qdoc115
-rw-r--r--doc/src/tutorials/shaders.qdoc388
-rw-r--r--doc/src/tutorials/simpleobject.qdoc101
163 files changed, 9583 insertions, 0 deletions
diff --git a/doc/config/compat.qdocconf b/doc/config/compat.qdocconf
new file mode 100644
index 000000000..2d881a9a1
--- /dev/null
+++ b/doc/config/compat.qdocconf
@@ -0,0 +1,31 @@
+#alias.i = e
+alias.include = input
+
+macro.0 = "\\\\0"
+macro.b = "\\\\b"
+macro.n = "\\\\n"
+macro.r = "\\\\r"
+macro.i = "\\o"
+macro.i11 = "\\o{1,1}"
+macro.i12 = "\\o{1,2}"
+macro.i13 = "\\o{1,3}"
+macro.i14 = "\\o{1,4}"
+macro.i15 = "\\o{1,5}"
+macro.i16 = "\\o{1,6}"
+macro.i17 = "\\o{1,7}"
+macro.i18 = "\\o{1,8}"
+macro.i19 = "\\o{1,9}"
+macro.i21 = "\\o{2,1}"
+macro.i31 = "\\o{3,1}"
+macro.i41 = "\\o{4,1}"
+macro.i51 = "\\o{5,1}"
+macro.i61 = "\\o{6,1}"
+macro.i71 = "\\o{7,1}"
+macro.i81 = "\\o{8,1}"
+macro.i91 = "\\o{9,1}"
+macro.img = "\\image"
+macro.endquote = "\\endquotation"
+macro.relatesto = "\\relates"
+
+spurious = "Missing comma in .*" \
+ "Missing pattern .*"
diff --git a/doc/config/images/arrow_down.png b/doc/config/images/arrow_down.png
new file mode 100644
index 000000000..9d01e97f6
--- /dev/null
+++ b/doc/config/images/arrow_down.png
Binary files differ
diff --git a/doc/config/images/bg_l.png b/doc/config/images/bg_l.png
new file mode 100755
index 000000000..90b1da10b
--- /dev/null
+++ b/doc/config/images/bg_l.png
Binary files differ
diff --git a/doc/config/images/bg_l_blank.png b/doc/config/images/bg_l_blank.png
new file mode 100755
index 000000000..5a9673d81
--- /dev/null
+++ b/doc/config/images/bg_l_blank.png
Binary files differ
diff --git a/doc/config/images/bg_ll_blank.png b/doc/config/images/bg_ll_blank.png
new file mode 100644
index 000000000..95a1c45e0
--- /dev/null
+++ b/doc/config/images/bg_ll_blank.png
Binary files differ
diff --git a/doc/config/images/bg_r.png b/doc/config/images/bg_r.png
new file mode 100755
index 000000000..f0fb121de
--- /dev/null
+++ b/doc/config/images/bg_r.png
Binary files differ
diff --git a/doc/config/images/bg_ul_blank.png b/doc/config/images/bg_ul_blank.png
new file mode 100644
index 000000000..70512614c
--- /dev/null
+++ b/doc/config/images/bg_ul_blank.png
Binary files differ
diff --git a/doc/config/images/box_bg.png b/doc/config/images/box_bg.png
new file mode 100755
index 000000000..3322f923f
--- /dev/null
+++ b/doc/config/images/box_bg.png
Binary files differ
diff --git a/doc/config/images/breadcrumb.png b/doc/config/images/breadcrumb.png
new file mode 100755
index 000000000..0ded5514d
--- /dev/null
+++ b/doc/config/images/breadcrumb.png
Binary files differ
diff --git a/doc/config/images/bullet_dn.png b/doc/config/images/bullet_dn.png
new file mode 100644
index 000000000..f7762472e
--- /dev/null
+++ b/doc/config/images/bullet_dn.png
Binary files differ
diff --git a/doc/config/images/bullet_gt.png b/doc/config/images/bullet_gt.png
new file mode 100755
index 000000000..7561b4edc
--- /dev/null
+++ b/doc/config/images/bullet_gt.png
Binary files differ
diff --git a/doc/config/images/bullet_sq.png b/doc/config/images/bullet_sq.png
new file mode 100755
index 000000000..a84845e3c
--- /dev/null
+++ b/doc/config/images/bullet_sq.png
Binary files differ
diff --git a/doc/config/images/bullet_up.png b/doc/config/images/bullet_up.png
new file mode 100644
index 000000000..7de2f0695
--- /dev/null
+++ b/doc/config/images/bullet_up.png
Binary files differ
diff --git a/doc/config/images/feedbackground.png b/doc/config/images/feedbackground.png
new file mode 100755
index 000000000..3a38d995d
--- /dev/null
+++ b/doc/config/images/feedbackground.png
Binary files differ
diff --git a/doc/config/images/header_bg.png b/doc/config/images/header_bg.png
new file mode 100644
index 000000000..a436aa61e
--- /dev/null
+++ b/doc/config/images/header_bg.png
Binary files differ
diff --git a/doc/config/images/horBar.png b/doc/config/images/horBar.png
new file mode 100755
index 000000000..100fe91c6
--- /dev/null
+++ b/doc/config/images/horBar.png
Binary files differ
diff --git a/doc/config/images/page.png b/doc/config/images/page.png
new file mode 100644
index 000000000..1db151bd3
--- /dev/null
+++ b/doc/config/images/page.png
Binary files differ
diff --git a/doc/config/images/page_bg.png b/doc/config/images/page_bg.png
new file mode 100755
index 000000000..9b3bd999d
--- /dev/null
+++ b/doc/config/images/page_bg.png
Binary files differ
diff --git a/doc/config/images/qt-logo.png b/doc/config/images/qt-logo.png
new file mode 100644
index 000000000..14ddf2a02
--- /dev/null
+++ b/doc/config/images/qt-logo.png
Binary files differ
diff --git a/doc/config/images/spinner.gif b/doc/config/images/spinner.gif
new file mode 100644
index 000000000..1ed786f2e
--- /dev/null
+++ b/doc/config/images/spinner.gif
Binary files differ
diff --git a/doc/config/images/sprites-combined.png b/doc/config/images/sprites-combined.png
new file mode 100755
index 000000000..3a48b21f6
--- /dev/null
+++ b/doc/config/images/sprites-combined.png
Binary files differ
diff --git a/doc/config/macros.qdocconf b/doc/config/macros.qdocconf
new file mode 100644
index 000000000..48826fc63
--- /dev/null
+++ b/doc/config/macros.qdocconf
@@ -0,0 +1,37 @@
+macro.aacute.HTML = "á"
+macro.Aring.HTML = "Å"
+macro.aring.HTML = "å"
+macro.Auml.HTML = "Ä"
+macro.author = "\\bold{Author:}"
+macro.br.HTML = "<br />"
+macro.BR.HTML = "<br />"
+macro.copyright.HTML = "&copy;"
+macro.eacute.HTML = "&eacute;"
+macro.gui = "\\bold"
+macro.hr.HTML = "<hr />"
+macro.iacute.HTML = "&iacute;"
+macro.key = "\\bold"
+macro.menu = "\\bold"
+macro.note = "\\bold{Note:}"
+macro.oslash.HTML = "&oslash;"
+macro.ouml.HTML = "&ouml;"
+macro.QA = "\\e{Qt Assistant}"
+macro.QD = "\\e{Qt Designer}"
+macro.QL = "\\e{Qt Linguist}"
+macro.QQV = "\\e{Qt QML Viewer}"
+macro.param = "\\e"
+macro.raisedaster.HTML = "<sup>*</sup>"
+macro.rarrow.HTML = "&rarr;"
+macro.reg.HTML = "<sup>&reg;</sup>"
+macro.return = "Returns"
+macro.starslash = "\\c{*/}"
+macro.begincomment = "\\c{/*}"
+macro.endcomment = "\\c{*/}"
+macro.uuml.HTML = "&uuml;"
+macro.mdash.HTML = "&mdash;"
+
+macro.beginfloatleft.HTML = "<div style=\"float: left; margin-right: 2em\">"
+macro.beginfloatright.HTML = "<div style=\"float: right; margin-left: 2em\">"
+macro.endfloat.HTML = "</div>"
+macro.clearfloat.HTML = "<br style=\"clear: both\" />"
+macro.emptyspan.HTML = "<span></span>"
diff --git a/doc/config/qt-cpp-ignore.qdocconf b/doc/config/qt-cpp-ignore.qdocconf
new file mode 100644
index 000000000..ccb5d8e37
--- /dev/null
+++ b/doc/config/qt-cpp-ignore.qdocconf
@@ -0,0 +1,99 @@
+Cpp.ignoretokens = QAXFACTORY_EXPORT \
+ QDESIGNER_COMPONENTS_LIBRARY \
+ QDESIGNER_EXTENSION_LIBRARY \
+ QDESIGNER_SDK_LIBRARY \
+ QDESIGNER_SHARED_LIBRARY \
+ QDESIGNER_UILIB_LIBRARY \
+ QM_EXPORT_CANVAS \
+ QM_EXPORT_DNS \
+ QM_EXPORT_DOM \
+ QM_EXPORT_FTP \
+ QM_EXPORT_HTTP \
+ QM_EXPORT_ICONVIEW \
+ QM_EXPORT_NETWORK \
+ QM_EXPORT_OPENGL \
+ QM_EXPORT_OPENVG \
+ QM_EXPORT_SQL \
+ QM_EXPORT_TABLE \
+ QM_EXPORT_WORKSPACE \
+ QM_EXPORT_XML \
+ QT_ASCII_CAST_WARN \
+ QT_ASCII_CAST_WARN_CONSTRUCTOR \
+ QT_BEGIN_HEADER \
+ QT_DESIGNER_STATIC \
+ QT_END_HEADER \
+ QT_FASTCALL \
+ QT_WIDGET_PLUGIN_EXPORT \
+ Q_COMPAT_EXPORT \
+ Q_CORE_EXPORT \
+ Q_CORE_EXPORT_INLINE \
+ Q_EXPLICIT \
+ Q_EXPORT \
+ Q_EXPORT_CODECS_CN \
+ Q_EXPORT_CODECS_JP \
+ Q_EXPORT_CODECS_KR \
+ Q_EXPORT_PLUGIN \
+ Q_GFX_INLINE \
+ Q_AUTOTEST_EXPORT \
+ Q_QT3D_EXPORT \
+ Q_GUI_EXPORT \
+ Q_GUI_EXPORT_INLINE \
+ Q_GUI_EXPORT_STYLE_CDE \
+ Q_GUI_EXPORT_STYLE_COMPACT \
+ Q_GUI_EXPORT_STYLE_MAC \
+ Q_GUI_EXPORT_STYLE_MOTIF \
+ Q_GUI_EXPORT_STYLE_MOTIFPLUS \
+ Q_GUI_EXPORT_STYLE_PLATINUM \
+ Q_GUI_EXPORT_STYLE_POCKETPC \
+ Q_GUI_EXPORT_STYLE_SGI \
+ Q_GUI_EXPORT_STYLE_WINDOWS \
+ Q_GUI_EXPORT_STYLE_WINDOWSXP \
+ QHELP_EXPORT \
+ Q_INLINE_TEMPLATE \
+ Q_INTERNAL_WIN_NO_THROW \
+ Q_NETWORK_EXPORT \
+ Q_OPENGL_EXPORT \
+ Q_OPENVG_EXPORT \
+ Q_OUTOFLINE_TEMPLATE \
+ Q_SQL_EXPORT \
+ Q_SVG_EXPORT \
+ Q_SCRIPT_EXPORT \
+ Q_SCRIPTTOOLS_EXPORT \
+ Q_TESTLIB_EXPORT \
+ Q_TYPENAME \
+ Q_XML_EXPORT \
+ Q_XMLSTREAM_EXPORT \
+ Q_XMLPATTERNS_EXPORT \
+ QDBUS_EXPORT \
+ Q_DBUS_EXPORT \
+ QT_BEGIN_NAMESPACE \
+ QT_BEGIN_INCLUDE_NAMESPACE \
+ QT_END_NAMESPACE \
+ QT_END_INCLUDE_NAMESPACE \
+ PHONON_EXPORT \
+ Q_DECLARATIVE_EXPORT \
+ Q_GADGET \
+ QWEBKIT_EXPORT \
+ Q_INVOKABLE
+Cpp.ignoredirectives = Q_DECLARE_HANDLE \
+ Q_DECLARE_INTERFACE \
+ Q_DECLARE_METATYPE \
+ Q_DECLARE_OPERATORS_FOR_FLAGS \
+ Q_DECLARE_PRIVATE \
+ Q_DECLARE_PUBLIC \
+ Q_DECLARE_SHARED \
+ Q_DECLARE_TR_FUNCTIONS \
+ Q_DECLARE_TYPEINFO \
+ Q_DISABLE_COPY \
+ QT_FORWARD_DECLARE_CLASS \
+ Q_DUMMY_COMPARISON_OPERATOR \
+ Q_ENUMS \
+ Q_FLAGS \
+ Q_INTERFACES \
+ __attribute__ \
+ K_DECLARE_PRIVATE \
+ PHONON_OBJECT \
+ PHONON_HEIR \
+ Q_PRIVATE_PROPERTY \
+ Q_DECLARE_PRIVATE_D \
+ Q_CLASSINFO
diff --git a/doc/config/qt-defines.qdocconf b/doc/config/qt-defines.qdocconf
new file mode 100644
index 000000000..50a355f04
--- /dev/null
+++ b/doc/config/qt-defines.qdocconf
@@ -0,0 +1,17 @@
+defines = Q_QDOC \
+ QT_.*_SUPPORT \
+ QT_.*_LIB \
+ QT_COMPAT \
+ QT_KEYPAD_NAVIGATION \
+ QT_NO_EGL \
+ QT3_SUPPORT \
+ Q_WS_.* \
+ Q_OS_.* \
+ Q_BYTE_ORDER \
+ QT_DEPRECATED \
+ Q_NO_USING_KEYWORD \
+ __cplusplus
+
+versionsym = QT_VERSION_STR
+
+codeindent = 1
diff --git a/doc/config/qt-html-default-styles.qdocconf b/doc/config/qt-html-default-styles.qdocconf
new file mode 100644
index 000000000..c9a69907d
--- /dev/null
+++ b/doc/config/qt-html-default-styles.qdocconf
@@ -0,0 +1,34 @@
+# Define the location of the templates to use. Style sheets and scripts are
+# specified relative to the template directory and will be copied into
+# subdirectories of the output directory.
+
+HTML.templatedir = .
+
+HTML.stylesheets = style/offline.css
+
+HTML.scripts =
+
+# Files not referenced in any qdoc file (last four needed by qtdemo)
+# See also qhp.Qt.extraFiles
+extraimages.HTML = qt-logo.png \
+ arrow_down.png \
+ breadcrumb.png \
+ bullet_gt.png \
+ bullet_dn.png \
+ bullet_sq.png \
+ bullet_up.png \
+ horBar.png \
+ sprites-combined.png \
+ teapot-logo.png \
+ gradient.png
+
+# Include the style sheets and scripts used.
+
+HTML.headerstyles = \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/offline.css\" />\n"
+
+HTML.headerscripts =
+
+HTML.endheader = \
+ "</head>\n" \
+ "<body>\n"
diff --git a/doc/config/qt-html-online-styles.qdocconf b/doc/config/qt-html-online-styles.qdocconf
new file mode 100644
index 000000000..84b8ff400
--- /dev/null
+++ b/doc/config/qt-html-online-styles.qdocconf
@@ -0,0 +1,74 @@
+# Define the location of the templates to use. Style sheets and scripts are
+# specified relative to the template directory and will be copied into
+# subdirectories of the output directory.
+
+HTML.templatedir = .
+
+HTML.stylesheets = style/narrow.css \
+ style/style.css \
+ style/style_ie6.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/superfish.css
+
+# Adding jquery and functions - providing online tools and search features
+HTML.scripts = scripts/functions.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ scripts/jquery.js
+
+
+# Files not referenced in any qdoc file.
+# See also qhp.Qt.extraFiles
+extraimages.HTML = qt-logo.png \
+ bg_l.png \
+ bg_l_blank.png \
+ bg_ll_blank.png \
+ bg_ul_blank.png \
+ header_bg.png \
+ bg_r.png \
+ box_bg.png \
+ breadcrumb.png \
+ bullet_gt.png \
+ bullet_dn.png \
+ bullet_sq.png \
+ bullet_up.png \
+ arrow_down.png \
+ feedbackground.png \
+ horBar.png \
+ page.png \
+ page_bg.png \
+ sprites-combined.png \
+ spinner.gif \
+ teapot-logo.png \
+ gradient.png
+
+# Include the style sheets and scripts used.
+
+HTML.headerstyles = \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n" \
+ " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n" \
+ " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n" \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/superfish.css\" />\n" \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/narrow.css\" />\n" \
+ " <!--[if IE]>\n" \
+ "<meta name=\"MSSmartTagsPreventParsing\" content=\"true\">\n" \
+ "<meta http-equiv=\"imagetoolbar\" content=\"no\">\n" \
+ "<![endif]-->\n" \
+ "<!--[if lt IE 7]>\n" \
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">\n" \
+ "<![endif]-->\n" \
+ "<!--[if IE 7]>\n" \
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">\n" \
+ "<![endif]-->\n" \
+ "<!--[if IE 8]>\n" \
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">\n" \
+ "<![endif]-->\n\n"
+
+HTML.headerscripts = \
+ "<script src=\"scripts/superfish.js\" type=\"text/javascript\"></script>\n" \
+ "<script src=\"scripts/narrow.js\" type=\"text/javascript\"></script>\n\n"
+
+HTML.endheader = \
+ "</head>\n" \
+ "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n"
diff --git a/doc/config/qt-html-templates-online.qdocconf b/doc/config/qt-html-templates-online.qdocconf
new file mode 100644
index 000000000..8108f1c69
--- /dev/null
+++ b/doc/config/qt-html-templates-online.qdocconf
@@ -0,0 +1,204 @@
+include(qt-html-online-styles.qdocconf)
+
+HTML.postheader = \
+ " <div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
+ " <div id=\"nav-logo\">\n" \
+ " <a href=\"index.html\">Home</a></div>\n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt/3D Reference Documentation</span></a>\n" \
+ " <div id=\"narrowsearch\"></div>\n" \
+ " <div id=\"nav-topright\">\n" \
+ " <ul>\n" \
+ " <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
+ " <li class=\"nav-topright-dev\"><a href=\"http://developer.qt.nokia.com/\">DEV</a></li>\n" \
+ " <li class=\"nav-topright-labs\"><a href=\"http://labs.qt.nokia.com/blogs/\">LABS</a></li>\n" \
+ " <li class=\"nav-topright-doc nav-topright-doc-active\"><a href=\"http://doc.qt.nokia.com/\">\n" \
+ " DOC</a></li>\n" \
+ " <li class=\"nav-topright-blog\"><a href=\"http://blog.qt.nokia.com/\">BLOG</a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <div id=\"shortCut\">\n" \
+ " <ul>\n" \
+ " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt/3D</a></span></li>\n" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"classes.html\">Class index</a></li> \n" \
+ " <li><a href=\"functions.html\">Function index</a></li> \n" \
+ " <li><a href=\"modules.html\">Modules</a></li> \n" \
+ " <li><a href=\"namespaces.html\">Namespaces</a></li> \n" \
+ " <li><a href=\"qtglobal.html\">Global Declarations</a></li> \n" \
+ " <li><a href=\"qdeclarativeelements.html\">QML elements</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Qt Topics</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">Tutorials</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrapper\">\n" \
+ " <div class=\"hd\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " <div class=\"bd group\">\n" \
+ " <div class=\"sidebar\">\n" \
+ " <div class=\"searchlabel\">\n" \
+ " Search index:</div>\n" \
+ " <div class=\"search\" id=\"sidebarsearch\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\n" \
+ " <div id=\"resultdialog\"> \n" \
+ " <a href=\"#\" id=\"resultclose\">Close</a> \n" \
+ " <p id=\"resultlinks\" class=\"all\"><a href=\"#\" id=\"showallresults\">All</a> | <a href=\"#\" id=\"showapiresults\">API</a> | <a href=\"#\" id=\"showarticleresults\">Articles</a> | <a href=\"#\" id=\"showexampleresults\">Examples</a></p> \n" \
+ " <p id=\"searchcount\" class=\"all\"><span id=\"resultcount\"></span><span id=\"apicount\"></span><span id=\"articlecount\"></span><span id=\"examplecount\"></span>&nbsp;results:</p> \n" \
+ " <ul id=\"resultlist\" class=\"all\"> \n" \
+ " </ul> \n" \
+ " </div> \n" \
+ " </fieldset>\n" \
+ " </form>\n" \
+ " </div>\n" \
+ " <div class=\"box first bottombar\" id=\"lookup\">\n" \
+ " <h2 title=\"API Lookup\"><span></span>\n" \
+ " API Lookup</h2>\n" \
+ " <div id=\"list001\" class=\"list\">\n" \
+ " <ul id=\"ul001\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"classes.html\">Class index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">Function index</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"modules.html\">Modules</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"namespaces.html\">Namespaces</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qtglobal.html\">Global Declarations</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeelements.html\">QML elements</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box bottombar\" id=\"topics\">\n" \
+ " <h2 title=\"Qt Topics\"><span></span>\n" \
+ " Qt Topics</h2>\n" \
+ " <div id=\"list002\" class=\"list\">\n" \
+ " <ul id=\"ul002\" >\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-basic-concepts.html\">Programming with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qtquick.html\">Device UIs &amp; Qt Quick</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">UI Design with Qt</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"developing-with-qt.html\">Cross-platform and Platform-specific</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"technology-apis.html\">Qt and Key Technologies</a></li> \n" \
+ " <li class=\"defaultLink\"><a href=\"best-practices.html\">How-To's and Best Practices</a></li> \n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"box\" id=\"examples\">\n" \
+ " <h2 title=\"Examples\"><span></span>\n" \
+ " Examples</h2>\n" \
+ " <div id=\"list003\" class=\"list\">\n" \
+ " <ul id=\"ul003\">\n" \
+ " <li class=\"defaultLink\"><a href=\"all-examples.html\">Examples</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"tutorials.html\">Tutorials</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"demos.html\">Demos</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html\">QML Examples</a></li>\n" \
+ " </ul> \n" \
+ " </div>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"wrap\">\n" \
+ " <div class=\"toolbar\">\n" \
+ " <div class=\"breadcrumb toolblock\">\n" \
+ " <ul>\n" \
+ " <li class=\"first\"><a href=\"index.html\">Home</a></li>\n" \
+ " <!-- Breadcrumbs go here -->\n"
+
+HTML.postpostheader = \
+ " </ul>\n" \
+ " </div>\n" \
+ " <div class=\"toolbuttons toolblock\">\n" \
+ " <ul>\n" \
+ " <li id=\"smallA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"medA\" class=\"t_button active\">A</li>\n" \
+ " <li id=\"bigA\" class=\"t_button\">A</li>\n" \
+ " <li id=\"print\" class=\"t_button\"><a href=\"javascript:this.print();\">\n" \
+ " <span>Print</span></a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " </div>\n" \
+ " <div class=\"content mainContent\">\n"
+
+HTML.footer = \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"ft\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ " </div> \n" \
+ " <div class=\"footer\">\n" \
+ " <p>\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2008-2011 Nokia Corporation and/or its\n" \
+ " subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation \n" \
+ " in Finland and/or other countries worldwide.</p>\n" \
+ " <p>\n" \
+ " All other trademarks are property of their respective owners. <a title=\"Privacy Policy\"\n" \
+ " href=\"http://qt.nokia.com/about/privacy-policy\">Privacy Policy</a></p>\n" \
+ " <br />\n" \
+ " <p>\n" \
+ " Licensees holding valid Qt Commercial licenses may use this document in accordance with the" \
+ " Qt Commercial License Agreement provided with the Software or, alternatively, in accordance" \
+ " with the terms contained in a written agreement between you and Nokia.</p>\n" \
+ " <p>\n" \
+ " Alternatively, this document may be used under the terms of the <a href=\"http://www.gnu.org/licenses/fdl.html\">GNU\n" \
+ " Free Documentation License version 1.3</a>\n" \
+ " as published by the Free Software Foundation.</p>\n" \
+ " </div>\n"
+
+
+# Files not referenced in any qdoc file.
+# See also extraimages.HTML
+qhp.Qt3D.extraFiles = index.html \
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ul_blank.png \
+ images/header_bg.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/arrow_down.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/spinner.gif \
+ images/teapot-logo.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ style/narrow.css \
+ style/superfish.css \
+ style/style_ie6.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/style.css
diff --git a/doc/config/qt-html-templates.qdocconf b/doc/config/qt-html-templates.qdocconf
new file mode 100644
index 000000000..71ba7cb0a
--- /dev/null
+++ b/doc/config/qt-html-templates.qdocconf
@@ -0,0 +1,56 @@
+include(qt-html-default-styles.qdocconf)
+
+HTML.postheader = \
+ "<div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt/3D Reference Documentation</span></a>\n" \
+ " </div>\n" \
+ " <div class=\"breadcrumb toolblock\">\n" \
+ " <ul>\n" \
+ " <li class=\"first\"><a href=\"index.html\">Home</a></li>\n" \
+ " <!-- Breadcrumbs go here -->\n"
+
+HTML.postpostheader = \
+ " </ul>\n" \
+ " </div>\n" \
+ "</div>\n" \
+ "<img src=\"images/teapot-logo.png\" border=\"0\" />\n" \
+ "<div class=\"content mainContent\">\n"
+
+HTML.footer = \
+ " <div class=\"ft\">\n" \
+ " <span></span>\n" \
+ " </div>\n" \
+ "</div> \n" \
+ "<div class=\"footer\">\n" \
+ " <p>\n" \
+ " <acronym title=\"Copyright\">&copy;</acronym> 2008-2011 Nokia Corporation and/or its\n" \
+ " subsidiaries. Nokia, Qt and their respective logos are trademarks of Nokia Corporation \n" \
+ " in Finland and/or other countries worldwide.</p>\n" \
+ " <p>\n" \
+ " All other trademarks are property of their respective owners. <a title=\"Privacy Policy\"\n" \
+ " href=\"http://qt.nokia.com/about/privacy-policy\">Privacy Policy</a></p>\n" \
+ " <br />\n" \
+ " <p>\n" \
+ " Licensees holding valid Qt Commercial licenses may use this document in accordance with the" \
+ " Qt Commercial License Agreement provided with the Software or, alternatively, in accordance" \
+ " with the terms contained in a written agreement between you and Nokia.</p>\n" \
+ " <p>\n" \
+ " Alternatively, this document may be used under the terms of the <a href=\"http://www.gnu.org/licenses/fdl.html\">GNU\n" \
+ " Free Documentation License version 1.3</a>\n" \
+ " as published by the Free Software Foundation.</p>\n" \
+ "</div>\n" \
+
+# Files not referenced in any qdoc file.
+# See also extraimages.HTML
+qhp.Qt3D.extraFiles = index.html \
+ images/arrow_down.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/horBar.png \
+ images/sprites-combined.png \
+ images/teapot-logo.png \
+ style/offline.css
diff --git a/doc/config/qt3d-online.qdocconf b/doc/config/qt3d-online.qdocconf
new file mode 100644
index 000000000..0f3d3e091
--- /dev/null
+++ b/doc/config/qt3d-online.qdocconf
@@ -0,0 +1,2 @@
+include(qt3d-project.qdocconf)
+include(qt-html-templates-online.qdocconf)
diff --git a/doc/config/qt3d-project.qdocconf b/doc/config/qt3d-project.qdocconf
new file mode 100644
index 000000000..6ab52c328
--- /dev/null
+++ b/doc/config/qt3d-project.qdocconf
@@ -0,0 +1,38 @@
+include(compat.qdocconf)
+include(macros.qdocconf)
+include(qt-cpp-ignore.qdocconf)
+include(qt-defines.qdocconf)
+
+sourceencoding = UTF-8
+outputencoding = UTF-8
+naturallanguage = en_US
+
+project = Qt/3D
+description = Qt/3D Documentation
+url = http://doc.qt.nokia.com/qt3d-snapshot
+language = Cpp
+
+sources.fileextensions = "*.cpp *.qdoc *.mm *.qml"
+headers.fileextensions = "*.h *.ch *.h++ *.hh *.hpp *.hxx"
+examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp *.qml"
+examples.imageextensions = "*.png *.jpeg *.jpg *.gif *.mng"
+
+headerdirs = $TOPSRC/src/imports \
+ $TOPSRC/src/quick3d \
+ $TOPSRC/src/threed
+
+sourcedirs = $TOPSRC/src/imports \
+ $TOPSRC/src/quick3d \
+ $TOPSRC/src/threed \
+ $TOPSRC/doc/src
+
+exampledirs = $TOPSRC/examples \
+ $TOPSRC/demos \
+ $TOPSRC/src/plugins
+
+imagedirs = $TOPSRC/doc/src/images \
+ $TOPSRC/doc/src/images/tutorials \
+ $TOPSRC/doc/config/images
+
+outputdir = $DESTDIR/html
+base = file:$DESTDIR
diff --git a/doc/config/qt3d.qdocconf b/doc/config/qt3d.qdocconf
new file mode 100644
index 000000000..f452ed90e
--- /dev/null
+++ b/doc/config/qt3d.qdocconf
@@ -0,0 +1,2 @@
+include(qt3d-project.qdocconf)
+include(qt-html-templates.qdocconf)
diff --git a/doc/config/scripts/functions.js b/doc/config/scripts/functions.js
new file mode 100644
index 000000000..e0e396571
--- /dev/null
+++ b/doc/config/scripts/functions.js
@@ -0,0 +1,258 @@
+// Removing search results
+function hideSearchResults() {
+/* hiding search results as the user clicks on the different categories */
+ $('#resultdialog').removeClass('active');
+ $("#resultlist").removeClass().addClass('all');
+ $("#resultlinks").removeClass().addClass('all');
+ $("#searchcount").removeClass().addClass('all');
+}
+/* closing the searhc result dialog */
+$('#resultclose').click(function(e) {
+ e.preventDefault();
+ hideSearchResults();
+});
+
+$(document.body).click(function() {
+});
+
+/* START non link areas where cursor should change to pointing hand */
+$('.t_button').mouseover(function() {
+ $('.t_button').css('cursor','pointer');
+});
+/* END non link areas */
+/* Changing font size to smaller */
+$('#smallA').click(function() {
+ $('.mainContent .heading,.mainContent h1, .mainContent h2, .mainContent h3, .mainContent p, .mainContent li, .mainContent table').css('font-size','smaller');
+ $('.t_button').removeClass('active')
+ $(this).addClass('active')
+});
+
+/* Reset font size */
+$('#medA').click(function() {
+ $('.mainContent .heading').css('font','600 16px/1 Arial');
+ $('.mainContent h1').css('font','600 18px/1.2 Arial');
+ $('.mainContent h2').css('font','600 16px/1.2 Arial');
+ $('.mainContent h3').css('font','600 14px/1.2 Arial');
+ $('.mainContent p').css('font','13px/20px Verdana');
+ $('.mainContent li').css('font','400 13px/1 Verdana');
+ $('.mainContent li').css('line-height','14px');
+ $('.mainContent .toc li').css('font', 'normal 10px/1.2 Verdana');
+ $('.mainContent table').css('font','13px/1.2 Verdana');
+ $('.mainContent .heading').css('font','600 16px/1 Arial');
+ $('.mainContent .indexboxcont li').css('font','600 13px/1 Verdana');
+ $('.t_button').removeClass('active')
+ $(this).addClass('active')
+});
+/* Changing font size to bigger */
+$('#bigA').click(function() {
+ $('.mainContent .heading,.mainContent h1, .mainContent h2, .mainContent h3, .mainContent p, .mainContent li, .mainContent table').css('font-size','large');
+ $('.mainContent .heading,.mainContent h1, .mainContent h2, .mainContent h3, .mainContent p, .mainContent li, .mainContent table').css('line-height','25px');
+ $('.t_button').removeClass('active')
+ $(this).addClass('active')
+});
+
+/* Show page content after closing feedback box */
+$('.feedclose').click(function() {
+ $('.bd').show();
+ $('.hd').show();
+ $('.footer').show();
+ $('#feedbackBox').hide();
+ $('#blurpage').hide();
+});
+
+/* Hide page content and show feedback box */
+$('.feedback').click(function() {
+ $('.bd').hide();
+ $('.hd').hide();
+ $('.footer').hide();
+ $('#feedbackBox').show();
+ $('#blurpage').show();
+});
+/* Default search URL */
+var qturl = "";
+
+/* The next function handles the response data (in xml) returned by the search engine */
+
+// Process data sent back from the server. The data is structured as a XML.
+/*
+XML structure handled by function processNokiaData()
+<page> - container for each page returned
+<pageWords/> - contains keywords
+<pageTitle/> - contains page title/header content
+<pageUrl/> - contains page URL - URL relative to root
+<pageType> - contains page type - APIPage/Article/Example
+</page>
+*/
+
+
+function processNokiaData(response){
+/* fetch the responce from the server using page as the root element */
+ var propertyTags = response.getElementsByTagName('page');
+ /* reset counters */
+ var apiCount = 0;
+ var articleCount = 0;
+ var exampleCount = 0;
+ var full_li_element;
+
+/* remove any old results */
+ $('#resultlist li').remove();
+
+
+ /* running through the elements in the xml structure */
+ for (var i=0; i<propertyTags.length; i++) {
+ /* for every element named pageWords*/
+ for (var j=0; j< propertyTags[i].getElementsByTagName('pageWords').length; j++) {
+ /* start a new list element */
+ full_li_element = '<li';
+ /* if the pageType element reads APIPage, add class name api */
+ if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage') {
+ full_li_element += ' class="api"';
+ apiCount++;
+ }
+ /* if the pageType element reads Article, add class name article */
+ else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article') {
+ full_li_element += ' class="article"';
+ articleCount++;
+ }
+ /* if the pageType element reads Example, add class name example */
+ else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example') {
+ full_li_element += ' class="example"';
+ exampleCount++;
+ }
+ /* adding the link element*/
+ full_li_element += '><a href="'+qturl;
+ /* adding the URL attribute*/
+ full_li_element += propertyTags[i].getElementsByTagName('pageUrl')[j].firstChild.nodeValue;
+ /* adding the link title and closing the link and list elements */
+ full_li_element += '">' + propertyTags[i].getElementsByTagName('pageWords')[0].firstChild.nodeValue + '</a></li>';
+ /* appending the list element to the #resultlist div*/
+ $('#resultlist').append(full_li_element);
+ }
+ }
+
+ /* if the result is not empty */
+ if (propertyTags.length > 0) {
+ /* add class name active to show the dialog */
+ $('#resultdialog').addClass('active');
+ /* setting number of hits*/
+ $('#resultcount').html(propertyTags.length);
+ $('#apicount').html(apiCount);
+ $('#articlecount').html(articleCount);
+ $('#examplecount').html(exampleCount);
+
+ }
+ else {
+ $('#pageType').addClass('red');
+ }
+
+
+
+ // Filtering results in display
+ $('p#resultlinks a').click(function(e) {
+ e.preventDefault();
+ // Displays API ref pages
+ if (this.id == "showapiresults") {
+ $("#resultlist").removeClass().addClass('api');
+ $("#resultlinks").removeClass().addClass('api');
+ $("#searchcount").removeClass().addClass('api');
+ }
+ // Displays Articles
+ else if (this.id == "showarticleresults") {
+ $("#resultlist").removeClass().addClass('article');
+ $("#resultlinks").removeClass().addClass('article');
+ $("#searchcount").removeClass().addClass('article');
+ }
+ // Displays Examples
+ if (this.id == "showexampleresults") {
+ $("#resultlist").removeClass().addClass('example');
+ $("#resultlinks").removeClass().addClass('example');
+ $("#searchcount").removeClass().addClass('example');
+ }
+ // Displays All
+ if (this.id == "showallresults") {
+ $("#resultlist").removeClass().addClass('all');
+ $("#resultlinks").removeClass().addClass('all');
+ $("#searchcount").removeClass().addClass('all');
+ }
+ });
+}
+
+//build regular expression object to find empty string or any number of blank
+var blankRE=/^\s*$/;
+
+
+function CheckEmptyAndLoadList()
+{
+ /* Start Extracting information for feedback and adding this to the feedback form */
+ var pageUrl = window.location.href;
+ var pageVal = $('title').html();
+ $('#pageType').removeClass('red');
+ $('#feedUrl').remove();
+ $('#pageVal').remove();
+ $('.menuAlert').remove();
+ $('#feedform').append('<input id="feedUrl" name="feedUrl" value="'+pageUrl+'" style="display:none;">');
+ $('#feedform').append('<input id="pageVal" name="pageVal" value="'+pageVal+'" style="display:none;">');
+ /* End Extracting information for feedback and adding this to the feedback form */
+
+ /* extracts search query */
+ var value = document.getElementById('pageType').value;
+ /* if the search is less than three chars long remove class names and remove elements from old search*/
+ if ((blankRE.test(value)) || (value.length < 3))
+ {
+ $('#resultdialog').removeClass('active');
+ $('#resultlist li').remove();
+ }
+}
+
+// Loads on doc ready - prepares search
+ $(document).ready(function () {
+ /* fetch page title*/
+ var pageTitle = $('title').html();
+ /* getting content from search box */
+ var currentString = $('#pageType').val() ;
+ /* if the search box is not empty run CheckEmptyAndLoadList*/
+ if (currentString.length < 1){
+ CheckEmptyAndLoadList();
+ }
+
+ /* on key-up in the search box execute the following */
+ $('#pageType').keyup(function () {
+ /* extract the search box content */
+ var searchString = $('#pageType').val() ;
+ /* if the string is less than three characters */
+ if ((searchString == null) || (searchString.length < 3)) {
+ /* remove classes and elements*/
+ $('#pageType').removeClass('loading');
+ $('.searching').remove();
+ /* run CheckEmptyAndLoadList */
+ CheckEmptyAndLoadList();
+
+ $('.report').remove();
+ return;
+ }
+ /* if timer checks out */
+ if (this.timer) clearTimeout(this.timer);
+ this.timer = setTimeout(function () {
+ /* add loading image by adding loading class */
+ $('#pageType').addClass('loading');
+ $('.searching').remove();
+
+ /* run the actual search */
+ $.ajax({
+ contentType: "application/x-www-form-urlencoded",
+ url: 'http://' + location.host + '/nokiasearch/GetDataServlet',
+ data: 'searchString='+searchString,
+ dataType:'xml',
+ type: 'post',
+ success: function (response, textStatus) {
+ /* on success remove loading img */
+ $('.searching').remove();
+ $('#pageType').removeClass('loading');
+
+ processNokiaData(response);
+
+ }
+ });
+ }, 500); /* timer set to 500 ms */
+ });
+ });
diff --git a/doc/config/scripts/jquery.js b/doc/config/scripts/jquery.js
new file mode 100644
index 000000000..7d9c26267
--- /dev/null
+++ b/doc/config/scripts/jquery.js
@@ -0,0 +1,152 @@
+/*!
+ * jQuery JavaScript Library v1.4.1
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Jan 25 19:43:33 2010 -0500
+ */
+(function(z,v){function la(){if (!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for (var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n<j;n++)e(a[n],b,f?d.call(a[n],n,e(a[n],b)):d,i);return a}return j?
+e(a[0],b):null}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function ma(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function na(a){var b,d=[],f=[],e=arguments,i,j,n,o,m,s,x=c.extend({},c.data(this,"events").live);if (!(a.button&&a.type==="click")){for (o in x){j=x[o];if(j.live===a.type||j.altLive&&c.inArray(a.type,j.altLive)>-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f,
+a.currentTarget);m=0;for (s=i.length;m<s;m++)for(o in x){j=x[o];n=i[m].elem;f=null;if (i[m].selector===j.selector){if(j.live==="mouseenter"||j.live==="mouseleave")f=c(a.relatedTarget).closest(j.selector)[0];if(!f||f!==n)d.push({elem:n,fn:j})}}m=0;for(s=d.length;m<s;m++){i=d[m];a.currentTarget=i.elem;a.data=i.fn.data;if(i.fn.apply(i.elem,e)===false){b=false;break}}return b}}function oa(a,b){return"live."+(a?a+".":"")+b.replace(/\./g,"`").replace(/ /g,"&")}function pa(a){return!a||!a.parentNode||a.parentNode.nodeType===
+11}function qa(a,b){var d=0;b.each(function(){if (this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for (var i in f)for(var j in f[i])c.event.add(this,i,f[i][j],f[i][j].data)}}})}function ra(a,b,d){var f,e,i;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&a[0].indexOf("<option")<0&&(c.support.checkClone||!sa.test(a[0]))){e=true;if(i=c.fragments[a[0]])if(i!==1)f=i}if(!f){b=b&&b[0]?b[0].ownerDocument||b[0]:r;f=b.createDocumentFragment();
+c.clean(a,b,f,d)}if (e)c.fragments[a[0]]=i?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(ta.concat.apply([],ta.slice(0,b)),function(){d[this]=a});return d}function ua(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Na=z.jQuery,Oa=z.$,r=z.document,S,Pa=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent,
+va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if (!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]],
+[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if (b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a,
+this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if (b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this,
+a,b)},ready:function(a){c.bindReady();if (c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};
+c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if (typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for (;b<d;b++)if((e=arguments[b])!=null)for(i in e){j=a[i];n=e[i];if(a!==n)if(f&&n&&(c.isPlainObject(n)||c.isArray(n))){j=j&&(c.isPlainObject(j)||c.isArray(j))?j:c.isArray(n)?[]:{};a[i]=c.extend(f,j,n)}else if(n!==v)a[i]=n}return a};c.extend({noConflict:function(a){z.$=
+Oa;if (a)z.jQuery=Na;return c},isReady:false,ready:function(){if(!c.isReady){if(!r.body)return setTimeout(c.ready,13);c.isReady=true;if(P){for (var a,b=0;a=P[b++];)a.call(r,c);P=null}c.fn.triggerHandler&&c(r).triggerHandler("ready")}},bindReady:function(){if(!va){va=true;if(r.readyState==="complete")return c.ready();if(r.addEventListener){r.addEventListener("DOMContentLoaded",L,false);z.addEventListener("load",c.ready,false)}else if(r.attachEvent){r.attachEvent("onreadystatechange",L);z.attachEvent("onload",
+c.ready);var a=false;try{a=z.frameElement==null}catch(b){}r.documentElement.doScroll&&a&&la()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if (!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,"isPrototypeOf"))return false;var b;for (b in a);return b===v||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;
+return true},error:function(a){throw a;},parseJSON:function(a){if (typeof a!=="string"||!a)return null;if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return z.JSON&&z.JSON.parse?z.JSON.parse(a):(new Function("return "+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Ra.test(a)){var b=r.getElementsByTagName("head")[0]||
+r.documentElement,d=r.createElement("script");d.type="text/javascript";if (c.support.scriptEval)d.appendChild(r.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,i=a.length,j=i===v||c.isFunction(a);if(d)if(j)for (f in a){if(b.apply(a[f],d)===false)break}else for(;e<i;){if(b.apply(a[e++],d)===false)break}else if(j)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=
+a[0];e<i&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Sa,"")},makeArray:function(a,b){b=b||[];if (a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for (var d=0,f=b.length;d<f;d++)if(b[d]===a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==
+v;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for (var f=[],e=0,i=a.length;e<i;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,i=0,j=a.length;i<j;i++){e=b(a[i],i,d);if (e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=v}else if(b&&!c.isFunction(b)){d=b;b=v}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},
+uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});O=c.uaMatch(O);if (O.browser){c.browser[O.browser]=true;c.browser.version=O.version}if(c.browser.webkit)c.browser.safari=true;if(wa)c.inArray=function(a,b){return wa.call(b,a)};S=c(r);if(r.addEventListener)L=function(){r.removeEventListener("DOMContentLoaded",
+L,false);c.ready()};else if (r.attachEvent)L=function(){if(r.readyState==="complete"){r.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=r.documentElement,b=r.createElement("script"),d=r.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support=
+{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};
+b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if (z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=r.createDocumentFragment();a.appendChild(d.firstChild);
+c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if (!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props=
+{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if (!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true,
+{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if (d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,
+a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if (b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);
+return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if (f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||
+a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if (c.isFunction(a))return this.each(function(o){var m=
+c(this);m.addClass(a.call(this,o,m.attr("class")))});if (a&&typeof a==="string")for (var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className)for(var i=" "+e.className+" ",j=0,n=b.length;j<n;j++){if(i.indexOf(" "+b[j]+" ")<0)e.className+=" "+b[j]}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=c(this);m.removeClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string"||a===v)for(var b=(a||"").split(ca),
+d=0,f=this.length;d<f;d++){var e=this[d];if (e.nodeType===1&&e.className)if(a){for (var i=(" "+e.className+" ").replace(ya," "),j=0,n=b.length;j<n;j++)i=i.replace(" "+b[j]+" "," ");e.className=i.substring(1,i.length-1)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var i=c(this);i.toggleClass(a.call(this,e,i.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,i=0,j=c(this),n=b,o=
+a.split(ca);e=o[i++];){n=f?n:!j.hasClass(e);j[n?"addClass":"removeClass"](e)}else if (d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for (var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(ya," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
+{}).specified?b.value:b.text;if (c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for (d=b?d+1:e.length;i<d;i++){var j=e[i];if(j.selected){a=c(j).val();if(b)return a;f.push(a)}}return f}if(za.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Wa,"")}return v}var n=c.isFunction(a);return this.each(function(o){var m=c(this),s=a;if(this.nodeType===1){if(n)s=a.call(this,o,m.val());
+if (typeof s==="number")s+="";if(c.isArray(s)&&za.test(this.type))this.checked=c.inArray(m.val(),s)>=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d);
+f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if (a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=
+""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if (!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j=
+function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if (i){i.elem=a;b=b.split(/\s+/);for (var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a,
+d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if (!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for (i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+
+s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if (f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for (var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a,
+"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if (!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,
+b);f=d.parentNode||d.ownerDocument;try{if (!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b,
+d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for (var e in d){var i=d[e];if (b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if (a[G])return a;var b=a;a=c.Event(b);for (var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if (!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b=
+0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if (this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};
+c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if (a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for (var b=
+a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if (b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if ((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this,
+"keypress.specialSubmit"+(b?"."+b.guid:""))}};if (!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"||
+d.type!=="radio")c.data(d,"_change_data",e);if (!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a=
+a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for (var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,
+f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if (typeof d==="object"){for (var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a,
+b){if (typeof a==="object"&&!a.preventDefault){for (var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+
+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e){var i,j=0;if (c.isFunction(f)){e=f;f=v}for (d=(d||"").split(/\s+/);(i=d[j++])!=null;){i=i==="focus"?"focusin":i==="blur"?"focusout":i==="hover"?d.push("mouseleave")&&"mouseenter":i;b==="live"?c(this.context).bind(oa(i,this.selector),{data:f,selector:this.selector,
+live:i},e):c(this.context).unbind(oa(i,this.selector),e?{guid:e.guid+this.selector+i}:null)}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if (c.attrFn)c.attrFn[b]=true});z.attachEvent&&!z.addEventListener&&z.attachEvent("onunload",function(){for (var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g){for (var h="",k,l=0;g[l];l++){k=g[l];if (k.nodeType===3||k.nodeType===4)h+=k.nodeValue;else if(k.nodeType!==8)h+=a(k.childNodes)}return h}function b(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===k){y=l[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=k;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}l[q]=y}}}function d(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===
+k){y=l[t.sizset];break}if (t.nodeType===1){if(!p){t.sizcache=k;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(o.filter(h,[t]).length>0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||
+typeof g!=="string")return k;for (var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if (u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u=
+l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if (p.length>0)y=A(t);else H=false;for (;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&
+y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if (R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for (var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};o.matches=function(g,h){return o(g,null,null,h)};o.find=function(g,h,k){var l,q;if(!g)return[];for(var p=0,u=m.order.length;p<u;p++){var t=m.order[p];if(q=m.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");l=m.find[t](q,
+h,k);if (l!=null){g=g.replace(m.match[t],"");break}}}}l||(l=h.getElementsByTagName("*"));return{set:l,expr:g}};o.filter=function(g,h,k,l){for (var q=g,p=[],u=h,t,y,R=h&&h[0]&&w(h[0]);g&&h.length;){for(var H in m.filter)if((t=m.leftMatch[H].exec(g))!=null&&t[2]){var M=m.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(u===p)p=[];if(m.preFilter[H])if(t=m.preFilter[H](t,u,k,p,l,R)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=u[U])!=null;U++)if(D){I=M(D,t,U,u);var Da=
+l^!!I;if (k&&I!=null)if(Da)y=true;else u[U]=false;else if(Da){p.push(D);y=true}}if(I!==v){k||(u=p);g=g.replace(m.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)o.error(g);else break;q=g}return u};o.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var m=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,h){var k=typeof h==="string",l=k&&!/\W/.test(h);k=k&&!l;if (l)h=h.toLowerCase();l=0;for (var q=g.length,
+p;l<q;l++)if (p=g[l]){for (;(p=p.previousSibling)&&p.nodeType!==1;);g[l]=k||p&&p.nodeName.toLowerCase()===h?p||false:p===h}k&&o.filter(h,g,true)},">":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l<q;l++){var p=g[l];if(p){k=p.parentNode;g[l]=k.nodeName.toLowerCase()===h?k:false}}}else{l=0;for(q=g.length;l<q;l++)if(p=g[l])g[l]=k?p.parentNode:p.parentNode===h;k&&o.filter(h,g,true)}},"":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=
+h=h.toLowerCase();q=b}q("parentNode",h,l,g,p,k)},"~":function(g,h,k){var l=e++,q=d;if (typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,l,g,p,k)}},find:{ID:function(g,h,k){if(typeof h.getElementById!=="undefined"&&!k)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var k=[];h=h.getElementsByName(g[1]);for (var l=0,q=h.length;l<q;l++)h[l].getAttribute("name")===g[1]&&k.push(h[l]);return k.length===0?null:k}},
+TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,k,l,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if (p)return g;p=0;for (var u;(u=h[p])!=null;p++)if(u)if(q^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&
+"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if (!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);
+return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
+g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2===
+0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return h<k[3]-0},gt:function(g,h,k){return h>k[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if (p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for (l=h.length;k<l;k++)if(h[k]===g)return false;return true}else o.error("Syntax error, unrecognized expression: "+
+q)},CHILD:function(g,h){var k=h[1],l=g;switch(k){case "only":case "first":for (;l=l.previousSibling;)if (l.nodeType===1)return false;if(k==="first")return true;l=g;case "last":for(;l=l.nextSibling;)if(l.nodeType===1)return false;return true;case "nth":k=h[2];var q=h[3];if(k===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var u=0;for(l=p.firstChild;l;l=l.nextSibling)if(l.nodeType===1)l.nodeIndex=++u;p.sizcache=h}g=g.nodeIndex-q;return k===0?g===0:g%k===0&&g/k>=
+0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="?
+k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if (q)return q(g,k,h,l)}}},s=m.match.POS;for (var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};
+try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if (i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for (var k=0,l=g.length;k<l;k++)h.push(g[k]);else for(k=0;g[k];k++)h.push(g[k]);return h}}var C;if(r.documentElement.compareDocumentPosition)C=function(g,h){if(!g.compareDocumentPosition||!h.compareDocumentPosition){if(g==h)j=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===
+h?0:1;if (g===0)j=true;return g};else if("sourceIndex"in r.documentElement)C=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)j=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)j=true;return g};else if(r.createRange)C=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)j=true;return g.ownerDocument?-1:1}var k=g.ownerDocument.createRange(),l=h.ownerDocument.createRange();k.setStart(g,0);k.setEnd(g,0);l.setStart(h,0);l.setEnd(h,0);g=k.compareBoundaryPoints(Range.START_TO_END,
+l);if (g===0)j=true;return g};(function(){var g=r.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id");
+return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if (g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for (var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href",
+2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="<p class='TEST'></p>";if (!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for (var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
+0)){g.lastChild.className="e";if (g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[],
+l="",q;for (h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)o(g,h[q],k);return o.filter(l,k)};c.find=o;c.expr=o.selectors;c.expr[":"]=c.expr.filters;c.unique=o.uniqueSort;c.getText=a;c.isXMLDoc=w;c.contains=E})();var bb=/Until$/,cb=/^(?:parents|prevUntil|prevAll)/,db=/,/;Q=Array.prototype.slice;var Ea=function(a,b,d){if (c.isFunction(b))return c.grep(a,function(e,i){return!!b.call(e,i,e)===d});else if(b.nodeType)return c.grep(a,
+function(e){return e===b===d});else if (typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Qa.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for (var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;c.find(a,this[f],b);if(f>0)for(var i=d;i<b.length;i++)for(var j=0;j<d;j++)if(b[j]===b[i]){b.splice(i--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=
+0,f=b.length;d<f;d++)if (c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ea(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ea(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for (var n=a.length;e<n;e++){j=a[e];i[j]||(i[j]=c.expr.match.POS.test(j)?c(j,b||this.context):j)}for(;f&&f.ownerDocument&&f!==b;){for(j in i){e=i[j];if(e.jquery?e.index(f)>
+-1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for (;s&&s.ownerDocument&&s!==b;){if (o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),
+a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},
+nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if (f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):
+e;if ((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for (a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==
+b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/<tbody/i,gb=/<|&\w+;/,sa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ia=function(a,b,d){return eb.test(d)?a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],
+col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if (!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)},
+wrapAll:function(a){if (c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for (var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?
+d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if (this[0]&&this[0].parentNode)return this.domManip(arguments,
+false,function(b){this.parentNode.insertBefore(b,this)});else if (arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&
+!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if (!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/<script/i.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(Ha.exec(a)||
+["",""])[1].toLowerCase()]){a=a.replace(Ga,Ia);try{for (var b=0,d=this.length;b<d;b++)if (this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var i=c(this),j=i.html();i.empty().append(function(){return a.call(this,e,j)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,
+b,f))});else a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(s){return c.nodeName(s,"table")?s.getElementsByTagName("tbody")[0]||s.appendChild(s.ownerDocument.createElement("tbody")):s}var e,i,j=a[0],n=[];if (!c.support.checkClone&&arguments.length===3&&typeof j===
+"string"&&sa.test(j))return this.each(function(){c(this).domManip(a,b,d,true)});if (c.isFunction(j))return this.each(function(s){var x=c(this);a[0]=j.call(this,s,b?x.html():v);x.domManip(a,b,d)});if(this[0]){e=a[0]&&a[0].parentNode&&a[0].parentNode.nodeType===11?{fragment:a[0].parentNode}:ra(a,this,n);if(i=e.fragment.firstChild){b=b&&c.nodeName(i,"tr");for (var o=0,m=this.length;o<m;o++)d.call(b?f(this[o],i):this[o],e.cacheable||this.length>1||o>0?e.fragment.cloneNode(true):e.fragment)}n&&c.each(n,
+Ma)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);for (var e=0,i=d.length;e<i;e++){var j=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),j);f=f.concat(j)}return this.pushStack(f,a,d.selector)}});c.each({remove:function(a,b){if (!a||c.filter(a,[this]).length){if(!b&&this.nodeType===1){c.cleanData(this.getElementsByTagName("*"));c.cleanData([this])}this.parentNode&&
+this.parentNode.removeChild(this)}},empty:function(){for (this.nodeType===1&&c.cleanData(this.getElementsByTagName("*"));this.firstChild;)this.removeChild(this.firstChild)}},function(a,b){c.fn[a]=function(){return this.each(b,arguments)}});c.extend({clean:function(a,b,d,f){b=b||r;if (typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||r;var e=[];c.each(a,function(i,j){if(typeof j==="number")j+="";if(j){if(typeof j==="string"&&!gb.test(j))j=b.createTextNode(j);else if(typeof j===
+"string"){j=j.replace(Ga,Ia);var n=(Ha.exec(j)||["",""])[1].toLowerCase(),o=F[n]||F._default,m=o[0];i=b.createElement("div");for (i.innerHTML=o[1]+j+o[2];m--;)i=i.lastChild;if (!c.support.tbody){m=fb.test(j);n=n==="table"&&!m?i.firstChild&&i.firstChild.childNodes:o[1]==="<table>"&&!m?i.childNodes:[];for(o=n.length-1;o>=0;--o)c.nodeName(n[o],"tbody")&&!n[o].childNodes.length&&n[o].parentNode.removeChild(n[o])}!c.support.leadingWhitespace&&V.test(j)&&i.insertBefore(b.createTextNode(V.exec(j)[0]),i.firstChild);
+j=c.makeArray(i.childNodes)}if (j.nodeType)e.push(j);else e=c.merge(e,j)}});if(d)for (a=0;e[a];a++)if(f&&c.nodeName(e[a],"script")&&(!e[a].type||e[a].type.toLowerCase()==="text/javascript"))f.push(e[a].parentNode?e[a].parentNode.removeChild(e[a]):e[a]);else{e[a].nodeType===1&&e.splice.apply(e,[a+1,0].concat(c.makeArray(e[a].getElementsByTagName("script"))));d.appendChild(e[a])}return e},cleanData:function(a){for(var b=0,d;(d=a[b])!=null;b++){c.event.remove(d);c.removeData(d)}}});var hb=/z-?index|font-?weight|opacity|zoom|line-?height/i,
+Ja=/alpha\([^)]*\)/,Ka=/opacity=([^)]*)/,ga=/float/i,ha=/-([a-z])/ig,ib=/([A-Z])/g,jb=/^-?\d+(?:px)?$/i,kb=/^-?\d/,lb={position:"absolute",visibility:"hidden",display:"block"},mb=["Left","Right"],nb=["Top","Bottom"],ob=r.defaultView&&r.defaultView.getComputedStyle,La=c.support.cssFloat?"cssFloat":"styleFloat",ia=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if (e===v)return c.curCSS(d,f);if(typeof e==="number"&&!hb.test(f))e+="px";c.style(d,f,e)})};
+c.extend({style:function(a,b,d){if (!a||a.nodeType===3||a.nodeType===8)return v;if((b==="width"||b==="height")&&parseFloat(d)<0)d=v;var f=a.style||a,e=d!==v;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=Ja.test(a)?a.replace(Ja,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Ka.exec(f.filter)[1])/100+"":""}if(ga.test(b))b=La;b=b.replace(ha,ia);if(e)f[b]=d;return f[b]},css:function(a,
+b,d,f){if (b==="width"||b==="height"){var e,i=b==="width"?mb:nb;function j(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(i,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,"border"+this+"Width",true))||0})}a.offsetWidth!==0?j():c.swap(a,lb,j);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&
+a.currentStyle){f=Ka.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if (ga.test(b))b=La;if(!d&&e&&e[b])f=e[b];else if(ob){if(ga.test(b))b="float";b=b.replace(ib,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ha,ia);f=a.currentStyle[b]||a.currentStyle[d];if(!jb.test(f)&&kb.test(f)){b=e.left;var i=a.runtimeStyle.left;a.runtimeStyle.left=
+a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=i}}return f},swap:function(a,b,d){var f={};for (var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if (c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var pb=
+J(),qb=/<script(.|\s)*?\/script>/gi,rb=/select|textarea/i,sb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ja=/\?/,tb=/(\?|&)_=.*?(&|$)/,ub=/^(\w+:)?\/\/([^\/?#]+)/,vb=/%20/g;c.fn.extend({_load:c.fn.load,load:function(a,b,d){if (typeof a!=="string")return this._load(a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=
+c.param(b,c.ajaxSettings.traditional);f="POST"}var i=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(j,n){if (n==="success"||n==="notmodified")i.html(e?c("<div />").append(j.responseText.replace(qb,"")).find(e):j.responseText);d&&i.each(d,[j.responseText,n,j])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&
+(this.checked||rb.test(this.nodeName)||sb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if (c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,
+b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if (c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:z.XMLHttpRequest&&(z.location.protocol!=="file:"||!z.ActiveXObject)?function(){return new z.XMLHttpRequest}:
+function(){try{return new z.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&e.success.call(o,n,j,w);e.global&&f("ajaxSuccess",[w,e])}function d(){e.complete&&e.complete.call(o,w,j);e.global&&f("ajaxComplete",[w,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}
+function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),i,j,n,o=a&&a.context||e,m=e.type.toUpperCase();if (e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(m==="GET")N.test(e.url)||(e.url+=(ja.test(e.url)?"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||
+N.test(e.url))){i=e.jsonpCallback||"jsonp"+pb++;if (e.data)e.data=(e.data+"").replace(N,"="+i+"$1");e.url=e.url.replace(N,"="+i+"$1");e.dataType="script";z[i]=z[i]||function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===false&&m==="GET"){var s=J(),x=e.url.replace(tb,"$1_="+s+"$2");e.url=x+(x===e.url?(ja.test(e.url)?"&":"?")+"_="+s:"")}if(e.data&&m==="GET")e.url+=(ja.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&
+c.event.trigger("ajaxStart");s=(s=ub.exec(e.url))&&(s[1]&&s[1]!==location.protocol||s[2]!==location.host);if (e.dataType==="script"&&m==="GET"&&s){var A=r.getElementsByTagName("head")[0]||r.documentElement,B=r.createElement("script");B.src=e.url;if(e.scriptCharset)B.charset=e.scriptCharset;if(!i){var C=false;B.onload=B.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;b();d();B.onload=B.onreadystatechange=null;A&&B.parentNode&&
+A.removeChild(B)}}}A.insertBefore(B,A.firstChild);return v}var E=false,w=e.xhr();if (w){e.username?w.open(m,e.url,e.async,e.username,e.password):w.open(m,e.url,e.async);try{if(e.data||a&&a.contentType)w.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[e.url]);c.etag[e.url]&&w.setRequestHeader("If-None-Match",c.etag[e.url])}s||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",
+e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(fa){}if (e.beforeSend&&e.beforeSend.call(o,w,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");w.abort();return false}e.global&&f("ajaxSend",[w,e]);var g=w.onreadystatechange=function(q){if(!w||w.readyState===0||q==="abort"){E||d();E=true;if(w)w.onreadystatechange=c.noop}else if(!E&&w&&(w.readyState===4||q==="timeout")){E=true;w.onreadystatechange=c.noop;j=q==="timeout"?"timeout":!c.httpSuccess(w)?
+"error":e.ifModified&&c.httpNotModified(w,e.url)?"notmodified":"success";var p;if (j==="success")try{n=c.httpData(w,e.dataType,e)}catch(u){j="parsererror";p=u}if(j==="success"||j==="notmodified")i||b();else c.handleError(e,w,j,p);d();q==="timeout"&&w.abort();if(e.async)w=null}};try{var h=w.abort;w.abort=function(){w&&h.call(w);g("abort")}}catch(k){}e.async&&e.timeout>0&&setTimeout(function(){w&&!E&&g("timeout")},e.timeout);try{w.send(m==="POST"||m==="PUT"||m==="DELETE"?e.data:null)}catch(l){c.handleError(e,
+w,null,l);d()}e.async||g();return w}},handleError:function(a,b,d,f){if (a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=
+f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if (d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(j,n){if(c.isArray(n))c.each(n,
+function(o,m){b?f(j,m):d(j+"["+(typeof m==="object"||c.isArray(m)?o:"")+"]",m)});else!b&&n!=null&&typeof n==="object"?c.each(n,function(o,m){d(j+"["+o+"]",m)}):f(j,n)}function f(j,n){n=c.isFunction(n)?n():n;e[e.length]=encodeURIComponent(j)+"="+encodeURIComponent(n)}var e=[];if (b===v)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for (var i in a)d(i,a[i]);return e.join("&").replace(vb,"+")}});var ka={},wb=/toggle|show|hide/,xb=/^([+-]=)?([\d+-.]+)(.*)$/,
+W,ta=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if (a||a===0)return this.animate(K("show",3),a,b);else{a=0;for (b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(ka[d])f=ka[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();
+ka[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for (b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if (a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&
+c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},animate:function(a,b,d,f){var e=c.speed(b,d,f);if (c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var i=c.extend({},e),j,n=this.nodeType===1&&c(this).is(":hidden"),
+o=this;for (j in a){var m=j.replace(ha,ia);if (j!==m){a[m]=a[j];delete a[j];j=m}if(a[j]==="hide"&&n||a[j]==="show"&&!n)return i.complete.call(this);if((j==="height"||j==="width")&&this.style){i.display=c.css(this,"display");i.overflow=this.style.overflow}if(c.isArray(a[j])){(i.specialEasing=i.specialEasing||{})[j]=a[j][1];a[j]=a[j][0]}}if(i.overflow!=null)this.style.overflow="hidden";i.curAnim=c.extend({},a);c.each(a,function(s,x){var A=new c.fx(o,i,s);if(wb.test(x))A[x==="toggle"?n?"show":"hide":x](a);
+else{var B=xb.exec(x),C=A.cur(true)||0;if (B){x=parseFloat(B[2]);var E=B[3]||"px";if(E!=="px"){o.style[s]=(x||1)+E;C=(x||1)/A.cur(true)*C;o.style[s]=C+E}if(B[1])x=(B[1]==="-="?-1:1)*x+C;A.custom(C,x,E)}else A.custom(C,x,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for (var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",
+1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration==="number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,
+b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if (!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==
+null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(i){return e.step(i)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var e=this;f.elem=this.elem;if (f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop===
+"width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if (a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for (var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=
+this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if (c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for (var e in this.options.curAnim)c.style(this.elem,e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=
+c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for (var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if (a.elem.style&&a.elem.style[a.prop]!=
+null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if (c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in r.documentElement?function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),
+f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if (a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=
+b,e=b.ownerDocument,i,j=e.documentElement,n=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for (var o=b.offsetTop,m=b.offsetLeft;(b=b.parentNode)&&b!==n&&b!==j;){if (c.offset.supportsFixedPosition&&f.position==="fixed")break;i=e?e.getComputedStyle(b,null):b.currentStyle;o-=b.scrollTop;m-=b.scrollLeft;if(b===d){o+=b.offsetTop;m+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){o+=parseFloat(i.borderTopWidth)||
+0;m+=parseFloat(i.borderLeftWidth)||0}f=d;d=b.offsetParent}if (c.offset.subtractsBorderForOverflowNotVisible&&i.overflow!=="visible"){o+=parseFloat(i.borderTopWidth)||0;m+=parseFloat(i.borderLeftWidth)||0}f=i}if(f.position==="relative"||f.position==="static"){o+=n.offsetTop;m+=n.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){o+=Math.max(j.scrollTop,n.scrollTop);m+=Math.max(j.scrollLeft,n.scrollLeft)}return{top:o,left:m}};c.offset={initialize:function(){var a=r.body,b=r.createElement("div"),
+d,f,e,i=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);
+d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i;a.removeChild(b);c.offset.initialize=c.noop},
+bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if (c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),i=parseInt(c.curCSS(a,"top",true),10)||0,j=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,d,e);d={top:b.top-e.top+i,left:b.left-
+e.left+j};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if (!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for (var a=
+this.offsetParent||r.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],i;if (!e)return null;if(f!==v)return this.each(function(){if(i=ua(this))i.scrollTo(!a?f:c(i).scrollLeft(),a?f:c(i).scrollTop());else this[d]=f});else return(i=ua(e))?"pageXOffset"in i?i[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&i.document.documentElement[d]||i.document.body[d]:e[d]}});
+c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if (!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(i){var j=c(this);j[d](f.call(this,i,j[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||
+e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===v?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});z.jQuery=z.$=c})(window);
diff --git a/doc/config/scripts/narrow.js b/doc/config/scripts/narrow.js
new file mode 100644
index 000000000..c64516eb2
--- /dev/null
+++ b/doc/config/scripts/narrow.js
@@ -0,0 +1,133 @@
+/* This function generates menus and search box in narrow/slim fit mode */
+var narrowInit = function() {
+ /* 1: Create search form */
+ var narrowSearch = $('<div id="narrowsearch"></div>');
+ var searchform = $("#qtdocsearch");
+ narrowSearch.append(searchform);
+ $("#qtdocheader .content .qtref").after(narrowSearch);
+
+ /* 2: Create dropdowns */
+ var narrowmenu = $('<ul id="narrowmenu" class="sf-menu"></ul>');
+
+ /* Lookup */
+ var lookuptext = $("#lookup h2").attr("title");
+ $("#lookup ul").removeAttr("id");
+ $("#lookup ul li").removeAttr("class");
+ $("#lookup ul li").removeAttr("style");
+ var lookupul = $("#lookup ul");
+ var lookuplist = $('<li></li>');
+ var lookuplink = $('<a href="#"></a>');
+ lookuplink.append(lookuptext);
+ lookuplist.append(lookuplink);
+ lookuplist.append(lookupul);
+ narrowmenu.append(lookuplist);
+
+ /* Topics */
+ var topicstext = $("#topics h2").attr("title");
+ $("#topics ul").removeAttr("id");
+ $("#topics ul li").removeAttr("class");
+ $("#topics ul li").removeAttr("style");
+ var topicsul = $("#topics ul");
+ var topicslist = $('<li></li>');
+ var topicslink = $('<a href="#"></a>');
+ topicslink.append(topicstext);
+ topicslist.append(topicslink);
+ topicslist.append(topicsul);
+ narrowmenu.append(topicslist);
+
+ /* Examples */
+ var examplestext = $("#examples h2").attr("title");
+ $("#examples ul").removeAttr("id");
+ $("#examples ul li").removeAttr("class");
+ $("#examples ul li").removeAttr("style");
+ var examplesul = $("#examples ul");
+ var exampleslist = $('<li></li>');
+ var exampleslink = $('<a href="#"></a>');
+ exampleslink.append(examplestext);
+ exampleslist.append(exampleslink);
+ exampleslist.append(examplesul);
+ narrowmenu.append(exampleslist);
+
+ $("#shortCut").after(narrowmenu);
+ $('ul#narrowmenu').superfish({
+ delay: 100,
+ autoArrows: false,
+ disableHI: true
+ });
+}
+
+/* Executes on doc ready */
+$(document).ready(function(){
+ /* check if body has the narrow class */
+ if ($('body').hasClass('narrow')) {
+ /* run narrowInit */
+ narrowInit();
+ }
+
+ /* messure window width and add class if it is smaller than 600 px */
+ if ($(window).width()<600) {
+ $('body').addClass('narrow');
+ /* if the search box contains */
+ if ($("#narrowsearch").length == 0) {
+ /* run narrowInit */
+ narrowInit();
+ }
+ }
+ else { /* if the window is wider than 600 px, narrow is removed */
+ $('body').removeClass('narrow');
+ if ($("#narrowsearch").length == 0) {
+ }
+ }
+});
+/* binding resize event to this funciton */
+$(window).bind('resize', function () {
+ /* if the window is wider than 600 px, narrow class is added */
+ if ($(window).width()<600) {
+ $('body').addClass('narrow');
+ if ($("#narrowsearch").length == 0) {
+ narrowInit();
+ }
+ }
+ else {
+ /* else we remove the narrow class */
+ $('body').removeClass('narrow');
+ }
+});
+
+ $('#narrowsearch').keyup(function () {
+ /* extract the search box content */
+ var searchString = $('#narrowsearch').val();
+ /* if the string is less than three characters */
+ if ((searchString == null) || (searchString.length < 3)) {
+ /* remove classes and elements*/
+ $('#narrowsearch').removeClass('loading');
+ $('.searching').remove();
+ /* run CheckEmptyAndLoadList */
+ CheckEmptyAndLoadList();
+
+ $('.report').remove();
+ return;
+ }
+ /* if timer checks out */
+ if (this.timer) clearTimeout(this.timer);
+ this.timer = setTimeout(function () {
+ /* add loading image by adding loading class */
+ $('#narrowsearch').addClass('loading');
+ $('.searching').remove();
+
+ /* run the actual search */
+ $.ajax({
+ contentType: "application/x-www-form-urlencoded",
+ url: 'http://' + location.host + '/nokiasearch/GetDataServlet',
+ data: 'searchString='+searchString,
+ dataType:'xml',
+ type: 'post',
+ success: function (response, textStatus) {
+ /* on success remove loading img */
+ $('.searching').remove();
+ $('#narrowsearch').removeClass('loading');
+ processNokiaData(response);
+ }
+ });
+ }, 500); /* timer set to 500 ms */
+ });
diff --git a/doc/config/scripts/superfish.js b/doc/config/scripts/superfish.js
new file mode 100644
index 000000000..d1d33d0c3
--- /dev/null
+++ b/doc/config/scripts/superfish.js
@@ -0,0 +1,121 @@
+
+/*
+ * Superfish v1.4.8 - jQuery menu widget
+ * Copyright (c) 2008 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
+ */
+
+;(function($){
+ $.fn.superfish = function(op){
+
+ var sf = $.fn.superfish,
+ c = sf.c,
+ $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
+ over = function(){
+ var $$ = $(this), menu = getMenu($$);
+ clearTimeout(menu.sfTimer);
+ $$.showSuperfishUl().siblings().hideSuperfishUl();
+ },
+ out = function(){
+ var $$ = $(this), menu = getMenu($$), o = sf.op;
+ clearTimeout(menu.sfTimer);
+ menu.sfTimer=setTimeout(function(){
+ o.retainPath=($.inArray($$[0],o.$path)>-1);
+ $$.hideSuperfishUl();
+ if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
+ },o.delay);
+ },
+ getMenu = function($menu){
+ var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
+ sf.op = sf.o[menu.serial];
+ return menu;
+ },
+ addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
+
+ return this.each(function() {
+ var s = this.serial = sf.o.length;
+ var o = $.extend({},sf.defaults,op);
+ o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
+ $(this).addClass([o.hoverClass,c.bcClass].join(' '))
+ .filter('li:has(ul)').removeClass(o.pathClass);
+ });
+ sf.o[s] = sf.op = o;
+
+ $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
+ if (o.autoArrows) addArrow( $('>a:first-child',this) );
+ })
+ .not('.'+c.bcClass)
+ .hideSuperfishUl();
+
+ var $a = $('a',this);
+ $a.each(function(i){
+ var $li = $a.eq(i).parents('li');
+ $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
+ });
+ o.onInit.call(this);
+
+ }).each(function() {
+ var menuClasses = [c.menuClass];
+ if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
+ $(this).addClass(menuClasses.join(' '));
+ });
+ };
+
+ var sf = $.fn.superfish;
+ sf.o = [];
+ sf.op = {};
+ sf.IE7fix = function(){
+ var o = sf.op;
+ if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
+ this.toggleClass(sf.c.shadowClass+'-off');
+ };
+ sf.c = {
+ bcClass : 'sf-breadcrumb',
+ menuClass : 'sf-js-enabled',
+ anchorClass : 'sf-with-ul',
+ arrowClass : 'sf-sub-indicator',
+ shadowClass : 'sf-shadow'
+ };
+ sf.defaults = {
+ hoverClass : 'sfHover',
+ pathClass : 'overideThisToUse',
+ pathLevels : 1,
+ delay : 800,
+ animation : {opacity:'show'},
+ speed : 'normal',
+ autoArrows : true,
+ dropShadows : true,
+ disableHI : false, // true disables hoverIntent detection
+ onInit : function(){}, // callback functions
+ onBeforeShow: function(){},
+ onShow : function(){},
+ onHide : function(){}
+ };
+ $.fn.extend({
+ hideSuperfishUl : function(){
+ var o = sf.op,
+ not = (o.retainPath===true) ? o.$path : '';
+ o.retainPath = false;
+ var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
+ .find('>ul').hide().css('visibility','hidden');
+ o.onHide.call($ul);
+ return this;
+ },
+ showSuperfishUl : function(){
+ var o = sf.op,
+ sh = sf.c.shadowClass+'-off',
+ $ul = this.addClass(o.hoverClass)
+ .find('>ul:hidden').css('visibility','visible');
+ sf.IE7fix.call($ul);
+ o.onBeforeShow.call($ul);
+ $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
+ return this;
+ }
+ });
+
+})(jQuery);
diff --git a/doc/config/style/narrow.css b/doc/config/style/narrow.css
new file mode 100644
index 000000000..39b47400c
--- /dev/null
+++ b/doc/config/style/narrow.css
@@ -0,0 +1,271 @@
+ /* start narrow mode */
+
+ body.narrow
+ {
+ background-image: none;
+ }
+
+ .narrow a {
+ color: #00732f;
+ }
+
+ .narrow .header, .narrow .header .content, .narrow .footer, .narrow .wrapper {
+ margin: 0 7px;
+ min-width: 300px;
+ }
+
+ .narrow .footer {
+ margin: 0px;
+ }
+
+ .creator .header, .creator .header .content, .creator .footer, .creator .wrapper {
+ margin: 0px;
+ min-width: 300px;
+ }
+ .narrow .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background: #fff url(../images/header_bg.png) repeat-x 0 100%;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ }
+
+ .narrow .header .content
+ {
+ }
+
+ .narrow .header #nav-logo
+ {
+ display: none;
+ }
+
+ .narrow .header .qtref
+ {
+ width: auto;
+ height: auto;
+ color: #00732f;
+ position: static;
+ float: left;
+ margin-left: 25px;
+ font: bold 18px/1 Arial;
+ }
+
+ .narrow .header .qtref a
+ {
+ color: #00732F;
+ }
+
+ .narrow .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ width: 260px;
+ }
+
+ .narrow .header #nav-topright
+ {
+ display: none;
+ }
+
+ .narrow .header #shortCut
+ {
+ clear: both;
+ font-weight: normal;
+ position: static;
+ float: left;
+ margin: 15px 0 0 25px;
+ overflow: hidden;
+ padding: 0;
+ height: auto;
+ }
+
+ .narrow .header #shortCut ul
+ {
+ float: none;
+ margin: 0;
+ width: auto;
+ font-size: 11px;
+ }
+
+ .narrow .header #shortCut ul li
+ {
+ background-image: none;
+ }
+
+ .narrow .header #shortCut ul .shortCut-topleft-active,
+ .narrow .header #shortCut ul .shortCut-topleft-inactive
+ {
+ background-image: none;
+ height: auto;
+ padding: 0;
+ width: auto;
+ }
+ .narrow .header #shortCut ul li a
+ {
+ color: #00732F;
+ }
+
+ .narrow .wrapper .hd
+ {
+ background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+ }
+
+ .narrow .wrapper .bd
+ {
+ background: url(../images/bg_l_blank.png) repeat-y 0 0;
+ }
+
+ .narrow .wrapper .ft
+ {
+ background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+ }
+
+ .narrow .sidebar
+ {
+ display: none;
+ }
+
+ .narrow .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+
+ .creator .wrap
+ {
+ margin: 0px;
+ background:#FFFFFF;
+ }
+ .narrow .wrap .toolbar
+ {
+ border-bottom: none;
+ }
+
+ .narrow .wrap .content
+ {
+ padding-top: 15px;
+ }
+ .creator .wrap .content
+ {
+ padding-top: 10px;
+ }
+ .creator .wrap .content .guide
+ {
+ padding-top: 15px;
+ }
+ .narrow .wrap .feedback
+ {
+ display: none;
+ }
+
+ .narrow .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .narrow .wrap .breadcrumb ul li a {
+ color: #00732f;
+ }
+
+ .narrow .wrap .breadcrumb ul li.last a {
+ color: #363534;
+ }
+
+ #narrowsearch {
+ display: none;
+ }
+
+ .narrow #narrowsearch {
+ display: block;
+ float: right;
+ margin-right: 25px;
+ _position: relative;
+ }
+
+ .narrow #narrowsearch fieldset {
+ _position: absolute;
+ _margin-top: -1px;
+ }
+
+ .narrow #narrowsearch {
+ background: url("http://doc.qt.nokia.com/prototype/html/images/sprites-combined.png") no-repeat scroll -6px -348px transparent;
+ height: 21px;
+ padding: 2px 0 0 5px;
+ width: 167px;
+ }
+
+ .narrow #narrowsearch input {
+ border: none;
+ font: 13px/1.2 Verdana;
+ height: 19px;
+ outline: none;
+ padding: 0;
+ width: 158px;
+ *border: 1px solid #fff;
+ *height: 17px;
+ _height: 18px;
+ }
+ .narrow .indexbox .indexIcon {
+ display: none;
+ }
+
+ .narrow .indexboxcont .section {
+ width: 64%;
+ padding-left: 0;
+ }
+
+ .narrow .indexboxcont .sectionlist {
+ width: 32.5%;
+ }
+
+ #narrowmenu {
+ display: none;
+ float: right;
+ margin: 15px 40px 0 0;
+ font-size: 11px;
+ position: relative;
+ }
+
+ .narrow #narrowmenu {
+ display: block;
+ }
+
+ #narrowmenu a {
+ line-height: 1.1;
+ background: url(../images/arrow_down.png) no-repeat 100% 50%;
+ white-space: nowrap;
+ padding: 0 16px 0 5px;
+ }
+
+ #narrowmenu li {
+ margin-left: 20px;
+ }
+
+ #narrowmenu li li {
+ margin: 0 0 5px 0;
+ }
+
+ #narrowmenu li li a {
+ padding: 0;
+ background-image: none;
+ }
+
+ #narrowmenu li,
+ #narrowmenu li ul {
+ background-color: #fff;
+ margin-top:-1px;
+ }
+
+ #narrowmenu li ul {
+ width: auto;
+ padding: 5px;
+ }
+
+ .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+ top: 1.2em;
+ }
+
+ /* end narrow mode */
+ .creator #narrowsearch, .creator #narrowmenu{
+ display:none;
+ }
diff --git a/doc/config/style/offline.css b/doc/config/style/offline.css
new file mode 100644
index 000000000..3689ee8d4
--- /dev/null
+++ b/doc/config/style/offline.css
@@ -0,0 +1,673 @@
+@media screen
+{
+
+/* basic elements */
+ html
+ {
+ color: #000000;
+ background: #FFFFFF;
+ }
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+ fieldset, img
+ {
+ border: 0;
+ max-width:100%;
+ }
+ address, caption, cite, code, dfn, em, strong, th, var, optgroup
+ {
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ del, ins
+ {
+ text-decoration: none;
+ }
+ li
+ {
+ list-style: none;
+ }
+ ol li
+ {
+ list-style: decimal;
+ }
+ caption, th
+ {
+ text-align: left;
+ }
+ h1, h2, h3, h4, h5, h6
+ {
+ font-size: 100%;
+ }
+ q:before, q:after
+ {
+ content: '';
+ }
+ abbr, acronym
+ {
+ border: 0;
+ font-variant: normal;
+ }
+ sup, sub
+ {
+ vertical-align: baseline;
+ }
+ tt, .qmlreadonly span, .qmldefault span
+ {
+ word-spacing:0.5em;
+ }
+ legend
+ {
+ color: #000000;
+ }
+ strong
+ {
+ font-weight: bold;
+ }
+ em
+ {
+ font-style: italic;
+ }
+
+ body
+ {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ }
+ a
+ {
+ color: #00732F;
+ text-decoration: none;
+ }
+ hr
+ {
+ background-color: #E6E6E6;
+ border: 1px solid #E6E6E6;
+ height: 1px;
+ width: 100%;
+ text-align: left;
+ margin: 1.5em 0 1.5em 0;
+ }
+
+ pre
+ {
+ border: 1px solid #DDDDDD;
+ -moz-border-radius: 0.7em 0.7em 0.7em 0.7em;
+ -webkit-border-radius: 0.7em 0.7em 0.7em 0.7em;
+ border-radius: 0.7em 0.7em 0.7em 0.7em;
+ margin: 0 1.5em 1em 1em;
+ padding: 1em 1em 1em 1em;
+ overflow-x: auto;
+ }
+ table, pre
+ {
+ -moz-border-radius: 0.7em 0.7em 0.7em 0.7em;
+ -webkit-border-radius: 0.7em 0.7em 0.7em 0.7em;
+ border-radius: 0.7em 0.7em 0.7em 0.7em;
+ background-color: #F6F6F6;
+ border: 1px solid #E6E6E6;
+ border-collapse: separate;
+ margin-bottom: 2.5em;
+ }
+ pre {
+ font-size: 90%;
+ display: block;
+ overflow:hidden;
+ }
+ thead
+ {
+ margin-top: 0.5em;
+ font-weight: bold
+ }
+ th
+ {
+ padding: 0.5em 1.5em 0.5em 1.5em;
+ background-color: #E1E1E1;
+ border-left: 1px solid #E6E6E6;
+ }
+ td
+ {
+ padding: 0.25em 1.5em 0.25em 2em;
+ }
+
+ td.rightAlign
+ {
+ padding: 0.25em 0.5em 0.25em 1em;
+ }
+ table tr.odd
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #F6F6F6;
+ color: #66666E;
+ }
+ table tr.even
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #ffffff;
+ color: #66666E;
+ }
+
+ div.float-left
+ {
+ float: left; margin-right: 2em
+ }
+ div.float-right
+ {
+ float: right; margin-left: 2em
+ }
+
+ span.comment
+ {
+ color: #008B00;
+ font-style: italic
+ }
+ span.string, span.char
+ {
+ color: #000084;
+ }
+ span.number
+ {
+ color: #a46200;
+ }
+ span.operator
+ {
+ color: #202020;
+ }
+ span.keyword
+ {
+ color: #840000;
+ }
+ span.name
+ {
+ color: black
+ }
+ span.type
+ {
+ font-weight: bold
+ }
+ span.type a:visited
+ {
+ color: #0F5300;
+ }
+ span.preprocessor
+ {
+ color: #404040
+ }
+/* end basic elements */
+
+/* font style elements */
+ .heading
+ {
+ font-weight: bold;
+ font-size: 125%;
+ }
+ .subtitle
+ {
+ font-size: 110%
+ }
+ .small-subtitle
+ {
+ font-size: 100%
+ }
+ .red
+ {
+ color:red;
+ }
+/* end font style elements */
+
+/* global settings*/
+ .header, .footer
+ {
+ display: block;
+ clear: both;
+ overflow: hidden;
+ }
+/* end global settings*/
+
+/* header elements */
+ .header .qtref
+ {
+ color: #00732F;
+ font-weight: bold;
+ font-size: 130%;
+ }
+
+ .header .content
+ {
+ margin-bottom: 0.5em
+ }
+
+ .naviNextPrevious
+ {
+ display: none
+ }
+ .header .breadcrumb
+ {
+ font-size: 90%;
+ padding: 0.5em 0 0.5em 1em;
+ margin: 0;
+ background-color: #fafafa;
+ height: 1.35em;
+ border-bottom: 1px solid #d1d1d1;
+ }
+
+ .header .breadcrumb ul
+ {
+ margin: 0;
+ padding: 0;
+ }
+
+ .header .content
+ {
+ word-wrap: break-word;
+ }
+
+ .header .breadcrumb ul li
+ {
+ float: left;
+ background: url(../images/breadcrumb.png) no-repeat 0 3px;
+ padding-left: 1.5em;
+ margin-left: 1.5em;
+ }
+
+ .header .breadcrumb ul li.last
+ {
+ font-weight: normal;
+ }
+
+ .header .breadcrumb ul li a
+ {
+ color: #00732F;
+ }
+
+ .header .breadcrumb ul li.first
+ {
+ background-image: none;
+ padding-left: 0;
+ margin-left: 0;
+ }
+
+ .header .content ol li {
+ background: none;
+ margin-bottom: 1.0em;
+ margin-left: 1.2em;
+ padding-left: 0
+ }
+
+ .header .content li
+ {
+ background: url(../images/bullet_sq.png) no-repeat 0 5px;
+ margin-bottom: 1em;
+ padding-left: 1.2em;
+ }
+
+/* end header elements */
+
+/* content elements */
+ .content h1
+ {
+ font-weight: bold;
+ font-size: 150%
+ }
+
+ .content h2
+ {
+ font-weight: bold;
+ font-size: 135%;
+ width: 100%;
+ }
+ .content h3
+ {
+ font-weight: bold;
+ font-size: 120%;
+ width: 100%;
+ }
+ .content table p
+ {
+ margin: 0
+ }
+ .content ul
+ {
+ padding-left: 2.5em;
+ }
+ .content li
+ {
+ padding-top: 0.25em;
+ padding-bottom: 0.25em;
+ }
+ .content ul img {
+ vertical-align: middle;
+ }
+
+ .content a:visited
+ {
+ color: #4c0033;
+ text-decoration: none;
+ }
+
+ .content a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ a:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+ descr p a
+ {
+ text-decoration: underline;
+ }
+
+ .descr p a:visited
+ {
+ text-decoration: underline;
+ }
+
+ .alphaChar{
+ width:95%;
+ background-color:#F6F6F6;
+ border:1px solid #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ font-size:12pt;
+ padding-left:10px;
+ margin-top:10px;
+ margin-bottom:10px;
+ }
+ .flowList{
+ /*vertical-align:top;*/
+ /*margin:20px auto;*/
+
+ column-count:3;
+ -webkit-column-count:3;
+ -moz-column-count:3;
+/*
+ column-width:100%;
+ -webkit-column-width:200px;
+ -col-column-width:200px;
+*/
+ column-gap:41px;
+ -webkit-column-gap:41px;
+ -moz-column-gap:41px;
+
+ column-rule: 1px dashed #ccc;
+ -webkit-column-rule: 1px dashed #ccc;
+ -moz-column-rule: 1px dashed #ccc;
+ }
+
+ .flowList dl{
+ }
+ .flowList dd{
+ /*display:inline-block;*/
+ margin-left:10px;
+ min-width:250px;
+ line-height: 1.5;
+ min-width:100%;
+ min-height:15px;
+ }
+
+ .flowList dd a{
+ }
+
+ .content .flowList p{
+ padding:0px;
+ }
+
+ .content .alignedsummary
+ {
+ margin: 15px;
+ }
+
+
+ .qmltype
+ {
+ text-align: center;
+ font-size: 120%;
+ }
+ .qmlreadonly
+ {
+ padding-left: 5px;
+ float: right;
+ color: #254117;
+ }
+
+ .qmldefault
+ {
+ padding-left: 5px;
+ float: right;
+ color: red;
+ }
+
+ .qmldoc
+ {
+ }
+
+ .generic .alphaChar{
+ margin-top:5px;
+ }
+
+ .generic .odd .alphaChar{
+ background-color: #F6F6F6;
+ }
+
+ .generic .even .alphaChar{
+ background-color: #FFFFFF;
+ }
+
+ .memItemRight{
+ padding: 0.25em 1.5em 0.25em 0;
+ }
+ .highlightedCode
+ {
+ margin: 1.0em;
+ }
+ .annotated td {
+ padding: 0.25em 0.5em 0.25em 0.5em;
+ }
+
+ .header .content .toc ul
+ {
+ padding-left: 0px;
+ }
+
+ .content .toc h3 {
+ border-bottom: 0px;
+ margin-top: 0px;
+ }
+
+ .content .toc h3 a:hover {
+ color: #00732F;
+ text-decoration: none;
+ }
+
+ .content .toc .level2
+ {
+ margin-left: 1.5em;
+ }
+
+ .content .toc .level3
+ {
+ margin-left: 3.0em;
+ }
+
+ .content ul li
+ {
+ background: url(../images/bullet_sq.png) no-repeat 0 0.7em;
+ padding-left: 1em
+ }
+
+ .content .toc li
+ {
+ background: url(../images/bullet_dn.png) no-repeat 0 5px;
+ padding-left: 1em
+ }
+
+ .relpage
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ padding: 25px 25px;
+ clear: both;
+ }
+ .relpage ul
+ {
+ float: none;
+ padding: 1.5em;
+ }
+
+ h3.fn, span.fn
+ {
+ -moz-border-radius:7px 7px 7px 7px;
+ -webkit-border-radius:7px 7px 7px 7px;
+ border-radius:7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ font-weight: bold;
+ word-spacing:3px;
+ padding:3px 5px;
+ }
+
+ .functionIndex {
+ font-size:12pt;
+ word-spacing:10px;
+ margin-bottom:10px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ width:100%;
+ }
+
+ .centerAlign
+ {
+ text-align:center;
+ }
+
+ .rightAlign
+ {
+ text-align:right;
+ }
+
+ .leftAlign
+ {
+ text-align:left;
+ }
+
+ .topAlign{
+ vertical-align:top
+ }
+
+ .functionIndex a{
+ display:inline-block;
+ }
+
+/* end content elements */
+/* footer elements */
+
+ .footer
+ {
+ color: #393735;
+ font-size: 0.75em;
+ text-align: center;
+ padding-top: 1.5em;
+ padding-bottom: 1em;
+ background-color: #E6E7E8;
+ margin: 0;
+ }
+ .footer p
+ {
+ margin: 0.25em
+ }
+ .small
+ {
+ font-size: 0.5em;
+ }
+/* end footer elements */
+
+ .item {
+ float: left;
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+ }
+
+
+ .item .primary {
+ margin-right: 220px;
+ position: relative;
+ }
+
+ .item hr {
+ margin-left: -220px;
+ }
+
+ .item .secondary {
+ float: right;
+ width: 200px;
+ position: relative;
+ }
+
+ .item .cols {
+ clear: both;
+ display: block;
+ }
+
+ .item .cols .col {
+ float: left;
+ margin-left: 1.5%;
+ }
+
+ .item .cols .col.first {
+ margin-left: 0;
+ }
+
+ .item .cols.two .col {
+ width: 45%;
+ }
+
+ .item .box {
+ margin: 0 0 10px 0;
+ }
+
+ .item .box h3 {
+ margin: 0 0 10px 0;
+ }
+
+ .cols.unclear {
+ clear:none;
+ }
+}
+
+/* end of screen media */
+
+/* start of print media */
+
+@media print
+{
+ input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft, #feedbackBox, #blurpage, .toc, .breadcrumb, .toolbar, .floatingResult
+ {
+ display: none;
+ background: none;
+ }
+ .content
+ {
+ background: none;
+ display: block;
+ width: 100%; margin: 0; float: none;
+ }
+}
+/* end of print media */
diff --git a/doc/config/style/style.css b/doc/config/style/style.css
new file mode 100644
index 000000000..6c6336047
--- /dev/null
+++ b/doc/config/style/style.css
@@ -0,0 +1,1731 @@
+@media screen
+{
+
+/* basic elements */
+ html
+ {
+ color: #000000;
+ background: #FFFFFF;
+ }
+ body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td
+ {
+ margin: 0;
+ padding: 0;
+ }
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+ fieldset, img
+ {
+ border: 0;
+ max-width:100%;
+ }
+ address, caption, cite, code, dfn, em, strong, th, var, optgroup
+ {
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ del, ins
+ {
+ text-decoration: none;
+ }
+ li
+ {
+ list-style: none;
+ }
+ ol li
+ {
+ list-style: decimal;
+ }
+ caption, th
+ {
+ text-align: left;
+ }
+ h1, h2, h3, h4, h5, h6
+ {
+ font-size: 100%;
+ }
+ q:before, q:after
+ {
+ content: '';
+ }
+ abbr, acronym
+ {
+ border: 0;
+ font-variant: normal;
+ }
+ sup, sub
+ {
+ vertical-align: baseline;
+ }
+ tt, .qmlreadonly span, .qmldefault span
+ {
+ word-spacing:5px;
+ }
+ legend
+ {
+ color: #000000;
+ }
+ input, button, textarea, select, optgroup, option
+ {
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ input, button, textarea, select
+ {
+ font-size: 100%;
+ }
+ strong
+ {
+ font-weight: bold;
+ }
+ em
+ {
+ font-style: italic;
+ }
+
+ /* adding Qt theme */
+ html
+ {
+ /* background-color: #e5e5e5;*/
+ }
+ body
+ {
+ background: #e6e7e8 url(../images/page_bg.png) repeat-x 0 0;
+ font: normal 13px/1.2 Verdana;
+ color: #363534;
+ }
+ a
+ {
+ color: #00732F;
+ text-decoration: none;
+ }
+ hr
+ {
+ background-color: #E6E6E6;
+ border: 1px solid #E6E6E6;
+ height: 1px;
+ width: 100%;
+ text-align: left;
+ margin: 15px 0px 15px 0px;
+ }
+
+ pre
+ {
+ border: 1px solid #DDDDDD;
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ overflow-x: auto;
+ }
+ table, pre
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #E6E6E6;
+ border-collapse: separate;
+ font-size: 11px;
+ margin-bottom: 25px;
+ }
+ pre.highlightedCode {
+ display: block;
+ overflow:hidden;
+ }
+ thead
+ {
+ margin-top: 5px;
+ font:600 12px/1.2 Arial;
+ }
+ th
+ {
+ padding: 5px 15px 5px 15px;
+ background-color: #E1E1E1;
+ border-left: 1px solid #E6E6E6;
+ }
+ td
+ {
+ padding: 3px 15px 3px 20px;
+ }
+ tr.odd td:hover, tr.even td:hover {}
+
+ td.rightAlign
+ {
+ padding: 3px 5px 3px 10px;
+ }
+ table tr.odd
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #F6F6F6;
+ color: #66666E;
+ }
+ table tr.even
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #ffffff;
+ color: #66666E;
+ }
+ table tr.odd td:hover, table tr.even td:hover
+ {
+ /* background-color: #E6E6E6;*/ /* disabled until further notice */
+ }
+
+ div.float-left
+ {
+ float: left; margin-right: 2em
+ }
+ div.float-right
+ {
+ float: right; margin-left: 2em
+ }
+
+ span.comment
+ {
+ color: #008B00;
+ font-style: italic
+ }
+ span.string, span.char
+ {
+ color: #000084;
+ }
+ span.number
+ {
+ color: #a46200;
+ }
+ span.operator
+ {
+ color: #202020;
+ }
+ span.keyword
+ {
+ color: #840000;
+ }
+ span.name
+ {
+ color: black
+ }
+ span.type
+ {
+ font-weight: bold
+ }
+ span.type a:visited
+ {
+ color: #0F5300;
+ }
+ span.preprocessor
+ {
+ color: #404040
+ }
+/* end basic elements */
+
+/* font style elements */
+ .heading
+ {
+ font: normal bold 16px/1.2 Arial;
+ padding-bottom: 15px;
+ }
+ .subtitle
+ {
+ font-size: 13px;
+ }
+ .small-subtitle
+ {
+ font-size: 13px;
+ }
+ .red
+ {
+ color:red;
+ }
+ .figCaption{
+ color:#363534;
+ font:italic 11px/1.2 Verdana;
+ padding-top:0;
+ }
+/* end font style elements */
+
+/* global settings*/
+ .header, .footer, .wrapper
+ {
+ min-width: 600px;
+ max-width: 1500px;
+ margin: 0 30px;
+ }
+ .header, .footer
+ {
+ display: block;
+ clear: both;
+ overflow: hidden;
+ }
+ .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+/* end global settings*/
+
+/* header elements */
+ .header
+ {
+ height: 115px;
+ position: relative;
+ }
+ .header .icon
+ {
+ position: absolute;
+ top: 13px;
+ left: 0;
+ }
+ .header .qtref
+ {
+ position: absolute;
+ top: 28px;
+ left: 88px;
+ width: 302px;
+ height: 22px;
+ }
+ .header .qtref span
+ {
+ display: block;
+ width: 302px;
+ height: 22px;
+ text-indent: -999em;
+ background: url(../images/sprites-combined.png) no-repeat -78px -235px;
+ }
+ .content a:visited
+ {
+ color: #4c0033;
+ text-decoration: none;
+ }
+ .content a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ #nav-topright
+ {
+ height: 70px;
+ }
+
+ #nav-topright ul
+ {
+ list-style-type: none;
+ float: right;
+ width: 370px;
+ margin-top: 11px;
+ }
+
+ #nav-topright li
+ {
+ display: inline-block;
+ margin-right: 20px;
+ float: left;
+ }
+
+ #nav-topright li.nav-topright-last
+ {
+ margin-right: 0;
+ }
+
+ #nav-topright li a
+ {
+ background: transparent url(../images/sprites-combined.png) no-repeat;
+ height: 18px;
+ display: block;
+ overflow: hidden;
+ text-indent: -9999px;
+ }
+
+ #nav-topright li.nav-topright-home a
+ {
+ width: 65px;
+ background-position: -2px -91px;
+ }
+
+ #nav-topright li.nav-topright-home a:hover
+ {
+ background-position: -2px -117px;
+ }
+
+ #nav-topright li.nav-topright-dev a
+ {
+ width: 30px;
+ background-position: -76px -91px;
+ }
+
+ #nav-topright li.nav-topright-dev a:hover
+ {
+ background-position: -76px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-labs a
+ {
+ width: 40px;
+ background-position: -114px -91px;
+ }
+
+ #nav-topright li.nav-topright-labs a:hover
+ {
+ background-position: -114px -117px;
+ }
+
+ #nav-topright li.nav-topright-doc a
+ {
+ width: 32px;
+ background-position: -162px -91px;
+ }
+
+ #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
+ {
+ background-position: -162px -117px;
+ }
+
+ #nav-topright li.nav-topright-blog a
+ {
+ width: 40px;
+ background-position: -203px -91px;
+ }
+
+ #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
+ {
+ background-position: -203px -117px;
+ }
+
+ #nav-topright li.nav-topright-shop a
+ {
+ width: 40px;
+ background-position: -252px -91px;
+ }
+
+ #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
+ {
+ background-position: -252px -117px;
+ }
+
+ #nav-logo
+ {
+ background: transparent url(../images/sprites-combined.png ) no-repeat 0 -225px;
+ left: -3px;
+ position: absolute;
+ width: 75px;
+ height: 75px;
+ top: 13px;
+ }
+ #nav-logo a
+ {
+ width: 75px;
+ height: 75px;
+ display: block;
+ text-indent: -9999px;
+ overflow: hidden;
+ }
+
+ .shortCut-topleft-inactive
+ {
+ padding-left: 3px;
+ padding-right: 3px;
+ background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px;
+ height: 20px;
+ }
+ .shortCut-topleft-inactive span
+ {
+ font-variant: normal;
+ }
+ .shortCut-topleft-inactive span a:hover, .shortCut-topleft-active a:hover
+ {
+ text-decoration:none;
+ }
+ #shortCut
+ {
+ padding-top: 10px;
+ font-weight: bolder;
+ color: #b0adab;
+ }
+ #shortCut ul
+ {
+ list-style-type: none;
+ float: left;
+ width: 347px;
+ margin-left: 100px;
+ }
+ #shortCut li
+ {
+ display: inline-block;
+ margin-right: 25px;
+ float: left;
+ white-space: nowrap;
+ }
+ #shortCut li a
+ {
+ color: #b0adab;
+ }
+ #shortCut li a:hover
+ {
+ color: #44a51c;
+ }
+/* end header elements */
+
+/* content and sidebar elements */
+ .wrapper
+ {
+ background: url(../images/bg_r.png) repeat-y 100% 0;
+ }
+ .wrapper .hd
+ {
+ padding-left: 216px;
+ height: 15px;
+ background: url(../images/page.png) no-repeat 0 0;
+ overflow: hidden;
+ }
+
+ .wrapper .hd span
+ {
+ height: 15px;
+ display: block;
+ overflow: hidden;
+ background: url(../images/page.png) no-repeat 100% -30px;
+ }
+ .wrapper .bd
+ {
+ background: url(../images/bg_l.png) repeat-y 0 0;
+ position: relative;
+ }
+
+ .wrapper .ft
+ {
+ padding-left: 216px;
+ height: 15px;
+ background: url(../images/page.png) no-repeat 0 -75px;
+ overflow: hidden;
+ }
+
+ .wrapper .ft span
+ {
+ height: 15px;
+ display: block;
+ background: url(../images/page.png) no-repeat 100% -60px;
+ overflow: hidden;
+ }
+ .navTop{
+ float:right;
+ display:block;
+ padding-right:15px;
+ }
+/* end content and sidebar elements */
+
+/* sidebar elements */
+ .sidebar
+ {
+ float: left;
+ margin-left: 5px;
+ width: 200px;
+ font-size: 11px;
+ }
+
+ .sidebar .searchlabel
+ {
+ padding: 0 0 2px 17px;
+ font: normal bold 11px/1.2 Verdana;
+ }
+
+ .sidebar .search
+ {
+ padding: 0 15px 0 16px;
+ }
+
+ .sidebar .search form
+ {
+ background: url(../images/sprites-combined.png) no-repeat -6px -348px;
+ height:21px;
+ padding:2px 0 0 5px;
+ width:167px;
+ }
+
+ .sidebar .search form input#pageType
+ {
+ width: 158px;
+ height: 19px;
+ padding: 0;
+ border: 0px;
+ outline: none;
+ font: 13px/1.2 Verdana;
+ }
+
+ .sidebar .box
+ {
+ padding: 17px 15px 5px 16px;
+ }
+
+ .sidebar .box .first
+ {
+ background-image: none;
+ }
+
+ .sidebar .box h2
+ {
+ font: bold 16px/1.2 Arial;
+ padding: 0;
+ }
+ .sidebar .box h2 span
+ {
+ overflow: hidden;
+ display: inline-block;
+ }
+ .sidebar .box#lookup h2
+ {
+ background-image: none;
+ }
+ .sidebar #lookup.box h2 span
+ {
+ }
+ .sidebar .box#topics h2
+ {
+ background-image: none;
+ }
+ .sidebar #topics.box h2 span
+ {
+ }
+ .sidebar .box#examples h2
+ {
+ background-image: none;
+ }
+ .sidebar #examples.box h2 span
+ {
+ }
+
+ .sidebar .box .list
+ {
+ display: block;
+ max-height:200px;
+ min-height:120px;
+ overflow-y:auto;
+ overflow-x:none;
+ }
+ .list li a:hover
+ {
+ text-decoration: underline;
+ }
+ .sidebar .box ul
+ {
+ padding-bottom:5px;
+ padding-left:10px;
+ padding-top:5px;
+ }
+ .sidebar .box ul li
+ {
+ padding-left: 12px;
+ background: url(../images/bullet_gt.png) no-repeat 0 5px;
+ margin-bottom: 5px;
+ }
+ .sidebar .bottombar
+ {
+ background: url(../images/box_bg.png) repeat-x 0 bottom;
+ }
+ .sidebar .box ul li.noMatch
+ {
+ background: none;
+ color:#FF2A00;
+ font-style:italic;
+ }
+ .sidebar .box ul li.hit
+ {
+ background: none;
+ color:#AAD2F0;
+ font-style:italic;
+ }
+ .sidebar .search form input.loading
+ {
+ background:url("../images/spinner.gif") no-repeat scroll right center transparent;
+ }
+
+ .sidebar .search form {
+ _height: 23px;
+ _width: 169px;
+ }
+
+ #resultdialog {
+ display: none;
+ position: absolute;
+ *left: 30px;
+ _left: 0;
+ *top: 35px;
+ _top: 30px;
+ _zoom: 1;
+ background-color: #fff;
+ border: 1px solid #666;
+ z-index: 4;
+ margin-top: 5px;
+ _margin: 0 0 0 -20px;
+ padding: 10px;
+ width: 30%;
+ _width: 196px;
+ height: 250px;
+ overflow: auto;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ border-radius: .5em;
+ -webkit-box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
+ -moz-box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
+ box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
+ font-size: 11px;
+ }
+
+ #resultdialog a
+ {
+ color: #00732f;
+ }
+
+ #resultdialog.active {
+ display: block;
+ }
+
+ .narrow #resultdialog {
+ width: 60%;
+ _width: 360px;
+ }
+
+ .narrow #resultdialog.active {
+ right: 10px;
+ *left: auto;
+ _left: auto;
+ _right: -20px;
+ }
+
+
+ #resultdialog #resultclose {
+ float: right;
+ }
+
+ #resultdialog p,
+ #resultdialog ul {
+ clear: both;
+ margin: 3px 0;
+ }
+
+ p#searchcount span {
+ display: none;
+ }
+
+ p#searchcount.all span#resultcount,
+ p#searchcount.api span#apicount,
+ p#searchcount.article span#articlecount,
+ p#searchcount.example span#examplecount {
+ display: inline;
+ }
+
+ #resultlist li {
+ display: none;
+ }
+
+ #resultlist.api li.api,
+ #resultlist.article li.article,
+ #resultlist.example li.example,
+ #resultlist.all li {
+ display: block;
+ }
+
+ #resultlinks.api a#showapiresults,
+ #resultlinks.api a#showapiresults:hover,
+ #resultlinks.article a#showarticleresults,
+ #resultlinks.article a#showarticleresults:hover,
+ #resultlinks.example a#showexampleresults,
+ #resultlinks.example a#showexampleresults:hover,
+ #resultlinks.all a#showallresults,
+ #resultlinks.all a#showallresults:hover {
+ color: #B0ADAB;
+ }
+ .floatingResult{
+ z-index:1;
+ position:relative;
+ padding-top:0px;
+ background-color:white;
+ border:solid 1px black;
+ height:250px;
+ width:600px;
+ overflow-x:hidden;
+ overflow-y:auto;
+ }
+
+ .floatingResult:hover{
+ display:block;
+ }
+ .floatingResult:hover{
+ }
+/* end sidebar elements */
+
+/* content elements */
+ .wrap
+ {
+ margin: 0 5px 0 208px;
+ overflow: visible;
+ }
+
+ .wrap .toolbar
+ {
+ background-color: #fafafa;
+ border-bottom: 1px solid #d1d1d1;
+ height: 20px;
+ position: relative;
+ }
+ .wrap .toolbar .toolblock
+ {
+ position: absolute;
+ }
+ .wrap .toolbar .breadcrumb
+ {
+ font-size: 11px;
+ line-height: 1.2;
+ padding: 0 0 10px 21px;
+ height: 10px;
+ }
+ .wrap .toolbar .toolbuttons
+ {
+ padding: 0 0 10px 21px;
+ right: 5px;
+ vertical-align: middle;
+ overflow: hidden;
+ }
+ .wrap .toolbar .toolbuttons .active
+ {
+ color: #00732F;
+ }
+ .wrap .toolbar .toolbuttons ul
+ {
+ float: right;
+ }
+ .wrap .toolbar .toolbuttons li
+ {
+ float: left;
+ text-indent: -10px;
+ margin-top: -5px;
+ margin-right: 15px;
+ font-weight: bold;
+ color: #B0ADAB;
+ font: bold 10px/1.2 Verdana;
+ }
+
+ .toolbuttons #print
+ {
+ border-left: 1px solid #c5c4c4;
+ margin-top: 0;
+ padding-left: 7px;
+ text-indent: 0;
+ }
+ .toolbuttons #print a
+ {
+ width: 16px;
+ height: 16px;
+ }
+
+ .toolbuttons #print a span
+ {
+ width: 16px;
+ height: 16px;
+ text-indent: -999em;
+ display: block;
+ overflow: hidden;
+ background: url(../images/sprites-combined.png) no-repeat -137px -311px;
+ }
+
+ .toolbuttons #smallA
+ {
+ font-size: 10pt;
+ }
+ .toolbuttons #medA
+ {
+ font-size: 12pt;
+ }
+ .toolbuttons #bigA
+ {
+ font-size: 14pt;
+ margin-right: 7px;
+ }
+
+ #smallA:hover, #medA:hover, #bigA:hover
+ {
+ color: #00732F;
+ }
+
+ .wrap .content
+ {
+ padding: 30px;
+ word-wrap:break-word;
+ }
+
+ .wrap .breadcrumb ul
+ {
+ }
+ .wrap .breadcrumb ul li
+ {
+ float: left;
+ background: url(../images/breadcrumb.png) no-repeat 0 3px;
+ padding-left: 15px;
+ margin-left: 15px;
+ font-weight: bold;
+ }
+ .wrap .breadcrumb ul li.last
+ {
+ font-weight: normal;
+ }
+ .wrap .breadcrumb ul li a
+ {
+ color: #363534;
+ }
+ .wrap .breadcrumb ul li.first
+ {
+ background-image: none;
+ padding-left: 0;
+ margin-left: 0;
+ }
+
+ .wrap .content ol li {
+ background:none;
+ font:normal 10pt/1.2 Verdana;
+
+ margin-bottom:10px;
+ margin-left:12px;
+ /*list-style-type:disc;*/
+ }
+
+ .wrap .content ol li
+ {
+ background:none;
+ margin-bottom: 10px;
+ padding-left:0px;
+ margin-left:52px;
+ }
+
+ .wrap .content li
+ {
+ background: url(../images/bullet_sq.png) no-repeat 0 5px;
+ font: normal 400 10pt/1.2 Verdana;
+ margin-bottom: 10px;
+ padding-left:12px;
+ }
+
+ .content li:hover {}
+
+ .wrap .content h1
+ {
+ font: bold 18px/1.2 Arial;
+ }
+ .wrap .content h2
+ {
+ font:600 16px/1.2 Arial;
+ margin-top:15px;
+ width:100%;
+ }
+ .wrap .content h3
+ {
+ font: bold 14px/1.2 Arial;
+ font:600 16px/1.2 Arial;
+ margin-top:15px;
+ width:100%;
+ }
+ .wrap .content p
+ {
+ line-height: 20px;
+ padding: 5px;
+ }
+ .wrap .content table p
+ {
+ line-height: 20px;
+ }
+ .wrap .content ul
+ {
+ padding-left: 25px;
+ padding-top: 10px;
+ }
+ .wrap .content ul img {
+ vertical-align:middle;
+ }
+ a:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+ descr p a
+ {
+ text-decoration: underline;
+ }
+
+ .descr p a:visited
+ {
+ text-decoration: underline;
+ }
+ .feedback
+ {
+ float: none;
+ position: absolute;
+ right: 15px;
+ bottom: 10px;
+ font: normal 8px/1 Verdana;
+ color: #B0ADAB;
+ }
+ .feedback:hover
+ {
+ float: right;
+ font: normal 8px/1 Verdana;
+ color: #00732F;
+ text-decoration: underline;
+ }
+ .alphaChar{
+ width:95%;
+ background-color:#F6F6F6;
+ border:1px solid #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ font-size:12pt;
+ padding-left:10px;
+ margin-top:10px;
+ margin-bottom:10px;
+ }
+ .flowList{
+ /*vertical-align:top;*/
+ /*margin:20px auto;*/
+
+ column-count:3;
+ -webkit-column-count:3;
+ -moz-column-count:3;
+/*
+ column-width:100%;
+ -webkit-column-width:200px;
+ -col-column-width:200px;
+*/
+ column-gap:41px;
+ -webkit-column-gap:41px;
+ -moz-column-gap:41px;
+
+ column-rule: 1px dashed #ccc;
+ -webkit-column-rule: 1px dashed #ccc;
+ -moz-column-rule: 1px dashed #ccc;
+ }
+
+ .flowList dl{
+ }
+ .flowList dd{
+ /*display:inline-block;*/
+ margin-left:10px;
+ min-width:250px;
+ line-height: 1.5;
+ min-width:100%;
+ min-height:15px;
+ }
+
+ .flowList dd a{
+ }
+
+ .wrap .content .flowList p{
+ padding:0px;
+ }
+
+ .content .alignedsummary
+ {
+ margin: 15px;
+ }
+
+
+ .qmltype
+ {
+ text-align: center;
+ font-size: 160%;
+ }
+ .qmlreadonly
+ {
+ padding-left: 5px;
+ float: right;
+ color: #254117;
+ }
+
+ .qmldefault
+ {
+ padding-left: 5px;
+ float: right;
+ color: red;
+ }
+
+ .qmldoc
+ {
+ }
+
+ *.qmlitem p
+ {
+ }
+ #feedbackBox
+ {
+ display: none;
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ position: fixed;
+ top: 100px;
+ left: 33%;
+ height: 230px;
+ width: 400px;
+ padding: 5px;
+ background-color: #e6e7e8;
+ z-index: 4;
+ }
+ #feedcloseX
+ {
+ display: inline;
+ padding: 5px 5px 0 0;
+ margin-bottom: 3px;
+ color: #363534;
+ font-weight:bold;
+ float: right;
+ text-decoration: none;
+ }
+
+ #feedbox
+ {
+ display: inline;
+ width: 370px;
+ height: 120px;
+ margin: 0px 25px 10px 15px;
+ }
+ #noteHead
+ {
+ font-weight:bold;
+ padding:10px 10px 10px 20px;
+ }
+ #feedsubmit
+ {
+ display: inline;
+ float: right;
+ margin: 4px 32px 0 0;
+ }
+
+ .note
+ {
+ font-size:7pt;
+ padding-bottom:3px;
+ padding-left:20px;
+ }
+
+ #blurpage
+ {
+ display: none;
+ position: fixed;
+ float: none;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+ background: transparent url(../images/feedbackground.png) 0 0;
+ z-index: 3;
+ }
+ .toc
+ {
+ float: right;
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ height: auto;
+ width: 200px;
+ }
+
+ .toc h3, .generic a
+ {
+ font: bold 12px/1.2 Arial;
+ }
+
+ .generic{
+ }
+ .generic td{
+ /* padding:5px;*/
+ }
+ .generic .alphaChar{
+ margin-top:5px;
+ }
+
+ .generic .odd .alphaChar{
+ background-color: #F6F6F6;
+ }
+
+ .generic .even .alphaChar{
+ background-color: #FFFFFF;
+ }
+
+ .alignedsummary{}
+ .propsummary{}
+ .memItemLeft{}
+ .memItemRight{
+ padding:3px 15px 3px 0;
+ }
+ .bottomAlign{}
+ .highlightedCode
+ {
+ margin:10px;
+ }
+ .LegaleseLeft{}
+ .valuelist{}
+ .annotated td{
+ padding: 3px 5px 3px 5px;
+ }
+ .obsolete{}
+ .compat{}
+ .flags{}
+ .qmlsummary{}
+ .qmlitem{}
+ .qmlproto{}
+ .qmlname{}
+ .qmlreadonly{}
+ .qmldefault{}
+ .qmldoc{}
+ .qt-style{}
+ .redFont{}
+ code{}
+
+ .wrap .content .toc ul
+ {
+ padding-left: 0px;
+ }
+
+ .wrap .content .toc h3{
+ border-bottom:0px;
+ margin-top:0px;
+ }
+
+ .wrap .content .toc h3 a:hover{
+ color:#00732F;
+ text-decoration:none;
+ }
+
+
+ .wrap .content .toc .level2
+ {
+ margin-left: 15px;
+ }
+
+ .wrap .content .toc .level3
+ {
+ margin-left: 30px;
+ }
+
+ .content .toc li
+ {
+ font: normal 10px/1.2 Verdana;
+ background: url(../images/bullet_dn.png) no-repeat 0 5px;
+ }
+ .relpage
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ padding: 25px 25px;
+ clear: both;
+ }
+ .relpage ul
+ {
+ float: none;
+ padding: 15px;
+ }
+ .content .relpage li
+ {
+ font: normal 11px/1.2 Verdana;
+ }
+ h3.fn, span.fn
+ {
+ -moz-border-radius:7px 7px 7px 7px;
+ -webkit-border-radius:7px 7px 7px 7px;
+ border-radius:7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ font-weight: bold;
+ word-spacing:3px;
+ padding:3px 5px;
+ }
+
+ .functionIndex {
+ font-size:12pt;
+ word-spacing:10px;
+ margin-bottom:10px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
+ -webkit-border-radius: 7px 7px 7px 7px;
+ border-radius: 7px 7px 7px 7px;
+ width:100%;
+ }
+
+ .centerAlign
+ {
+ text-align:center;
+ }
+
+ .rightAlign
+ {
+ text-align:right;
+ }
+
+ .leftAlign
+ {
+ text-align:left;
+ }
+
+ .topAlign{
+ vertical-align:top
+ }
+
+ .functionIndex a{
+ display:inline-block;
+ }
+/* end content elements */
+
+/* footer elements */
+ .footer
+ {
+ min-height: 100px;
+ color: #797775;
+ font: normal 9px/1 Verdana;
+ text-align: center;
+ padding-top: 40px;
+ background-color: #E6E7E8;
+ margin: 0;
+ }
+ .small
+ {
+ font: normal 9px/1 Verdana;
+ }
+/* end footer elements */
+
+ /* start index box */
+ .indexbox
+ {
+ width: 100%;
+ display:inline-block;
+ }
+
+ .indexboxcont
+ {
+ display: block;
+
+ }
+
+ .indexboxbar
+ {
+ background: transparent url(../images/horBar.png ) repeat-x left bottom;
+ margin-bottom: 25px;
+
+
+ }
+
+ .indexboxcont .section
+ {
+ display: inline-block;
+ width: 49%;
+ *width:42%;
+ _width:42%;
+ padding:0 2% 0 1%;
+ vertical-align:top;
+ }
+
+ .indexboxcont .indexIcon
+ {
+ width: 11%;
+ *width:18%;
+ _width:18%;
+ overflow:hidden;
+ }
+
+ .indexboxcont .section {
+ float: left;
+ }
+
+ .indexboxcont .section p
+ {
+ padding-top: 20px;
+ padding-bottom: 20px;
+ }
+ .indexboxcont .sectionlist
+ {
+ display: inline-block;
+ vertical-align:top;
+ width: 32.5%;
+ padding: 0;
+ }
+ .indexboxcont .sectionlist ul
+ {
+ margin-bottom: 20px;
+ }
+
+ .indexboxcont .sectionlist ul li
+ {
+ line-height: 12px;
+ }
+
+ .content .indexboxcont li
+ {
+ font: normal bold 13px/1 Verdana;
+ }
+
+ .indexbox a:hover, .indexbox a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ .indexbox a:visited
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
+
+ .indexbox .indexIcon {
+ width: 11%;
+ }
+
+ .indexbox .indexIcon span
+ {
+ display: block;
+ }
+
+ .indexbox.guide .indexIcon span
+ {
+ width: 96px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -5px -376px;
+ padding: 0;
+ }
+
+ .indexbox.tools .indexIcon span
+ {
+ width: 115px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -111px -376px;
+ padding: 0;
+ }
+ .indexboxcont:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+
+
+/* start of creator spec*/
+ .creator
+ {
+ margin-left:0px;
+ margin-right:0px;
+ padding-left:0px;
+ padding-right:0px;
+ }
+ .creator .wrap .content ol li {
+ list-style-type:decimal;
+ }
+ .creator .header .icon,
+ .creator .feedback,
+ .creator .t_button,
+ .creator .feedback,
+ .creator #feedbackBox,
+ .creator #feedback,
+ .creator #blurpage,
+ /* .creator .indexbox .indexIcon span,*/
+ .creator .wrapper .hd,
+ /* .creator .indexbox .indexIcon,*/
+ .creator .header #nav-logo,
+ .creator #offlinemenu,
+ .creator #offlinesearch,
+ .creator .header #nav-topright,
+ .creator .header #shortCut ,
+ .creator .wrapper .hd,
+ .creator .wrapper .ft,
+ .creator .sidebar,
+ .creator .wrap .feedback
+ {
+ display:none;
+ }
+
+ body.creator
+ {
+ background: none;
+
+ font: normal 13px/1.2 Verdana;
+ color: #363534;
+ background-color: #FAFAFA;
+ }
+
+ .wrap .content ol li {
+
+ }
+
+
+ .creator .header, .creator .footer, .creator .wrapper
+ {
+ max-width: 1500px;
+ margin: 0px;
+ }
+
+ .creator .wrapper
+ {
+ position:relative;
+ top:5px;
+ }
+ .creator .wrapper .bd
+ {
+ background:#FFFFFF;
+ }
+
+
+ .creator .header, .footer
+ {
+ display: block;
+ clear: both;
+ overflow: hidden;
+ }
+ .creator .wrap .content p
+
+ {
+ line-height: 20px;
+ padding: 5px;
+ }
+
+ .creator .header .qtref span
+ {
+ background:none;
+ }
+
+ .creator .footer
+ {
+ border-top:1px solid #E5E5E5;
+ height: 50px;
+ margin:0px;
+ padding:10px;
+ }
+
+ .creator .footer p
+ {
+ text-align:justify;
+ max-width:900px;
+ }
+
+ .creator .wrap
+ {
+ padding:0 5px 0 5px;
+ margin: 0px;
+ }
+ .creator .wrap .toolbar
+ {
+ border-bottom:1px solid #E5E5E5;
+ /*width:100%;*/
+ margin-left:-5px;
+ margin-right:-5px;
+ }
+ .creator .wrap .breadcrumb ul li a
+ {
+ /* color: #363534;*/
+ color: #00732F;
+ }
+
+ .creator .wrap .content
+ {
+ padding: 0px;
+ word-wrap:break-word;
+ }
+
+ .creator .wrap .content ol li {
+ background:none;
+ font: inherit;
+ padding-left: 0px;
+ }
+
+ .creator .wrap .content .descr ol li {
+ margin-left: 45px;
+ }
+
+ .creator .content .alignedsummary
+ {
+ margin: 5px;
+ width:100%;
+ }
+ .creator .generic{
+ max-width:75%;
+ }
+ .creator .generic td{
+ /*padding:0;*/
+ }
+ .creator .indexboxbar
+ {
+ border-bottom:1px solid #E5E5E5;
+ margin-bottom: 25px;
+ background: none;
+ }
+
+ .creator .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background-color: #ffffff;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ border-bottom: solid #E5E5E5 1px;
+ z-index:1;
+ /* position:fixed;*/
+ }
+
+ .creator .header .content
+ {
+ }
+ .creator .header .qtref
+ {
+ color: #00732F;
+ position: static;
+ float: left;
+ margin-left: 5px;
+ font: bold 18px/1 Arial;
+ }
+
+ .creator .header .qtref:visited
+ {
+ color: #00732F;
+ }
+ .creator .header .qtref:hover
+ {
+ color: #00732F;
+ text-decoration:none;
+ }
+ .creator .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ text-decoration:none;
+ }
+
+ .creator .wrap .toolbar
+ {
+ display:block;
+ padding-top:0px;
+ }
+
+ .creator .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .creator .wrap .breadcrumb ul li a {
+ /*color: #44a51c;*/
+ }
+
+ .creator .wrap .breadcrumb ul li.last a {
+ /*color: #363534;*/
+ }
+
+ .creator #narrowmenu ul
+ {
+ border-bottom:solid 1px #E5E5E5;
+ border-left:solid 1px #E5E5E5;
+ border-right:solid 1px #E5E5E5;
+ }
+
+ .creator #narrowmenu li ul {
+ margin-top:-15px;
+ }
+
+ .creator .toc {
+ margin:10px 20px 10px 10px;
+ }
+
+ .creator #narrowsearch, .creator #narrowmenu{
+ display:none;
+ }
+/* end of creator spec*/
+
+ .item {
+ float: left;
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+ }
+
+ .item .primary {
+ margin-right: 220px;
+ position: relative;
+ }
+
+ .item hr {
+ margin-left: -220px;
+ }
+
+ .item .secondary {
+ float: right;
+ width: 200px;
+ position: relative;
+ }
+
+ .item .cols {
+ clear: both;
+ display: block;
+ }
+
+ .item .cols .col {
+ float: left;
+ margin-left: 1.5%;
+ }
+
+ .item .cols .col.first {
+ margin-left: 0;
+ }
+
+ .item .cols.two .col {
+ width: 45%;
+ }
+
+ .item .box {
+ margin: 0 0 10px 0;
+ }
+
+ .item .box h3 {
+ margin: 0 0 10px 0;
+ }
+
+ .cols.unclear {
+ clear:none;
+ }
+}
+
+/* end of screen media */
+
+/* start of print media */
+
+@media print
+{
+ input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft, #feedbackBox, #blurpage, .toc, .breadcrumb, .toolbar, .floatingResult
+ {
+ display: none;
+ background: none;
+ }
+ .content
+ {
+ background: none;
+ display: block;
+ width: 100%; margin: 0; float: none;
+ }
+}
+/* end of print media */
diff --git a/doc/config/style/style_ie6.css b/doc/config/style/style_ie6.css
new file mode 100644
index 000000000..16fb8505d
--- /dev/null
+++ b/doc/config/style/style_ie6.css
@@ -0,0 +1,54 @@
+.indexbox, .indexboxcont, .group {
+ zoom: 1;
+ height: 1%;
+}
+
+.sidebar {
+ margin-left: 3px;
+ width: 199px;
+ overflow: hidden;
+}
+
+.sidebar .search form {
+ position: relative;
+}
+
+.sidebar .search form fieldset {
+ position: absolute;
+ margin-top: -1px;
+}
+
+.sidebar .search form input#searchstring {
+ border: 1px solid #fff;
+ height: 18px;
+}
+
+.wrap {
+ zoom: 1;
+}
+
+.content,
+.toolbar {
+ zoom: 1;
+ margin-left: -3px;
+ position: relative;
+}
+
+.indexbox {
+ clear: both;
+}
+
+.indexboxcont .section {
+ zoom: 1;
+ float: left;
+}
+
+.indexboxcont .sectionlist {
+ zoom: 1;
+ float: left;
+}
+
+.wrap .toolbar .toolbuttons li {
+ text-indent: 0;
+ margin-right: 8px;
+} \ No newline at end of file
diff --git a/doc/config/style/style_ie7.css b/doc/config/style/style_ie7.css
new file mode 100644
index 000000000..afbff5f88
--- /dev/null
+++ b/doc/config/style/style_ie7.css
@@ -0,0 +1,19 @@
+.indexbox, .indexboxcont, .group {
+ min-height: 1px;
+}
+
+.sidebar .search form input#searchstring {
+ border: 1px solid #fff;
+ height: 17px;
+}
+
+
+.indexboxcont .section {
+ zoom: 1;
+ float: left;
+}
+
+.indexboxcont .sectionlist {
+ zoom: 1;
+ float: left;
+}
diff --git a/doc/config/style/style_ie8.css b/doc/config/style/style_ie8.css
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/doc/config/style/style_ie8.css
diff --git a/doc/config/style/superfish.css b/doc/config/style/superfish.css
new file mode 100644
index 000000000..2bdaef4d9
--- /dev/null
+++ b/doc/config/style/superfish.css
@@ -0,0 +1,51 @@
+.sf-menu, .sf-menu * {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.sf-menu {
+ line-height: 1.0;
+}
+.sf-menu ul {
+ position: absolute;
+ top: -999em;
+ width: 10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+ width: 100%;
+}
+.sf-menu li:hover {
+ visibility: inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+ float: left;
+ position: relative;
+}
+.sf-menu a {
+ display: block;
+ position: relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+ left: 0;
+ top: 2.5em; /* match top ul list item height */
+ z-index: 99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
diff --git a/doc/doc.pri b/doc/doc.pri
new file mode 100644
index 000000000..53f117ce3
--- /dev/null
+++ b/doc/doc.pri
@@ -0,0 +1,32 @@
+
+# Determine which qdoc3 binary we should be using. We try to use the
+# one from the Qt we built against. Otherwise use "qdoc3" on the PATH.
+TOPSRC = $$PWD/..
+QDOCCONF_FILE = $$PWD/config/qt3d.qdocconf
+DESTDIR = $$OUT_PWD/doc
+
+win32:!win32-g++ {
+ unixstyle = false
+} else :win32-g++:isEmpty(QMAKE_SH) {
+ unixstyle = false
+} else {
+ unixstyle = true
+}
+
+$$unixstyle {
+ exists($$[QT_INSTALL_BINS]/qdoc3) {
+ QDOC = $$[QT_INSTALL_BINS]/qdoc3
+ } else {
+ QDOC = qdoc3
+ }
+ docs.commands = (TOPSRC=$$TOPSRC DESTDIR=$$DESTDIR $$QDOC $$QDOCCONF_FILE)
+} else {
+ exists($$[QT_INSTALL_BINS]\\qdoc3.exe) {
+ QDOC = $$[QT_INSTALL_BINS]\\qdoc3
+ } else {
+ QDOC = qdoc3
+ }
+ docs.commands = (set TOPSRC=$$TOPSRC&set DESTDIR=$$DESTDIR&$$QDOC $$QDOCCONF_FILE)
+}
+
+QMAKE_EXTRA_TARGETS += docs
diff --git a/doc/src/acceptance/qt3d-acceptance.qdoc b/doc/src/acceptance/qt3d-acceptance.qdoc
new file mode 100644
index 000000000..82a94b6c6
--- /dev/null
+++ b/doc/src/acceptance/qt3d-acceptance.qdoc
@@ -0,0 +1,196 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qt3d-acceptance.html
+ \title Acceptance tests for Qt/3D
+ \keyword Acceptance
+
+ This section of the documentation contains some recommended
+ acceptance tests for use when verifying that Qt/3D has been
+ successfully ported to a new platform or device, and to
+ determine if the major features of Qt/3D work correctly prior
+ to a release. The list of tests is not intended to be exhaustive.
+
+ When \l{Contributing to Qt/3D}{reporting bugs}, please include
+ as much information as possible about your platform and particularly
+ its OpenGL implementation. The \c{qglinfo} program in the Qt/3D
+ source tree can be used to collect up information about the OpenGL
+ version, features, and extensions. On X11 systems, usually
+ \c{glxinfo} can be run to obtain similar information.
+
+ \section1 Basic bring-up
+
+ A pre-requisite for the acceptance tests is that Qt and Qt/3D have
+ been built and installed in accordance with the
+ \l{Building Qt/3D}{build instructions}. In particular, Qt must
+ be configured with OpenGL support and QGLWidget must be working.
+
+ First, run all unit tests on the platform or device and verify that
+ they all pass (\l{Contributing to Qt/3D}{report bugs} for those that
+ do not pass). The "make check" rule can be used to run the
+ unit tests if you are not cross-compiling. For cross-compile
+ environments, copy all of the \c{tst_*} binaries under \c{tests/auto}
+ to the device and run them.
+
+ Next, run the \l{Teapot Example} and verify that it looks similar
+ to the following picture:
+
+ \image teapot-screenshot.png
+
+ Verify that there is no horizontal or vertical distortion,
+ as shown in the following pictures:
+
+ \raw HTML
+ <center><table><tr><td>
+ \endraw
+ \image teapot-distortion.png
+ \raw HTML
+ </td><td>
+ \endraw
+ \image teapot-distortion2.png
+ \raw HTML
+ </td></tr></table></center>
+ \endraw
+
+ Resize the window if possible. The teapot should change scale but
+ keep its relative horizontal and vertical size without distortion.
+ Next, verify that the teapot can be rotated using either the mouse
+ or the cursor keys:
+
+ \image teapot-rotated.png
+
+ If the teapot does not appear at all, then check stdout for any
+ error and warning messages from the GLSL shader compiler.
+
+ \section1 Animations
+
+ Run the \l{Basket Example} and verify that the basket spins on
+ its vertical axis, and continues to do so as the window is
+ resized or the orientiation is changed with the mouse or keyboard.
+ The model should also be textured with a basket weave pattern:
+
+ \image basket-screenshot.png
+
+ Running the basket example with the environment variable
+ \c{QT3D_LOG_EVENTS} set to 1 should produce some qDebug()
+ output that indicates the number of milliseconds per frame,
+ and hence the frame rate:
+
+ \code
+ $ QT3D_LOG_EVENTS=1 ./basket
+ ...
+ LOG[0:00:01.681]: ENTER: QGLView::paintGL (16 ms since last enter)
+ LOG[0:00:01.681]: LEAVE: QGLView::paintGL (0 ms elapsed)
+ LOG[0:00:01.696]: ENTER: QGLView::paintGL (15 ms since last enter)
+ LOG[0:00:01.696]: LEAVE: QGLView::paintGL (0 ms elapsed)
+ LOG[0:00:01.713]: ENTER: QGLView::paintGL (17 ms since last enter)
+ ...
+ \endcode
+
+ If the basket does not spin, then try to determine if
+ \c{BasketView::paintGL()} is being called every frame or not.
+ If it is being called over and over, then the problem
+ may be in Qt/3D. But if it is not being called repeatedly, then
+ it could be a problem in Qt's animation framework or QGLWidget
+ update processing.
+
+ \section1 Rendering into a framebuffer object
+
+ Run the \l{nesting}{Nesting} example to test if rendering into a
+ framebuffer object works:
+
+ \image nesting-screenshot.png
+
+ The teapot on the side of the blue cube is the part of the scene
+ that uses a framebuffer object. The teapot should be spinning.
+
+ This test also checks that alpha blending works in the underlying
+ OpenGL implementation.
+
+ \section1 Model loading
+
+ Run the \l{Loading a 3DS model with Qt/3D}{Penguin} example
+ to check that 3DS model loading basically works:
+
+ \image penguin-screenshot.png
+
+ If the model fails to appear, it is possible that the 3DS
+ plug-in has not been installed correctly or it could not
+ be located at runtime. It is recommended that you set the
+ \c{QT_DEBUG_PLUGINS} environment variable to 1 to get extra
+ information about why the plug-in could not be loaded.
+
+ \section1 QML/3D
+
+ Run the QML/3D version of the bouncing
+ \l{Teapot Example in QML/3D}{Teapot Example} using
+ "qmlviewer -opengl teapot-bounce.qml". The teapot should have a
+ shiny appearence (compared to the grey teapot above) and bounce
+ up and down:
+
+ \image teapot-china-screenshot.png
+
+ It should be possible to rotate the teapot using the mouse
+ and keyboard.
+
+ Note that when running QML/3D examples on a device that both the
+ QML files and the model files must be copied to the device (the model
+ file is "teapot.bez" in the case of the bouncing teapot example).
+
+ \section1 Object picking
+
+ Run the QML/3D \l{Tea Service Demo in QML}{Tea Service} demo
+ with "qmlviewer -opengl teaservice.qml". Click on the teapot, teacups,
+ and teaspoons to make them jump up, and click on the teapot
+ spout and handle for other effects. This example tests object
+ picking and QML animations.
+
+ \image teaservice-qml-screenshot.png
+
+ Note: It may be necessary to adjust the width and height properties
+ in teaservice.qml to match the device's screen size.
+
+ \section1 Build tests
+
+ The Qt/3D code base contains a number of \c{#ifdef} statements
+ that may cause the build to fail in non-default Qt configurations
+ or when strict API options are enabled. It is recommended that
+ these configurations be verified periodically, particularly
+ prior to a release.
+
+ \code
+ qmake opengl.pro \
+ DEFINES+=QT_NO_DEBUG_STREAM \
+ DEFINES+=QT_NO_DATASTREAM \
+ DEFINES+=QT_NO_CAST_FROM_BYTEARRAY \
+ DEFINES+=QT_NO_CAST_TO_ASCII \
+ DEFINES+=QT_NO_CAST_FROM_ASCII
+ \endcode
+
+ \l{index.html}{Return to the main Qt/3D page}.
+*/
diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc
new file mode 100644
index 000000000..fe3a5b8f5
--- /dev/null
+++ b/doc/src/classes.qdoc
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+/*!
+ \group classlists
+ \title Class and Function Documentation
+ \brief Lists and Indexes of classes, functions, and types.
+
+ Links to indexes and lists for finding class and function
+ reference documentation.
+
+ \section2 Class Lists
+
+ \annotatedlist classlists
+
+ \section2 Function Lists
+
+ \annotatedlist funclists
+
+*/
+
+/*!
+ \page classes.html
+ \title All Qt3D Classes
+ \ingroup classlists
+
+ \brief If you know the name of the class you want, find it here.
+
+ This is a list of all Qt/3d classes.
+
+ \generatelist classes
+
+*/
+
+/*!
+ \page annotated.html
+ \title Annotated Class List
+ \ingroup classlists
+
+ \brief If you don't know the name of the class you want, but you
+ know what the class should do, you might try looking here.
+
+ Qt3D API classes with brief descriptions:
+
+ \generatelist annotatedclasses
+*/
+
+
+/*!
+ \page hierarchy.html
+
+ \title Inheritance Hierarchy
+ \ingroup classlists
+
+ \brief The C++ class inheritance hierarchy for all classes in the
+ Qt/3d API.
+
+ \generatelist classhierarchy
+*/
+
+
+
+/*!
+ \page functions.html
+ \title All Functions
+ \ingroup funclists
+
+ \brief All documented Qt/3d functions listed alphabetically with a
+ link to where each one is declared.
+
+ This is the list of all documented member functions and global
+ functions in the Qt/3d API. Each function has a link to the class or
+ header file where it is declared and documented.
+
+ \generatelist functionindex
+*/
diff --git a/doc/src/classic.css b/doc/src/classic.css
new file mode 100644
index 000000000..59fa9dc32
--- /dev/null
+++ b/doc/src/classic.css
@@ -0,0 +1,284 @@
+BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {
+ font-family: Arial, Geneva, Helvetica, sans-serif;
+}
+H1 {
+ text-align: center;
+ font-size: 160%;
+}
+H2 {
+ font-size: 120%;
+}
+H3 {
+ font-size: 100%;
+}
+
+h3.fn,span.fn
+{
+ background-color: #eee;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #ddd;
+ font-weight: bold;
+ padding: 6px 0px 6px 10px;
+ margin: 42px 0px 0px 0px;
+}
+
+hr {
+ border: 0;
+ color: #a0a0a0;
+ background-color: #ccc;
+ height: 1px;
+ width: 100%;
+ text-align: left;
+ margin: 34px 0px 34px 0px;
+}
+
+table.valuelist {
+ border-width: 1px 1px 1px 1px;
+ border-style: solid;
+ border-color: #dddddd;
+ border-collapse: collapse;
+ background-color: #f0f0f0;
+}
+
+table.indextable {
+ border-width: 1px 1px 1px 1px;
+ border-style: solid;
+ border-collapse: collapse;
+ background-color: #f0f0f0;
+ border-color:#555;
+ font-size: 100%;
+}
+
+table td.largeindex {
+ border-width: 1px 1px 1px 1px;
+ border-collapse: collapse;
+ background-color: #f0f0f0;
+ border-color:#555;
+ font-size: 120%;
+}
+
+table.valuelist th {
+ border-width: 1px 1px 1px 2px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #666;
+ color:white;
+ background-color:#666;
+}
+
+th.titleheader {
+ border-width: 1px 0px 1px 0px;
+ padding: 2px;
+ border-style: solid;
+ border-color: #666;
+ color:white;
+ background-color:#555;
+ background-image:url('images/gradient.png')};
+ background-repeat: repeat-x;
+ font-size: 100%;
+}
+
+
+th.largeheader {
+ border-width: 1px 0px 1px 0px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #444;
+ color:white;
+ background-color:#555555;
+ font-size: 120%;
+}
+
+p {
+
+ margin-left: 4px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+a:link
+{
+ color: #0046ad;
+ text-decoration: none
+}
+
+a:visited
+{
+ color: #672967;
+ text-decoration: none
+}
+
+a.obsolete
+{
+ color: #661100;
+ text-decoration: none
+}
+
+a.compat
+{
+ color: #661100;
+ text-decoration: none
+}
+
+a.obsolete:visited
+{
+ color: #995500;
+ text-decoration: none
+}
+
+a.compat:visited
+{
+ color: #995500;
+ text-decoration: none
+}
+
+body
+{
+ background: #ffffff;
+ color: black
+}
+
+table.generic, table.annotated
+{
+ border-width: 1px;
+ border-color:#bbb;
+ border-style:solid;
+ border-collapse:collapse;
+}
+
+table td.memItemLeft {
+ width: 180px;
+ padding: 2px 0px 0px 8px;
+ margin: 4px;
+ border-width: 1px;
+ border-color: #E0E0E0;
+ border-style: none;
+ font-size: 100%;
+ white-space: nowrap
+}
+
+table td.memItemRight {
+ padding: 2px 8px 0px 8px;
+ margin: 4px;
+ border-width: 1px;
+ border-color: #E0E0E0;
+ border-style: none;
+ font-size: 100%;
+}
+
+table tr.odd {
+ background: #f0f0f0;
+ color: black;
+}
+
+table tr.even {
+ background: #e4e4e4;
+ color: black;
+}
+
+table.annotated th {
+ padding: 3px;
+ text-align: left
+}
+
+table.annotated td {
+ padding: 3px;
+}
+
+table tr pre
+{
+ padding-top: 0px;
+ padding-bottom: 0px;
+ padding-left: 0px;
+ padding-right: 0px;
+ border: none;
+ background: none
+}
+
+tr.qt-style
+{
+ background: #96E066;
+ color: black
+}
+
+body pre
+{
+ padding: 0.2em;
+ border: #e7e7e7 1px solid;
+ background: #f1f1f1;
+ color: black
+}
+
+table tr.qt-code pre
+{
+ padding: 0.2em;
+ border: #e7e7e7 1px solid;
+ background: #f1f1f1;
+ color: black
+}
+
+span.preprocessor, span.preprocessor a
+{
+ color: darkblue;
+}
+
+span.comment
+{
+ color: darkred;
+ font-style: italic
+}
+
+span.string,span.char
+{
+ color: darkgreen;
+}
+
+.title
+{
+ text-align: center
+}
+
+.subtitle
+{
+ font-size: 0.8em
+}
+
+.small-subtitle
+{
+ font-size: 0.65em
+}
+
+.qmlitem {
+ padding: 0;
+}
+
+.qmlname {
+ white-space: nowrap;
+}
+
+.qmltype {
+ text-align: center;
+ font-size: 160%;
+}
+
+.qmlproto {
+ background-color: #eee;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #ddd;
+ font-weight: bold;
+ padding: 6px 10px 6px 10px;
+ margin: 42px 0px 0px 0px;
+}
+
+.qmlreadonly {
+ float: right;
+ color: red
+}
+
+.qmldoc {
+}
+
+*.qmlitem p {
+}
diff --git a/doc/src/demos/monkeygod.qdoc b/doc/src/demos/monkeygod.qdoc
new file mode 100644
index 000000000..d8084159c
--- /dev/null
+++ b/doc/src/demos/monkeygod.qdoc
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example declarative/monkeygod
+ \title Monkey God in QML
+
+ The Monkey God demo in QML shows how QML/3D can be used to build
+ up complex 3D scenes including materials and animations.
+
+ \image monkeygod-screenshot.png
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/demos/pageflip.qdoc b/doc/src/demos/pageflip.qdoc
new file mode 100644
index 000000000..56e195ceb
--- /dev/null
+++ b/doc/src/demos/pageflip.qdoc
@@ -0,0 +1,39 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example pageflip
+ \title Page Flip Demo
+
+ The Page Flip demo shows how Qt/3D can be used to animate
+ flipping pages in a book. A shader program is used to combine a
+ gradient texture with the page textures to create a curl effect.
+
+ \image pageflip-screenshot.png
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/demos/shapes.qdoc b/doc/src/demos/shapes.qdoc
new file mode 100644
index 000000000..4c5190dcf
--- /dev/null
+++ b/doc/src/demos/shapes.qdoc
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example shapes
+ \title Shapes Demo
+
+ The Shapes demo shows many of the basic shapes that can be
+ drawn using Qt/3D.
+
+ \image shapes-screenshot.png
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/demos/teaservice-qml.qdoc b/doc/src/demos/teaservice-qml.qdoc
new file mode 100644
index 000000000..28cbfbf01
--- /dev/null
+++ b/doc/src/demos/teaservice-qml.qdoc
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example declarative/teaservice
+ \title Tea Service Demo in QML
+
+ The Tea Service demo in QML shows how QML/3D can be used to draw a complex
+ scene made up of several objects. It also demonstrates object picking,
+ animations, states and transitions.
+
+ \image teaservice-qml-screenshot.png
+
+ There is also a \l{Tea Service Demo}{C++ version} of this demo,
+ which is not as visually interesting as the QML/3D version.
+ It is much easier to implement interaction models and
+ animations in QML than in C++.
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/demos/teaservice.qdoc b/doc/src/demos/teaservice.qdoc
new file mode 100644
index 000000000..d4da3464f
--- /dev/null
+++ b/doc/src/demos/teaservice.qdoc
@@ -0,0 +1,43 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example teaservice
+ \title Tea Service Demo
+
+ The Tea Service demo shows how Qt/3D can be used to draw a complex
+ scene made up of several objects. It also demonstrates object picking.
+
+ \image teaservice-screenshot.png
+
+ There is also a \l{Tea Service Demo in QML}{QML version} of the
+ Tea Service demo which has more advanced object picking, animations,
+ states, and transitions. It is much easier to add complex
+ interaction models and animations in QML than in C++.
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/examples/basket.qdoc b/doc/src/examples/basket.qdoc
new file mode 100644
index 000000000..cf6381109
--- /dev/null
+++ b/doc/src/examples/basket.qdoc
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example basket
+ \title Basket Example
+
+ \section2 Basket in C++
+
+ The Basket example shows how Qt/3D can be used to draw an animated
+ object covered in a texture. The basic application shell is similar
+ to the \l{teapot}{Hello Teapot} example. In this case, we create
+ the basket object and add a texture to it as follows:
+
+ \snippet basket/basketview.cpp 1
+
+ For this animation, we want to spin the basket around its Y axis,
+ once every 2 seconds. We first declare an \c angle property in the
+ class declaration (calling \c{update()} will force the view to
+ redraw whenever the angle changes):
+
+ \snippet basket/basketview.h 1
+
+ Then we create a QPropertyAnimation object that will update
+ \c angle every time through the event loop with a new value
+ between 0 and 360 degrees:
+
+ \snippet basket/basketview.cpp 2
+
+ Now all we have to do is draw the basket using the \c angle
+ property every time \c{paintGL()} is called:
+
+ \snippet basket/basketview.cpp 3
+
+ \image basket-screenshot.png
+
+ \section2 Basket in QML/3D
+
+ The QML/3D version of the basket example is very similar in
+ structure to the C++ version above, but much simpler.
+ We start by defining a viewport with a specific camera position:
+
+ \snippet declarative/basket.qml 1
+
+ We then add an \l Item3D object to load the basket model and
+ apply the desired texture to it:
+
+ \snippet declarative/basket.qml 2
+
+ And then we apply an animation to the rotation component of
+ the item's transform property:
+
+ \snippet declarative/basket.qml 3
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/examples/nesting.qdoc b/doc/src/examples/nesting.qdoc
new file mode 100644
index 000000000..c34e332fc
--- /dev/null
+++ b/doc/src/examples/nesting.qdoc
@@ -0,0 +1,135 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example nesting
+ \title Drawing into framebuffer objects
+
+ The Nesting example shows how Qt/3D can be used to draw into a
+ framebuffer object and then use the associated texture in
+ subsequent drawing operations. It is assumed that the reader
+ is already familar with the following examples:
+
+ \list
+ \o \l{Teapot Example}{Hello Teapot} - drawing a basic object in 3D.
+ \o \l{Applying transformations and materials to objects}{Cube} - applying transformations and materials to objects.
+ \o \l{basket}{Basket} - animating objects in 3D.
+ \endlist
+
+ In this example we are going to draw two rotating and transparent
+ cubes. One cube will display a simple texture as in the
+ \l{Applying transformations and materials to objects}{Cube} example,
+ and the other cube will display a nested scene containing a
+ rotating teapot.
+
+ \image nesting-screenshot.png
+
+ As with the other examples, we start by creating the geometric objects
+ we need in the constructor (we will share the cube geometry between
+ the two cubes we will be drawing):
+
+ \snippet nesting/cubeview.cpp 1
+
+ We also need three QPropertyAnimation objects to drive our
+ animations; rotation angle for the teapot, rotation angle for
+ the cube; orbit angle of the two cubes around each other:
+
+ \snippet nesting/cubeview.cpp 2
+
+ The final step in the constructor is to create a camera for
+ the nested scene we will be drawing into the framebuffer object.
+ This is in addition to the default QGLView::camera() object that
+ provides the camera for the main scene.
+
+ \snippet nesting/cubeview.cpp 3
+
+ To draw the nested scene, we of course need a framebuffer object,
+ which we create in the \c{initializeGL()} method:
+
+ \snippet nesting/cubeview.cpp 4
+
+ Note that we also set the framebuffer object on an instance of
+ QGLFramebufferObjectSurface. We will use this fact later when
+ we render the nested scene.
+
+ For the other cube, we need a regular texture. And we'll also
+ turn on blending to make our cubes transparent:
+
+ \snippet nesting/cubeview.cpp 5
+
+ Now it is time to paint the scene in \c{paintGL()}. The first
+ thing we want to do is draw the teapot into the framebuffer object.
+ To do that, we need to establish a nested drawing state:
+
+ \snippet nesting/cubeview.cpp 6
+
+ In the code above, we first push the main scene's modelview and
+ projection matrices. And then we push a new drawing surface onto
+ the painter's surface stack. Everything we draw from now on will
+ be written to \c{fboSurface} and thus the framebuffer object.
+ To do that, we set the inner camera position, adjust the painter
+ state, clear the framebuffer object, and draw the teapot:
+
+ \snippet nesting/cubeview.cpp 7
+
+ Now that the nested scene has been drawn to the framebuffer object,
+ we pop the surface and matrix stacks to return to the main scene:
+
+ \snippet nesting/cubeview.cpp 8
+
+ Because our cubes are transparent, we need to make sure we draw
+ the objects in the scene from back to front. Otherwise the result
+ will not look correct. To do this, we check which of the cube
+ mid-points is furtherest away from the camera and draw that cube first
+ (the more negative the z value, the further away it is):
+
+ \snippet nesting/cubeview.cpp 9
+
+ Drawing the first cube with the simple texture is very similar to
+ the \l{Applying transformations and materials to objects}{Cube} example:
+
+ \snippet nesting/cubeview.cpp 10
+
+ The main interesting wrinkle is that we draw the cube twice,
+ once with front faces culled, and the second time with back
+ faces culled. This effectively causes the cube to be drawn
+ back to front for proper blending.
+
+ The second cube is drawn in a similar way except that we bind
+ the framebuffer object's texture to the state instead of a static
+ texture:
+
+ \snippet nesting/cubeview.cpp 11
+
+ Face culling is a simple way to draw transparent objects, but it
+ really only works on non-intersecting convex objects like our cubes.
+ For concave objects (like the teapot) or objects that intersect,
+ we would need to break the objects up into smaller convex pieces
+ and then order the pieces from back to front.
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/examples/painter.qdoc b/doc/src/examples/painter.qdoc
new file mode 100644
index 000000000..91810df12
--- /dev/null
+++ b/doc/src/examples/painter.qdoc
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example painter
+ \title Painter Example
+
+ The Painter example shows how Qt/3D can be used to draw basic
+ orthographic and perspective objects using QGLPainter.
+
+ \image painter-screenshot.png
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/examples/teapot-qml.qdoc b/doc/src/examples/teapot-qml.qdoc
new file mode 100644
index 000000000..0f8d0eaf2
--- /dev/null
+++ b/doc/src/examples/teapot-qml.qdoc
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example tutorials/teapot-qml
+ \title Teapot Example in QML/3D
+
+ This example shows to use QML/3D to display a teapot on
+ the screen. The QML is fairly simple:
+
+ \snippet tutorials/teapot-qml/teapot.qml 1
+
+ \image teapot-qml-screenshot.png
+
+ The example starts by importing the Qt and Qt/3D QML modules:
+
+ \snippet tutorials/teapot-qml/teapot.qml 2
+
+ Then we create a viewport of size 640x480 to display the teapot:
+
+ \snippet tutorials/teapot-qml/teapot.qml 3
+
+ And now we create a \l Item3D to display the teapot with a
+ default lit material effect:
+
+ \snippet tutorials/teapot-qml/teapot.qml 4
+
+ The teapot data itself is loaded from \c{teapot.bez}, which contains
+ Bezier patch data that describes the geometry of the teapot.
+
+ Let's make the teapot a little more interesting by adding a
+ material to simulate bone china:
+
+ \snippet tutorials/teapot-qml/teapot-bounce.qml 1
+ \snippet tutorials/teapot-qml/teapot-bounce.qml 2
+
+ \image teapot-china-screenshot.png
+
+ To make the teapot even more interesting, we can cause it to
+ bounce up and down using a QML animation item:
+
+ \snippet tutorials/teapot-qml/teapot-bounce.qml 3
+
+ This QML teapot example can be compared with the \l{teapot}{C++ version}.
+ Using QML is briefer than C++, and easier to modify to adjust
+ materials and add new features like animations.
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/examples/teapot.qdoc b/doc/src/examples/teapot.qdoc
new file mode 100644
index 000000000..e4a889f44
--- /dev/null
+++ b/doc/src/examples/teapot.qdoc
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example teapot
+ \title Teapot Example
+
+ The Teapot example shows how Qt/3D can be used to draw a simple
+ teapot object with a perspective camera view in C++. There is
+ also a \l{Teapot Example in QML/3D}{QML/3D version} of the teapot
+ example.
+
+ We start by defining a class that inherits from QGLView, which
+ provides some basic scene setup logic and 3D camera navigation:
+
+ \snippet teapot/teapotview.h class-defn
+ \dots
+ \quotefromfile teapot/main.cpp
+ \skipuntil [main]
+ \printto [main-args]
+ \skipuntil [main-args-end]
+ \printto [main]
+
+ When the application starts up, we set up some scene parameters
+ in the \c{initializeGL()} function:
+
+ \quotefromfile teapot/teapotview.cpp
+ \skipuntil [initialize]
+ \printto [create-display-list]
+
+ The first line of the function selects a standard rendering
+ effect that lights material colors with the default OpenGL
+ two-sided lighting algorithm and the default light.
+
+ The \c{teapot} member variable is an instance of QGLSceneNode,
+ which we create using QGLBuilder during \c{initializeGL()}:
+
+ \quotefromfile teapot/teapotview.cpp
+ \skipuntil [create-display-list]
+ \printto [initialize]
+
+ The QGLTeapot class represents the geometry for the teapot,
+ which is added to the builder with the \c{<<} operator.
+
+ We then call QGLBuilder::finalizedSceneNode() to finalize the
+ object, prepare it to be uploaded to the GL server as a
+ vertex buffer, and hand over ownership of the scene node.
+
+ We have to take care to clean up our scene after we're done with it
+ and here that is done in the destructor:
+
+ \snippet teapot/teapotview.cpp destructor
+
+ Finally, we paint the teapot every time the window is refreshed:
+
+ \snippet teapot/teapotview.cpp paint
+
+ The QGLView class has in-built support for camera navigation
+ using the mouse and keyboard. By clicking and dragging the mouse,
+ the teapot can be rotated into any position. The image on the
+ left shows the view in its startup default position, and the
+ image on the right shows the view after rotation using the mouse:
+
+ \raw HTML
+ <center><table><tr><td>
+ \endraw
+ \image teapot-screenshot.png
+ \raw HTML
+ </td><td>
+ \endraw
+ \image teapot-rotated.png
+ \raw HTML
+ </td></tr></table></center>
+ \endraw
+
+ \l{qt3d-examples.html}{Return to Examples}.
+*/
diff --git a/doc/src/images/REAME-ODF b/doc/src/images/REAME-ODF
new file mode 100644
index 000000000..6d1a820b2
--- /dev/null
+++ b/doc/src/images/REAME-ODF
@@ -0,0 +1,5 @@
+The *.odf files here are OpenOffice formula files.
+
+To edit the formulas shown here as png's, open the corresponding odf file
+with OpenOffices formula editor, edit, save, then export as PDF. The
+PDF can be opened with gimp to create a PNG.
diff --git a/doc/src/images/affine-transform.odf b/doc/src/images/affine-transform.odf
new file mode 100644
index 000000000..4ead5ccae
--- /dev/null
+++ b/doc/src/images/affine-transform.odf
Binary files differ
diff --git a/doc/src/images/affine-transform.png b/doc/src/images/affine-transform.png
new file mode 100644
index 000000000..c520623f0
--- /dev/null
+++ b/doc/src/images/affine-transform.png
Binary files differ
diff --git a/doc/src/images/attenuation.odf b/doc/src/images/attenuation.odf
new file mode 100644
index 000000000..a3c35333f
--- /dev/null
+++ b/doc/src/images/attenuation.odf
Binary files differ
diff --git a/doc/src/images/attenuation.png b/doc/src/images/attenuation.png
new file mode 100644
index 000000000..fa64ebed9
--- /dev/null
+++ b/doc/src/images/attenuation.png
Binary files differ
diff --git a/doc/src/images/basket-screenshot.png b/doc/src/images/basket-screenshot.png
new file mode 100644
index 000000000..21d72a287
--- /dev/null
+++ b/doc/src/images/basket-screenshot.png
Binary files differ
diff --git a/doc/src/images/cube-screenshot.png b/doc/src/images/cube-screenshot.png
new file mode 100644
index 000000000..564646753
--- /dev/null
+++ b/doc/src/images/cube-screenshot.png
Binary files differ
diff --git a/doc/src/images/cylinder-texture-coords.png b/doc/src/images/cylinder-texture-coords.png
new file mode 100644
index 000000000..8ad69b43e
--- /dev/null
+++ b/doc/src/images/cylinder-texture-coords.png
Binary files differ
diff --git a/doc/src/images/faceted-q.png b/doc/src/images/faceted-q.png
new file mode 100644
index 000000000..a809976bc
--- /dev/null
+++ b/doc/src/images/faceted-q.png
Binary files differ
diff --git a/doc/src/images/forest-screenshot.png b/doc/src/images/forest-screenshot.png
new file mode 100644
index 000000000..9984d0bea
--- /dev/null
+++ b/doc/src/images/forest-screenshot.png
Binary files differ
diff --git a/doc/src/images/forest-screenshot2.png b/doc/src/images/forest-screenshot2.png
new file mode 100644
index 000000000..3de77cfa8
--- /dev/null
+++ b/doc/src/images/forest-screenshot2.png
Binary files differ
diff --git a/doc/src/images/forest-screenshot3.png b/doc/src/images/forest-screenshot3.png
new file mode 100644
index 000000000..5589e2adf
--- /dev/null
+++ b/doc/src/images/forest-screenshot3.png
Binary files differ
diff --git a/doc/src/images/gradient.png b/doc/src/images/gradient.png
new file mode 100644
index 000000000..2ef36edd0
--- /dev/null
+++ b/doc/src/images/gradient.png
Binary files differ
diff --git a/doc/src/images/line-int-1.png b/doc/src/images/line-int-1.png
new file mode 100644
index 000000000..74e9be24f
--- /dev/null
+++ b/doc/src/images/line-int-1.png
Binary files differ
diff --git a/doc/src/images/line-int-2.png b/doc/src/images/line-int-2.png
new file mode 100644
index 000000000..9ca443740
--- /dev/null
+++ b/doc/src/images/line-int-2.png
Binary files differ
diff --git a/doc/src/images/line-intersection.odf b/doc/src/images/line-intersection.odf
new file mode 100644
index 000000000..4e0fe2d49
--- /dev/null
+++ b/doc/src/images/line-intersection.odf
Binary files differ
diff --git a/doc/src/images/line-intersection.pdf b/doc/src/images/line-intersection.pdf
new file mode 100644
index 000000000..cf9ef0b43
--- /dev/null
+++ b/doc/src/images/line-intersection.pdf
Binary files differ
diff --git a/doc/src/images/line-intersection2.odf b/doc/src/images/line-intersection2.odf
new file mode 100644
index 000000000..4e959aff6
--- /dev/null
+++ b/doc/src/images/line-intersection2.odf
Binary files differ
diff --git a/doc/src/images/line-intersection2.pdf b/doc/src/images/line-intersection2.pdf
new file mode 100644
index 000000000..bd624790b
--- /dev/null
+++ b/doc/src/images/line-intersection2.pdf
Binary files differ
diff --git a/doc/src/images/monkeygod-screenshot.png b/doc/src/images/monkeygod-screenshot.png
new file mode 100644
index 000000000..de8a73d06
--- /dev/null
+++ b/doc/src/images/monkeygod-screenshot.png
Binary files differ
diff --git a/doc/src/images/moon-screenshot.png b/doc/src/images/moon-screenshot.png
new file mode 100644
index 000000000..cafeffff3
--- /dev/null
+++ b/doc/src/images/moon-screenshot.png
Binary files differ
diff --git a/doc/src/images/mouse3dtest-screenshot.png b/doc/src/images/mouse3dtest-screenshot.png
new file mode 100644
index 000000000..518a915e4
--- /dev/null
+++ b/doc/src/images/mouse3dtest-screenshot.png
Binary files differ
diff --git a/doc/src/images/nesting-screenshot.png b/doc/src/images/nesting-screenshot.png
new file mode 100644
index 000000000..9e60ddf1f
--- /dev/null
+++ b/doc/src/images/nesting-screenshot.png
Binary files differ
diff --git a/doc/src/images/normalized.odf b/doc/src/images/normalized.odf
new file mode 100644
index 000000000..d75e70448
--- /dev/null
+++ b/doc/src/images/normalized.odf
Binary files differ
diff --git a/doc/src/images/pageflip-screenshot.png b/doc/src/images/pageflip-screenshot.png
new file mode 100644
index 000000000..2a081a217
--- /dev/null
+++ b/doc/src/images/pageflip-screenshot.png
Binary files differ
diff --git a/doc/src/images/painter-screenshot.png b/doc/src/images/painter-screenshot.png
new file mode 100644
index 000000000..e11a5a34f
--- /dev/null
+++ b/doc/src/images/painter-screenshot.png
Binary files differ
diff --git a/doc/src/images/penguin-0-screenshot.png b/doc/src/images/penguin-0-screenshot.png
new file mode 100644
index 000000000..d65d590f0
--- /dev/null
+++ b/doc/src/images/penguin-0-screenshot.png
Binary files differ
diff --git a/doc/src/images/penguin-screenshot.png b/doc/src/images/penguin-screenshot.png
new file mode 100644
index 000000000..eb3349803
--- /dev/null
+++ b/doc/src/images/penguin-screenshot.png
Binary files differ
diff --git a/doc/src/images/pvcolor.png b/doc/src/images/pvcolor.png
new file mode 100644
index 000000000..380a19a3c
--- /dev/null
+++ b/doc/src/images/pvcolor.png
Binary files differ
diff --git a/doc/src/images/pyramid-screenshot.png b/doc/src/images/pyramid-screenshot.png
new file mode 100644
index 000000000..6a585a6ce
--- /dev/null
+++ b/doc/src/images/pyramid-screenshot.png
Binary files differ
diff --git a/doc/src/images/qray3d-project.png b/doc/src/images/qray3d-project.png
new file mode 100644
index 000000000..1288f204f
--- /dev/null
+++ b/doc/src/images/qray3d-project.png
Binary files differ
diff --git a/doc/src/images/qt-creator-config-3ds.png b/doc/src/images/qt-creator-config-3ds.png
new file mode 100644
index 000000000..87ac89fd9
--- /dev/null
+++ b/doc/src/images/qt-creator-config-3ds.png
Binary files differ
diff --git a/doc/src/images/qt-creator-lib-path.png b/doc/src/images/qt-creator-lib-path.png
new file mode 100644
index 000000000..5f988437e
--- /dev/null
+++ b/doc/src/images/qt-creator-lib-path.png
Binary files differ
diff --git a/doc/src/images/qt-creator-plugins.png b/doc/src/images/qt-creator-plugins.png
new file mode 100644
index 000000000..8b469ab02
--- /dev/null
+++ b/doc/src/images/qt-creator-plugins.png
Binary files differ
diff --git a/doc/src/images/qt-creator-shadow-build.png b/doc/src/images/qt-creator-shadow-build.png
new file mode 100644
index 000000000..9b231d5f4
--- /dev/null
+++ b/doc/src/images/qt-creator-shadow-build.png
Binary files differ
diff --git a/doc/src/images/qt-logo.png b/doc/src/images/qt-logo.png
new file mode 100644
index 000000000..14ddf2a02
--- /dev/null
+++ b/doc/src/images/qt-logo.png
Binary files differ
diff --git a/doc/src/images/quad-extrude.png b/doc/src/images/quad-extrude.png
new file mode 100644
index 000000000..c4b6ee445
--- /dev/null
+++ b/doc/src/images/quad-extrude.png
Binary files differ
diff --git a/doc/src/images/quad-extrude.xcf b/doc/src/images/quad-extrude.xcf
new file mode 100644
index 000000000..0d1650ac2
--- /dev/null
+++ b/doc/src/images/quad-extrude.xcf
Binary files differ
diff --git a/doc/src/images/quads.png b/doc/src/images/quads.png
new file mode 100644
index 000000000..28a030999
--- /dev/null
+++ b/doc/src/images/quads.png
Binary files differ
diff --git a/doc/src/images/shapes-screenshot.png b/doc/src/images/shapes-screenshot.png
new file mode 100644
index 000000000..ad0a0f433
--- /dev/null
+++ b/doc/src/images/shapes-screenshot.png
Binary files differ
diff --git a/doc/src/images/soup.png b/doc/src/images/soup.png
new file mode 100644
index 000000000..c84c07295
--- /dev/null
+++ b/doc/src/images/soup.png
Binary files differ
diff --git a/doc/src/images/sphere-detail.png b/doc/src/images/sphere-detail.png
new file mode 100644
index 000000000..90e40fb45
--- /dev/null
+++ b/doc/src/images/sphere-detail.png
Binary files differ
diff --git a/doc/src/images/spiky-teapot.png b/doc/src/images/spiky-teapot.png
new file mode 100644
index 000000000..2871d83e9
--- /dev/null
+++ b/doc/src/images/spiky-teapot.png
Binary files differ
diff --git a/doc/src/images/stereo-nhd-screenshot.png b/doc/src/images/stereo-nhd-screenshot.png
new file mode 100644
index 000000000..74df719e6
--- /dev/null
+++ b/doc/src/images/stereo-nhd-screenshot.png
Binary files differ
diff --git a/doc/src/images/stereo-screenshot-qml.png b/doc/src/images/stereo-screenshot-qml.png
new file mode 100644
index 000000000..d7e8f7a39
--- /dev/null
+++ b/doc/src/images/stereo-screenshot-qml.png
Binary files differ
diff --git a/doc/src/images/stereo-screenshot-qml2.png b/doc/src/images/stereo-screenshot-qml2.png
new file mode 100644
index 000000000..d91f959f3
--- /dev/null
+++ b/doc/src/images/stereo-screenshot-qml2.png
Binary files differ
diff --git a/doc/src/images/stereo-screenshot.png b/doc/src/images/stereo-screenshot.png
new file mode 100644
index 000000000..020fcb683
--- /dev/null
+++ b/doc/src/images/stereo-screenshot.png
Binary files differ
diff --git a/doc/src/images/stereo-wide-screenshot.png b/doc/src/images/stereo-wide-screenshot.png
new file mode 100644
index 000000000..f9e165a66
--- /dev/null
+++ b/doc/src/images/stereo-wide-screenshot.png
Binary files differ
diff --git a/doc/src/images/teapot-china-screenshot.png b/doc/src/images/teapot-china-screenshot.png
new file mode 100644
index 000000000..d38602fcc
--- /dev/null
+++ b/doc/src/images/teapot-china-screenshot.png
Binary files differ
diff --git a/doc/src/images/teapot-distortion.png b/doc/src/images/teapot-distortion.png
new file mode 100644
index 000000000..76b4a3db7
--- /dev/null
+++ b/doc/src/images/teapot-distortion.png
Binary files differ
diff --git a/doc/src/images/teapot-distortion2.png b/doc/src/images/teapot-distortion2.png
new file mode 100644
index 000000000..573503bdc
--- /dev/null
+++ b/doc/src/images/teapot-distortion2.png
Binary files differ
diff --git a/doc/src/images/teapot-logo.png b/doc/src/images/teapot-logo.png
new file mode 100644
index 000000000..a82c33c1a
--- /dev/null
+++ b/doc/src/images/teapot-logo.png
Binary files differ
diff --git a/doc/src/images/teapot-qml-screenshot.png b/doc/src/images/teapot-qml-screenshot.png
new file mode 100644
index 000000000..cb9dea919
--- /dev/null
+++ b/doc/src/images/teapot-qml-screenshot.png
Binary files differ
diff --git a/doc/src/images/teapot-qt-screenshot.png b/doc/src/images/teapot-qt-screenshot.png
new file mode 100644
index 000000000..2a5c2ead9
--- /dev/null
+++ b/doc/src/images/teapot-qt-screenshot.png
Binary files differ
diff --git a/doc/src/images/teapot-rotated.png b/doc/src/images/teapot-rotated.png
new file mode 100644
index 000000000..f66a93efd
--- /dev/null
+++ b/doc/src/images/teapot-rotated.png
Binary files differ
diff --git a/doc/src/images/teapot-screenshot.png b/doc/src/images/teapot-screenshot.png
new file mode 100644
index 000000000..07922e9e9
--- /dev/null
+++ b/doc/src/images/teapot-screenshot.png
Binary files differ
diff --git a/doc/src/images/teaservice-qml-screenshot.png b/doc/src/images/teaservice-qml-screenshot.png
new file mode 100644
index 000000000..ee2b935a1
--- /dev/null
+++ b/doc/src/images/teaservice-qml-screenshot.png
Binary files differ
diff --git a/doc/src/images/teaservice-screenshot.png b/doc/src/images/teaservice-screenshot.png
new file mode 100644
index 000000000..35e6fc8ee
--- /dev/null
+++ b/doc/src/images/teaservice-screenshot.png
Binary files differ
diff --git a/doc/src/images/texture-coords-gen.png b/doc/src/images/texture-coords-gen.png
new file mode 100644
index 000000000..5f155b1a2
--- /dev/null
+++ b/doc/src/images/texture-coords-gen.png
Binary files differ
diff --git a/doc/src/images/texture-coords-gen.xcf b/doc/src/images/texture-coords-gen.xcf
new file mode 100644
index 000000000..b6540bb41
--- /dev/null
+++ b/doc/src/images/texture-coords-gen.xcf
Binary files differ
diff --git a/doc/src/images/texture-seam.png b/doc/src/images/texture-seam.png
new file mode 100644
index 000000000..2cd97233b
--- /dev/null
+++ b/doc/src/images/texture-seam.png
Binary files differ
diff --git a/doc/src/images/triangle3d-center.png b/doc/src/images/triangle3d-center.png
new file mode 100644
index 000000000..da6fabb03
--- /dev/null
+++ b/doc/src/images/triangle3d-center.png
Binary files differ
diff --git a/doc/src/images/triangle3d-dimensions.png b/doc/src/images/triangle3d-dimensions.png
new file mode 100644
index 000000000..5efe28ec2
--- /dev/null
+++ b/doc/src/images/triangle3d-dimensions.png
Binary files differ
diff --git a/doc/src/images/triangle3d.xcf b/doc/src/images/triangle3d.xcf
new file mode 100644
index 000000000..798fafd29
--- /dev/null
+++ b/doc/src/images/triangle3d.xcf
Binary files differ
diff --git a/doc/src/images/triangulated-face.png b/doc/src/images/triangulated-face.png
new file mode 100644
index 000000000..fab481265
--- /dev/null
+++ b/doc/src/images/triangulated-face.png
Binary files differ
diff --git a/doc/src/images/triangulated-face.xcf b/doc/src/images/triangulated-face.xcf
new file mode 100644
index 000000000..74b08edf1
--- /dev/null
+++ b/doc/src/images/triangulated-face.xcf
Binary files differ
diff --git a/doc/src/images/tutorials/converting-screenshot.png b/doc/src/images/tutorials/converting-screenshot.png
new file mode 100644
index 000000000..9fb738ff4
--- /dev/null
+++ b/doc/src/images/tutorials/converting-screenshot.png
Binary files differ
diff --git a/doc/src/images/tutorials/cube1-screenshot.png b/doc/src/images/tutorials/cube1-screenshot.png
new file mode 100644
index 000000000..a0da12f07
--- /dev/null
+++ b/doc/src/images/tutorials/cube1-screenshot.png
Binary files differ
diff --git a/doc/src/images/tutorials/cube2-screenshot.png b/doc/src/images/tutorials/cube2-screenshot.png
new file mode 100644
index 000000000..20e05d1b3
--- /dev/null
+++ b/doc/src/images/tutorials/cube2-screenshot.png
Binary files differ
diff --git a/doc/src/images/tutorials/cube3-screenshot.png b/doc/src/images/tutorials/cube3-screenshot.png
new file mode 100644
index 000000000..49cf8cbcd
--- /dev/null
+++ b/doc/src/images/tutorials/cube3-screenshot.png
Binary files differ
diff --git a/doc/src/images/tutorials/cube4-screenshot.png b/doc/src/images/tutorials/cube4-screenshot.png
new file mode 100644
index 000000000..4f71452db
--- /dev/null
+++ b/doc/src/images/tutorials/cube4-screenshot.png
Binary files differ
diff --git a/doc/src/images/tutorials/shader-tutorial-varying.png b/doc/src/images/tutorials/shader-tutorial-varying.png
new file mode 100644
index 000000000..6e0c78e91
--- /dev/null
+++ b/doc/src/images/tutorials/shader-tutorial-varying.png
Binary files differ
diff --git a/doc/src/images/tutorials/shader-tutorial.png b/doc/src/images/tutorials/shader-tutorial.png
new file mode 100644
index 000000000..97db13d32
--- /dev/null
+++ b/doc/src/images/tutorials/shader-tutorial.png
Binary files differ
diff --git a/doc/src/images/vector-mag.odf b/doc/src/images/vector-mag.odf
new file mode 100644
index 000000000..96222af07
--- /dev/null
+++ b/doc/src/images/vector-mag.odf
Binary files differ
diff --git a/doc/src/images/vector-mag.png b/doc/src/images/vector-mag.png
new file mode 100644
index 000000000..0d913ee69
--- /dev/null
+++ b/doc/src/images/vector-mag.png
Binary files differ
diff --git a/doc/src/images/vector-normalized.png b/doc/src/images/vector-normalized.png
new file mode 100644
index 000000000..c1c4b968d
--- /dev/null
+++ b/doc/src/images/vector-normalized.png
Binary files differ
diff --git a/doc/src/images/vector-point.odf b/doc/src/images/vector-point.odf
new file mode 100644
index 000000000..6b73097c3
--- /dev/null
+++ b/doc/src/images/vector-point.odf
Binary files differ
diff --git a/doc/src/images/vector-point.png b/doc/src/images/vector-point.png
new file mode 100644
index 000000000..c78410fd0
--- /dev/null
+++ b/doc/src/images/vector-point.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
new file mode 100644
index 000000000..d9d6ded93
--- /dev/null
+++ b/doc/src/index.qdoc
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page index.html
+ \title Quick3D Reference Documentation
+ \keyword Quick3D Reference Documentation
+
+ Quick3D adds 3D content to Qt Quick's cross-platform ability and coding power.
+ Developers of fluid user interfaces can now enhance their applications with 3D
+ content in the same way icons and pixmaps would be used in a 2D application.
+
+ OpenGL hardware was designed for 3D acceleration and Quick3D allows applications
+ to utilise that 3D hardware fully.
+
+ Quick3D is the Qt Quick product for scripting 3D applications in QML. Apps can be
+ 2D QML applications with a small amount of simple 3D content; through to complex
+ 3D scenes, containing 3D assets - such as complex 3D models, and shader effects.
+
+ In Quick3D scripts are written in QML, and rendered with the power of Qt & C++.
+
+ Quick3D is a product resulting from the Qt3D project. Qt3D is a set of powerful
+ cross-platform C++ API's for 3D programming using OpenGL. Qt3D may be used to
+ extend Quick3D by creating new user-defined 3D items using C++.
+
+ Qt3D research continues and if the features you're looking for are not in Quick3D
+ yet you may find them in the \l{http://doc.qt.nokia.com/qt3d-snapshot/index.html}{Qt3D research project}.
+
+ See the \l{Tutorials and Examples} for an introduction to using Quick3D and Qt3D.
+
+ \raw HTML
+ <table cellpadding="2" cellspacing="1" border="0" width="100%" class="indextable">
+ <tr>
+ <th class="titleheader" width="33%">
+ Getting Started
+ </th>
+ <th class="titleheader" width="33%">
+ Functionality Areas
+ </th>
+ <th class="titleheader" width="33%">
+ API Reference
+ </th>
+ </tr>
+ <tr>
+ <td valign="top">
+ <ul>
+ <li><a href="qt3d-building.html">Building</a></li>
+ <li><a href="qt3d-examples.html">Tutorials and Examples</a></li>
+ <li><a href="sceneformats-obj.html">Scene format plug-ins</a></li>
+ <li><a href="qt3d-contrib.html">Contributing</a></li>
+ <li><a href="qt3d-acceptance.html">Acceptance tests</a></li>
+ </ul>
+ </td>
+ <td valign="top">
+ <ul>
+ <li><a href="qt3d-arrays.html">Arrays and Vertex Buffers</a></li>
+ <li><a href="qt3d-geometry.html">Geometry Building</a></li>
+ <li><a href="qt3d-graphicsview.html">Graphics View Integration</a></li>
+ <li><a href="qt3d-materials.html">Materials</a></li>
+ <li><a href="qt3d-math.html">Mathematical Primitives</a></li>
+ <li><a href="qt3d-painting.html">Painting in 3D</a></li>
+ <li><a href="qt3d-scene.html">Scene Management</a></li>
+ <li><a href="qt3d-textures.html">Texture Management</a></li>
+ <li><a href="qt3d-viewing.html">Viewing Widgets</a></li>
+ </ul>
+ </td>
+ <td valign="top">
+ <ul>
+ <li><a href="qt3d-all-classes.html">All Classes</a></li>
+ <li><a href="qgl.html">QGL Namespace</a></li>
+ <li><a href="qt3d-qml3d.html">Quick3D Elements</a></li>
+ <li><a href="qt3d-qml3d-shapes.html">QML/3D Stock Shapes</a></li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ \endraw
+*/
diff --git a/doc/src/qline3d-math.qdoc b/doc/src/qline3d-math.qdoc
new file mode 100644
index 000000000..0a21580ce
--- /dev/null
+++ b/doc/src/qline3d-math.qdoc
@@ -0,0 +1,211 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \ingroup qt3d
+ \ingroup qt3d::math
+ \since 4.8
+ \title 3D Math Basis
+ \page qt3d-math-basis.html
+ \keyword 3D Math Basis
+ \brief Math foundations for the Qt3D math classes.
+
+ The math classes provide basic operations in 3-space useful for graphics:
+ \list
+ \o QLine3D
+ \o QLineSegment3D
+ \o QPlane3D
+ \o QTriangle3D
+ \o QBox3D
+ \endlist
+
+ This is a basic discussion of the mathematics behind these classes.
+
+ \section1 Vectors and Points
+
+ There are two important building blocks in 3D: the \bold vector and the
+ \bold point in cartesian 3-space.
+
+ Both are comprised by 3 values in \bold R, the real numbers.
+
+ So programatically in Qt both vectors and points are stored in a QVector3D instance,
+ since that class can store 3 qreal values.
+
+ But there are important differences between points and vectors:
+ \list
+ \o a point \bold P is a 3D \i location, and makes sense in terms of a 3D cartesian
+ coordinate system. A real-world example is a map-location given in terms
+ of a map cross-reference. The location has no inherent magnitude, unless you
+ provide another location and find the distance between the two.
+ \o a vector \bold v is a 3D \i direction and magnitude. It makes no sense to talk
+ about a vector being located somewhere. A vector can represent for example
+ some directions like "go 3 north-west 3 kilometers", but this can be done from
+ \bold {anywhere on the map} - it is not anchored like the point is.
+ \endlist
+
+ In 3D math points and vectors are represented by column vectors:
+
+ \image vector-point.png
+
+ In normal text where the over-arrow symbol is not available the vector is just a
+ bolded lower-case letter. A point is a capital letter, non-bolded.
+
+ The fourth element in the column vectors above, w = 1 for points and w = 0 for vectors
+ means that vectors are not altered by certain affine transformations such
+ as \c{translate()}.
+
+ \image affine-transform.png
+
+ This affine transform T comprises a rotation and a translation. Remember that applying
+ the transform is done by the
+ \l{http://www.intmath.com/Matrices-determinants/4_Multiplying-matrices.php}{matrix multiplication}
+ \c{P * T = P'}.
+
+ Notice how the 1 in the column for the translation multiplies out to zero against
+ the vectors last 0 value, so the vector is "immune" to the translation.
+
+ In the case of the point the w = 1 "triggers" the translation values in the matrix.
+
+ So the take away principle is that points and vectors, while represented by the same
+ data structure are different and behave differently in 3D math.
+
+ \section2 Vector Magnitude and Normal Vectors
+
+ Another important difference between points and vectors is that a vector has a magnitude,
+ whereas a point does not.
+
+ Consider the vector v = (v0, v1, v2) to be rooted at
+ the origin O = (0, 0, 0) and pointing to the point P = (v0, v1, v2), then
+ its magnitude is the length of the line O to P. Magnitude is represented by
+ vertical bars and is found by this formula:
+
+ \image vector-mag.png
+
+ Unit vectors are those with a magnitude of exactly 1. The math notation is a "hat"
+ (or circumflex) over the bolded vector symbol.
+
+ A unit vector parallel to one of the axes is easy to form without any division:
+ \raw HTML
+ <center><b>&#238;</b> = (1, 0, 0)</center>
+ \endraw
+
+ More typically such a vector is found by dividing by its own length:
+
+ \image vector-normalized.png
+
+ Vectors used for 3D normals are usually normalized to unit length. Confusingly
+ enough, since that is two different uses of the word "normal".
+
+ A \i normal is simply a vector perpendicular to something. For example a plane normal is
+ perpendicular to the plane.
+
+ Typically a normal vector is unit length, for convenience in 3D applications (but
+ there is nothing mathematically to say a normal vector has to be unit length).
+
+ A vertex normal is perpendicular to the surface modelled by the vertex, and is used
+ in lighting calculations.
+
+ \section1 Reviewing Operations on Vectors
+
+ The QVector3D class provides two very useful functions - the vector dot-product and the
+ vector cross-product. Here's a quick review of their uses:
+ \list
+ \o QVector3D::crossProduct(const QVector3D &, const QVector3D &)
+ \list
+ \o The cross-product of two vectors produces a \i vector as a result and is
+ written \bold w = \bold u x \bold v. The result \bold w is perpendicular to both
+ \bold u and \bold v. Consider a plane N containing point P, with the tails of \bold u
+ and \bold v at P, and both lying in N, then \bold u x \bold v is a normal to N.
+ \endlist
+ \o QVector3D::dotProduct(const QVector3D &, const QVector3D &)
+ \list
+ \o The dot-product of two vectors produces a \i scalar as a result and is written
+ \c{t = \bold u . \bold v}. The result t = |u| |v| cos(A), where A is the angle
+ between u and v. When \bold u and \bold v have magnitude 1, they are called
+ unit vectors, and \bold u . \bold v = cos(A).
+ \endlist
+ \endlist
+
+ A vector has the following operations defined on it in 3-space
+ \list
+ \o multiplication by a scalar, eg v' = s * \bold v
+ \o addition with another vector, eg \bold u = \bold v + \bold w
+ \endlist
+
+ Multiplying and dividing by vectors is not defined - these operations make no sense in
+ 3-D space.
+
+ Although you cannot add a vector to a point as such, you can consider the vector from the
+ origin to the point, and add the vector to that. Thus rather than out-lawing adding a
+ vector to a point it is simply defined as such. This allows the convenient notation for
+ lines and planes introduced in the next section.
+
+ \section1 Representing Lines and Planes
+
+ The QLine3D is represented by a point and a vector: the point anchors the line in
+ cartesian 3-space; and the vector is the direction the line is oriented in through that
+ point. The line is infinite.
+
+ The QPlane3D is represented also by a point and a vector. Again the point anchors the line
+ in cartesian 3-space; but the vector this time is a normal to the plane. The plane is
+ infinite.
+
+ This representation turns out to make many types of calculations required for 3D graphics
+ very straight forward.
+
+ For example to find if a point P lies on a plane take the vector \bold p from the point to
+ the planes origin, and find the dot-product with the planes normal \bold n.
+
+ If \bold {p . n} is zero, then \bold p is perpendicular to \bold n, and P is on the plane.
+
+ \target vector-and-point-arithmetic
+ \section1 Vector and Point Arithmetic
+
+ Slightly more complex arithmetic with the components of QLine3D and QPlane3D is possible,
+ with some care about what operations can be performed.
+
+ As an example look at the implementation for QLine3D::intersection(const QLine3D &) : the
+ two lines are defined as:
+
+ \image line-int-1.png
+
+ If the two lines intersect then P(t) == Q(s) and for some ordered pair \bold s, \bold t
+ is a solution to the equations for both lines.
+
+ The aim is to solve for \bold s and \bold t.
+
+ The equations can be rearranged algebraically as shown in the last line above.
+
+ But since dividing by a vector is not defined, tempting options such as dividing by \bold v
+ to solve for t are not possible. In the implementation the next step is breaking the points
+ and vectors down into their x, y and z components giving 3 simultaneous equations:
+
+ \image line-int-2.png
+
+ This can be readily solved using gaussian elimination to get a solution for s, and
+ substituting back gives t.
+*/
diff --git a/doc/src/qt3d-all-classes.qdoc b/doc/src/qt3d-all-classes.qdoc
new file mode 100644
index 000000000..864614a40
--- /dev/null
+++ b/doc/src/qt3d-all-classes.qdoc
@@ -0,0 +1,41 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qt3d-all-classes.html
+ \title Qt/3D Classes
+ \keyword Qt/3D Classes
+
+ \generatelist classes
+*/
+
+/*!
+ \group qt3d
+ \title Qt/3D Classes
+
+ \generatelist{related}
+*/
diff --git a/doc/src/qt3d-arrays.qdoc b/doc/src/qt3d-arrays.qdoc
new file mode 100644
index 000000000..c5ad77056
--- /dev/null
+++ b/doc/src/qt3d-arrays.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group qt3d::arrays
+ \title Qt/3D Arrays and Vertex Buffers
+ \keyword Vertex Buffer
+
+ \generatelist{related}
+*/
diff --git a/doc/src/qt3d-building.qdoc b/doc/src/qt3d-building.qdoc
new file mode 100644
index 000000000..9cf5ffd09
--- /dev/null
+++ b/doc/src/qt3d-building.qdoc
@@ -0,0 +1,252 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qt3d-building.html
+ \title Building Qt/3D
+ \keyword Building Qt/3D
+
+ \section1 Obtaining Qt/3D sources
+
+ The source for Qt/3D is hosted on Gitorious as the git repository
+ \l{http://qt.gitorious.org/qt-labs/qt3d}{\c{qt-labs/qt3d.git}}.
+ It can be cloned as follows:
+
+ \code
+ $ mkdir -p $HOME/depot/qt-labs
+ $ cd $HOME/depot/qt-labs
+ $ git clone git://gitorious.org/qt-labs/qt3d.git
+ \endcode
+
+ Once Qt/3D becomes a part of Qt it will be available with Qt binary packages. Until
+ then it must be built from sources.
+
+ \section1 Obtaining and building Qt sources for Qt/3D
+
+ \bold{Important: A Qt build, compiled from source is required for Qt/3D}.
+
+ This is because Qt/3D requires access to source files that do not ship
+ with an SDK. Until Qt/3D becomes a regular part of Qt, either download an official
+ Qt 4.7 source package (\l{http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.1.tar.gz}{tar.gz}, \l{http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.1.zip}{zip}),
+ or a source tarball from our
+ \l{http://qt.gitorious.org/qt/qt/}{gitorious repository}.
+
+ Configure your Qt 4.7 source tree with the \c{-opengl} option. An example:
+ \code
+ mkdir $HOME/build/qt
+ cd $HOME/build/qt
+ tar zxf qt-everywhere-opensource-src-4.7.1.tar.gz
+ ln -s qt* 4.7
+ cd qt*
+ ./configure -opengl
+ make
+ \endcode
+
+ The \c{-developer-build} option is recommended to get debug support,
+ and to ensure that your version of Qt is used and not the system
+ version of Qt.
+
+ On Windows refer to the
+ \l{http://doc.qt.nokia.com/4.7/install-win.html}{build documentation}
+ (but do not use the \c{-opengl} command line option).
+
+ \section1 Obtaining Qt Declarative UI for Qt/3D with QML bindings
+
+ Qt/3D has experimental integration with
+ \l{http://labs.trolltech.com/page/Projects/Graphics/Kinetic/DeclarativeUI}{Declarative UI}
+ via QML bindings. To experiment with these bindings, ensure you have a source tarball
+ \l{http://qt.gitorious.org/qt/kinetic/}{from our Qt Declarative UI repository}
+ and build as appropriate for your platform.
+
+ Then simply build Qt/3D as described below using the qmake from the Declarative UI
+ build tree. Once Qt/3D is build you can experiment with the examples in the
+ \c{examples/declarative} directory.
+
+ \section1 Building Qt/3D
+
+ Assuming that you have built Qt 4.7 in
+ \c{$HOME/build/qt/4.7}, you would configure and build Qt/3D as follows:
+
+ \code
+ $ mkdir -p $HOME/build/qt-labs/qt3d
+ $ cd $HOME/build/qt-labs/qt3d
+ $ $HOME/build/qt/4.7/bin/qmake $HOME/depot/qt-labs/qt3d/opengl.pro
+ $ make
+ $ make install
+ $ export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
+ \endcode
+
+ The last line exports the library path so that you can run applications
+ from Qt/3D, and is needed so those applications can find the Qt/3D libraries.
+
+ The "\c{make install}" step is required to make plug-ins work,
+ particularly the model loading and QML/3D plug-ins.
+
+ On Windows (with Visual Studio) those commands look like this:
+
+ \code
+ mkdir \build\qt-labs\qt3d
+ cd \build\qt-labs\qt3d
+ \build\qt\4.7\bin\qmake \depot\qt-labs\qt3d\opengl.pro
+ nmake
+ set PATH=%PATH%;\build\qt-labs\qt3d\bin
+ \endcode
+
+ On Symbian (with RVCT) those commands look like this:
+
+ \code
+ cd C:\depot\qt-labs\qt3d
+ qmake CONFIG+=old_importer
+ sbs -c armv5_urel
+ cd devices\symbian
+ createpackage Qt3D_template.pkg release-armv5
+ runonphone --sis Qt3D.sis
+ \endcode
+
+ Once you have built Qt/3D, you can run the "teapot" example to test
+ it as follows (ensure you've exported the library path as above):
+
+ \code
+ $ cd $HOME/build/qt-labs/qt3d
+ $ bin/teapot
+ \endcode
+
+ If all goes well, you should see something like the following
+ on the screen:
+
+ \image teapot-screenshot.png
+
+ Qt/3D has been tested with Qt/X11 and Qt/Embedded under Linux, on MacOSX
+ and Windows XP. Patches for other platforms are welcome.
+
+ \section1 Installing plugins
+
+ Qt/3D has support for loading 3D model files. This is enabled via
+ plugins for the various formats.
+
+ 3DS files are supported using the open source
+ \l{http://lib3ds.org}{lib3ds} library. A copy of version 1.3 of this
+ library is included with the Qt/3D sources under the \c{3rdparty}
+ directory.
+
+ If you already have lib3ds installed on your system and you wish to use
+ that instead of the version included with Qt/3D, you can pass the
+ \c{system_3ds} option to qmake:
+
+ \code
+ $ $HOME/build/qt/4.7/bin/qmake $HOME/depot/qt-labs/qt3d/opengl.pro CONFIG+=system_3ds
+ $ make
+ $ make install
+ \endcode
+
+ The last step above will install the plugins into Qt's plugin
+ directory so that the Qt plugin loader can find them at run-time.
+
+ Note that the imageformats plugins include a rudimentary read-only TGA
+ format reader which is required for many model files that use TGA for
+ textures. If you know for sure that your model files don't use TGA
+ then this step can be skipped.
+
+ See the instructions in \c{plugins/sceneformats/3ds/README.txt} for
+ more information on using the system lib3ds.
+
+ \section1 Building Qt/3D Using QtCreator
+
+ Here is a step-by-step guide to building Qt/3D using the
+ \l{http://qt.nokia.com/products/appdev/developer-tools/developer-tools}{QtCreator IDE}.
+ Read and refer to the above command line section for the full details
+ of building Qt/3D.
+
+ \bold{Step 1} - Open the Qt/3D project.
+
+ Choose \c{Open} from the \c{File} menu and navigate to the qt3d project
+ file \c {$HOME/depot/qt-labs/qt3d/opengl.pro}. Click \c{Open}.
+
+ \bold{Step 2} - Select Qt, and specify a build directory.
+
+ Now the Qt/3D project is displayed in the \c{Project} listing. Click the
+ \c{Projects} button on the left-hand side of the screen, and under the
+ \c{Build Settings} tab, choose \c{General} from the \c{Debug} category.
+ Set the Qt build to use, making sure it has OpenGL enabled. Also
+ specify a build directory, and check the "Shadow Build" box.
+
+ \image qt-creator-shadow-build.png
+
+ Note these screen shots apply to QtCreator v1.3 (beta) on MacOSX, but similar
+ functionality is available in later QtCreator versions, even if the
+ screen appears different.
+
+ \bold{Step 3} - Add the system_3ds switch to qmake
+
+ Only do this step if you have lib3ds installed on your system, as
+ described above, and you want to use the system lib3ds instead of
+ the one included with Qt/3D.
+
+ Do this in QtCreator from the \c{Projects} mode, under the
+ \c{Build Steps} category. Add \c{CONFIG+=system_3ds} to the "Additional arguments"
+ for the "QMake build configuration".
+
+ \image qt-creator-config-3ds.png
+
+ \bold{Step 4} - Add Qt/3D libraries to the path
+
+ As shown above you'll need to specify the Qt/3D libraries so that they can
+ be found. Do this in QtCreator from the \c{Projects} mode, under the
+ \c{Build Environment} category. This will also propagate to the
+ \c{Run Environment}. On MacOSX the name of the environment variable is
+ \c{DYLD_LIBRARY_PATH}, on Linux it is \c{LD_LIBRARY_PATH}. On Windows,
+ you'll need to add the \c{bin} directory to the \c{PATH} variable.
+
+ \image qt-creator-lib-path.png
+
+ \bold{Step 5} - Specify the plugin install
+
+ Only do this step if you want to use the Qt/3D model loading plugins,
+ as described above.
+
+ Do this in QtCreator from the \c{Projects} mode, under the
+ \c{Build Steps} category. Use the + drop-down under the steps list-box
+ to add a \c{Custom Process Step}, and move it below \c{QMake} and \c{Make}.
+ Set the name appropriately, set the command to \c{/usr/bin/make} and
+ the arguments to \c{-C plugins install}. Note that the
+ name you set may not display in the list box until you restart QtCreator.
+
+ \image qt-creator-plugins.png
+
+ In Windows set the command to the full path to your make program, eg:
+ \c{C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\nmake} and set
+ the "Working Directory" to the imageformats directory: eg
+ \c{C:\build\qt-labs\qt3d\plugins\imageformats}. The "Command Arguments"
+ are now simply \c{install}.
+
+ \bold{Step 6} - Build Qt/3D
+
+ Click the "Build All" button now to build Qt/3D.
+
+ \l{index.html}{Return to the main Qt/3D page} or
+ \l{qt3d-examples.html}{Continue to the Tutorials and Examples}.
+*/
diff --git a/doc/src/qt3d-contrib.qdoc b/doc/src/qt3d-contrib.qdoc
new file mode 100644
index 000000000..7f297fbfd
--- /dev/null
+++ b/doc/src/qt3d-contrib.qdoc
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qt3d-contrib.html
+ \title Contributing to Qt/3D
+ \keyword Contributing to Qt/3D
+
+ Qt/3D is being developed primarily in the Brisbane office of Qt
+ Development Frameworks, but anyone is welcome to join the effort with
+ patches, new examples, and major feature development.
+
+ Contact Rhys Weatherley in the Brisbane office for more information
+ on how you can contribute to Qt/3D.
+
+ Because Qt/3D may eventually become part of Qt, all contributions
+ need to conform with the
+ \l{http://qt.gitorious.org/qt/pages/QtContributionGuidelines}{Qt Contribution Model Guidelines}.
+
+ The source for Qt/3D is hosted on Gitorious at
+ \l{http://qt.gitorious.org/qt-labs/qt3d}.
+
+ Bugs can be reported against the "Qt3D" component of the "Qt" project
+ at \l{http://bugreports.qt.nokia.com/}.
+
+ The Qt/3D project has an open mailing list, which can be subscribed
+ to at \l{http://lists.trolltech.com/mailman/listinfo/qt-3d}.
+
+ \l{index.html}{Return to the main Qt/3D page}.
+*/
diff --git a/doc/src/qt3d-examples.qdoc b/doc/src/qt3d-examples.qdoc
new file mode 100644
index 000000000..6358e8dad
--- /dev/null
+++ b/doc/src/qt3d-examples.qdoc
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qt3d-examples.html
+ \title Qt3D Tutorials and Examples
+ \keyword Qt3D Examples
+
+ Using C++ to build applications with Qt/3D:
+
+ \list
+ \o \l{Teapot Example}{Hello Teapot} - drawing a basic object in 3D.
+ \o \l{Applying transformations and materials to objects}{Cube} - applying transformations and materials to objects.
+ \o \l{basket}{Basket} - animating objects in 3D.
+ \o \l{nesting}{Nesting} - drawing into framebuffer objects.
+ \o \l{Loading a 3DS model with Qt/3D}{Penguin} - loading a 3DS model with Qt/3D.
+ \o \l{painter}{Painter} - basic painting operations using QGLPainter.
+ \o \l{stereo}{Stereo} - using stereoscopic displays.
+ \o \l{pvcolor}{Per-vertex Color} - building models with QGLBuilder
+ that have per-vertex color values.
+ \o \l{pageflip}{Page Flip} - using shaders to combine textures.
+ \o \l{shapes}{Shapes} - paints all of the basic OpenGL shapes.
+ \o \l{teaservice}{Tea Service} - complex scenes and object picking.
+ \endlist
+
+ Using QML to build applications with Qt/3D:
+
+ \list
+ \o \l{Teapot Example in QML/3D}{Hello Teapot} in QML/3D
+ \o \l{basket#Basket in QML/3D}{Basket} in QML/3D
+ \o \l{Applying transformations and materials to objects#Cube in QML/3D}{Cube} in QML/3D
+ \o \l{QML Stereo Viewing Example}{Stereo} - using stereoscopic displays in QML, and mixing 2D and 3D content.
+ \o \l{Monkey God in QML}{Monkey God} in QML/3D
+ \o \l{Tea Service Demo in QML}{Tea Service} in QML/3D
+ \o \l{Forest Example}{Forest} - creating billboard objects.
+ \o \l{Using GLSL shaders in QML/3D}
+ \endlist
+
+ Other topics:
+
+ \list
+ \o \l{Converting raw GL applications to use QGLPainter}
+ \o \l{Writing a scene format plug-in for Qt/3D}
+ \endlist
+
+ \l{index.html}{Return to the main Qt/3D page}.
+*/
diff --git a/doc/src/qt3d-geometry.qdoc b/doc/src/qt3d-geometry.qdoc
new file mode 100644
index 000000000..ab7b2dddf
--- /dev/null
+++ b/doc/src/qt3d-geometry.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::geometry
+\title Qt/3D Geometry
+\keyword Qt/3D Geometry
+
+\generatelist{related}
+*/
diff --git a/doc/src/qt3d-graphicsview.qdoc b/doc/src/qt3d-graphicsview.qdoc
new file mode 100644
index 000000000..a696f7eb0
--- /dev/null
+++ b/doc/src/qt3d-graphicsview.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group qt3d::graphicsview
+ \title Qt/3D Graphics View Integration
+ \keyword Qt/3D Graphics View Integration
+
+ \generatelist{related}
+*/
diff --git a/doc/src/qt3d-materials.qdoc b/doc/src/qt3d-materials.qdoc
new file mode 100644
index 000000000..203b4e18a
--- /dev/null
+++ b/doc/src/qt3d-materials.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::materials
+\title Qt/3D Materials
+\keyword Qt/3D Materials
+
+\generatelist{related}
+*/
diff --git a/doc/src/qt3d-math.qdoc b/doc/src/qt3d-math.qdoc
new file mode 100644
index 000000000..bc424903a
--- /dev/null
+++ b/doc/src/qt3d-math.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::math
+\title Qt/3D Math
+\keyword Qt/3D Math
+
+\generatelist{related}
+*/
diff --git a/doc/src/qt3d-painting.qdoc b/doc/src/qt3d-painting.qdoc
new file mode 100644
index 000000000..6006e745f
--- /dev/null
+++ b/doc/src/qt3d-painting.qdoc
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::painting
+\title Qt/3D Painting
+\keyword Qt/3D Painting
+
+Porting between desktop OpenGL and embedded OpenGL/ES has traditionally
+been difficult. The usual sequence of operations for a drawing request
+in OpenGL consists of:
+
+\list
+ \o Select an appropriate shader program, or fixed-function pipeline
+ rendering options.
+ \o Set or adjust the current projection and modelview matrices.
+ \o Specify vertex, normal, texture co-ordinate, and other attribute arrays.
+ \o Specify textures, variables, and other rendering objects needed
+ by the shader program.
+ \o Draw fragments: triangles, triangle fans, quads, etc.
+ \o Disable the arrays, textures, and modes that were selected.
+\endlist
+
+Desktop OpenGL, OpenGL/ES 1.1, and OpenGL/ES 2.0 all posses functionality
+for the above, but they are all different. OpenGL/ES 2.0 in particular
+presents unique problems because it lacks a fixed-function pipeline mode
+to perform common painting operations.
+
+In Qt/3D the QGLPainter class wraps OpenGL to present a consistent
+OpenGL painting API across all platforms. Shaders and fixed-function
+options are supplied as an instance of QGLAbstractEffect. Several
+built-in standard effects are provided for drawing with flat colors,
+material-based lighting, and simple texturing.
+
+The tutorial "\l{Converting raw GL applications to use QGLPainter}"
+compares a raw GL application that draws a triangle with its
+QGLPainter counterpart.
+
+\generatelist{related}
+*/
diff --git a/doc/src/qt3d-qml3d.qdoc b/doc/src/qt3d-qml3d.qdoc
new file mode 100644
index 000000000..e80cbf5b2
--- /dev/null
+++ b/doc/src/qt3d-qml3d.qdoc
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::qml3d
+\title QML Support in Qt/3D
+\keyword Qt/3D QML
+
+The following QML elements are provided by the \c{Qt3D} namespace
+for importing 3D elements into QML applications:
+
+\generatelist{related}
+
+See the \l{Teapot Example in QML/3D}{Teapot} example for an introduction
+to using these elements in QML.
+
+QML/3D also provides some \l{Stock Shapes for QML/3D}{stock shapes}
+in the \c{Qt3D.Shapes} namespace as convenience elements.
+*/
+
+/*!
+\group qt3d::qml3d::shapes
+\title Stock Shapes for QML/3D
+
+The following QML elements are provided by the \c{Qt3D.Shapes} namespace
+as convenience elements:
+
+\generatelist{related}
+
+See the \l{Applying transformations and materials to objects#Cube in QML/3D}{Cube} example for an introduction to using these convenience shapes in QML.
+*/
diff --git a/doc/src/qt3d-scene.qdoc b/doc/src/qt3d-scene.qdoc
new file mode 100644
index 000000000..0aa0cb7c1
--- /dev/null
+++ b/doc/src/qt3d-scene.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::scene
+\title Qt/3D Scene Management
+\keyword Qt/3D Scene Management
+
+\generatelist{related}
+*/
diff --git a/doc/src/qt3d-textures.qdoc b/doc/src/qt3d-textures.qdoc
new file mode 100644
index 000000000..e38424379
--- /dev/null
+++ b/doc/src/qt3d-textures.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group qt3d::textures
+ \title Qt/3D Texture Handling
+ \keyword Qt/3D Texture Handling
+
+ \generatelist{related}
+*/
diff --git a/doc/src/qt3d-viewing.qdoc b/doc/src/qt3d-viewing.qdoc
new file mode 100644
index 000000000..6d3146a9c
--- /dev/null
+++ b/doc/src/qt3d-viewing.qdoc
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\group qt3d::viewing
+\title Qt/3D Viewing
+\keyword Qt/3D Viewing
+
+\generatelist{related}
+*/
diff --git a/doc/src/style/OfflineStyle.css b/doc/src/style/OfflineStyle.css
new file mode 100644
index 000000000..2fb357ce8
--- /dev/null
+++ b/doc/src/style/OfflineStyle.css
@@ -0,0 +1,251 @@
+@media screen
+{
+
+ .wrapper
+ {
+ top:50px;
+ background: none;
+
+ }
+ .wrapper .bd
+ {
+ background: none;
+ position: relative;
+ }
+
+
+
+
+ body.offline
+ {
+ background-image: none;
+ background-color: #FFFFFF;
+
+ }
+
+ .offline .footer {
+ margin: 0;
+ }
+ .offline .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background-color: #ffffff;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ border-bottom: solid #E5E5E5 1px;
+ z-index:1;
+ position:fixed;
+ }
+
+ .offline .header .content
+ {
+ }
+ .offline .header .qtref
+ {
+ color: #00732F;
+ position: static;
+ float: left;
+ margin-left: 5px;
+ font: bold 18px/1 Arial;
+ }
+
+ .offline .header .qtref:visited
+ {
+ color: #00732F;
+ }
+ .offline .header .qtref:hover
+ {
+ color: #00732F;
+ text-decoration:none;
+ }
+ .offline .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ text-decoration:none;
+ }
+
+ .offline .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+
+ .offline .wrap .toolbar
+ {
+ display:block;
+ padding-top:5px;
+ }
+
+ .offline .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .offline .wrap .breadcrumb ul li a {
+ /*color: #44a51c;*/
+ }
+
+ .offline .wrap .breadcrumb ul li.last a {
+ /*color: #363534;*/
+ }
+
+
+
+ .narrow .indexboxcont .section {
+ width: 64%;
+ padding-left: 0;
+ }
+
+ .narrow .indexboxcont .sectionlist {
+ width: 32.5%;
+ }
+
+ .header .icon,
+ .sidebar,
+ .feedback,
+ .t_button,
+ .feedback,
+ #feedbackBox,
+ #feedback,
+ #blurpage,
+ .indexbox .indexIcon span,
+ .wrapper .hd,
+ .offline .indexbox .indexIcon,
+ .offline .header #nav-logo,
+ #offlinemenu,
+ #offlinesearch,
+ .offline .header #nav-topright,
+ .offline .header #shortCut ,
+ .offline .wrapper .hd,
+ .offline .wrapper .ft,
+ .offline .sidebar,
+ .offline .wrap .feedback
+ {
+ display:none;
+ }
+
+ /* end offline mode */
+#narrowmenu {
+ display: none;
+ float: right;
+ margin: 15px 40px 0 0;
+ font-size: 11px;
+ }
+
+ .narrow #narrowmenu {
+ display: block;
+ }
+
+ #narrowsearch{
+ display:none;
+ }
+
+ #narrowmenu ul
+ {
+ border-bottom:solid 1px #E5E5E5;
+ border-left:solid 1px #E5E5E5;
+ border-right:solid 1px #E5E5E5;
+ }
+
+ #narrowmenu a {
+ line-height: 1.1;
+ background: url(../images/arrow_down.png) no-repeat 100% 50%;
+ white-space: nowrap;
+ padding: 0 16px 0 5px;
+ }
+
+ #narrowmenu li {
+ margin-left: 20px;
+ }
+
+ #narrowmenu li li {
+ margin: 0 0 5px 0;
+ }
+
+ #narrowmenu li li a {
+ padding: 0;
+ background-image: none;
+ }
+
+ #narrowmenu li,
+ #narrowmenu li ul {
+ background-color: #fff;
+ }
+
+ #narrowmenu li ul {
+ width: auto;
+ padding: 5px;
+ margin-top:-15px;
+ }
+
+ .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+ top: 1.2em;
+ }
+.sf-menu, .sf-menu * {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.sf-menu {
+ line-height: 1.0;
+}
+.sf-menu ul {
+ position: absolute;
+ top: -999em;
+ width: 10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+ width: 100%;
+}
+.sf-menu li:hover {
+ visibility: inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+ float: left;
+ position: relative;
+}
+.sf-menu a {
+ display: block;
+ position: relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+ left: 0;
+ top: 2.5em; /* match top ul list item height */
+ z-index: 99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ .wrap .content ol li {
+ background:none;
+ font:400 10pt/1 Verdana;
+ margin-bottom:10px;
+ margin-left:12px;
+ }
+ .wrap .content ol li {
+ list-style-type:decimal;
+
+ }
+
+
+
+}
+/* end of screen media */
+
diff --git a/doc/src/style/narrow.css b/doc/src/style/narrow.css
new file mode 100644
index 000000000..7544c4ae8
--- /dev/null
+++ b/doc/src/style/narrow.css
@@ -0,0 +1,250 @@
+ /* start narrow mode */
+
+ body.narrow
+ {
+ background-image: none;
+ }
+
+ .narrow a {
+ color: #44a51c;
+ }
+
+ .narrow .header, .narrow .header .content, .narrow .footer, .narrow .wrapper {
+ margin: 0 7px;
+ min-width: 300px;
+ }
+
+ .narrow .footer {
+ margin: 0;
+ }
+ .narrow .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background: #fff url(../images/header_bg.png) repeat-x 0 100%;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ }
+
+ .narrow .header .content
+ {
+ }
+
+ .narrow .header #nav-logo
+ {
+ display: none;
+ }
+
+ .narrow .header .qtref
+ {
+ width: auto;
+ height: auto;
+ color: #363534;
+ position: static;
+ float: left;
+ margin-left: 25px;
+ font: bold 18px/1 Arial;
+ }
+
+ .narrow .header .qtref a
+ {
+ color: #363534;
+ }
+
+ .narrow .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ }
+
+ .narrow .header #nav-topright
+ {
+ display: none;
+ }
+
+ .narrow .header #shortCut
+ {
+ clear: both;
+ font-weight: normal;
+ position: static;
+ float: left;
+ margin: 15px 0 0 25px;
+ overflow: hidden;
+ padding: 0;
+ height: auto;
+ }
+
+ .narrow .header #shortCut ul
+ {
+ float: none;
+ margin: 0;
+ width: auto;
+ font-size: 11px;
+ }
+
+ .narrow .header #shortCut ul li
+ {
+ background-image: none;
+ }
+
+ .narrow .header #shortCut ul .shortCut-topleft-active,
+ .narrow .header #shortCut ul .shortCut-topleft-inactive
+ {
+ background-image: none;
+ height: auto;
+ padding: 0;
+ width: auto;
+ }
+ .narrow .header #shortCut ul li a
+ {
+ color: #44a51c;
+ }
+
+ .narrow .wrapper .hd
+ {
+ background: url(../images/bg_ul_blank.png) no-repeat 0 0;
+ }
+
+ .narrow .wrapper .bd
+ {
+ background: url(../images/bg_l_blank.png) repeat-y 0 0;
+ }
+
+ .narrow .wrapper .ft
+ {
+ background: url(../images/bg_ll_blank.png) no-repeat 0 0;
+ }
+
+ .narrow .sidebar
+ {
+ display: none;
+ }
+
+ .narrow .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+
+ .narrow .wrap .toolbar
+ {
+ border-bottom: none;
+ }
+
+ .narrow .wrap .content
+ {
+ padding-top: 15px;
+ }
+
+ .narrow .wrap .feedback
+ {
+ display: none;
+ }
+
+ .narrow .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .narrow .wrap .breadcrumb ul li a {
+ color: #44a51c;
+ }
+
+ .narrow .wrap .breadcrumb ul li.last a {
+ color: #363534;
+ }
+
+ #narrowsearch {
+ display: none;
+ }
+
+ .narrow #narrowsearch {
+ display: block;
+ float: right;
+ margin-right: 25px;
+ _position: relative;
+ }
+
+ .narrow #narrowsearch fieldset {
+ _position: absolute;
+ _margin-top: -1px;
+ }
+
+ .narrow #narrowsearch {
+ background: url("http://doc.qt.nokia.com/prototype/html/images/sprites-combined.png") no-repeat scroll -6px -348px transparent;
+ height: 21px;
+ padding: 2px 0 0 5px;
+ width: 167px;
+ }
+
+ .narrow #narrowsearch input {
+ border: none;
+ font: 13px/1.2 Verdana;
+ height: 19px;
+ outline: none;
+ padding: 0;
+ width: 158px;
+ *border: 1px solid #fff;
+ *height: 17px;
+ _height: 18px;
+ }
+
+ .narrow .indexbox .indexIcon {
+ display: none;
+ }
+
+ .narrow .indexboxcont .section {
+ width: 64%;
+ padding-left: 0;
+ }
+
+ .narrow .indexboxcont .sectionlist {
+ width: 32.5%;
+ }
+
+ #narrowmenu {
+ display: none;
+ float: right;
+ margin: 15px 40px 0 0;
+ font-size: 11px;
+ }
+
+ .narrow #narrowmenu {
+ display: block;
+ }
+
+ #narrowmenu a {
+ line-height: 1.1;
+ background: url(../images/arrow_down.png) no-repeat 100% 50%;
+ white-space: nowrap;
+ padding: 0 16px 0 5px;
+ }
+
+ #narrowmenu li {
+ margin-left: 20px;
+ }
+
+ #narrowmenu li li {
+ margin: 0 0 5px 0;
+ }
+
+ #narrowmenu li li a {
+ padding: 0;
+ background-image: none;
+ }
+
+ #narrowmenu li,
+ #narrowmenu li ul {
+ background-color: #fff;
+ margin-top:-1px;
+ }
+
+ #narrowmenu li ul {
+ width: auto;
+ padding: 5px;
+ }
+
+ .sf-menu li:hover ul, .sf-menu li.sfHover ul {
+ top: 1.2em;
+ }
+
+ /* end narrow mode */
diff --git a/doc/src/style/style.css b/doc/src/style/style.css
new file mode 100644
index 000000000..f520e6add
--- /dev/null
+++ b/doc/src/style/style.css
@@ -0,0 +1,1567 @@
+@media screen
+{
+
+/* basic elements */
+ html
+ {
+ color: #000000;
+ background: #FFFFFF;
+ }
+ body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td
+ {
+ margin: 0;
+ padding: 0;
+ }
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+ fieldset, img
+ {
+ border: 0;
+ max-width:100%;
+ }
+ address, caption, cite, code, dfn, em, strong, th, var, optgroup
+ {
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ del, ins
+ {
+ text-decoration: none;
+ }
+ li
+ {
+ list-style: none;
+ }
+ caption, th
+ {
+ text-align: left;
+ }
+ h1, h2, h3, h4, h5, h6
+ {
+ font-size: 100%;
+ }
+ q:before, q:after
+ {
+ content: '';
+ }
+ abbr, acronym
+ {
+ border: 0;
+ font-variant: normal;
+ }
+ sup, sub
+ {
+ vertical-align: baseline;
+ }
+ tt, .qmlreadonly span, .qmldefault span
+ {
+ word-spacing:5px;
+ }
+ legend
+ {
+ color: #000000;
+ }
+ input, button, textarea, select, optgroup, option
+ {
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ }
+ input, button, textarea, select
+ {
+ font-size: 100%;
+ }
+ strong
+ {
+ font-weight: bold;
+ }
+ em
+ {
+ font-style: italic;
+ }
+
+ /* adding Qt theme */
+ html
+ {
+ /* background-color: #e5e5e5;*/
+ }
+ body
+ {
+ background: #e6e7e8 url(../images/page_bg.png) repeat-x 0 0;
+ font: normal 13px/1.2 Verdana;
+ color: #363534;
+ }
+ a
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
+ hr
+ {
+ background-color: #E6E6E6;
+ border: 1px solid #E6E6E6;
+ height: 1px;
+ width: 100%;
+ text-align: left;
+ margin: 15px 0px 15px 0px;
+ }
+
+ pre
+ {
+ border: 1px solid #DDDDDD;
+ -moz-border-radius: 7px 7px 7px 7px;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ overflow-x: auto;
+ }
+ table, pre
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #E6E6E6;
+ border-collapse: separate;
+ font-size: 11px;
+ margin-bottom: 25px;
+ }
+ pre.highlightedCode {
+ display: block;
+ overflow:hidden;
+ }
+ thead
+ {
+ margin-top: 5px;
+ font:600 12px/1.2 Arial;
+ }
+ th
+ {
+ padding: 5px 15px 5px 15px;
+ background-color: #E1E1E1;
+ border-left: 1px solid #E6E6E6;
+ }
+ td
+ {
+ padding: 3px 15px 3px 20px;
+ }
+ tr.odd td:hover, tr.even td:hover {}
+
+ td.rightAlign
+ {
+ padding: 3px 5px 3px 10px;
+ }
+ table tr.odd
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #F6F6F6;
+ color: #66666E;
+ }
+ table tr.even
+ {
+ border-left: 1px solid #E6E6E6;
+ background-color: #ffffff;
+ color: #66666E;
+ }
+ table tr.odd td:hover, table tr.even td:hover
+ {
+ /* background-color: #E6E6E6;*/ /* disabled until further notice */
+ }
+
+ span.comment
+ {
+ color: #8B0000;
+ font-style: italic;
+ }
+ span.string, span.char
+ {
+ color: #254117;
+ }
+
+
+/* end basic elements */
+
+/* font style elements */
+ .heading
+ {
+ font: normal bold 16px/1.0 Arial;
+ padding-bottom: 15px;
+ }
+ .subtitle
+ {
+ font-size: 13px;
+ }
+ .small-subtitle
+ {
+ font-size: 13px;
+ }
+/* end font style elements */
+
+/* global settings*/
+ .header, .footer, .wrapper
+ {
+ min-width: 600px;
+ max-width: 1500px;
+ margin: 0 30px;
+ }
+ .header, .footer
+ {
+ display: block;
+ clear: both;
+ overflow: hidden;
+ }
+ .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+/* end global settings*/
+/* header elements */
+ .header
+ {
+ height: 115px;
+ position: relative;
+ }
+ .header .icon
+ {
+ position: absolute;
+ top: 13px;
+ left: 0;
+ }
+ .header .qtref
+ {
+ position: absolute;
+ top: 28px;
+ left: 88px;
+ width: 302px;
+ height: 22px;
+ }
+ .header .qtref span
+ {
+ display: block;
+ width: 302px;
+ height: 22px;
+ text-indent: -999em;
+ background: url(../images/sprites-combined.png) no-repeat -78px -235px;
+ }
+ .content a:visited
+ {
+ color: #4c0033;
+ text-decoration: none;
+ }
+ .content a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ #nav-topright
+ {
+ height: 70px;
+ }
+
+ #nav-topright ul
+ {
+ list-style-type: none;
+ float: right;
+ width: 370px;
+ margin-top: 11px;
+ }
+
+ #nav-topright li
+ {
+ display: inline-block;
+ margin-right: 20px;
+ float: left;
+ }
+
+ #nav-topright li.nav-topright-last
+ {
+ margin-right: 0;
+ }
+
+ #nav-topright li a
+ {
+ background: transparent url(../images/sprites-combined.png) no-repeat;
+ height: 18px;
+ display: block;
+ overflow: hidden;
+ text-indent: -9999px;
+ }
+
+ #nav-topright li.nav-topright-home a
+ {
+ width: 65px;
+ background-position: -2px -91px;
+ }
+
+ #nav-topright li.nav-topright-home a:hover
+ {
+ background-position: -2px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-dev a
+ {
+ width: 30px;
+ background-position: -76px -91px;
+ }
+
+ #nav-topright li.nav-topright-dev a:hover
+ {
+ background-position: -76px -117px;
+ }
+
+
+ #nav-topright li.nav-topright-labs a
+ {
+ width: 40px;
+ background-position: -114px -91px;
+ }
+
+ #nav-topright li.nav-topright-labs a:hover
+ {
+ background-position: -114px -117px;
+ }
+
+ #nav-topright li.nav-topright-doc a
+ {
+ width: 32px;
+ background-position: -162px -91px;
+ }
+
+ #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
+ {
+ background-position: -162px -117px;
+ }
+
+ #nav-topright li.nav-topright-blog a
+ {
+ width: 40px;
+ background-position: -203px -91px;
+ }
+
+ #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
+ {
+ background-position: -203px -117px;
+ }
+
+ #nav-topright li.nav-topright-shop a
+ {
+ width: 40px;
+ background-position: -252px -91px;
+ }
+
+ #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
+ {
+ background-position: -252px -117px;
+ }
+
+ #nav-logo
+ {
+ background: transparent url(../images/sprites-combined.png ) no-repeat 0 -225px;
+ left: -3px;
+ position: absolute;
+ width: 75px;
+ height: 75px;
+ top: 13px;
+ }
+ #nav-logo a
+ {
+ width: 75px;
+ height: 75px;
+ display: block;
+ text-indent: -9999px;
+ overflow: hidden;
+ }
+
+
+ .shortCut-topleft-inactive
+ {
+ padding-left: 3px;
+ background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px;
+ height: 20px;
+ width: 47px;
+ }
+ .shortCut-topleft-inactive span
+ {
+ font-variant: normal;
+ }
+ .shortCut-topleft-inactive span a:hover, .shortCut-topleft-active a:hover
+ {
+ text-decoration:none;
+ }
+ #shortCut
+ {
+ padding-top: 10px;
+ font-weight: bolder;
+ color: #b0adab;
+ }
+ #shortCut ul
+ {
+ list-style-type: none;
+ float: left;
+ width: 347px;
+ margin-left: 100px;
+ }
+ #shortCut li
+ {
+ display: inline-block;
+ margin-right: 25px;
+ float: left;
+ white-space: nowrap;
+ }
+ #shortCut li a
+ {
+ color: #b0adab;
+ }
+ #shortCut li a:hover
+ {
+ color: #44a51c;
+ }
+
+
+
+/* end header elements */
+/* content and sidebar elements */
+ .wrapper
+ {
+ background: url(../images/bg_r.png) repeat-y 100% 0;
+ }
+ .wrapper .hd
+ {
+ padding-left: 216px;
+ height: 15px;
+ background: url(../images/page.png) no-repeat 0 0;
+ overflow: hidden;
+ }
+
+
+
+
+ .wrapper .hd span
+ {
+ height: 15px;
+ display: block;
+ overflow: hidden;
+ background: url(../images/page.png) no-repeat 100% -30px;
+ }
+ .wrapper .bd
+ {
+ background: url(../images/bg_l.png) repeat-y 0 0;
+ position: relative;
+ }
+
+
+
+
+ .wrapper .ft
+ {
+ padding-left: 216px;
+ height: 15px;
+ background: url(../images/page.png) no-repeat 0 -75px;
+ overflow: hidden;
+ }
+
+
+
+
+ .wrapper .ft span
+ {
+ height: 15px;
+ display: block;
+ background: url(../images/page.png) no-repeat 100% -60px;
+ overflow: hidden;
+ }
+ .navTop{
+ float:right;
+ display:block;
+ padding-right:15px;
+
+
+ }
+
+
+
+/* end content and sidebar elements */
+/* sidebar elements */
+ .sidebar
+ {
+ float: left;
+ margin-left: 5px;
+ width: 200px;
+ font-size: 11px;
+ }
+
+
+
+
+
+
+ .sidebar .searchlabel
+ {
+ padding: 0 0 2px 17px;
+ font: normal bold 11px/1.2 Verdana;
+ }
+
+ .sidebar .search
+ {
+ padding: 0 15px 0 16px;
+ }
+
+ .sidebar .search form
+ {
+ background: url(../images/sprites-combined.png) no-repeat -6px -348px;
+ height:21px;
+ padding:2px 0 0 5px;
+ width:167px;
+ }
+
+ .sidebar .search form input#pageType
+ {
+ width: 158px;
+ height: 19px;
+ padding: 0;
+ border: 0px;
+ outline: none;
+ font: 13px/1.2 Verdana;
+ }
+
+ .sidebar .box
+ {
+ padding: 17px 15px 5px 16px;
+ }
+
+ .sidebar .box .first
+ {
+ background-image: none;
+ }
+
+ .sidebar .box h2
+ {
+ font: bold 16px/1.2 Arial;
+ padding: 0;
+ }
+ .sidebar .box h2 span
+ {
+ overflow: hidden;
+ display: inline-block;
+ }
+ .sidebar .box#lookup h2
+ {
+ background-image: none;
+ }
+ .sidebar #lookup.box h2 span
+ {
+ }
+ .sidebar .box#topics h2
+ {
+ background-image: none;
+ }
+ .sidebar #topics.box h2 span
+ {
+ }
+ .sidebar .box#examples h2
+ {
+ background-image: none;
+ }
+ .sidebar #examples.box h2 span
+ {
+ }
+
+ .sidebar .box .list
+ {
+ display: block;
+ max-height:200px;
+ min-height:120px;
+ overflow-y:auto;
+ overflow-x:none;
+ }
+ .list li a:hover
+ {
+ text-decoration: underline;
+ }
+ .sidebar .box ul
+ {
+ padding-bottom:5px;
+ padding-left:10px;
+ padding-top:5px;
+ }
+ .sidebar .box ul li
+ {
+ padding-left: 12px;
+ background: url(../images/bullet_gt.png) no-repeat 0 5px;
+ margin-bottom: 5px;
+ }
+ .sidebar .bottombar
+ {
+ background: url(../images/box_bg.png) repeat-x 0 bottom;
+ }
+ .sidebar .box ul li.noMatch
+ {
+ background: none;
+ color:#FF2A00;
+ font-style:italic;
+ }
+ .sidebar .box ul li.hit
+ {
+ background: none;
+ color:#AAD2F0;
+ font-style:italic;
+ }
+ .sidebar .search form input.loading
+ {
+ background:url("../images/spinner.gif") no-repeat scroll right center transparent;
+ }
+
+.floatingResult{
+ z-index:1;
+ position:relative;
+ padding-top:0px;
+ background-color:white;
+ border:solid 1px black;
+ height:250px;
+ width:600px;
+ overflow-x:hidden;
+ overflow-y:auto;
+}
+
+ .floatingResult:hover{
+ display:block;
+ }
+ .floatingResult:hover{
+ }
+
+/* end sidebar elements */
+/* content elements */
+ .wrap
+ {
+ margin: 0 5px 0 208px;
+ overflow: visible;
+ }
+
+
+
+
+ .wrap .toolbar
+ {
+ background-color: #fafafa;
+ border-bottom: 1px solid #d1d1d1;
+ height: 20px;
+ position: relative;
+ }
+ .wrap .toolbar .toolblock
+ {
+ position: absolute;
+ }
+ .wrap .toolbar .breadcrumb
+ {
+ font-size: 11px;
+ line-height: 1;
+ padding: 0 0 10px 21px;
+ height: 10px;
+ }
+ .wrap .toolbar .toolbuttons
+ {
+ padding: 0 0 10px 21px;
+ right: 5px;
+ vertical-align: middle;
+ overflow: hidden;
+ }
+ .wrap .toolbar .toolbuttons .active
+ {
+ color: #00732F;
+ }
+ .wrap .toolbar .toolbuttons ul
+ {
+ float: right;
+ }
+ .wrap .toolbar .toolbuttons li
+ {
+ float: left;
+ text-indent: -10px;
+ margin-top: -5px;
+ margin-right: 15px;
+ font-weight: bold;
+ color: #B0ADAB;
+ }
+
+ .toolbuttons #print
+ {
+ border-left: 1px solid #c5c4c4;
+ margin-top: 0;
+ padding-left: 7px;
+ text-indent: 0;
+ }
+ .toolbuttons #print a
+ {
+ width: 16px;
+ height: 16px;
+ }
+
+ .toolbuttons #print a span
+ {
+ width: 16px;
+ height: 16px;
+ text-indent: -999em;
+ display: block;
+ overflow: hidden;
+ background: url(../images/sprites-combined.png) no-repeat -137px -311px;
+ }
+
+ .toolbuttons #smallA
+ {
+ font-size: 10pt;
+ }
+ .toolbuttons #medA
+ {
+ font-size: 12pt;
+ }
+ .toolbuttons #bigA
+ {
+ font-size: 14pt;
+ margin-right: 7px;
+ }
+
+ #smallA:hover, #medA:hover, #bigA:hover
+ {
+ color: #00732F;
+ }
+
+
+ .wrap .content
+ {
+ padding: 30px;
+ word-wrap:break-word;
+ }
+
+ .wrap .breadcrumb ul
+ {
+ }
+ .wrap .breadcrumb ul li
+ {
+ float: left;
+ background: url(../images/breadcrumb.png) no-repeat 0 3px;
+ padding-left: 15px;
+ margin-left: 15px;
+ font-weight: bold;
+ }
+ .wrap .breadcrumb ul li.last
+ {
+ font-weight: normal;
+ }
+ .wrap .breadcrumb ul li a
+ {
+ color: #363534;
+ }
+ .wrap .breadcrumb ul li.first
+ {
+ background-image: none;
+ padding-left: 0;
+ margin-left: 0;
+ }
+
+
+
+
+ .wrap .content ol li {
+ background:none;
+ font:normal 10pt/1 Verdana;
+
+ margin-bottom:10px;
+ margin-left:12px;
+ /*list-style-type:disc;*/
+ }
+
+ .wrap .content li
+ {
+ background: url(../images/bullet_sq.png) no-repeat 0 5px;
+ font: normal 400 10pt/1 Verdana;
+ margin-bottom: 10px;
+ padding-left:12px;
+ }
+
+
+
+
+
+
+
+
+
+ .content li:hover {}
+
+ .wrap .content h1
+ {
+ font: bold 18px/1.2 Arial;
+ }
+ .wrap .content h2
+ {
+ border-bottom:1px solid #DDDDDD;
+ font:600 16px/1.2 Arial;
+ margin-top:15px;
+ width:100%;
+ }
+ .wrap .content h3
+ {
+ font: bold 14px/1.2 Arial;
+ font:600 16px/1.2 Arial;
+ margin-top:15px;
+ width:100%;
+ }
+ .wrap .content p
+ {
+ line-height: 20px;
+ padding: 5px;
+ }
+ .wrap .content table p
+ {
+ line-height: 20px;
+ padding: 0px;
+ }
+ .wrap .content ul
+ {
+ padding-left: 25px;
+ padding-top: 10px;
+ }
+ a:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+ .feedback
+ {
+ float: none;
+ position: absolute;
+ right: 15px;
+ bottom: 10px;
+ font: normal 8px/1 Verdana;
+ color: #B0ADAB;
+ }
+ .feedback:hover
+ {
+ float: right;
+ font: normal 8px/1 Verdana;
+ color: #00732F;
+ text-decoration: underline;
+ }
+ .alphaChar{
+ width:100%;
+ background-color:#F6F6F6;
+ border:1px solid #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
+ font-size:12pt;
+ padding-left:10px;
+ margin-top:10px;
+ margin-bottom:10px;
+ }
+ .flowList{
+ vertical-align:top;
+ }
+
+ .flowList dl{
+ }
+ .flowList dd{
+ display:inline-block;
+ margin-left:10px;
+ width:250px;
+ }
+ .wrap .content .flowList p{
+ padding:0px;
+ }
+
+ .content .alignedsummary
+ {
+ margin: 15px;
+ }
+
+
+ .qmltype
+ {
+ text-align: center;
+ font-size: 160%;
+ }
+ .qmlreadonly
+ {
+ padding-left: 5px;
+ float: right;
+ color: #254117;
+ }
+
+ .qmldefault
+ {
+ padding-left: 5px;
+ float: right;
+ color: red;
+ }
+
+ .qmldoc
+ {
+ }
+
+ *.qmlitem p
+ {
+ }
+ #feedbackBox
+ {
+ display: none;
+ -moz-border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ position: fixed;
+ top: 100px;
+ left: 33%;
+ height: 230px;
+ width: 400px;
+ padding: 5px;
+ background-color: #e6e7e8;
+ z-index: 4;
+ }
+ #feedcloseX
+ {
+ display: inline;
+ padding: 5px 5px 0 0;
+ margin-bottom: 3px;
+ color: #363534;
+ font-weight: 600;
+ float: right;
+ text-decoration: none;
+ }
+
+ #feedbox
+ {
+ display: inline;
+ width: 370px;
+ height: 120px;
+ margin: 0px 25px 10px 15px;
+ }
+ #noteHead
+ {
+ font-weight:bold;
+ padding:10px 10px 10px 20px;
+ }
+ #feedsubmit
+ {
+ display: inline;
+ float: right;
+ margin: 4px 32px 0 0;
+ }
+
+ .note
+ {
+ font-size:7pt;
+ padding-bottom:3px;
+ padding-left:20px;
+ }
+
+ #blurpage
+ {
+ display: none;
+ position: fixed;
+ float: none;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+ background: transparent url(../images/feedbackground.png) 0 0;
+ z-index: 3;
+ }
+ .toc
+ {
+ float: right;
+ -moz-border-radius: 7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border: 1px solid #DDDDDD;
+ margin: 0 20px 10px 10px;
+ padding: 20px 15px 20px 20px;
+ height: auto;
+ width: 200px;
+ }
+
+ .toc h3, .generic a
+ {
+ font: bold 12px/1.2 Arial;
+ }
+
+ .generic{
+ }
+ .generic td{
+ padding:5px;
+ }
+ .generic .alphaChar{
+ margin-top:5px;
+ }
+
+ .generic .odd .alphaChar{
+ background-color: #F6F6F6;
+ }
+
+ .generic .even .alphaChar{
+ background-color: #FFFFFF;
+ }
+
+ .alignedsummary{}
+ .propsummary{}
+ .memItemLeft{}
+ .memItemRight{
+ padding:3px 15px 3px 0;
+ }
+ .bottomAlign{}
+ .highlightedCode
+ {
+ margin:10px;
+ }
+ .LegaleseLeft{}
+ .valuelist{}
+ .annotated td{
+ padding: 3px 5px 3px 5px;
+ }
+ .obsolete{}
+ .compat{}
+ .flags{}
+ .qmlsummary{}
+ .qmlitem{}
+ .qmlproto{}
+ .qmlname{}
+ .qmlreadonly{}
+ .qmldefault{}
+ .qmldoc{}
+ .qt-style{}
+ .redFont{}
+ code{}
+
+ .wrap .content .toc ul
+ {
+ padding-left: 0px;
+ }
+
+ .wrap .content .toc h3{
+ border-bottom:0px;
+ margin-top:0px;
+ }
+
+ .wrap .content .toc h3 a:hover{
+ color:#00732F;
+ text-decoration:none;
+ }
+
+
+ .wrap .content .toc .level2
+ {
+ margin-left: 15px;
+ }
+
+ .wrap .content .toc .level3
+ {
+ margin-left: 30px;
+ }
+
+ .content .toc li
+ {
+ font: normal 10px/1.2 Verdana;
+ background: url(../images/bullet_dn.png) no-repeat 0 5px;
+ }
+ .relpage
+ {
+ -moz-border-radius: 7px 7px 7px 7px;
+ border: 1px solid #DDDDDD;
+ padding: 25px 25px;
+ clear: both;
+ }
+ .relpage ul
+ {
+ float: none;
+ padding: 15px;
+ }
+ .content .relpage li
+ {
+ font: normal 11px/1.2 Verdana;
+ }
+ h3.fn, span.fn
+ {
+ -moz-border-radius:7px 7px 7px 7px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ font-weight: bold;
+ word-spacing:3px;
+ padding:3px 5px;
+ }
+
+ .functionIndex {
+ font-size:12pt;
+ word-spacing:10px;
+ margin-bottom:10px;
+ background-color: #F6F6F6;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #E6E6E6;
+ -moz-border-radius: 7px 7px 7px 7px;
+ width:100%;
+ }
+
+ .centerAlign
+ {
+ text-align:center;
+ }
+
+ .rightAlign
+ {
+ text-align:right;
+ }
+
+
+ .leftAlign
+ {
+ text-align:left;
+ }
+
+ .topAlign{
+ vertical-align:top
+ }
+
+ .functionIndex a{
+ display:inline-block;
+ }
+
+/* end content elements */
+/* footer elements */
+
+ .footer
+ {
+ min-height: 100px;
+ color: #797775;
+ font: normal 9px/1 Verdana;
+ text-align: center;
+ padding-top: 40px;
+ background-color: #E6E7E8;
+ margin: 0;
+ }
+/* end footer elements */
+
+
+
+
+ /* start index box */
+ .indexbox
+ {
+ width: 100%;
+ display:inline-block;
+ }
+
+ .indexboxcont
+ {
+ display: block;
+
+ }
+
+ .indexboxbar
+ {
+ background: transparent url(../images/horBar.png ) repeat-x left bottom;
+ margin-bottom: 25px;
+
+
+ }
+
+ .indexboxcont .section
+ {
+ display: inline-block;
+ width: 49%;
+ *width:42%;
+ _width:42%;
+ padding:0 2% 0 1%;
+ vertical-align:top;
+
+}
+
+ .indexboxcont .indexIcon
+ {
+ width: 11%;
+ *width:18%;
+ _width:18%;
+ overflow:hidden;
+
+}
+
+.indexboxcont .section {
+ float: left;
+}
+
+ .indexboxcont .section p
+ {
+ padding-top: 20px;
+ padding-bottom: 20px;
+ }
+ .indexboxcont .sectionlist
+ {
+ display: inline-block;
+ vertical-align:top;
+ width: 32.5%;
+ padding: 0;
+ }
+ .indexboxcont .sectionlist ul
+ {
+ margin-bottom: 20px;
+ }
+
+ .indexboxcont .sectionlist ul li
+ {
+ line-height: 12px;
+ }
+
+ .content .indexboxcont li
+ {
+ font: normal bold 13px/1 Verdana;
+ }
+
+ .indexbox a:hover, .indexbox a:visited:hover
+ {
+ color: #4c0033;
+ text-decoration: underline;
+ }
+
+ .indexbox a:visited
+ {
+ color: #00732f;
+ text-decoration: none;
+ }
+
+ .indexbox .indexIcon {
+ width: 11%;
+ }
+
+
+ .indexbox .indexIcon span
+ {
+ display: block;
+ }
+
+ .indexbox.guide .indexIcon span
+ {
+ width: 96px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -5px -376px;
+ padding: 0;
+ }
+
+ .indexbox.tools .indexIcon span
+ {
+ width: 115px;
+ height: 137px;
+ background: url(../images/sprites-combined.png) no-repeat -111px -376px;
+ padding: 0;
+ }
+ .indexboxcont:after
+ {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
+
+
+
+/* start of offline spec*/
+ .offline .wrapper .hd
+ {
+ background: url(../images/page.png) no-repeat 0 -15px;
+ }
+ .offline .wrapper .bd
+ {
+ background: url(../images/bg_l_blank.png) repeat-y 0 0;
+ }
+ .offline .wrapper .ft
+ {
+ background: url(../images/page.png) no-repeat 0 -90px;
+ }
+ .offline .sidebar,
+ .offline .feedback,
+ .offline .t_button,
+ .offline #narrowsearch,
+ .offline #narrowmenu
+ {
+ display: none;
+ }
+ .offline .wrap
+ {
+ margin: 0 5px 0 5px;
+ }
+ .offline .wrap .breadcrumb
+ {
+ }
+
+ .offline .wrap .content
+ {
+ padding-top: 15px;
+ }
+
+
+/* end of offline spec*/
+
+/* start of creator spec*/
+ .creator
+ {
+ margin-left:0px;
+ margin-right:0px;
+ padding-left:0px;
+ padding-right:0px;
+ }
+ .creator .wrap .content ol li {
+ list-style-type:decimal;
+
+ }
+ .creator .header .icon,
+ .creator .feedback,
+ .creator .t_button,
+ .creator .feedback,
+ .creator #feedbackBox,
+ .creator #feedback,
+ .creator #blurpage,
+ .creator .indexbox .indexIcon span,
+ .creator .wrapper .hd,
+ .creator .indexbox .indexIcon,
+ .creator .header #nav-logo,
+ .creator #offlinemenu,
+ .creator #offlinesearch,
+ .creator .header #nav-topright,
+ .creator .header #shortCut ,
+ .creator .wrapper .hd,
+ .creator .wrapper .ft,
+ .creator .sidebar,
+ .creator .wrap .feedback
+ {
+ display:none;
+ }
+
+ body.creator
+ {
+ background: none;
+
+ font: normal 13px/1.2 Verdana;
+ color: #363534;
+ background-color: #FFFFFF;
+ }
+
+
+
+ .creator .header, .footer, .wrapper
+ {
+ max-width: 1500px;
+ margin: 0px;
+ }
+
+ .creator .wrapper
+ {
+ position:relative;
+ top:50px;
+ }
+ .creator .wrapper .bd
+ {
+
+ background:#FFFFFF;
+ }
+
+
+ .creator .header, .footer
+ {
+ display: block;
+ clear: both;
+ overflow: hidden;
+ }
+ .creator .wrap .content p
+
+ {
+ line-height: 20px;
+ padding: 5px;
+ }
+
+ .creator .header .qtref span
+ {
+ background:none;
+ }
+
+
+
+ .creator .footer
+ {
+ border-top:1px solid #E5E5E5;
+ min-height: 100px;
+ margin:0px;
+ }
+
+ .creator .wrap
+ {
+
+ padding:0 5px 0 5px;
+ margin: 0px;
+ }
+ .creator .wrap .toolbar
+ {
+
+
+ border-bottom:1px solid #E5E5E5;
+ width:100%,
+ }
+ .creator .wrap .breadcrumb ul li a
+ {
+ /* color: #363534;*/
+ color: #00732F;
+ }
+
+ .creator .wrap .content
+ {
+ padding: 0px;
+ word-wrap:break-word;
+ }
+
+ .creator .wrap .content ol li {
+ background:none;
+ font: inherit;
+ padding-left: 0px;
+ }
+
+ .creator .wrap .content .descr ol li {
+ margin-left: 45px;
+
+ }
+ .creator .content .alignedsummary
+ {
+ margin: 5px;
+ width:100%;
+ }
+ .creator .generic{
+ max-width:75%;
+ }
+ .creator .generic td{
+ padding:0;
+ }
+ .creator .indexboxbar
+ {
+ border-bottom:1px solid #E5E5E5;
+ margin-bottom: 25px;
+ background: none;
+ }
+
+
+
+ .creator .header
+ {
+ width: 100%;
+ margin: 0;
+ height: auto;
+ background-color: #ffffff;
+ padding: 10px 0 5px 0;
+ overflow: visible;
+ border-bottom: solid #E5E5E5 1px;
+ z-index:1;
+
+
+
+
+
+
+
+
+ position:fixed;
+ }
+
+
+ .creator .header .content
+ {
+ }
+ .creator .header .qtref
+ {
+ color: #00732F;
+ position: static;
+ float: left;
+ margin-left: 5px;
+ font: bold 18px/1 Arial;
+ }
+
+ .creator .header .qtref:visited
+ {
+ color: #00732F;
+ }
+ .creator .header .qtref:hover
+ {
+ color: #00732F;
+ text-decoration:none;
+ }
+ .creator .header .qtref span
+ {
+ background-image: none;
+ text-indent: 0;
+ text-decoration:none;
+ }
+
+
+
+
+
+
+ .creator .wrap .toolbar
+ {
+ display:block;
+ padding-top:0px;
+ }
+
+
+
+ .creator .wrap .breadcrumb ul li {
+ font-weight: normal;
+ }
+
+ .creator .wrap .breadcrumb ul li a {
+ /*color: #44a51c;*/
+ }
+
+ .creator .wrap .breadcrumb ul li.last a {
+ /*color: #363534;*/
+ }
+
+ .creator #narrowmenu ul
+ {
+ border-bottom:solid 1px #E5E5E5;
+ border-left:solid 1px #E5E5E5;
+ border-right:solid 1px #E5E5E5;
+ }
+
+ .creator #narrowmenu li ul {
+ margin-top:-15px;
+ }
+
+
+ .creator .toc {
+ margin:10px 20px 10px 10px;
+ }
+/* end of creator spec*/
+
+}
+
+/* end of screen media */
+
+/* start of print media */
+
+@media print
+{
+ input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
+ {
+ display: none;
+ background: none;
+ }
+ .content
+ {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ background: none;
+ display: block;
+ }
+}
+/* end of print media */
diff --git a/doc/src/style/style_ie6.css b/doc/src/style/style_ie6.css
new file mode 100644
index 000000000..16fb8505d
--- /dev/null
+++ b/doc/src/style/style_ie6.css
@@ -0,0 +1,54 @@
+.indexbox, .indexboxcont, .group {
+ zoom: 1;
+ height: 1%;
+}
+
+.sidebar {
+ margin-left: 3px;
+ width: 199px;
+ overflow: hidden;
+}
+
+.sidebar .search form {
+ position: relative;
+}
+
+.sidebar .search form fieldset {
+ position: absolute;
+ margin-top: -1px;
+}
+
+.sidebar .search form input#searchstring {
+ border: 1px solid #fff;
+ height: 18px;
+}
+
+.wrap {
+ zoom: 1;
+}
+
+.content,
+.toolbar {
+ zoom: 1;
+ margin-left: -3px;
+ position: relative;
+}
+
+.indexbox {
+ clear: both;
+}
+
+.indexboxcont .section {
+ zoom: 1;
+ float: left;
+}
+
+.indexboxcont .sectionlist {
+ zoom: 1;
+ float: left;
+}
+
+.wrap .toolbar .toolbuttons li {
+ text-indent: 0;
+ margin-right: 8px;
+} \ No newline at end of file
diff --git a/doc/src/style/style_ie7.css b/doc/src/style/style_ie7.css
new file mode 100644
index 000000000..afbff5f88
--- /dev/null
+++ b/doc/src/style/style_ie7.css
@@ -0,0 +1,19 @@
+.indexbox, .indexboxcont, .group {
+ min-height: 1px;
+}
+
+.sidebar .search form input#searchstring {
+ border: 1px solid #fff;
+ height: 17px;
+}
+
+
+.indexboxcont .section {
+ zoom: 1;
+ float: left;
+}
+
+.indexboxcont .sectionlist {
+ zoom: 1;
+ float: left;
+}
diff --git a/doc/src/style/style_ie8.css b/doc/src/style/style_ie8.css
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/doc/src/style/style_ie8.css
diff --git a/doc/src/style/superfish.css b/doc/src/style/superfish.css
new file mode 100644
index 000000000..a9939090d
--- /dev/null
+++ b/doc/src/style/superfish.css
@@ -0,0 +1,51 @@
+.sf-menu, .sf-menu * {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.sf-menu {
+ line-height: 1.0;
+}
+.sf-menu ul {
+ position: absolute;
+ top: -999em;
+ width: 10em; /* left offset of submenus need to match (see below) */
+}
+.sf-menu ul li {
+ width: 100%;
+}
+.sf-menu li:hover {
+ visibility: inherit; /* fixes IE7 'sticky bug' */
+}
+.sf-menu li {
+ float: left;
+ position: relative;
+}
+.sf-menu a {
+ display: block;
+ position: relative;
+}
+.sf-menu li:hover ul,
+.sf-menu li.sfHover ul {
+ left: 0;
+ top: 2.5em; /* match top ul list item height */
+ z-index: 99;
+}
+ul.sf-menu li:hover li ul,
+ul.sf-menu li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li:hover ul,
+ul.sf-menu li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
+ul.sf-menu li li:hover li ul,
+ul.sf-menu li li.sfHover li ul {
+ top: -999em;
+}
+ul.sf-menu li li li:hover ul,
+ul.sf-menu li li li.sfHover ul {
+ left: 10em; /* match ul width */
+ top: 0;
+}
diff --git a/doc/src/style/superfish_skin.css b/doc/src/style/superfish_skin.css
new file mode 100644
index 000000000..112b26ae2
--- /dev/null
+++ b/doc/src/style/superfish_skin.css
@@ -0,0 +1,83 @@
+
+/*** DEMO SKIN ***/
+.sf-menu {
+ float: left;
+ margin-bottom: 1em;
+}
+.sf-menu a {
+ border-left: 1px solid #fff;
+ border-top: 1px solid #CFDEFF;
+ padding: .75em 1em;
+ text-decoration:none;
+}
+.sf-menu a, .sf-menu a:visited { /* visited pseudo selector so IE6 applies text colour*/
+ color: #13a;
+}
+.sf-menu li {
+ background: #BDD2FF;
+}
+.sf-menu li li {
+ background: #AABDE6;
+}
+.sf-menu li li li {
+ background: #9AAEDB;
+}
+.sf-menu li:hover, .sf-menu li.sfHover,
+.sf-menu a:focus, .sf-menu a:hover, .sf-menu a:active {
+ background: #CFDEFF;
+ outline: 0;
+}
+
+/*** arrows **/
+.sf-menu a.sf-with-ul {
+ padding-right: 2.25em;
+ min-width: 1px; /* trigger IE7 hasLayout so spans position accurately */
+}
+.sf-sub-indicator {
+ position: absolute;
+ display: block;
+ right: .75em;
+ top: 1.05em; /* IE6 only */
+ width: 10px;
+ height: 10px;
+ text-indent: -999em;
+ overflow: hidden;
+ background: url('../images/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */
+}
+a > .sf-sub-indicator { /* give all except IE6 the correct values */
+ top: .8em;
+ background-position: 0 -100px; /* use translucent arrow for modern browsers*/
+}
+/* apply hovers to modern browsers */
+a:focus > .sf-sub-indicator,
+a:hover > .sf-sub-indicator,
+a:active > .sf-sub-indicator,
+li:hover > a > .sf-sub-indicator,
+li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px -100px; /* arrow hovers for modern browsers*/
+}
+
+/* point right for anchors in subs */
+.sf-menu ul .sf-sub-indicator { background-position: -10px 0; }
+.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; }
+/* apply hovers to modern browsers */
+.sf-menu ul a:focus > .sf-sub-indicator,
+.sf-menu ul a:hover > .sf-sub-indicator,
+.sf-menu ul a:active > .sf-sub-indicator,
+.sf-menu ul li:hover > a > .sf-sub-indicator,
+.sf-menu ul li.sfHover > a > .sf-sub-indicator {
+ background-position: -10px 0; /* arrow hovers for modern browsers*/
+}
+
+/*** shadows for all but IE6 ***/
+.sf-shadow ul {
+ background: url('../images/shadow.png') no-repeat bottom right;
+ padding: 0 8px 9px 0;
+ -moz-border-radius-bottomleft: 17px;
+ -moz-border-radius-topright: 17px;
+ -webkit-border-top-right-radius: 17px;
+ -webkit-border-bottom-left-radius: 17px;
+}
+.sf-shadow ul.sf-shadow-off {
+ background: transparent;
+}
diff --git a/doc/src/tutorials/converting.qdoc b/doc/src/tutorials/converting.qdoc
new file mode 100644
index 000000000..715f2bf26
--- /dev/null
+++ b/doc/src/tutorials/converting.qdoc
@@ -0,0 +1,172 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \title Converting raw GL applications to use QGLPainter
+ \example tutorials/converting
+
+ \raw HTML
+ <table align="left" width="100%">
+ <tr><td>
+ \endraw
+ In this tutorial, we will show how to convert an existing application
+ that uses QGLWidget and raw GL function calls to use QGLPainter.
+ In the process, we will show some of the portability challenges that
+ are presented by raw GL and how QGLPainter addresses them.
+
+ The application we are going to build does the following during
+ each paint event:
+
+ \list
+ \o Clear the window to the background role color from the window's palette.
+ \o Set up a standard orthographic projection.
+ \o Draw a green triangle in the upper left corner of the window.
+ \endlist
+
+ \raw HTML
+ </td><td align="right">
+ \endraw
+ \image tutorials/converting-screenshot.png
+ \raw HTML
+ </td></tr>
+ </table>
+ \endraw
+
+ \section1 Widget definition and viewport setup
+
+ We start by defining a class that inherits from QGLWidget:
+
+ \quotefromfile tutorials/converting/converting-rawgl.cpp
+ \skipuntil class-defn
+ \printto QT_OPENGL_ES_2
+ \skipuntil endif
+ \printto class-defn
+
+ The only difference for using QGLPainter is the inclusion of
+ the \c{qglpainter.h} header:
+
+ \snippet tutorials/converting/converting.cpp includes
+
+ Then we override QGLWidget::resizeGL() to set the viewport
+ every time the window changes size:
+
+ \snippet tutorials/converting/converting-rawgl.cpp set-viewport
+
+ It isn't necessary to set the viewport with QGLPainter because
+ QGLPainter::begin() will take care of setting the correct viewport
+ for the drawing surface.
+
+ QGLPainter is a wrapper around QGLContext objects. In this case,
+ we are creating a painter object for the QGLContext associated
+ with \c{this} widget. Multiple QGLPainter objects can be created
+ for the same QGLContext, and they will all refer to the same
+ shared context state.
+
+ \section1 Painting the scene
+
+ The next step is to start implementing our QGLWidget::paintGL()
+ override by clearing the window to the background color.
+ First, for raw GL:
+
+ \snippet tutorials/converting/converting-rawgl.cpp clear-window
+
+ With QGLPainter, clearing to the background color is similar:
+
+ \snippet tutorials/converting/converting.cpp clear-window
+
+ As in \c{resizeGL()}, we create a QGLPainter instance for the current
+ widget, and then QGLPainter takes care of the platform issues
+ for us.
+
+ Now we need to set up the projection and modelview matrices for the view:
+
+ \snippet tutorials/converting/converting-rawgl.cpp set-matrices
+
+ Here we see the difficulty of writing portable GL code: the function
+ for setting up an orthographic projection changes in name from
+ \c{glOrtho()} for desktop OpenGL to \c{glOrthof()} for
+ OpenGL/ES 2.0. We should also note that the above won't work with
+ OpenGL/ES 2.0 which uses shaders instead of fixed function operations
+ like \c{glLoadIdentity()} and \c{glOrtho()}. The QGLPainter equivalent
+ is a lot simpler, and will work on all OpenGL platforms, including
+ OpenGL/ES 2.0:
+
+ \snippet tutorials/converting/converting.cpp set-matrices
+
+ \raw HTML
+ The OpenGL/ES 2.0 equivalent using shaders is given in the
+ <a href="tutorials-converting-converting-rawgl-cpp.html">converting-rawgl.cpp</a> source file.
+ \endraw
+
+ Finally, we select a color and draw the triangle:
+
+ \snippet tutorials/converting/converting-rawgl.cpp draw
+
+ The QGLPainter equivalent is similar in structure and will also
+ work on OpenGL/ES 2.0:
+
+ \snippet tutorials/converting/converting.cpp draw-all
+
+ The code first selects a standard drawing effect. All QGLPainter drawing
+ operations make use of QGLAbstractEffect objects, and there are a number
+ of built-in effects for common drawing operations. In this case,
+ we select the QGL::FlatColor effect and set the color. See
+ QGLPainter::setStandardEffect() and QGLAbstractEffect for more
+ information on how QGLPainter uses effects.
+
+ Next, the code creates a QVector3DArray instance containing the vertex
+ position values. The positions are then added to the array with
+ QVector3DArray::append().
+
+ QVector3DArray is essentially QArray<QVector3D>. QArray
+ is a highly efficient data structure for building large arrays
+ of simple vector values. The array starts by appending to
+ preallocated storage on the stack and then moves the data
+ to the heap as the array grows in size.
+
+ There is a slight difference to the raw GL example, which used a
+ static constant array of vertex values. The QArray::fromRawData()
+ function can be used to load data from static constant arrays.
+ In this example, we are building the QVector3DArray on the stack
+ every time the scene is painted.
+
+ Last, we set the vertex array and draw the triangle defined by
+ the three vertices. It isn't necessary to explictly enable and
+ disable the vertex array: the effect takes care of that for us
+ automatically.
+
+ The full \c{paintGL()} function is as follows:
+
+ \snippet tutorials/converting/converting.cpp paintGL
+
+ This code will work on all OpenGL platforms. Under OpenGL/ES 2.0,
+ QGLPainter will transparently implement the QGL::FlatColor effect
+ using shaders. On all other platforms, the fixed function pipeline
+ is used to implement the QGL::FlatColor effect.
+
+ \l{qt3d-examples.html}{Return to the main Tutorials page}.
+*/
diff --git a/doc/src/tutorials/penguin.qdoc b/doc/src/tutorials/penguin.qdoc
new file mode 100644
index 000000000..babdbf724
--- /dev/null
+++ b/doc/src/tutorials/penguin.qdoc
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example tutorials/penguin
+ \title Loading a 3DS model with Qt/3D
+
+ This tutorial shows how Qt/3D can be used to load a simple
+ model object in 3D Studio Max (3DS) format with a perspective
+ camera view.
+
+ We start by defining a class that inherits from QGLView, which
+ provides some basic scene setup logic and 3D camera navigation:
+
+ \snippet tutorials/penguin/modelview.h class-defn
+
+ Refer first to the \l{Teapot Example} for the basics of using
+ the QGLView class, lighting and so on.
+
+ When the application starts up, we load the scene from its
+ resource file, and store the result in a member variable, so
+ we can refer to it in the paint function:
+
+ \snippet tutorials/penguin/modelview.cpp initialize
+
+ In the teapot example we had to specify appropriate effects but
+ the model loader sets appropriate effects on the scene for us.
+
+ \snippet tutorials/penguin/modelview.cpp paint
+
+ Here in the paint function we call the \c{draw()} function of
+ the scene's main object, in order to display the fully
+ loaded model.
+
+ This was really just two lines of code: one to load the model
+ (once off, when the application initialized) and another line to
+ display the model (every time the paint function is called).
+
+ \image penguin-0-screenshot.png
+
+ The result is pretty good for two lines of code, but it could
+ stand some improvements.
+
+ Here we are looking down onto the top of our penguin's head, and
+ even when we stand him on his feet, he is too close to the camera
+ to all fit in the frame.
+
+ Let's make a few changes to have our penguin display nicely
+ when the application opens.
+
+ \snippet tutorials/penguin_advanced/modelview.cpp initialize
+
+ First of all, let move the camera away from the penguin and up
+ so he fits in the frame and we can get a better angle on him,
+ when the application loads.
+
+ If use dragging and so on in the QGLView this will change the
+ camera from these intial settings, but this setup means the camera
+ will be well positioned at the moment the application opens.
+
+ We don't want to position the camera in the paintGL function,
+ because that would defeat QGLViews camera dragging features and
+ we would not be able to interact with the view properly.
+
+ We'll also save the main object away in a member variable so that
+ the overhead of searching the scene is not incurred every paint.
+
+ Finally a pose for our penguin is calculated - its a turn around the
+ x axis, so he is standing up on his feet; and a turn around the y
+ axis, so he shows a bit more of his profile. The pose is
+ calculated and stored as a quaternion - we want the x twist first
+ so that goes last in the product of the two quaternions.
+
+ \snippet tutorials/penguin_advanced/modelview.cpp paint
+
+ Now all that remains in the updated paint function is to apply the
+ new pose, and then paint the penguin.
+
+ \image penguin-screenshot.png
+
+ \l{qt3d-examples.html}{Return to Tutorials}.
+*/
diff --git a/doc/src/tutorials/sceneformat.qdoc b/doc/src/tutorials/sceneformat.qdoc
new file mode 100644
index 000000000..b16b60702
--- /dev/null
+++ b/doc/src/tutorials/sceneformat.qdoc
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \title Writing a scene format plug-in for Qt/3D
+ \example sceneformats/obj
+
+ Scene format plugins are used to load external 3D model file
+ formats like \bold 3DS, \bold obj, and so on. In this tutorial we will
+ do a walk-through of the \bold obj scene format plugin to
+ demonstrate what is required to add a new format to Qt/3D.
+
+ Models are loaded by QGLAbstractScene::loadScene(), which locates
+ a suitable plug-in for the format, and then asks the plug-in to
+ parse the data and create a QGLAbstractScene object that describes
+ the 3D objects in the scene.
+
+ We start by declaring an instance of QGLSceneFormatPlugin and
+ arranging for it to be registered with the Qt plug-in system:
+
+ \snippet sceneformats/obj/main.cpp 1
+ \snippet sceneformats/obj/main.cpp 4
+
+ The two functions we need to implement are
+ \l{QGLSceneFormatPlugin::keys()}{keys()} and
+ \l{QGLSceneFormatPlugin::create()}{create()}. The first of these
+ returns a lower-case list of the file extensions and MIME types
+ that are supported by the plug-in:
+
+ \snippet sceneformats/obj/main.cpp 2
+
+ The create function is called to create the QGLSceneFormatHandler
+ which is used to load the model data:
+
+ \snippet sceneformats/obj/main.cpp 3
+
+ The create function is passed the QIODevice for the data,
+ the URL of where the data was found, and the chosen format.
+ These parameters can be used by the plug-in to decide which
+ handler to return if multiple formats are supported by
+ the plug-in. In the case of obj, we always return the same
+ handler so we don't need to inspect the passed parameters.
+
+ QGLAbstractScene::loadScene() will set the parameters on
+ the QGLSceneFormatHandler object and then call
+ \l{QGLSceneFormatHandler::read()}{read()}:
+
+ \snippet sceneformats/obj/qglobjscenehandler.h 1
+ \dots
+ \snippet sceneformats/obj/qglobjscenehandler.h 2
+
+ The read function will typically construct a QGLBuilder
+ for the geometry in the scene and then parse all of the objects,
+ materials, textures, and so on. Ultimately, it needs to produce a
+ QGLAbstractScene object, populated with QGLSceneNode instances
+ for each of the objects in the model file. In our case, we create
+ an instance of \c QGLObjScene:
+
+ \snippet sceneformats/obj/qglobjscene.h 1
+ \dots
+ \snippet sceneformats/obj/qglobjscene.h 2
+ \dots
+ \snippet sceneformats/obj/qglobjscene.h 3
+
+ The most important function is the override for
+ QGLAbstractScene::objects(), which allows the rest of Qt/3D
+ to query the full list of objects in the model file.
+ The scene object can also override QGLAbstractScene::object()
+ if it has an efficient method to quickly look up an object by name.
+
+ The scene should also override QGLAbstractScene::mainNode()
+ to return the main mesh node in the scene. Usually this is
+ the first element in the list returned by QGLAbstractScene::objects()
+ but doesn't have to be.
+
+ Note: the plug-in does not need to use QGLBuilder and the
+ other Qt/3D classes to load the model if it doesn't want to.
+ It can instantiate subclasses of QGLSceneNode that override
+ the draw() method and draws the object using whatever technique
+ the plug-in chooses. It just needs to leave the OpenGL state
+ in the condition that it found it so that other parts of Qt/3D
+ will not be confused.
+
+ Once you have written a plug-in for your new format, you should
+ install it into \c{$QTDIR/plugins/sceneformats}. You can test it
+ by running the \c{modelviewer} program and trying to load models
+ in your new format. When debugging, it can be useful to set the
+ \c{QT_DEBUG_PLUGINS} environment variable to 1.
+
+ \l{qt3d-examples.html}{Return to the main Tutorials page}.
+*/
diff --git a/doc/src/tutorials/shaders.qdoc b/doc/src/tutorials/shaders.qdoc
new file mode 100644
index 000000000..55395e96e
--- /dev/null
+++ b/doc/src/tutorials/shaders.qdoc
@@ -0,0 +1,388 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \title Using GLSL shaders in QML/3D
+ \example tutorials/shaders
+
+
+ In this tutorial, we will show how to apply QML property animations to
+ GLSL shaders in a QML/3D application.
+
+ Starting with a relatively simple shader program, we are going to
+ manipulate various parameters to explain how both the shader and the QML
+ integration work (This is quite a lot to start a tutorial with, but we'll
+ focus on each small piece of it in turn):
+
+ \raw HTML
+ <table align="left" width="100%">
+ <tr class="qt-code"><td>
+ \endraw
+ \quotefile tutorials/shaders/shader-tutorial.qml
+ \raw HTML
+ </td><td align="right">
+ \endraw
+ \inlineimage tutorials/shader-tutorial.png
+ \raw HTML
+ </td></tr>
+ </table>
+ \endraw
+
+ At the highest level, shaders in QML/3D are created using the ShaderProgram
+ element. The ShaderProgram element in this example has the id \a program,
+ and applying it to the teapot is as simple as assigning it to the \c effect
+ property of an Item3D derived element.
+
+ The two most important properties of the ShaderProgram element are the
+ \c vertexShader and \c fragmentShader properties, which are strings
+ containing the code for the respective shader programs. Broadly speaking,
+ the vertex shader is run on each vertex in a model (for example, the 8
+ corners of a cube) to calculate the final position of each point, while the
+ fragment shader is run on each pixel visible onscreen to calculate it's
+ color.
+
+ The other attribute we use in this tutorial is the \c texture property.
+ This property is connected to the \c qt_Texture0 attribute in our shader
+ programs, and we'll cover how it's used shortly.
+
+ \section1 Texture Coordinates and Textures (shader-tutorial-1-textures.qml)
+
+ To start with, there are a couple of obvious problems with our starting
+ point - the Qt is upside down and back to front, and it's also boring
+ (before you ask, the reasons for the image being the wrong way around are
+ also boring).
+
+ First, let's get the logo the right way up. The key here is the texture
+ coordinates. Let's look at it's declaration in the vertex shader for a
+ moment: \code attribute highp vec4 qt_MultiTexCoord0; \endcode
+
+ The \c attribute declaration indicates that this is a per-vertex value
+ that we get from our model. Our teapot has a position, a normal, and
+ texture coordinates for each vertex, and qt3d automatically provides
+ these to us through the \c qt_Vertex, \c qt_MultiTexCoord0, and \c
+ qt_Normal attributes. (we don't care about normals until we get to
+ lighting).
+
+ The \c mediump tag indicates that we want pretty good accuracy on this
+ attribute, but it doesn't need double precision. It's a hint for
+ embedded systems to save bandwidth (highp is usually used for positions,
+ and lowp is generally only suitable for colors, and the rule of thumb is
+ to use as little memory as you can get away with).
+
+ \c vec4 indicates that the value is a 4-element vector. Our texture is
+ 2D, so we only care about the first two elements, but there are 3D
+ textures and cube maps out there.
+
+ To fix the image's orientation we can simply reverse the sign when we
+ pass the texture coordinate to our fragment shader because the default
+ behaviour is for texture coordinates wrap around if they are higher than
+ 1.0 or lower than 0.0:
+ \code texCoord = -qt_MultiTexCoord0; \endcode
+
+ In order to fix the boring, we're going to have to add a bit more QML
+ first. We need to add a property to our ShaderProgram element, and a
+ matching variable to the shader program. The types match up exactly
+ between QML and GLSL, but if the variables have the same name they
+ should automatically be hooked up, so we just add this to the
+ ShaderProgram element:
+ \code property real textureOffsetX : 1.0
+ NumberAnimation on textureOffsetX
+ {
+ running: true; loops: Animation.Infinite
+ from: 0.0; to: 1.0;
+ duration: 1000
+ }
+ \endcode
+ and we add this to the vertex shader:
+ \code uniform mediump float textureOffsetX; \endcode
+
+ The final step is to work our new variable into the program, by changing
+ the texCoord assignment. We'll add our animated variable to our horizontal
+ texture coordinate, which will effectively scroll our texture around our
+ teapot:
+ \code
+ texCoord = vec4(-qt_MultiTexCoord0.s - textureOffsetX,
+ -qt_MultiTexCoord0.t,
+ 0,0);
+ \endcode
+
+ Adding an additional texture is done by adding another uniform. The
+ ShaderProgram element interprets string properties as URIs for texture
+ resources, so adding a second texture is as easy as:
+ \code
+ property string texture2: "textures/basket.jpg"
+ \endcode
+ In order to have a smooth transition back and forth, we'll add and animate
+ a second property to use to blend the two textures:
+ \code
+ property real interpolationFactor : 1.0
+ SequentialAnimation on interpolationFactor
+ {
+ running: true; loops: Animation.Infinite
+ NumberAnimation {
+ from: 0.0; to: 1.0;
+ duration: 2000
+ }
+ PauseAnimation { duration: 500 }
+ NumberAnimation {
+ from: 1.0; to: 0.0;
+ duration: 2000
+ }
+ PauseAnimation { duration: 500 }
+ }
+ \endcode
+
+ Next we need to use all of that information in the fragment shader:
+ \code
+ varying highp vec4 texCoord;
+ uniform sampler2D qt_Texture0;
+ uniform sampler2D texture2;
+ uniform mediump float interpolationFactor;
+
+ void main(void)
+ {
+ mediump vec4 texture1Color = texture2D(qt_Texture0, texCoord.st);
+ mediump vec4 texture2Color = texture2D(texture2, texCoord.st);
+ mediump vec4 textureColor = mix(texture1Color, texture2Color,
+ interpolationFactor);
+ gl_FragColor = textureColor;
+ }
+ \endcode
+
+ In general, textures needs to have the same name in the shaders as in the
+ ShaderProgram element in order to be automatically connected, but \c
+ qt_Texture0 is special cased and very slightly faster, so it's good to use
+ it first.
+
+ \c mix() is another handy built in GLSL function that interpolates linearly
+ between two values or vectors. (You can find details of all the built in
+ functions in the official OpenGL Shader Language specification available at
+ http://www.khronos.org/opengl/ )
+
+ Finally, let's make one more change to make this example pop. If you're
+ a performance fanatic, it just might have rankled that we padded out our
+ texture coordinates with two zeros, and passed them in for processing
+ on every single pixel of our teapot.
+
+ Let's make use of that space by putting a second set of co-ordinates in
+ there to use with our second texture. Let's change our texture assignment
+ to this:
+ \code
+ texCoord.st = vec2(-qt_MultiTexCoord0.s - textureOffsetX,
+ -qt_MultiTexCoord0.t);
+ texCoord.pq = vec2(-qt_MultiTexCoord0.s + textureOffsetX,
+ -qt_MultiTexCoord0.t);
+ \endcode
+ Now the top half of our vector contains co-ordianates spinning in the
+ opposite direction. Back in the fragment shader, we just need use these
+ instead for our second texture color, so let's change the \c texture2Color
+ assignment to this, and really fix that boring:
+ \code
+ mediump vec4 texture2Color = texture2D(texture2, texCoord.pq);
+ \endcode
+
+ \section1 Varying values (shader-tutorial-varying.qml)
+
+ The left hand side value is our \c varying attribute \c texCoord.
+ \c varying values are how the vertex shader communicates with the
+ fragment shader, and the declaration has to be identical in both shaders.
+ \c varying values are calculated once for each
+ vertex, but the values are interpolated across the shapes. The
+ shader-tutorial-varying.qml shows this visually using the Pane
+ class and a neat debugging trick - using the texture coordinates as
+ a color. Even with only 4 vertexes the texture coordinates are smeared
+ smoothly across the shape:
+ \table
+ \row
+ \o \code gl_FragColor = vec4(mod(texCoord.x, 1.0),
+ mod(texCoord.y, 1.0), 0.0, 1.0); \endcode
+ \o
+ \o \image tutorials/shader-tutorial-varying.png
+ \endtable
+
+
+ \section1 Vertexes and Matrices (shader-tutorial-2-vertex-shader.qml)
+
+ Let's go back to the vertex shader. As already mentioned, the
+ vertex shader's primary function is to generate the final position of a
+ vertex.
+
+ First, let's look at \c qt_Vertex. This is the value we're getting out
+ of our model, the actual points on our shape. Manipulating this value
+ will lets us change the position of the points somewhat independantly.
+
+ For this tutorial, we'll create a squashing effect that might work for
+ something rising out of water, or something rubbery being squashed down.
+
+ What we need to do is create a floor, where vertexes above the floor
+ retain their position, and vertexes below it are clamped to (nearly) that
+ value. Then we move the model relative to this floor to create a nice
+ effect.
+
+ We need to use some knowledge that we have about the model for this to
+ work - most notably it's height, and it's bottom. A bit of experimenting
+ suggests that 2.0 for height and -1.0 for bottom are close enough.
+
+ We need to introduce a couple more GLSL things here. \c max() is one of
+ the GL SL built in functions, selecting the higher of the two arguments as
+ you might expect.
+
+ The \c foo.xyzw are called \i twiddles, and are
+ convenient and efficient ways to pull out specific elements of vector
+ areguments. You can see in this example, that we use twiddles to get out
+ the x, z, and w values from our original vector and substitute in our own
+ y value. For convenience, there are 3 different sets of twiddles that are
+ all equivalent: foo.xyzw (co-ordinates), foo.rgba (colors), and
+ foo.stpq (texture coordinates). As far as GLSL is concerned, though,
+ they're just vectors, and effectively just commenting your code.
+
+ The \c vec4() function will accept whatever combination of values and
+ twiddles you throw at it, and mold them back into a 4 element vector.
+
+ What this function is doing is moving the model down the screen (which for
+ us, here, is along the y axis in the negative direction).
+ We draw an imaginary line where the bottom of the model used to be, and if
+ the vertex ends up below that line, we move it back to just past the line.
+
+ "Just past" is important. Graphics cards get confused if vertexes are too
+ close together, and the result is ugly. Try taking out the
+ "\c {qt_Vertex.y * 0.01}" if you'd like to see what it looks like.
+
+ \code
+ float newY = max(qt_Vertex.y - squashFactor * modelSize,
+ qt_Vertex.y * 0.01 + modelBottom);
+ \endcode
+
+
+ \code
+ const float modelSize = 2.0;
+ const float modelBottom = -1.0;
+ float newY = max(qt_Vertex.y - squashFactor * modelSize,
+ qt_Vertex.y * 0.01 + modelBottom);
+
+ gl_Position = qt_ModelViewProjectionMatrix *
+ vec4(qt_Vertex.x, newY, qt_Vertex.zw);
+ \endcode
+
+ Hopefully, that makes the function of the \c qt_Vertex attribute clear, so
+ next we'll look at the Model/View/Projection matrices.
+
+ The model matrix is generally used to place an object in a scene. In the
+ simplest case, this might just be "up and to the left a bit", but it's
+ often inherited from a parent. It's very easy mathematically to combine
+ the matrices in such a way that one object is always in the same relative
+ position to another ("The hip bones connected to the thigh bone").
+
+ The view matrix is generally used much like a camera is in a movie, for
+ panning around a whole scene at once. Manipulating the view matrix is also
+ commonly used for effects like mirrors.
+
+ The projection matrix (\c qt_ProjectionMatrix) functions much like a
+ camera does when you take a
+ picture, converting all the 3d points in a scene into the 2d points on the
+ screen.
+
+ We won't be exploring the matrices individually, but let's explore what
+ happens if we use the same effect that we just used on the vertex after
+ the transformation matrices are applied.
+
+ Firstly, we're going to need multiple teapots to see the difference, so
+ let's add those in. We want to move them all together, so we'll wrap
+ them in an Item3D, and apply our animations to that item instead of
+ the teapots directly.
+ \code
+
+ Item3D {
+ z: -8.0
+ transform: [
+ Rotation3D {
+ NumberAnimation on angle {
+ running: true; loops: Animation.Infinite
+ from: 0; to: 360; duration: 5000
+ }
+ axis: Qt.vector3d(0, 0, 1.0)
+ }
+ ]
+
+ TutorialTeapot {id: teapot1; effect: program; y:2.0; x:0.0}
+ TutorialTeapot {id: teapot2; effect: program; y:-1.0; x:-1.732}
+ TutorialTeapot {id: teapot3; effect: program; y:-1.0; x:1.732}
+ }
+ \endcode
+
+ In order to show the difference, what we want to do now is the same sort
+ of effect as the previous example, only applied to the positions after
+ the matrices have been applied, so our new vertex shader looks like this:
+ \code
+ attribute highp vec4 qt_Vertex;
+ uniform mediump mat4 qt_ModelViewProjectionMatrix;
+
+ attribute mediump vec4 qt_MultiTexCoord0;
+ varying mediump vec4 texCoord;
+
+ void main(void)
+ {
+ const float modelBottom = -4.0;
+
+ vec4 workingPosition = qt_ModelViewProjectionMatrix * qt_Vertex;
+ float newY = max(workingPosition.y,
+ workingPosition.y * 0.15 + modelBottom);
+ workingPosition.y = newY;
+ gl_Position = workingPosition;
+
+ texCoord = -qt_MultiTexCoord0;
+ }
+ \endcode
+
+ There's nothing new here, we're just tweaking a few numbers for the new
+ effect and manipulating the vertexes after the matrices have been applied.
+ The result is an imaginary line across the whole scene, and when any part
+ of any teapot dips below that line we deform it as though it's being
+ squished or refracted.
+
+ The obvious difference is that when you're manipulating \c qt_Vertex,
+ the inputs, outputs, and changes are relative to the model. After the
+ matrices are applied,
+
+ We'll leave adding a pretty watery surface as an exercise for the reader.
+
+
+
+ \section1 Lighting
+
+ Finally, we'll add lighting. We've left lighting till last because it
+ requires a lot of additional variables, and it is not within the scope of
+ this tutorial to explore them all individually. There are many better
+ resources readily available, and the techniques already covered can be
+ used to explore each element.
+
+
+ For further reading, the full specification for the OpenGL Shader Language
+ is available from the Khronos website at http://www.khronos.org/opengl/
+
+ \l{qt3d-examples.html}{Return to the main Tutorials page}.
+*/
diff --git a/doc/src/tutorials/simpleobject.qdoc b/doc/src/tutorials/simpleobject.qdoc
new file mode 100644
index 000000000..07f14c788
--- /dev/null
+++ b/doc/src/tutorials/simpleobject.qdoc
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtQuick3D documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Free Documentation License
+** 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.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \title Applying transformations and materials to objects
+ \example tutorials/cube4
+
+ In this tutorial we will apply transformations and materials to a
+ simple cube object to demonstrate how to modify the QGLPainter
+ state to achieve different effects. We start by declaring a
+ view class to show our cube on the screen:
+
+ \snippet tutorials/cube1/cubeview.h 1
+
+ QGLView provides most of the logic for initializing the view,
+ setting the camera position, and handling navigation via
+ keyboard and mouse events. In the constructor we use
+ QGLBuilder to create the geometry for the cube object that
+ we will be using in later steps:
+
+ \snippet tutorials/cube1/cubeview.cpp 1
+
+ Then it is a simple matter to draw the object in our \c{paintGL()}
+ method:
+
+ \snippet tutorials/cube1/cubeview.cpp 2
+
+ If we run the program now, we get the following output, which isn't
+ very cube-like:
+
+ \image tutorials/cube1-screenshot.png
+
+ The problem is that we are looking at the cube straight onto its
+ front face. So the rest of the cube is hidden from our view and
+ it looks like a square. Let's modify the modelview transformation
+ matrix a little bit to apply a 45 degree rotation around the
+ axis (1, 1, 1):
+
+ \snippet tutorials/cube2/cubeview.cpp 2
+
+ Now the results are a little better:
+
+ \image tutorials/cube2-screenshot.png
+
+ The cube is still a little odd-looking however. This is because
+ up until now we have been using the default flat color effect
+ in QGLPainter that colors the faces with a uniform color
+ (white in this case). So let's change to a lit material effect
+ with a nice green color:
+
+ \snippet tutorials/cube3/cubeview.cpp 2
+
+ That's much better; now it looks like a cube:
+
+ \image tutorials/cube3-screenshot.png
+
+ To complete this tutorial, let's make the cube a little more
+ interesting by adding a texture to the side:
+
+ \snippet tutorials/cube4/cubeview.h 1
+ \dots
+ \snippet tutorials/cube4/cubeview.h 2
+ \snippet tutorials/cube4/cubeview.cpp 1
+ \dots
+ \snippet tutorials/cube4/cubeview.cpp 2
+ \snippet tutorials/cube4/cubeview.cpp 3
+
+ \image tutorials/cube4-screenshot.png
+
+ \section2 Cube in QML/3D
+
+ It is quite simple to achieve the same effect in QML:
+
+ \snippet tutorials/cube4/cube.qml 1
+
+ \l{qt3d-examples.html}{Return to the main Tutorials page}.
+*/