aboutsummaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
authoraavit <qt_aavit@ovi.com>2012-09-07 13:29:53 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-27 12:08:39 +0200
commit4fc4e7ed89c3085ae98c57dd80e6cd8cc61f6ee2 (patch)
tree0426f330789a67db260e5995172f0ba7ec9e8c59 /tests/manual
parenta49154a75005403185e3813d441fb3e1931af2a2 (diff)
Added lancelot-based scenegraph rendering regression test
Change-Id: I6718d00ba96dc9c96dac82de4ded9228f6bfb990 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/scenegraph_lancelot/data/Ignore8
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/SimpleBorderImage.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/SimpleNoBorder.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/borderimage.qml182
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/borderimage_no_border.qml191
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/borderimage_smoothed.qml175
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_horizontal.qml76
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_vertical.qml76
-rw-r--r--tests/manual/scenegraph_lancelot/data/borderimages/borderimage_unsmoothed.qml178
-rw-r--r--tests/manual/scenegraph_lancelot/data/gradients/gradients.qml219
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/fill_mode.qml165
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/images_1.qml124
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/images_2.qml124
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/jpeg_full.qml12
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/jpeg_scaled.qml38
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_1.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_2.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_3.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_4.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_5.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_6.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_7.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_8.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_9.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/linear_smooth_1_0.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/overlap.qml58
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/tiling.qml102
-rw-r--r--tests/manual/scenegraph_lancelot/data/images/transform.qml36
-rw-r--r--tests/manual/scenegraph_lancelot/data/opacity/opacity.qml191
-rw-r--r--tests/manual/scenegraph_lancelot/data/rectangles/rectangles.qml490
-rw-r--r--tests/manual/scenegraph_lancelot/data/rectangles/rectangles_smoothed.qml586
-rw-r--r--tests/manual/scenegraph_lancelot/data/rectangles/rectangles_unsmoothed.qml586
-rw-r--r--tests/manual/scenegraph_lancelot/data/rectangles/test-rectangles.qml81
-rw-r--r--tests/manual/scenegraph_lancelot/data/rotation/rotation.qml172
-rw-r--r--tests/manual/scenegraph_lancelot/data/rotation/rotation_2.qml69
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml35
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml104
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml103
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/attributes.qml65
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml60
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml60
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml60
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml60
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml60
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml64
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml65
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml64
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml66
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/image/async.qml28
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/image/face-smile.pngbin0 -> 15408 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/image/source.qml26
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml44
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml44
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml68
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml68
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml53
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_1.qml31
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_2.qml31
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_3.qml30
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_4.qml30
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/nesting/nesting.qml28
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_1.qml28
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_2.qml28
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml35
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml54
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml61
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml61
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/switch_3.qml61
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml57
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml40
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml40
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml46
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_1.qml32
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_2.qml32
-rw-r--r--tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml68
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/blue_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/bw_1535x2244.jpgbin0 -> 378635 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/col320x480.jpgbin0 -> 33957 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/cyan_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/green_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/orange_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/red_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/sample_1.pngbin0 -> 28405 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/tile.pngbin0 -> 189 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/violet_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/winter.pngbin0 -> 399996 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/world.pngbin0 -> 14818 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/shared/yellow_72x96.pngbin0 -> 20990 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/data/logo.pngbin0 -> 1478 bytes
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/element_sizes.qml31
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/scale_smoothed.qml79
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_1000_chinese_characters.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_2500_chinese_characters.qml35
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_arabic.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_background_color.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_background_color_styledtext.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bengali.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bidi.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_left_elide.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_right_elide.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bidi_left_elide.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bidi_right_elide.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_bidi_underline.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_capitalization.qml47
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_chinese.qml13
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_colored_text.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_cyrillic.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_devanagari.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_floating_image_left.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_floating_image_right.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_fonts.qml104
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_georgian.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_hebrew.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_inline_image.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_italic_bold.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_italic_bold_chinese.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_khmer.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_circle.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_inline_image.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_ordered.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_alpha.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_roman.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_alpha.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_roman.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_list_square.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_multiline.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_multiline_overline.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_multiline_partial_underline.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_multiline_strikeout.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_multiline_underline.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_multiparagraph.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_overline_multisize.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_partially_colored_ligature.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_resize_glyph_cache.qml13
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_rotation_smoothed.qml144
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_rotation_unsmoothed.qml144
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_scale_unsmoothed.qml79
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_strikeout_multisize.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_style.qml56
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_style_color.qml60
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_table.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_table_inline_image.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_table_selected.qml25
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_tamil.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_thai.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_underline_merged.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_underline_merged_colored.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_underline_multisize.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_weight.qml104
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_wrap_elide.qml104
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_arabic.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_background_color.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_bidi.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_bidi_selected.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_capitalization.qml47
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_chinese.qml13
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_cyrillic.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_devanagari.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_left.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_right.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_hebrew.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_list_circle.qml14
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_list_selected.qml19
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected_eol.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline.qml19
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline_selected.qml23
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_hebrew_selected.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_partial_underline.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned_selected.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_eol.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_long.qml21
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_overline.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_partial_underline.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_selected.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_strikeout.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_underline.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_overline_multisize.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_resize_glyph_cache.qml13
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_selected_inline_image.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_selected_ligature.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_selected_space.qml19
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_selected_space_at_eol.qml20
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_selection_color.qml22
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_strikeout_multisize.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_underline_multisize.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textedit_weight.qml104
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_arabic.qml13
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_bidi_selected.qml17
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_capitalization.qml47
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_chinese.qml15
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_cyrillic.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_devanagari.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_echomodes.qml42
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_hebrew.qml16
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_resize_glyph_cache.qml13
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_selected_ligature.qml18
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_selected_space.qml19
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/textinput_weight.qml104
-rw-r--r--tests/manual/scenegraph_lancelot/hostinfo.sh90
-rw-r--r--tests/manual/scenegraph_lancelot/scenegrabber/main.cpp203
-rw-r--r--tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro8
-rw-r--r--tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro11
-rw-r--r--tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp271
-rw-r--r--tests/manual/scenegraph_lancelot/scenegraph_lancelot.pro3
208 files changed, 9671 insertions, 0 deletions
diff --git a/tests/manual/scenegraph_lancelot/data/Ignore b/tests/manual/scenegraph_lancelot/data/Ignore
new file mode 100644
index 0000000000..3b28750552
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/Ignore
@@ -0,0 +1,8 @@
+# List of .qml files that should NOT be rendered
+
+# These are items to be used in other scenes; lack size
+borderimages/SimpleBorderImage.qml
+borderimages/SimpleNoBorder.qml
+
+# This will not stabilize before the timeout
+text/text_2500_chinese_characters.qml
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/SimpleBorderImage.qml b/tests/manual/scenegraph_lancelot/data/borderimages/SimpleBorderImage.qml
new file mode 100644
index 0000000000..9a1822515a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/SimpleBorderImage.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+
+Rectangle{
+ id: tr
+ property alias lbl: txt.text
+ property alias hTileMode: img.horizontalTileMode
+ property alias vTileMode: img.verticalTileMode
+ property alias xPos: tr.x
+ property int yPos: tr.y
+ property alias smoothing: img.smooth
+
+ BorderImage{ id: img; source: "../shared/world.png"; width: 70; height: 70; border { top: 6; bottom: 6; left: 6; right: 6} }
+ Text{
+ id: txt
+ text: "default"
+ anchors.top: img.bottom
+ anchors.horizontalCenter: img.horizontalCenter
+ font.family: "Arial"
+ font.pointSize: 8
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/SimpleNoBorder.qml b/tests/manual/scenegraph_lancelot/data/borderimages/SimpleNoBorder.qml
new file mode 100644
index 0000000000..12d54c7cfd
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/SimpleNoBorder.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+
+Rectangle{
+ id: tr
+ property alias lbl: txt.text
+ property alias hTileMode: img.horizontalTileMode
+ property alias vTileMode: img.verticalTileMode
+ property alias xPos: tr.x
+ property int yPos: tr.y
+ property alias smoothing: img.smooth
+
+ BorderImage{ id: img; source: "../shared/world.png"; width: 70; height: 70; }
+ Text{
+ id: txt
+ text: "default"
+ anchors.top: img.bottom
+ anchors.horizontalCenter: img.horizontalCenter
+ font.family: "Arial"
+ font.pointSize: 8
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/borderimage.qml b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage.qml
new file mode 100644
index 0000000000..ed91c9f9e4
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage.qml
@@ -0,0 +1,182 @@
+import QtQuick 2.0
+
+
+Flickable {
+
+ id: f1
+ width: 320
+ height: 480
+
+ contentWidth: 360
+ contentHeight: 1000
+
+ property int cumulativeX;
+ property int cumulativeY;
+
+ function changeLabel(obj,txt){
+ obj.item.lbl = txt
+ }
+ function changeTileMode(obj,val,mode){
+ if (mode == "h")
+ obj.item.hTileMode = val;
+ else
+ obj.item.vTileMode = val;
+ }
+
+ Component{
+ id: borderImageComponent
+ SimpleBorderImage{
+ }
+ }
+ Column {
+ x: 20
+ y: 20
+ spacing: 30
+ Row {
+ spacing: 20
+ Item{
+ id: image_0001
+ width: 70
+ height: 70
+ Loader{ id: ldr1; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr1,"H: Stretch")
+ changeTileMode(ldr1,BorderImage.Stretch,"h")
+ ldr1.item.hTileMode = BorderImage.Stretch
+ }
+ }
+ Item{
+ id: image_0002
+ width: 70
+ height: 70
+ Loader{ id: ldr2; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr2,"H: Repeat")
+ changeTileMode(ldr2,BorderImage.Repeat,"h")
+ }
+ }
+ Item{
+
+ id: image_0003
+ width: 70
+ height: 70
+ Loader{ id: ldr3; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr3,"H: Round")
+ changeTileMode(ldr1,BorderImage.Round,"h")
+ }
+ }
+ }
+ Row {
+ spacing: 20
+ Item{
+
+ id: image_0004
+ width: 70
+ height: 70
+ Loader{ id: ldr4; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr4,"V: Stretch")
+ changeTileMode(ldr4,BorderImage.Stretch,"v")
+ }
+ }
+ Item{
+ id: image_0005
+ width: 70
+ height: 70
+ Loader{ id: ldr5; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr5,"V: Repeat")
+ changeTileMode(ldr5,BorderImage.Repeat,"v")
+ }
+ }
+ Item{
+ id: image_0006
+ width: 70
+ height: 70
+ Loader{ id: ldr6; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr6,"H: Round")
+ changeTileMode(ldr6,BorderImage.Round,"v")
+ }
+ }
+ }
+ Row {
+ spacing: 20
+
+ Item{
+ id: image_0007
+ width: 70
+ height: 70
+ Loader{ id: ldr7; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr7,"H/V: Stretch")
+ changeTileMode(ldr7,BorderImage.Stretch,"v")
+ changeTileMode(ldr7,BorderImage.Stretch,"h")
+ }
+ }
+ Item{
+ id: image_0008
+ width: 70
+ height: 70
+ Loader{ id: ldr8; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr8,"H/V: Repeat")
+ changeTileMode(ldr8,BorderImage.Repeat,"v")
+ changeTileMode(ldr8,BorderImage.Repeat,"h")
+ }
+ }
+ Item{
+ id: image_0009
+ width: 70
+ height: 70
+ Loader{ id: ldr9; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr9,"H/V: Round")
+ changeTileMode(ldr9,BorderImage.Round,"v")
+ changeTileMode(ldr9,BorderImage.Round,"h")
+ }
+ }
+ }
+ Row {
+ spacing: 20
+
+ Item{
+ id: image_0010
+ width: 70
+ height: 70
+ Loader{ id: ldr10; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr10,"H/V: Stretch\nsmooth")
+ changeTileMode(ldr10,BorderImage.Stretch,"v")
+ changeTileMode(ldr10,BorderImage.Stretch,"h")
+ ldr10.item.smoothing = true
+ }
+ }
+ Item{
+ id: image_0011
+ width: 70
+ height: 70
+ Loader{ id: ldr11; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr11,"H/V: Repeat\nsmooth")
+ changeTileMode(ldr11,BorderImage.Repeat,"v")
+ changeTileMode(ldr11,BorderImage.Repeat,"h")
+ ldr11.item.smoothing = true
+ }
+ }
+ Item{
+ id: image_0012
+ width: 70
+ height: 70
+ Loader{ id: ldr12; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr12,"H/V: Round\nsmooth")
+ changeTileMode(ldr12,BorderImage.Round,"v")
+ changeTileMode(ldr12,BorderImage.Round,"h")
+ ldr10.item.smoothing = true
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_no_border.qml b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_no_border.qml
new file mode 100644
index 0000000000..5856870dfa
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_no_border.qml
@@ -0,0 +1,191 @@
+import QtQuick 2.0
+
+
+Flickable {
+
+ id: f1
+ width: 320
+ height: 480
+
+ contentWidth: 360
+ contentHeight: 1000
+
+ property int cumulativeX;
+ property int cumulativeY;
+
+ function changeLabel(obj,txt){
+ obj.item.lbl = txt
+ }
+ function changeTileMode(obj,val,mode){
+ if (mode == "h")
+ obj.item.hTileMode = val;
+ else
+ obj.item.vTileMode = val;
+ }
+
+ Component{
+ id: borderImageComponent
+ SimpleNoBorder{
+ }
+ }
+ Column {
+ x: 20
+ y: 20
+ spacing: 30
+ Row {
+ Text{
+ id: topLabel
+ text: "Border Images with no borders set"
+ font.family: "Arial"
+ font.pointSize: 12
+ }
+ }
+
+ Row {
+ spacing: 20
+ Item{
+ id: image_0001
+ width: 70
+ height: 70
+ Loader{ id: ldr1; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr1,"H: Stretch")
+ changeTileMode(ldr1,BorderImage.Stretch,"h")
+ ldr1.item.hTileMode = BorderImage.Stretch
+ }
+ }
+ Item{
+ id: image_0002
+ width: 70
+ height: 70
+ Loader{ id: ldr2; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr2,"H: Repeat")
+ changeTileMode(ldr2,BorderImage.Repeat,"h")
+ }
+ }
+ Item{
+
+ id: image_0003
+ width: 70
+ height: 70
+ Loader{ id: ldr3; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr3,"H: Round")
+ changeTileMode(ldr1,BorderImage.Round,"h")
+ }
+ }
+ }
+ Row {
+ spacing: 20
+ Item{
+
+ id: image_0004
+ width: 70
+ height: 70
+ Loader{ id: ldr4; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr4,"V: Stretch")
+ changeTileMode(ldr4,BorderImage.Stretch,"v")
+ }
+ }
+ Item{
+ id: image_0005
+ width: 70
+ height: 70
+ Loader{ id: ldr5; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr5,"V: Repeat")
+ changeTileMode(ldr5,BorderImage.Repeat,"v")
+ }
+ }
+ Item{
+ id: image_0006
+ width: 70
+ height: 70
+ Loader{ id: ldr6; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr6,"H: Round")
+ changeTileMode(ldr6,BorderImage.Round,"v")
+ }
+ }
+ }
+ Row {
+ spacing: 20
+
+ Item{
+ id: image_0007
+ width: 70
+ height: 70
+ Loader{ id: ldr7; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr7,"H/V: Stretch")
+ changeTileMode(ldr7,BorderImage.Stretch,"v")
+ changeTileMode(ldr7,BorderImage.Stretch,"h")
+ }
+ }
+ Item{
+ id: image_0008
+ width: 70
+ height: 70
+ Loader{ id: ldr8; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr8,"H/V: Repeat")
+ changeTileMode(ldr8,BorderImage.Repeat,"v")
+ changeTileMode(ldr8,BorderImage.Repeat,"h")
+ }
+ }
+ Item{
+ id: image_0009
+ width: 70
+ height: 70
+ Loader{ id: ldr9; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr9,"H/V: Round")
+ changeTileMode(ldr9,BorderImage.Round,"v")
+ changeTileMode(ldr9,BorderImage.Round,"h")
+ }
+ }
+ }
+ Row {
+ spacing: 20
+
+ Item{
+ id: image_0010
+ width: 70
+ height: 70
+ Loader{ id: ldr10; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr10,"H/V: Stretch\nsmooth")
+ changeTileMode(ldr10,BorderImage.Stretch,"v")
+ changeTileMode(ldr10,BorderImage.Stretch,"h")
+ ldr10.item.smoothing = true
+ }
+ }
+ Item{
+ id: image_0011
+ width: 70
+ height: 70
+ Loader{ id: ldr11; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr11,"H/V: Repeat\nsmooth")
+ changeTileMode(ldr11,BorderImage.Repeat,"v")
+ changeTileMode(ldr11,BorderImage.Repeat,"h")
+ ldr11.item.smoothing = true
+ }
+ }
+ Item{
+ id: image_0012
+ width: 70
+ height: 70
+ Loader{ id: ldr12; sourceComponent: borderImageComponent }
+ Component.onCompleted: {
+ changeLabel(ldr12,"H/V: Round\nsmooth")
+ changeTileMode(ldr12,BorderImage.Round,"v")
+ changeTileMode(ldr12,BorderImage.Round,"h")
+ ldr10.item.smoothing = true
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_smoothed.qml b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_smoothed.qml
new file mode 100644
index 0000000000..9906586fc9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_smoothed.qml
@@ -0,0 +1,175 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ property bool smoothing: true
+ Rectangle{
+ id: rect_0_0
+ width: 160
+ height: 160
+ x: 0
+ y: 0
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 1"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_1
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 1; border.top: 1
+ border.right: 1; border.bottom: 1
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_0_1
+ width: 160
+ height: 160
+ x: 160
+ y: 0
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 2"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_2
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 2; border.top: 2
+ border.right: 2; border.bottom: 2
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_1_0
+ width: 160
+ height: 160
+ x: 0
+ y: 160
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 3"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_3
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 3; border.top: 3
+ border.right: 3; border.bottom: 3
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_1_1
+ width: 160
+ height: 160
+ x: 160
+ y: 160
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 4"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_4
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 4; border.top: 4
+ border.right: 4; border.bottom: 4
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_2_0
+ width: 160
+ height: 160
+ x: 0
+ y: 320
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 5"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_5
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 5; border.top: 5
+ border.right: 5; border.bottom: 5
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_2_1
+ width: 160
+ height: 160
+ x: 160
+ y: 320
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 6"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_6
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 6; border.top: 6
+ border.right: 6; border.bottom: 6
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_3_0
+ width: 160
+ height: 160
+ x: 0
+ y: 480
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 7"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_7
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 7; border.top: 7
+ border.right: 7; border.bottom: 7
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_3_1
+ width: 160
+ height: 160
+ x: 160
+ y: 480
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 8"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_8
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 8; border.top: 8
+ border.right: 8; border.bottom: 8
+ anchors.centerIn: parent
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_horizontal.qml b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_horizontal.qml
new file mode 100644
index 0000000000..7151f3a958
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_horizontal.qml
@@ -0,0 +1,76 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ property bool smoothing: true
+ Rectangle{
+ id: rect_0_0
+ width: 160
+ height: 160
+ x: 0
+ y: 0
+
+ BorderImage {
+ id: borderImage_0
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 10; border.top: 10
+ border.right: 10; border.bottom: 10
+ horizontalTileMode: BorderImage.Stretch
+ anchors.centerIn: parent
+ }
+ Text {
+ anchors.top: borderImage_0.bottom
+ text: "mode: stretch"
+ z: 1
+ }
+ }
+ Rectangle{
+ id: rect_0_1
+ width: 160
+ height: 160
+ x: 160
+ y: 0
+
+ BorderImage {
+ id: borderImage_1
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 10; border.top: 10
+ border.right: 10; border.bottom: 10
+ horizontalTileMode: BorderImage.Repeat
+ anchors.centerIn: parent
+ }
+ Text {
+ anchors.top: borderImage_1.bottom
+ text: "mode: repeat"
+ z: 1
+ }
+ }
+ Rectangle{
+ id: rect_1_0
+ width: 160
+ height: 160
+ x: 0
+ y: 160
+
+ BorderImage {
+ id: borderImage_2
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 10; border.top: 10
+ border.right: 10; border.bottom: 10
+ horizontalTileMode: BorderImage.Round
+ anchors.centerIn: parent
+ }
+ Text {
+ anchors.top: borderImage_2.bottom
+ text: "mode: round"
+ z: 1
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_vertical.qml b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_vertical.qml
new file mode 100644
index 0000000000..02ec66cdf7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_tiling_vertical.qml
@@ -0,0 +1,76 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ property bool smoothing: true
+ Rectangle{
+ id: rect_0_0
+ width: 160
+ height: 160
+ x: 0
+ y: 0
+
+ BorderImage {
+ id: borderImage_0
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 10; border.top: 10
+ border.right: 10; border.bottom: 10
+ verticalTileMode: BorderImage.Stretch
+ anchors.centerIn: parent
+ }
+ Text {
+ anchors.top: borderImage_0.bottom
+ text: "mode: stretch"
+ z: 1
+ }
+ }
+ Rectangle{
+ id: rect_0_1
+ width: 160
+ height: 160
+ x: 160
+ y: 0
+
+ BorderImage {
+ id: borderImage_1
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 10; border.top: 10
+ border.right: 10; border.bottom: 10
+ verticalTileMode: BorderImage.Repeat
+ anchors.centerIn: parent
+ }
+ Text {
+ anchors.top: borderImage_1.bottom
+ text: "mode: repeat"
+ z: 1
+ }
+ }
+ Rectangle{
+ id: rect_1_0
+ width: 160
+ height: 160
+ x: 0
+ y: 160
+
+ BorderImage {
+ id: borderImage_2
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 10; border.top: 10
+ border.right: 10; border.bottom: 10
+ verticalTileMode: BorderImage.Round
+ anchors.centerIn: parent
+ }
+ Text {
+ anchors.top: borderImage_2.bottom
+ text: "mode: round"
+ z: 1
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_unsmoothed.qml b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_unsmoothed.qml
new file mode 100644
index 0000000000..a19c203278
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/borderimages/borderimage_unsmoothed.qml
@@ -0,0 +1,178 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ property bool smoothing: false
+
+ Rectangle{
+ id: rect_0_0
+ width: 160
+ height: 160
+ x: 0
+ y: 0
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 1"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_1
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 1; border.top: 1
+ border.right: 1; border.bottom: 1
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_0_1
+ width: 160
+ height: 160
+ x: 160
+ y: 0
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 2"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_2
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 2; border.top: 2
+ border.right: 2; border.bottom: 2
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_1_0
+ width: 160
+ height: 160
+ x: 0
+ y: 160
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 3"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_3
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 3; border.top: 3
+ border.right: 3; border.bottom: 3
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_1_1
+ width: 160
+ height: 160
+ x: 160
+ y: 160
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 4"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_4
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 4; border.top: 4
+ border.right: 4; border.bottom: 4
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_2_0
+ width: 160
+ height: 160
+ x: 0
+ y: 320
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 5"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_5
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 5; border.top: 5
+ border.right: 5; border.bottom: 5
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_2_1
+ width: 160
+ height: 160
+ x: 160
+ y: 320
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 6"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_6
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 6; border.top: 6
+ border.right: 6; border.bottom: 6
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_3_0
+ width: 160
+ height: 160
+ x: 0
+ y: 480
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 7"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_7
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 7; border.top: 7
+ border.right: 7; border.bottom: 7
+ anchors.centerIn: parent
+ }
+ }
+ Rectangle{
+ id: rect_3_1
+ width: 160
+ height: 160
+ x: 160
+ y: 480
+ Text {
+ anchors.verticalCenter: parent.TopLeft
+ text: "border size 8"
+ z: 1
+ }
+ BorderImage {
+ id: borderImage_8
+ smooth: smoothing
+ source: "../shared/sample_1.png"
+ width: 120; height: 120
+ border.left: 8; border.top: 8
+ border.right: 8; border.bottom: 8
+ anchors.centerIn: parent
+ }
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/gradients/gradients.qml b/tests/manual/scenegraph_lancelot/data/gradients/gradients.qml
new file mode 100644
index 0000000000..0b459423f1
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/gradients/gradients.qml
@@ -0,0 +1,219 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: r_0000
+ width: 320
+ height: 480
+ color: "white"
+
+ property int standardRectWidth: 48
+ property int standardRectHeight: 48
+
+ Text{
+ z: 1
+ text: "simple gradients"
+ font.family: "Arial"
+ font.pointSize: 20
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter: parent.Center
+ anchors.horizontalCenter : parent.horizontalCenter
+ }
+
+ Rectangle{
+ id: r_0001
+ x: 0
+ y: 0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0001.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0002
+ x: r_0001.x + standardRectWidth
+ y: 0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0002.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0003
+ x: r_0002.x + standardRectWidth
+ y: 0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0003.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0004
+ x: r_0003.x + standardRectWidth
+ y: 0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0004.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0005
+ x: r_0004.x + standardRectWidth
+ y: 0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0005.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0006
+ x: r_0005.x + standardRectWidth
+ y: 0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0006.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0007
+ x: r_0001.x
+ y: standardRectHeight
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0007.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0008
+ x: r_0002.x
+ y: standardRectHeight
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0008.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0009
+ x: r_0003.x
+ y: standardRectHeight
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0009.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0010
+ x: r_0004.x
+ y: standardRectHeight
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0010.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0011
+ x: r_0005.x
+ y: standardRectHeight
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "pink"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0011.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+ Rectangle{
+ id: r_0012
+ x: r_0006.x
+ y: standardRectHeight
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "gold"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0012.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ }
+
+ Rectangle{
+ id: r_0013
+ x: 0
+ y: (standardRectHeight * 2)
+ color: "green"
+ width: 3 * standardRectWidth
+ height: 3 * standardRectHeight
+ gradient: Gradient{
+ GradientStop{ position: 0.0; color: "yellow"}
+ GradientStop{ position: 0.25; color: "orange"}
+ GradientStop{ position: 0.75; color: "purple"}
+ GradientStop{ position: 1.0; color: "blue"}
+ }
+ }
+ Rectangle{
+ id: r_0014
+ x: 3 * standardRectWidth
+ y: (standardRectHeight * 2)
+ color: "red"
+ width: 3 * standardRectWidth
+ height: 3 * standardRectHeight
+ gradient: Gradient{
+ GradientStop{ position: 0.0; color: "blue"}
+ GradientStop{ position: 0.25; color: "purple"}
+ GradientStop{ position: 0.75; color: "red"}
+ GradientStop{ position: 1.0; color: "violet"}
+ }
+ }
+ Rectangle{
+ id: r_00015
+ x: 0
+ y: 5 * standardRectHeight
+ width: 6 * standardRectWidth
+ height: 6 * standardRectHeight
+ color: "black"
+ gradient: Gradient{
+ GradientStop{ position: 0.0; color: "cyan"}
+ GradientStop{ position: 0.1; color: "purple"}
+ GradientStop{ position: 0.2; color: "red"}
+ GradientStop{ position: 0.3; color: "yellow"}
+ GradientStop{ position: 0.4; color: "blue"}
+ GradientStop{ position: 0.5; color: "white"}
+ GradientStop{ position: 0.55; color: "red"}
+ GradientStop{ position: 0.6; color: "violet"}
+ GradientStop{ position: 0.7; color: "blue"}
+ GradientStop{ position: 0.8; color: "green"}
+ GradientStop{ position: 0.9; color: "red"}
+ GradientStop{ position: 1.0; color: "violet"}
+ }
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/images/fill_mode.qml b/tests/manual/scenegraph_lancelot/data/images/fill_mode.qml
new file mode 100644
index 0000000000..d391cd73f9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/fill_mode.qml
@@ -0,0 +1,165 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Rectangle{
+ id: rect0_0
+ width: 160
+ height: 160
+ x: 0
+ y: 0
+ Text{
+ text: "Stretch"
+ x: 20
+ y: 20
+ color: "red"
+ font.family: "Helvetica"
+ font.pointSize: 24
+ z: 1
+ }
+ Image{
+ id: bwLinear1
+ width: 160
+ height: 160
+ source: "../shared/bw_1535x2244.jpg"
+ sourceSize.width: 1535
+ sourceSize.height: 2244
+ }
+ }
+ Rectangle{
+ id: rect0_1
+ width: 160
+ height: 160
+ x: 180
+ y: 0
+ Text{
+ text: "Preserve\naspect\nfit"
+ x: 20
+ y: 20
+ color: "red"
+ font.family: "Helvetica"
+ font.pointSize: 24
+ z: 1
+ }
+ Image{
+ id: bwLinear2
+ width: 160
+ height: 160
+ source: "../shared/bw_1535x2244.jpg"
+ fillMode: Image.PreserveAspectFit
+ sourceSize.width: 1535
+ sourceSize.height: 2244
+ }
+ }
+ Rectangle{
+ id: rect1_0
+ width: 160
+ height: 160
+ x: 0
+ y: 160
+ Text{
+ text: "Preserve\naspect\ncrop"
+ x: 20
+ y: 20
+ color: "red"
+ font.family: "Helvetica"
+ font.pointSize: 24
+ z: 1
+ }
+ Image{
+ id: bwLinear3
+ width: 160
+ height: 160
+ source: "../shared/bw_1535x2244.jpg"
+ fillMode: Image.PreserveAspectCrop
+ sourceSize.width: 1535
+ sourceSize.height: 2244
+ }
+
+ }
+ Rectangle{
+ id: rect1_1
+ width: 160
+ height: 160
+ x: 180
+ y: 160
+ Text{
+ text: "Tile"
+ x: 20
+ y: 20
+ color: "red"
+ font.family: "Helvetica"
+ font.pointSize: 24
+ z: 1
+ }
+ Image{
+ id: bwLinear4
+ width: 160
+ height: 160
+ source: "../shared/bw_1535x2244.jpg"
+ fillMode: Image.Tile
+ sourceSize.width: 1535
+ sourceSize.height: 2244
+ }
+ }
+
+ Rectangle{
+ id: rect2_0
+ width: 160
+ height: 160
+ x: 0
+ y: 320
+ Text{
+ text: "Tile\nvertically"
+ x: 20
+ y: 20
+ color: "red"
+ font.family: "Helvetica"
+ font.pointSize: 24
+ z: 1
+ }
+ Image{
+ id: bwLinear5
+ width: 160
+ height: 160
+ source: "../shared/bw_1535x2244.jpg"
+ fillMode: Image.TileVertically
+ sourceSize.width: 1535
+ sourceSize.height: 2244
+ }
+ }
+ Rectangle{
+ id: rect2_1
+ width: 160
+ height: 160
+ x: 180
+ y: 320
+ Text{
+ text: "Tile horizontally"
+ x: 20
+ y: 20
+ color: "red"
+ font.family: "Helvetica"
+ font.pointSize: 24
+ z: 1
+ }
+ Image{
+ id: bwLinear6
+ width: 160
+ height: 160
+ source: "../shared/bw_1535x2244.jpg"
+ fillMode: Image.TileHorizontally
+ sourceSize.width: 1535
+ sourceSize.height: 2244
+ }
+ }
+
+
+
+
+
+
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/images/images_1.qml b/tests/manual/scenegraph_lancelot/data/images/images_1.qml
new file mode 100644
index 0000000000..80a416f08d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/images_1.qml
@@ -0,0 +1,124 @@
+import QtQuick 2.0
+
+Rectangle{
+ id: topLevelItem
+ height: 480
+ width: 320
+
+ property string imageSize: "72x96"
+
+ ListModel{
+ id: imageModel1
+ ListElement{
+ name: "red"
+ size: "72x96"
+ hex: "ff0000"
+ }
+ ListElement{
+ name: "green"
+ size: "72x96"
+ hex: "00ff00"
+ }
+ ListElement{
+ name: "blue"
+ size: "72x96"
+ hex: "0000ff"
+ }
+ ListElement{
+ name: "cyan"
+ size: "72x96"
+ hex: "00ffff"
+ }
+ ListElement{
+ name: "orange"
+ size: "72x96"
+ hex: "ffa500"
+ }
+ ListElement{
+ name: "violet"
+ size: "72x96"
+ hex: "ee82ee"
+ }
+ ListElement{
+ name: "yellow"
+ size: "72x96"
+ hex: "ffff00"
+ }
+ }
+ ListModel{
+ id: imageModel2
+ ListElement{
+ name: "blue"
+ size: "72x96"
+ hex: "0000ff"
+ }
+ ListElement{
+ name: "cyan"
+ size: "72x96"
+ hex: "00ffff"
+ }
+ ListElement{
+ name: "violet"
+ size: "72x96"
+ hex: "ee82ee"
+ }
+ ListElement{
+ name: "orange"
+ size: "72x96"
+ hex: "ffa500"
+ }
+ ListElement{
+ name: "yellow"
+ size: "72x96"
+ hex: "ffff00"
+ }ListElement{
+ name: "green"
+ size: "72x96"
+ hex: "00ff00"
+ }
+ ListElement{
+ name: "red"
+ size: "72x96"
+ hex: "ff0000"
+ }
+ }
+ Component{
+ id: colorImageDelegate
+ Column{
+ Text{ font.family: "Arial"; font.pointSize: 8; text: name +" "+size+" Hex: "+hex }
+ Image{
+ source: "../shared/"+name+"_"+imageSize+".png"
+ }
+ }
+ }
+ Rectangle{
+ id: rect1
+ x: 0
+ y: 0
+ width: 180
+ height: 800
+ }
+ Rectangle{
+ id: rect2
+ x: 181
+ y: 0
+ width: 180
+ height: 800
+ }
+ ListView{
+ id: lv1
+ x: 0
+ y: 0
+ property string image_size: imageSize
+ model: imageModel1
+ delegate: colorImageDelegate
+ anchors.fill: rect1
+ }
+ ListView{
+ id: lv2
+ property string image_size: imageSize
+ model: imageModel2
+ delegate: colorImageDelegate
+ anchors.fill: rect2
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/images_2.qml b/tests/manual/scenegraph_lancelot/data/images/images_2.qml
new file mode 100644
index 0000000000..680135a5ec
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/images_2.qml
@@ -0,0 +1,124 @@
+import QtQuick 2.0
+
+Rectangle{
+ id: topLevelItem
+ height: 480
+ width: 320
+
+ property string imageSize: "72x96"
+
+ ListModel{
+ id: imageModel1
+ ListElement{
+ name: "red"
+ size: "72x96"
+ hex: "ff0000"
+ }
+ ListElement{
+ name: "green"
+ size: "72x96"
+ hex: "00ff00"
+ }
+ ListElement{
+ name: "blue"
+ size: "72x96"
+ hex: "0000ff"
+ }
+ ListElement{
+ name: "cyan"
+ size: "72x96"
+ hex: "00ffff"
+ }
+ ListElement{
+ name: "orange"
+ size: "72x96"
+ hex: "ffa500"
+ }
+ ListElement{
+ name: "violet"
+ size: "72x96"
+ hex: "ee82ee"
+ }
+ ListElement{
+ name: "yellow"
+ size: "72x96"
+ hex: "ffff00"
+ }
+ }
+ ListModel{
+ id: imageModel2
+ ListElement{
+ name: "blue"
+ size: "72x96"
+ hex: "0000ff"
+ }
+ ListElement{
+ name: "cyan"
+ size: "72x96"
+ hex: "00ffff"
+ }
+ ListElement{
+ name: "violet"
+ size: "72x96"
+ hex: "ee82ee"
+ }
+ ListElement{
+ name: "orange"
+ size: "72x96"
+ hex: "ffa500"
+ }
+ ListElement{
+ name: "yellow"
+ size: "72x96"
+ hex: "ffff00"
+ }ListElement{
+ name: "green"
+ size: "72x96"
+ hex: "00ff00"
+ }
+ ListElement{
+ name: "red"
+ size: "72x96"
+ hex: "ff0000"
+ }
+ }
+ Component{
+ id: colorImageDelegate
+ Column{
+ Text{ font.family: "Arial"; font.pointSize: 8; text: name +" "+size+" Hex: "+hex }
+ Image{
+ source: "../shared/"+name+"_"+imageSize+".png"
+ }
+ }
+ }
+ Rectangle{
+ id: rect1
+ x: 0
+ y: 0
+ width: 180
+ height: 800
+ }
+ Rectangle{
+ id: rect2
+ x: 181
+ y: 0
+ width: 180
+ height: 800
+ }
+ ListView{
+ id: lv1
+ x: 0
+ y: 0
+ property string image_size: imageSize
+ model: imageModel1
+ delegate: colorImageDelegate
+ anchors.fill: rect1
+ }
+ ListView{
+ id: lv2
+ property string image_size: imageSize
+ model: imageModel2
+ delegate: colorImageDelegate
+ anchors.fill: rect2
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/jpeg_full.qml b/tests/manual/scenegraph_lancelot/data/images/jpeg_full.qml
new file mode 100644
index 0000000000..49a6507b4b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/jpeg_full.qml
@@ -0,0 +1,12 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ Image{
+ width: 320
+ height: 480
+ source: "../shared/col320x480.jpg"
+ anchors.fill: parent
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/jpeg_scaled.qml b/tests/manual/scenegraph_lancelot/data/images/jpeg_scaled.qml
new file mode 100644
index 0000000000..26b54b0b0a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/jpeg_scaled.qml
@@ -0,0 +1,38 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ Image{
+ x: 0
+ y: 0
+ width: 160
+ height: 240
+ source: "../shared/col320x480.jpg"
+ }
+
+ Image{
+ x: 180
+ y: 20
+ width: 113
+ height: 199
+ source: "../shared/col320x480.jpg"
+ }
+
+ Image{
+ x: 160
+ y: 240
+ sourceSize.width: 160
+ sourceSize.height: 240
+ source: "../shared/col320x480.jpg"
+ }
+
+ Image{
+ x: 20
+ y: 260
+ sourceSize.width: 113
+ sourceSize.height: 199
+ source: "../shared/col320x480.jpg"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_1.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_1.qml
new file mode 100644
index 0000000000..4a215fb384
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_1.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.1"
+ z: 1
+ }
+
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.1
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_2.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_2.qml
new file mode 100644
index 0000000000..458b1f84e4
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_2.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.2"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.2
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_3.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_3.qml
new file mode 100644
index 0000000000..98d5c8089b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_3.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.3"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.3
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_4.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_4.qml
new file mode 100644
index 0000000000..b6987cc3a4
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_4.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.4"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.4
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_5.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_5.qml
new file mode 100644
index 0000000000..b4433cd2f9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_5.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.5"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.5
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_6.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_6.qml
new file mode 100644
index 0000000000..3deeccd579
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_6.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.6"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.6
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_7.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_7.qml
new file mode 100644
index 0000000000..e7ae7ea95b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_7.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.7"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.7
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_8.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_8.qml
new file mode 100644
index 0000000000..bce6d49d70
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_8.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.8"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.8
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_9.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_9.qml
new file mode 100644
index 0000000000..fd8b947b55
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_0_9.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 0.9"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 0.9
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/linear_smooth_1_0.qml b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_1_0.qml
new file mode 100644
index 0000000000..ea542bbb5d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/linear_smooth_1_0.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: true
+ Text{
+ text: "scale 1.0"
+ z: 1
+ }
+ Image{
+ width: 320
+ height: 480
+ id: bwLinear
+ source: "../shared/bw_1535x2244.jpg"
+ anchors.fill: parent
+ sourceSize.height: 2244
+ sourceSize.width: 1535
+ scale: 1.0
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/overlap.qml b/tests/manual/scenegraph_lancelot/data/images/overlap.qml
new file mode 100644
index 0000000000..e45e5f96df
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/overlap.qml
@@ -0,0 +1,58 @@
+import QtQuick 2.0
+
+Image {
+ width: 320
+ height: 480
+ source: "../shared/winter.png"
+ Grid {
+ columns: 2
+ Item { width: 35; height: 50 }
+ Row {
+ id: row_0000
+ Repeater {
+ model: 7
+ Rectangle {
+ width: 35
+ height: 50
+ color: Qt.rgba(index & 1 ? 0.75 : 0.85, 1, 1, 0.75)
+ Text { font.pointSize: 8; anchors.centerIn: parent; text: "Col " + (index + 1) }
+ }
+ }
+ }
+ Column {
+ Repeater {
+ model: 8
+ Rectangle {
+ width: 35
+ height: 50
+ color: Qt.rgba(1, 1, index & 1 ? 0.75 : 0.85, 0.75)
+ Text { font.pointSize: 8; anchors.centerIn: parent; text: "Row " + (index + 1) }
+ }
+ }
+ }
+ Grid {
+ id: grid_0001
+ columns: 7
+ rows: 8
+ opacity: 0.5
+ Repeater {
+ id: repeater_0001
+ model: 7 * 8
+ onActiveFocusChanged: console.debug("changed")
+
+ Rectangle {
+ id: rect_0001
+ width: 35
+ height: 50
+ radius: 10
+ gradient: Gradient {
+ GradientStop { position: 0; color: "white" }
+ GradientStop { position: 1; color: "blue" }
+ }
+ border.width: 2
+ border.color: "black"
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/tiling.qml b/tests/manual/scenegraph_lancelot/data/images/tiling.qml
new file mode 100644
index 0000000000..785186221d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/tiling.qml
@@ -0,0 +1,102 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: root
+ width: 320
+ height: 480
+
+ property bool useSmooth: false
+
+ property variant fillModes: [
+ Image.Stretch,
+ Image.PreserveAspectFit,
+ Image.PreserveAspectCrop,
+ Image.Tile,
+ Image.TileVertically,
+ Image.TileHorizontally
+ ]
+
+ Grid {
+ columns: 2
+ rows: 2
+
+ Grid {
+ width: 160
+ height: 240
+ columns: 2
+ rows: 3
+ Repeater {
+ model: 6
+ Image {
+ width: 80
+ height: 80
+ source: "../shared/tile.png"
+ fillMode: fillModes[index]
+ }
+ }
+ }
+
+ Grid {
+ width: 160
+ height: 240
+ columns: 2
+ rows: 3
+ Repeater {
+ model: 6
+ Image {
+ width: 80
+ height: 80
+ source: "../shared/tile.png"
+ fillMode: fillModes[index]
+ smooth: true
+ }
+ }
+ }
+
+ Grid {
+ width: 160
+ height: 240
+ columns: 2
+ rows: 3
+ Repeater {
+ model: 6
+ Item {
+ width: 80
+ height: 80
+ clip: true
+ Image {
+ width: 80
+ height: 80
+ source: "../shared/tile.png"
+ fillMode: fillModes[index]
+ scale: 1.5
+ }
+ }
+ }
+ }
+
+ Grid {
+ width: 160
+ height: 240
+ columns: 2
+ rows: 3
+ Repeater {
+ model: 6
+ Item {
+ width: 80
+ height: 80
+ clip: true
+ Image {
+ width: 80
+ height: 80
+ source: "../shared/tile.png"
+ fillMode: fillModes[index]
+ smooth: true
+ scale: 1.5
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/images/transform.qml b/tests/manual/scenegraph_lancelot/data/images/transform.qml
new file mode 100644
index 0000000000..be711ba80f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/images/transform.qml
@@ -0,0 +1,36 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "white"
+ Image {
+ id: wooohooo
+ x: 50
+ y: 120
+ width: 256
+ height: 240
+ source: "../shared/winter.png"
+ rotation: 30
+ scale: 1.25
+ transform: [
+ Rotation { origin { x: 128; y: 120 } axis { x: 0; y: 1; z: 0 } angle: 60 }
+ , Translate { x: 10; y: 0 }
+ ]
+ Rectangle {
+ width: 50
+ height: 50
+ color: "steelBlue"
+ MouseArea {
+ anchors.fill: parent
+ drag.target: parent
+ drag.axis: Drag.XandYAxis
+ drag.minimumX: 0
+ drag.maximumX: wooohooo.width - parent.width
+ drag.minimumY: 0
+ drag.maximumY: wooohooo.height - parent.height
+ }
+ }
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/opacity/opacity.qml b/tests/manual/scenegraph_lancelot/data/opacity/opacity.qml
new file mode 100644
index 0000000000..05adf2cbd9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/opacity/opacity.qml
@@ -0,0 +1,191 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: topRect
+ width: 320
+ height: 480
+
+ Row{
+ id: row_0000
+ anchors.top: parent.top
+ Row{
+ Rectangle{
+ id: rect_0001
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "red"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0002
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "blue"
+ anchors.top: rect_0001.Center
+ opacity: 0.1
+ Text{
+ width: parent.width
+ text: "opac. 0.1"
+ anchors.top: parent.top
+ }
+ }
+ }
+ Row{
+ Rectangle{
+ id: rect_0003
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "yellow"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0004
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "green"
+ anchors.top: rect_0003.Center
+ opacity: 0.2
+ Text{
+ width: parent.width
+ text: "opac. 0.2"
+ anchors.top: parent.top
+ }
+ }
+ }
+ }
+ Row{
+ id: row_0001
+ anchors.top: row_0000.bottom
+ Row{
+ Rectangle{
+ id: rect_0005
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "black"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0006
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "white"
+ anchors.top: rect_0005.Center
+ opacity: 0.3
+ Text{
+ width: parent.width
+ text: "opac. 0.3"
+ anchors.top: parent.top
+ }
+ }
+ }
+ Row{
+ Rectangle{
+ id: rect_0007
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "violet"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0008
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "indigo"
+ anchors.top: rect_0007.Center
+ opacity: 0.4
+ Text{
+ text: "opac. 0.4"
+ anchors.top: parent.top
+ }
+ }
+ }
+ }
+ Row{
+ id: row_0002
+ anchors.top: row_0001.bottom
+ Row{
+ Rectangle{
+ id: rect_0009
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "light grey"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0010
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "cyan"
+ anchors.top: rect_0009.Center
+ opacity: 0.5
+ Text{
+ text: "opac. 0.5"
+ anchors.top: parent.top
+ }
+ }
+ }
+ Row{
+ Rectangle{
+ id: rect_0011
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "orange"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0012
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "pink"
+ anchors.top: rect_0011.Center
+ opacity: 0.6
+ Text{
+ text: "opac. 0.6"
+ anchors.top: parent.top
+ }
+ }
+ }
+ }
+ Row{
+ id: row_0003
+ anchors.top: row_0002.bottom
+ Rectangle{
+ id: rect_0013
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "brown"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0014
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "light green"
+ anchors.top: rect_0013.Center
+ opacity: 0.7
+ Text{
+ text: "opac. 0.7"
+ anchors.top: parent.top
+ }
+ }
+ Rectangle{
+ id: rect_0015
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "dark blue"
+ anchors.top: parent.top
+ }
+ Rectangle{
+ id: rect_0016
+ width: topRect.width / 4
+ height: topRect.height / 4
+ color: "light blue"
+ anchors.top: rect_0015.Center
+ opacity: 0.8
+ Text{
+ text: "opac. 0.8"
+ anchors.top: parent.top
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/rectangles/rectangles.qml b/tests/manual/scenegraph_lancelot/data/rectangles/rectangles.qml
new file mode 100644
index 0000000000..e610e281c5
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/rectangles/rectangles.qml
@@ -0,0 +1,490 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: r_0000
+ width: 320
+ height: 480
+ color: "white"
+
+ property int standardRectWidth: 32
+ property int standardRectHeight: 48
+ property int textAnnotationXOffset: 32
+ property int textAnnotationYOffset: 10
+ property int borderSize: 2
+ property int yPlacementRow_0: 0
+ property int yPlacementRow_1: 48
+ property int yPlacementRow_2: 96
+ property int yPlacementRow_3: 144
+ property int yPlacementRow_4: 192
+ property int yPlacementRow_5: 240
+ property int yPlacementRow_6: 288
+ property int yPlacementRow_7: 336
+ property int yPlacementRow_8: 384
+ property int yPlacementRow_9: 432
+ property int xPlacementCol_0: 0
+ property int xPlacementCol_1: standardRectWidth
+ property int xPlacementCol_2: standardRectWidth*2
+ property int xPlacementCol_3: standardRectWidth*3
+ property int xPlacementCol_4: standardRectWidth*4
+ property int xPlacementCol_5: standardRectWidth*5
+ property int xPlacementCol_6: standardRectWidth*6
+ property int xPlacementCol_7: standardRectWidth*7
+ property int xPlacementCol_8: standardRectWidth*8
+ property int xPlacementCol_9: standardRectWidth*9
+
+ Component{
+ id: annotation
+ Text{
+ width: 160
+ height: 240
+ x: textAnnotationXOffset
+ y: textAnnotationYOffset
+ z: 1
+ text: annotationTextLabel
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "white"
+ font.bold: true
+ }
+ }
+ //Test basic color
+ Rectangle{ smooth: false
+ id: r_0001
+ x: 0
+ y: yPlacementRow_0
+ width: r_0000.standardRectWidth
+ height: r_0000.standardRectHeight
+ color: "red"
+ }
+ Rectangle{ smooth: false
+ id: r_0002
+ x: r_0001.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ }
+ Rectangle{ smooth: false
+ id: r_0003
+ x: r_0002.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ }
+ Rectangle{ smooth: false
+ id: r_0004
+ x: r_0003.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ }
+ Rectangle {
+ id: r_0005
+ x: r_0004.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ }
+ Rectangle{ smooth: false
+ id: r_0006
+ x: r_0005.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ }
+ Rectangle{ smooth: false
+ id: r_0007
+ x: r_0006.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ }
+ Rectangle{ smooth: false
+ id: r_0008
+ x: r_0007.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ }
+ Rectangle{ smooth: false
+ id: r_0009
+ x: r_0008.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ }
+ Rectangle{ smooth: false
+ id: r_0010
+ x: r_0009.x + standardRectWidth
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ }
+ Loader{
+ sourceComponent: annotation;
+ property string annotationTextLabel: "BASIC COLOR RECTANGLES";
+ property int textAnnotationXOffset: 4;
+ property int textAnnotationYOffset: 10;
+ }
+ //Test borders
+ Rectangle{ smooth: false
+ id: r_0011
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ border.width: borderSize
+ border.color: "orange"
+ anchors.horizontalCenter: r_0001.horizontalCenter
+ anchors.top: r_0001.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0012
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ border.width: borderSize
+ border.color: "yellow"
+ anchors.horizontalCenter: r_0002.horizontalCenter
+ anchors.top: r_0002.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0013
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ border.width: borderSize
+ border.color: "green"
+ anchors.horizontalCenter: r_0003.horizontalCenter
+ anchors.top: r_0003.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0014
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ border.width: borderSize
+ border.color: "blue"
+ anchors.horizontalCenter: r_0004.horizontalCenter
+ anchors.top: r_0004.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0015
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ border.width: borderSize
+ border.color: "indigo"
+ anchors.horizontalCenter: r_0005.horizontalCenter
+ anchors.top: r_0005.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0016
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ border.width: borderSize
+ border.color: "violet"
+ anchors.horizontalCenter: r_0006.horizontalCenter
+ anchors.top: r_0006.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0017
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ border.width: borderSize
+ border.color: "black"
+ anchors.horizontalCenter: r_0007.horizontalCenter
+ anchors.top: r_0007.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0018
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ border.width: borderSize
+ border.color: "dark grey"
+ anchors.horizontalCenter: r_0008.horizontalCenter
+ anchors.top: r_0008.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0019
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ border.width: borderSize
+ border.color: "light grey"
+ anchors.horizontalCenter: r_0009.horizontalCenter
+ anchors.top: r_0009.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0020
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ border.width: borderSize
+ border.color: "red"
+ anchors.horizontalCenter: r_0010.horizontalCenter
+ anchors.top: r_0010.bottom
+ }
+ Loader{
+ sourceComponent: annotation;
+ property string annotationTextLabel: "BASIC COLOR BORDER";
+ property int textAnnotationXOffset: 4;
+ property int textAnnotationYOffset: 10 + standardRectHeight;
+ }
+ //Test Gradients
+ Rectangle{ smooth: false
+ id: r_0021
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0021.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0001.horizontalCenter
+ anchors.top: r_0011.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0022
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0022.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0002.horizontalCenter
+ anchors.top: r_0012.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0023
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0023.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0003.horizontalCenter
+ anchors.top: r_0013.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0024
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0024.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0004.horizontalCenter
+ anchors.top: r_0014.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0025
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0025.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0005.horizontalCenter
+ anchors.top: r_0015.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0026
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0026.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0006.horizontalCenter
+ anchors.top: r_0016.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0027
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0027.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0007.horizontalCenter
+ anchors.top: r_0017.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0028
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0028.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0008.horizontalCenter
+ anchors.top: r_0018.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0029
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0029.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0009.horizontalCenter
+ anchors.top: r_0019.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0030
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0030.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+ anchors.horizontalCenter: r_0010.horizontalCenter
+ anchors.top: r_0020.bottom
+ }
+ Loader{
+ sourceComponent: annotation;
+ property string annotationTextLabel: "BASIC COLOR GRADIENT";
+ property int textAnnotationXOffset: 4;
+ property int textAnnotationYOffset: 10 + (2*standardRectHeight);
+ }
+ //Test radius
+ Rectangle{ smooth: false
+ id: r_0031
+ x: 0
+ y: 97
+ width: r_0000.standardRectWidth
+ height: r_0000.standardRectHeight
+ color: "red"
+ radius: 1
+ anchors.horizontalCenter: r_0001.horizontalCenter
+ anchors.top: r_0021.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0032
+ x: r_0031.x + standardRectWidth
+ y: r_0031.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ radius: 2
+ anchors.horizontalCenter: r_0002.horizontalCenter
+ anchors.top: r_0022.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0033
+ x: r_0032.x + standardRectWidth
+ y: r_0032.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ radius: 3
+ anchors.horizontalCenter: r_0003.horizontalCenter
+ anchors.top: r_0023.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0034
+ x: r_0033.x + standardRectWidth
+ y: r_0033.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ radius: 4
+ anchors.horizontalCenter: r_0004.horizontalCenter
+ anchors.top: r_0024.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0035
+ x: r_0034.x + standardRectWidth
+ y: r_0034.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ radius: 5
+ anchors.horizontalCenter: r_0005.horizontalCenter
+ anchors.top: r_0025.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0036
+ x: r_0035.x + standardRectWidth
+ y: r_0035.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ radius: 6
+ anchors.horizontalCenter: r_0006.horizontalCenter
+ anchors.top: r_0026.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0037
+ x: r_0036.x + standardRectWidth
+ y: r_0036.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ radius: 7
+ anchors.horizontalCenter: r_0007.horizontalCenter
+ anchors.top: r_0027.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0038
+ x: r_0037.x + standardRectWidth
+ y: r_0037.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ radius: 8
+ anchors.horizontalCenter: r_0008.horizontalCenter
+ anchors.top: r_0028.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0039
+ x: r_0038.x + standardRectWidth
+ y: r_0038.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ radius: 9
+ anchors.horizontalCenter: r_0009.horizontalCenter
+ anchors.top: r_0029.bottom
+ }
+ Rectangle{ smooth: false
+ id: r_0040
+ x: r_0039.x + standardRectWidth
+ y: r_0039.y
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ radius: 10
+ anchors.horizontalCenter: r_0010.horizontalCenter
+ anchors.top: r_0030.bottom
+ }
+ Loader{
+ sourceComponent: annotation;
+ property string annotationTextLabel: "BASIC RADIUS";
+ property int textAnnotationXOffset: 4;
+ property int textAnnotationYOffset: 10 + (3*standardRectHeight);
+ }
+
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/rectangles/rectangles_smoothed.qml b/tests/manual/scenegraph_lancelot/data/rectangles/rectangles_smoothed.qml
new file mode 100644
index 0000000000..06791a1b51
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/rectangles/rectangles_smoothed.qml
@@ -0,0 +1,586 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: r_0000
+ width: 320
+ height: 480
+ color: "white"
+
+ property int standardRectWidth: 22
+ property int standardRectHeight: 40
+ property int xOffsetPlacement: 10
+ property int yOffsetPlacement: 18
+ property int borderSize: 2
+ property int yPlacementRow_0: 0
+ property int yPlacementRow_1: (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_2: yPlacementRow_1 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_3: yPlacementRow_2 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_4: yPlacementRow_3 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_5: yPlacementRow_4 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_6: yPlacementRow_5 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_7: yPlacementRow_6 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_8: yPlacementRow_7 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_9: yPlacementRow_8 + (standardRectHeight+yOffsetPlacement)
+ property int xPlacementCol_0: 0
+ property int xPlacementCol_1: xPlacementCol_0 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_2: xPlacementCol_1 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_3: xPlacementCol_2 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_4: xPlacementCol_3 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_5: xPlacementCol_4 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_6: xPlacementCol_5 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_7: xPlacementCol_6 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_8: xPlacementCol_7 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_9: xPlacementCol_8 + (standardRectWidth+xOffsetPlacement)
+ property bool smoothingOn: true
+ property real scaleFactor: 1.2
+
+
+ //Test basic color
+ Rectangle{
+ id: r_0001
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_0
+ y: yPlacementRow_0
+ width: r_0000.standardRectWidth
+ height: r_0000.standardRectHeight
+ color: "red"
+ }
+ Rectangle{
+ id: r_0002
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_1
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ }
+ Rectangle{
+ id: r_0003
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_2
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ }
+ Rectangle{
+ id: r_0004
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_3
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ }
+ Rectangle {
+ id: r_0005
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_4
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ }
+ Rectangle{
+ id: r_0006
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_5
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ }
+ Rectangle{
+ id: r_0007
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_6
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ }
+ Rectangle{
+ id: r_0008
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_7
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ }
+ Rectangle{
+ id: r_0009
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_8
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ }
+ Rectangle{
+ id: r_0010
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_9
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ }
+ Text{
+ id: annotation_row0
+ z: 1
+ text: "SMOOTHED SCALED RECTANGLES"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0001.verticalCenter
+ }
+
+ //Test borders
+ Rectangle{
+ id: r_0011
+ x: xPlacementCol_0
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ border.width: borderSize
+ border.color: "orange"
+
+ }
+ Rectangle{
+ id: r_0012
+ x: xPlacementCol_1
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ border.width: borderSize
+ border.color: "yellow"
+
+ }
+ Rectangle{
+ id: r_0013
+ x: xPlacementCol_2
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ border.width: borderSize
+ border.color: "green"
+
+ }
+ Rectangle{
+ id: r_0014
+ x: xPlacementCol_3
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ border.width: borderSize
+ border.color: "blue"
+
+ }
+ Rectangle{
+ id: r_0015
+ x: xPlacementCol_4
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ border.width: borderSize
+ border.color: "indigo"
+
+ }
+ Rectangle{
+ id: r_0016
+ x: xPlacementCol_5
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ border.width: borderSize
+ border.color: "violet"
+
+ }
+ Rectangle{
+ id: r_0017
+ x: xPlacementCol_6
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ border.width: borderSize
+ border.color: "black"
+
+ }
+ Rectangle{
+ id: r_0018
+ x: xPlacementCol_7
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ border.width: borderSize
+ border.color: "dark grey"
+
+ }
+ Rectangle{
+ id: r_0019
+ x: xPlacementCol_8
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ border.width: borderSize
+ border.color: "light grey"
+
+ }
+ Rectangle{
+ id: r_0020
+ x: xPlacementCol_9
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ border.width: borderSize
+ border.color: "red"
+
+ }
+ Text{
+ id: annotation_row1
+ z: 1
+ text: "SMOOTHED SCALED BORDERS"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0011.verticalCenter
+ }
+
+ //Test Gradients
+ Rectangle{
+ id: r_0021
+ x: xPlacementCol_0
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0021.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0022
+ x: xPlacementCol_1
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0022.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0023
+ x: xPlacementCol_2
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0023.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0024
+ x: xPlacementCol_3
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0024.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0025
+ x: xPlacementCol_4
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0025.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0026
+ x: xPlacementCol_5
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0026.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0027
+ x: xPlacementCol_6
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0027.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0028
+ x: xPlacementCol_7
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0028.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0029
+ x: xPlacementCol_8
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0029.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0030
+ x: xPlacementCol_9
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0030.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Text{
+ id: annotation_row2
+ z: 1
+ text: "SMOOTHED SCALED GRADIENTS"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0021.verticalCenter
+ }
+
+ //Test radius
+ Rectangle{
+ id: r_0031
+ x: xPlacementCol_0
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: r_0000.standardRectWidth
+ height: r_0000.standardRectHeight
+ color: "red"
+ radius: 1
+
+ }
+ Rectangle{
+ id: r_0032
+ x: xPlacementCol_1
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ radius: 2
+
+ }
+ Rectangle{
+ id: r_0033
+ x: xPlacementCol_2
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ radius: 3
+
+ }
+ Rectangle{
+ id: r_0034
+ x: xPlacementCol_3
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ radius: 4
+
+ }
+ Rectangle{
+ id: r_0035
+ x: xPlacementCol_4
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ radius: 5
+
+ }
+ Rectangle{
+ id: r_0036
+ x: xPlacementCol_5
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ radius: 6
+
+ }
+ Rectangle{
+ x: xPlacementCol_6
+ y: yPlacementRow_3
+ id: r_0037
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ radius: 7
+
+ }
+ Rectangle{
+ x: xPlacementCol_7
+ y: yPlacementRow_3
+ id: r_0038
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ radius: 8
+
+ }
+ Rectangle{
+ x: xPlacementCol_8
+ y: yPlacementRow_3
+ id: r_0039
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ radius: 9
+
+ }
+ Rectangle{
+ x: xPlacementCol_9
+ y: yPlacementRow_3
+ id: r_0040
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ radius: 10
+
+ }
+ Text{
+ id: annotation_row3
+ z: 1
+ text: "SMOOTHED SCALED RADIUS"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0031.verticalCenter
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/rectangles/rectangles_unsmoothed.qml b/tests/manual/scenegraph_lancelot/data/rectangles/rectangles_unsmoothed.qml
new file mode 100644
index 0000000000..950ab37454
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/rectangles/rectangles_unsmoothed.qml
@@ -0,0 +1,586 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: r_0000
+ width: 320
+ height: 480
+ color: "white"
+
+ property int standardRectWidth: 22
+ property int standardRectHeight: 40
+ property int xOffsetPlacement: 10
+ property int yOffsetPlacement: 18
+ property int borderSize: 2
+ property int yPlacementRow_0: 0
+ property int yPlacementRow_1: (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_2: yPlacementRow_1 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_3: yPlacementRow_2 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_4: yPlacementRow_3 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_5: yPlacementRow_4 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_6: yPlacementRow_5 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_7: yPlacementRow_6 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_8: yPlacementRow_7 + (standardRectHeight+yOffsetPlacement)
+ property int yPlacementRow_9: yPlacementRow_8 + (standardRectHeight+yOffsetPlacement)
+ property int xPlacementCol_0: 0
+ property int xPlacementCol_1: xPlacementCol_0 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_2: xPlacementCol_1 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_3: xPlacementCol_2 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_4: xPlacementCol_3 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_5: xPlacementCol_4 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_6: xPlacementCol_5 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_7: xPlacementCol_6 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_8: xPlacementCol_7 + (standardRectWidth+xOffsetPlacement)
+ property int xPlacementCol_9: xPlacementCol_8 + (standardRectWidth+xOffsetPlacement)
+ property bool smoothingOn: false
+ property real scaleFactor: 1.2
+
+
+ //Test basic color
+ Rectangle{
+ id: r_0001
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_0
+ y: yPlacementRow_0
+ width: r_0000.standardRectWidth
+ height: r_0000.standardRectHeight
+ color: "red"
+ }
+ Rectangle{
+ id: r_0002
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_1
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ }
+ Rectangle{
+ id: r_0003
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_2
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ }
+ Rectangle{
+ id: r_0004
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_3
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ }
+ Rectangle {
+ id: r_0005
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_4
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ }
+ Rectangle{
+ id: r_0006
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_5
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ }
+ Rectangle{
+ id: r_0007
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_6
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ }
+ Rectangle{
+ id: r_0008
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_7
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ }
+ Rectangle{
+ id: r_0009
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_8
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ }
+ Rectangle{
+ id: r_0010
+ smooth: smoothingOn
+ scale: scaleFactor
+ x: xPlacementCol_9
+ y: yPlacementRow_0
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ }
+ Text{
+ id: annotation_row0
+ z: 1
+ text: "UNSMOOTHED SCALED RECTANGLES"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0001.verticalCenter
+ }
+
+ //Test borders
+ Rectangle{
+ id: r_0011
+ x: xPlacementCol_0
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ border.width: borderSize
+ border.color: "orange"
+
+ }
+ Rectangle{
+ id: r_0012
+ x: xPlacementCol_1
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ border.width: borderSize
+ border.color: "yellow"
+
+ }
+ Rectangle{
+ id: r_0013
+ x: xPlacementCol_2
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ border.width: borderSize
+ border.color: "green"
+
+ }
+ Rectangle{
+ id: r_0014
+ x: xPlacementCol_3
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ border.width: borderSize
+ border.color: "blue"
+
+ }
+ Rectangle{
+ id: r_0015
+ x: xPlacementCol_4
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ border.width: borderSize
+ border.color: "indigo"
+
+ }
+ Rectangle{
+ id: r_0016
+ x: xPlacementCol_5
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ border.width: borderSize
+ border.color: "violet"
+
+ }
+ Rectangle{
+ id: r_0017
+ x: xPlacementCol_6
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ border.width: borderSize
+ border.color: "black"
+
+ }
+ Rectangle{
+ id: r_0018
+ x: xPlacementCol_7
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ border.width: borderSize
+ border.color: "dark grey"
+
+ }
+ Rectangle{
+ id: r_0019
+ x: xPlacementCol_8
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ border.width: borderSize
+ border.color: "light grey"
+
+ }
+ Rectangle{
+ id: r_0020
+ x: xPlacementCol_9
+ y: yPlacementRow_1
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ border.width: borderSize
+ border.color: "red"
+
+ }
+ Text{
+ id: annotation_row1
+ z: 1
+ text: "UNSMOOTHED SCALED BORDERS"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0011.verticalCenter
+ }
+
+ //Test Gradients
+ Rectangle{
+ id: r_0021
+ x: xPlacementCol_0
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "red"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0021.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0022
+ x: xPlacementCol_1
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0022.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0023
+ x: xPlacementCol_2
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0023.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0024
+ x: xPlacementCol_3
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0024.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0025
+ x: xPlacementCol_4
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0025.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0026
+ x: xPlacementCol_5
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0026.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0027
+ x: xPlacementCol_6
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0027.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0028
+ x: xPlacementCol_7
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0028.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0029
+ x: xPlacementCol_8
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0029.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Rectangle{
+ id: r_0030
+ x: xPlacementCol_9
+ y: yPlacementRow_2
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ gradient: Gradient{
+ GradientStop{ position: 1.0; color: r_0030.color }
+ GradientStop{ position: 0.0; color: "white" }
+ }
+
+ }
+ Text{
+ id: annotation_row2
+ z: 1
+ text: "UNSMOOTHED SCALED GRADIENTS"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0021.verticalCenter
+ }
+
+ //Test radius
+ Rectangle{
+ id: r_0031
+ x: xPlacementCol_0
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: r_0000.standardRectWidth
+ height: r_0000.standardRectHeight
+ color: "red"
+ radius: 1
+
+ }
+ Rectangle{
+ id: r_0032
+ x: xPlacementCol_1
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "orange"
+ radius: 2
+
+ }
+ Rectangle{
+ id: r_0033
+ x: xPlacementCol_2
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "yellow"
+ radius: 3
+
+ }
+ Rectangle{
+ id: r_0034
+ x: xPlacementCol_3
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "green"
+ radius: 4
+
+ }
+ Rectangle{
+ id: r_0035
+ x: xPlacementCol_4
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "blue"
+ radius: 5
+
+ }
+ Rectangle{
+ id: r_0036
+ x: xPlacementCol_5
+ y: yPlacementRow_3
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "indigo"
+ radius: 6
+
+ }
+ Rectangle{
+ x: xPlacementCol_6
+ y: yPlacementRow_3
+ id: r_0037
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "violet"
+ radius: 7
+
+ }
+ Rectangle{
+ x: xPlacementCol_7
+ y: yPlacementRow_3
+ id: r_0038
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "black"
+ radius: 8
+
+ }
+ Rectangle{
+ x: xPlacementCol_8
+ y: yPlacementRow_3
+ id: r_0039
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "dark grey"
+ radius: 9
+
+ }
+ Rectangle{
+ x: xPlacementCol_9
+ y: yPlacementRow_3
+ id: r_0040
+ smooth: smoothingOn
+ scale: scaleFactor
+ width: standardRectWidth
+ height: standardRectHeight
+ color: "light grey"
+ radius: 10
+
+ }
+ Text{
+ id: annotation_row3
+ z: 1
+ text: "UNSMOOTHED SCALED RADIUS"
+ font.family: "Arial"
+ font.pointSize: 15
+ color: "black"
+ font.bold: true
+ anchors.verticalCenter : r_0031.verticalCenter
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/rectangles/test-rectangles.qml b/tests/manual/scenegraph_lancelot/data/rectangles/test-rectangles.qml
new file mode 100644
index 0000000000..b2dcf4e675
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/rectangles/test-rectangles.qml
@@ -0,0 +1,81 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ Column {
+ id: foo
+ x: -width * (scale - 1) * (10/9) * (mouseArea.mouseX / width - 0.5)
+ y: -height * (scale - 1) * (10/9) * (mouseArea.mouseY / height - 0.5)
+ states: [
+ State {
+ name: ""
+ PropertyChanges {
+ target: foo
+ scale: 1
+ }
+ },
+ State {
+ name: "zoomed"
+ when: mouseArea.pressed
+ PropertyChanges {
+ target: foo
+ scale: 10
+ }
+ }
+ ]
+ Behavior on scale {
+ NumberAnimation { duration: 300; easing.type: Easing.InOutSine }
+ }
+
+ Repeater {
+ model: 3
+ Row {
+ id: local
+ property int _index: index
+ Repeater {
+ model: 2
+ Item {
+ width: 80
+ height: 160
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: 10
+ radius: index * 20
+ border.aligned: local._index == 1
+ border.width: local._index == 0 ? 0 : 0.5
+ opacity: 0.5
+ color: "steelBlue"
+ }
+ }
+ }
+ Repeater {
+ model: 2
+ Item {
+ width: 80
+ height: 160
+ Rectangle {
+ anchors.fill: parent
+ anchors.margins: 10
+ radius: index * 20
+ border.aligned: local._index == 1
+ border.width: local._index == 0 ? 0 : 0.5
+ opacity: 0.5
+ gradient: Gradient {
+ GradientStop { position: 0.05; color: "lightsteelblue" }
+ GradientStop { position: 0.1; color: "lightskyblue" }
+ GradientStop { position: 0.5; color: "skyblue" }
+ GradientStop { position: 0.9; color: "deepskyblue" }
+ GradientStop { position: 0.95; color: "dodgerblue" }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/rotation/rotation.qml b/tests/manual/scenegraph_lancelot/data/rotation/rotation.qml
new file mode 100644
index 0000000000..68d22468f6
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/rotation/rotation.qml
@@ -0,0 +1,172 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ smooth: smoothing
+ property bool smoothing: true
+ property int standardWidth: 30
+ property int standardHeight: 30
+ property int standardSpacing: 10
+ Grid{
+ id: grid_0000
+ anchors.top: parent.baseline
+ anchors.left: parent.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "red"; width: standardWidth; height: standardHeight; rotation: 0; smooth: smoothing}
+ Rectangle{ color: "orange"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "yellow"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "blue"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "green"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "indigo"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "violet"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "light green"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "light blue"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "light grey"; width: standardWidth; height: standardHeight; rotation: 5; smooth: smoothing}
+ Rectangle{ color: "black"; width: standardWidth; height: standardHeight; rotation: 15; smooth: smoothing}
+ Rectangle{ color: "dark grey"; width: standardWidth; height: standardHeight; rotation: 25; smooth: smoothing}
+ Rectangle{ color: "purple"; width: standardWidth; height: standardHeight; rotation: 35; smooth: smoothing}
+ Rectangle{ color: "pink"; width: standardWidth; height: standardHeight; rotation: 45; smooth: smoothing}
+ Rectangle{ color: "cyan"; width: standardWidth; height: standardHeight; rotation: 55; smooth: smoothing}
+ Rectangle{ color: "brown"; width: standardWidth; height: standardHeight; rotation: 65; smooth: smoothing}
+ }
+ Grid{
+ id: grid_0001
+ anchors.top: grid_0000.bottom
+ anchors.left: grid_0000.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "#ff0000"; width: standardWidth; height: standardHeight; rotation: 0; smooth: smoothing}
+ Rectangle{ color: "#ff3333"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "#ff6666"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "#ff9999"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "#ffcccc"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "#ffeeff"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "#ccffff"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "#99ffff"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "#66ffff"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "#33ffff"; width: standardWidth; height: standardHeight; rotation: 5; smooth: smoothing}
+ Rectangle{ color: "#00ffff"; width: standardWidth; height: standardHeight; rotation: 15; smooth: smoothing}
+ Rectangle{ color: "#ff00cc"; width: standardWidth; height: standardHeight; rotation: 25; smooth: smoothing}
+ Rectangle{ color: "#ff33ff"; width: standardWidth; height: standardHeight; rotation: 35; smooth: smoothing}
+ Rectangle{ color: "#ff66ff"; width: standardWidth; height: standardHeight; rotation: 45; smooth: smoothing}
+ Rectangle{ color: "#cc66ff"; width: standardWidth; height: standardHeight; rotation: 55; smooth: smoothing}
+ Rectangle{ color: "#9966ff"; width: standardWidth; height: standardHeight; rotation: 65; smooth: smoothing}
+ }
+ Grid{
+ id: grid_0002
+ anchors.top: grid_0001.bottom
+ anchors.left: grid_0001.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "#ff0010"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "#ff3323"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "#ff6636"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "#ff9949"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "#ffcc5c"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "#ffee6f"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "#ccff7f"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "#99ff8f"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "#66ff9f"; width: standardWidth; height: standardHeight; rotation: -10; smooth: smoothing}
+ Rectangle{ color: "#33ffaf"; width: standardWidth; height: standardHeight; rotation: -20; smooth: smoothing}
+ Rectangle{ color: "#00ffbf"; width: standardWidth; height: standardHeight; rotation: -30; smooth: smoothing}
+ Rectangle{ color: "#ff00cc"; width: standardWidth; height: standardHeight; rotation: -40; smooth: smoothing}
+ Rectangle{ color: "#ff33df"; width: standardWidth; height: standardHeight; rotation: -50; smooth: smoothing}
+ Rectangle{ color: "#ff66ef"; width: standardWidth; height: standardHeight; rotation: -60; smooth: smoothing}
+ Rectangle{ color: "#cc661f"; width: standardWidth; height: standardHeight; rotation: -70; smooth: smoothing}
+ Rectangle{ color: "#99662f"; width: standardWidth; height: standardHeight; rotation: -80; smooth: smoothing}
+ }
+ Grid{
+ id: grid_0003
+ anchors.top: grid_0002.bottom
+ anchors.left: grid_0002.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "#ffcc00"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "#ffff33"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "#ccff33"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "#99ff33"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "#66ff33"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "#33ff33"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "#00ff33"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "#ff00ff"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "#cc00ff"; width: standardWidth; height: standardHeight; rotation: -10; smooth: smoothing}
+ Rectangle{ color: "#9900ff"; width: standardWidth; height: standardHeight; rotation: -15; smooth: smoothing}
+ Rectangle{ color: "#6600ff"; width: standardWidth; height: standardHeight; rotation: -20; smooth: smoothing}
+ Rectangle{ color: "#3300ff"; width: standardWidth; height: standardHeight; rotation: -25; smooth: smoothing}
+ Rectangle{ color: "#0000ff"; width: standardWidth; height: standardHeight; rotation: -30; smooth: smoothing}
+ Rectangle{ color: "#ff00cc"; width: standardWidth; height: standardHeight; rotation: -35; smooth: smoothing}
+ Rectangle{ color: "#ff33cc"; width: standardWidth; height: standardHeight; rotation: -40; smooth: smoothing}
+ Rectangle{ color: "#cc66ff"; width: standardWidth; height: standardHeight; rotation: -45; smooth: smoothing}
+ }
+ Grid{
+ id: grid_0004
+ anchors.top: grid_0003.bottom
+ anchors.left: grid_0003.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "#eecc00"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "#eeff33"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "#ccff33"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "#99ff33"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "#66ff33"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "#44ff33"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "#00ff33"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "#ee00ff"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "#cc00ff"; width: standardWidth; height: standardHeight; rotation: -10; smooth: smoothing}
+ Rectangle{ color: "#9900ff"; width: standardWidth; height: standardHeight; rotation: -15; smooth: smoothing}
+ Rectangle{ color: "#6600ff"; width: standardWidth; height: standardHeight; rotation: -20; smooth: smoothing}
+ Rectangle{ color: "#4400ff"; width: standardWidth; height: standardHeight; rotation: -25; smooth: smoothing}
+ Rectangle{ color: "#0000ff"; width: standardWidth; height: standardHeight; rotation: -30; smooth: smoothing}
+ Rectangle{ color: "#ee00cc"; width: standardWidth; height: standardHeight; rotation: -35; smooth: smoothing}
+ Rectangle{ color: "#ee33cc"; width: standardWidth; height: standardHeight; rotation: -40; smooth: smoothing}
+ Rectangle{ color: "#cc66ff"; width: standardWidth; height: standardHeight; rotation: -45; smooth: smoothing}
+ }
+ Grid{
+ id: grid_0005
+ anchors.top: grid_0004.bottom
+ anchors.left: grid_0004.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "red"; width: standardWidth; height: standardHeight; rotation: 0; smooth: smoothing}
+ Rectangle{ color: "orange"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "yellow"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "blue"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "green"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "indigo"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "violet"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "light green"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "light blue"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "light grey"; width: standardWidth; height: standardHeight; rotation: 5; smooth: smoothing}
+ Rectangle{ color: "black"; width: standardWidth; height: standardHeight; rotation: 15; smooth: smoothing}
+ Rectangle{ color: "dark grey"; width: standardWidth; height: standardHeight; rotation: 25; smooth: smoothing}
+ Rectangle{ color: "purple"; width: standardWidth; height: standardHeight; rotation: 35; smooth: smoothing}
+ Rectangle{ color: "pink"; width: standardWidth; height: standardHeight; rotation: 45; smooth: smoothing}
+ Rectangle{ color: "cyan"; width: standardWidth; height: standardHeight; rotation: 55; smooth: smoothing}
+ Rectangle{ color: "brown"; width: standardWidth; height: standardHeight; rotation: 65; smooth: smoothing}
+ }
+ Grid{
+ id: grid_0006
+ anchors.top: grid_0005.bottom
+ anchors.left: grid_0005.left
+ columns: 8
+ spacing: standardSpacing
+ Rectangle{ color: "#ff6600"; width: standardWidth; height: standardHeight; rotation: 0; smooth: smoothing}
+ Rectangle{ color: "#cc6600"; width: standardWidth; height: standardHeight; rotation: 10; smooth: smoothing}
+ Rectangle{ color: "#996600"; width: standardWidth; height: standardHeight; rotation: 20; smooth: smoothing}
+ Rectangle{ color: "#666600"; width: standardWidth; height: standardHeight; rotation: 30; smooth: smoothing}
+ Rectangle{ color: "#336600"; width: standardWidth; height: standardHeight; rotation: 40; smooth: smoothing}
+ Rectangle{ color: "#006600"; width: standardWidth; height: standardHeight; rotation: 50; smooth: smoothing}
+ Rectangle{ color: "#009933"; width: standardWidth; height: standardHeight; rotation: 60; smooth: smoothing}
+ Rectangle{ color: "#00cc66"; width: standardWidth; height: standardHeight; rotation: 70; smooth: smoothing}
+ Rectangle{ color: "#ff0066"; width: standardWidth; height: standardHeight; rotation: 80; smooth: smoothing}
+ Rectangle{ color: "#cc0066"; width: standardWidth; height: standardHeight; rotation: 5; smooth: smoothing}
+ Rectangle{ color: "#990066"; width: standardWidth; height: standardHeight; rotation: 15; smooth: smoothing}
+ Rectangle{ color: "#660066"; width: standardWidth; height: standardHeight; rotation: 25; smooth: smoothing}
+ Rectangle{ color: "#330066"; width: standardWidth; height: standardHeight; rotation: 35; smooth: smoothing}
+ Rectangle{ color: "#000066"; width: standardWidth; height: standardHeight; rotation: 45; smooth: smoothing}
+ Rectangle{ color: "#003399"; width: standardWidth; height: standardHeight; rotation: 55; smooth: smoothing}
+ Rectangle{ color: "#0066cc"; width: standardWidth; height: standardHeight; rotation: 65; smooth: smoothing}
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/rotation/rotation_2.qml b/tests/manual/scenegraph_lancelot/data/rotation/rotation_2.qml
new file mode 100644
index 0000000000..89dd6b7b22
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/rotation/rotation_2.qml
@@ -0,0 +1,69 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ property int standardWidth: 60
+ property int standardHeight: 60
+ property int standardSpacing: 20
+ property bool smoothing: true
+ Grid{
+ id: grid_0000
+ anchors.top: parent.baseline
+ anchors.left: parent.left
+ columns: 4
+ spacing: standardSpacing
+ Rectangle{ color: "red"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: standardWidth/2; origin.y: standardHeight/2 ; axis{x: 0; y: 0; z:1} angle: 5; } smooth: smoothing}
+ Rectangle{ color: "orange"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: 0; origin.y: 0 ; axis{x: 0; y: 0; z:1} angle: 10; } smooth: smoothing }
+ Rectangle{ color: "yellow"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: 0; origin.y: 0 ; axis{x: 0; y: 0; z:1} angle: 15; } smooth: smoothing }
+ Rectangle{ color: "blue"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: 0; origin.y: 0 ; axis{x: 0; y: 0; z:1} angle: 20; } smooth: smoothing }
+ Rectangle{ color: "green"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: standardWidth/2; origin.y: standardWidth/2 ; axis{x: 0; y: 0; z:1} angle: 15; } smooth: smoothing}
+ Rectangle{ color: "indigo"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: 0; origin.y: 0 ; axis{x: 0; y: 0; z:1} angle: 30; } smooth: smoothing}
+ Rectangle{ color: "violet"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: 0; origin.y: 0 ; axis{x: 0; y: 0; z:1} angle: 35; } smooth: smoothing }
+ Rectangle{ color: "light green"; width: standardWidth; height: standardHeight; transform: Rotation { origin.x: 0; origin.y: 0 ; axis{x: 0; y: 0; z:1} angle: 40; } smooth: smoothing }
+ }
+ Item{
+ id: spacer_0000
+ width: standardWidth
+ height: standardHeight
+ anchors.top: grid_0000.bottom
+ anchors.left: grid_0000.left
+ }
+ Grid{
+ id: grid_0001
+ anchors.top: spacer_0000.bottom
+ anchors.left: spacer_0000.left
+ columns: 4
+ spacing: standardSpacing
+ Rectangle{ color: "#ff0000"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 5; } smooth: smoothing}
+ Rectangle{ color: "#ff3333"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 20; } smooth: smoothing }
+ Rectangle{ color: "#ff6666"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 30; } smooth: smoothing }
+ Rectangle{ color: "#ff9999"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 40; } smooth: smoothing }
+ Rectangle{ color: "#ffcccc"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 50; } smooth: smoothing }
+ Rectangle{ color: "#ffeeff"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 60; } smooth: smoothing }
+ Rectangle{ color: "#ccffff"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 70; } smooth: smoothing }
+ Rectangle{ color: "#99ffff"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 1; y: 0; z:0} angle: 80; } smooth: smoothing }
+ }
+ Item{
+ id: spacer_0001
+ width: standardWidth
+ height: standardHeight
+ anchors.top: grid_0001.bottom
+ anchors.left: grid_0001.left
+ }
+ Grid{
+ id: grid_0002
+ anchors.top: spacer_0001.bottom
+ anchors.left: spacer_0001.left
+ columns: 4
+ spacing: standardSpacing
+ Rectangle{ color: "#ff0000"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 10; } smooth: smoothing}
+ Rectangle{ color: "#ff3333"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 20; } smooth: smoothing}
+ Rectangle{ color: "#ff6666"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 30; } smooth: smoothing}
+ Rectangle{ color: "#ff9999"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 40; } smooth: smoothing}
+ Rectangle{ color: "#ffcccc"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 50; } smooth: smoothing}
+ Rectangle{ color: "#ffeeff"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 60; } smooth: smoothing}
+ Rectangle{ color: "#ccffff"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 70; } smooth: smoothing}
+ Rectangle{ color: "#99ffff"; width: standardWidth; height: standardHeight; transform: Rotation { origin.z: 0; origin.y: 0 ; axis{x: 0; y: 1; z:0} angle: 80; } smooth: smoothing}
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml b/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml
new file mode 100644
index 0000000000..d4ae526b5d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/activity/activity.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ hideSource: effect.visible
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.fill: text
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml b/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml
new file mode 100644
index 0000000000..f1bb03a4a9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/basic/basic.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ ShaderEffect {
+ anchors.fill: parent;
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1);
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml
new file mode 100644
index 0000000000..47687918e0
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_1.qml
@@ -0,0 +1,104 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: topLevel
+ width: 320
+ height: 480
+ ShaderEffectSource {
+ id: front
+ visible: false
+ smooth: true
+ sourceItem: Rectangle {
+ width: 256
+ height: 64
+ color: "cornflowerblue"
+ radius: 8
+ Text {
+ anchors.centerIn: parent
+ text: "Front"
+ font.pixelSize: 48
+ color: "white"
+ }
+ }
+ }
+ ShaderEffectSource {
+ id: back
+ visible: false
+ smooth: true
+ sourceItem: Rectangle {
+ width: 256
+ height: 64
+ color: "firebrick"
+ radius: 8
+ Text {
+ anchors.centerIn: parent
+ text: "Back"
+ font.pixelSize: 48
+ color: "white"
+ }
+ }
+ }
+ Column {
+ anchors.fill: parent
+ Repeater {
+ model: ListModel {
+ ListElement {
+ foo: "No culling"
+ bar: ShaderEffect.NoCulling
+ turned: false
+ }
+ ListElement {
+ foo: "Back-face culling"
+ bar: ShaderEffect.BackFaceCulling
+ turned: false
+ }
+ ListElement {
+ foo: "Front-face culling"
+ bar: ShaderEffect.FrontFaceCulling
+ turned: false
+ }
+ }
+
+ Item{
+ id: item_0000
+ width: 320
+ height: 120
+ ShaderEffect {
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.margins: 10
+ width: 200
+ height: 100
+ culling: model.bar
+ property variant frontSource: front
+ property variant backSource: back
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform sampler2D frontSource;
+ uniform sampler2D backSource;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = gl_FrontFacing
+ ? texture2D(frontSource, qt_TexCoord0)
+ : texture2D(backSource, qt_TexCoord0);
+ }"
+ transform: Rotation {
+ origin.x: 200
+ origin.y: 180 - 120 * index
+ axis { x: 0; y: 1; z: 0 }
+ angle: (turned == true) ? 180 : 0
+
+ }
+ }
+ Text {
+ font.pointSize: 10
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.margins: 5
+ text: foo
+ }
+ }
+ }
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml
new file mode 100644
index 0000000000..a6fcc260cd
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/culling/culling_2.qml
@@ -0,0 +1,103 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: topLevel
+ width: 320
+ height: 480
+ ShaderEffectSource {
+ id: front
+ visible: false
+ smooth: true
+ sourceItem: Rectangle {
+ width: 256
+ height: 64
+ color: "cornflowerblue"
+ radius: 8
+ Text {
+ anchors.centerIn: parent
+ text: "Front"
+ font.pixelSize: 48
+ color: "white"
+ }
+ }
+ }
+ ShaderEffectSource {
+ id: back
+ visible: false
+ smooth: true
+ sourceItem: Rectangle {
+ width: 256
+ height: 64
+ color: "firebrick"
+ radius: 8
+ Text {
+ anchors.centerIn: parent
+ text: "Back"
+ font.pixelSize: 48
+ color: "white"
+ }
+ }
+ }
+ Column {
+ anchors.fill: parent
+ Repeater {
+ model: ListModel {
+ ListElement {
+ foo: "No culling"
+ bar: ShaderEffect.NoCulling
+ turned: true
+ }
+ ListElement {
+ foo: "Back-face culling"
+ bar: ShaderEffect.BackFaceCulling
+ turned: true
+ }
+ ListElement {
+ foo: "Front-face culling"
+ bar: ShaderEffect.FrontFaceCulling
+ turned: true
+ }
+ }
+
+ Item{
+ id: item_0000
+ width: 320
+ height: 120
+ ShaderEffect{
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.margins: 10
+ width: 200
+ height: 100
+ culling: model.bar
+ property variant frontSource: front
+ property variant backSource: back
+ fragmentShader: "
+ varying highp vec2 qt_TexCoord0;
+ uniform sampler2D frontSource;
+ uniform sampler2D backSource;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = gl_FrontFacing
+ ? texture2D(frontSource, qt_TexCoord0)
+ : texture2D(backSource, qt_TexCoord0);
+ }"
+ transform: Rotation {
+ origin.x: 100
+ origin.y: 180 - 120 * index
+ axis { x: 0; y: 1; z: 0 }
+ angle: (turned == true) ? 180 : 0
+
+ }
+ }
+ Text {
+ font.pointSize: 10
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.margins: 5
+ text: foo
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/attributes.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/attributes.qml
new file mode 100644
index 0000000000..17d9aadf95
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/attributes.qml
@@ -0,0 +1,65 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ font.pixelSize: 80
+ text: "Shaderz!"
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ hideSource: true
+ smooth: true
+ }
+ Column {
+ ShaderEffect {
+ width: 320
+ height: 160
+ property variant source: source
+ vertexShader: "
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ gl_Position = qt_Matrix * qt_Vertex;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ }
+ ShaderEffect {
+ width: 320
+ height: 160
+ property variant source: source
+ vertexShader: "
+ attribute highp vec2 qt_MultiTexCoord0;
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ gl_Position = qt_Matrix * qt_Vertex;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ }
+ ShaderEffect {
+ width: 320
+ height: 160
+ property variant source: source
+ vertexShader: "
+ attribute highp vec2 qt_MultiTexCoord0;
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ varying highp vec2 qt_TexCoord0;
+ uniform highp float width;
+ uniform highp float height;
+ void main() {
+ gl_Position = qt_Matrix * qt_Vertex;
+ qt_TexCoord0 = qt_Vertex.xy / vec2(width, height);
+ }"
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml
new file mode 100644
index 0000000000..ddea979124
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_1.qml
@@ -0,0 +1,60 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "skyblue"
+ ShaderEffect {
+ anchors.centerIn: parent
+ width: 16 * 16
+ height: 24 * 16
+ property variant source: ShaderEffectSource {
+ sourceItem: Rectangle {
+ width: 22 * 20
+ height: 16 * 20
+ color: "#EF2B2D"
+ Rectangle {
+ y: 6 * 20
+ height: 4 * 20
+ width: 22 * 20
+ color: "white"
+ }
+ Rectangle {
+ x: 6 * 20
+ width: 4 * 20
+ height: 16 * 20
+ color: "white"
+ }
+ Rectangle {
+ y: 7 * 20
+ height: 2 * 20
+ width: 22 * 20
+ color: "#002868"
+ }
+ Rectangle {
+ x: 7 * 20
+ width: 2 * 20
+ height: 16 * 20
+ color: "#002868"
+ }
+ }
+ smooth: true
+ }
+ vertexShader: "
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ highp vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ mesh: GridMesh {
+ property int r: 1
+ resolution: Qt.size(r, r)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml
new file mode 100644
index 0000000000..971cda4f55
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_16.qml
@@ -0,0 +1,60 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "skyblue"
+ ShaderEffect {
+ anchors.centerIn: parent
+ width: 16 * 16
+ height: 24 * 16
+ property variant source: ShaderEffectSource {
+ sourceItem: Rectangle {
+ width: 22 * 20
+ height: 16 * 20
+ color: "#EF2B2D"
+ Rectangle {
+ y: 6 * 20
+ height: 4 * 20
+ width: 22 * 20
+ color: "white"
+ }
+ Rectangle {
+ x: 6 * 20
+ width: 4 * 20
+ height: 16 * 20
+ color: "white"
+ }
+ Rectangle {
+ y: 7 * 20
+ height: 2 * 20
+ width: 22 * 20
+ color: "#002868"
+ }
+ Rectangle {
+ x: 7 * 20
+ width: 2 * 20
+ height: 16 * 20
+ color: "#002868"
+ }
+ }
+ smooth: true
+ }
+ vertexShader: "
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ highp vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ mesh: GridMesh {
+ property int r: 16
+ resolution: Qt.size(r, r)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml
new file mode 100644
index 0000000000..d301ef089c
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_2.qml
@@ -0,0 +1,60 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "skyblue"
+ ShaderEffect{
+ anchors.centerIn: parent
+ width: 16 * 16
+ height: 24 * 16
+ property variant source: ShaderEffectSource {
+ sourceItem: Rectangle {
+ width: 22 * 20
+ height: 16 * 20
+ color: "#EF2B2D"
+ Rectangle {
+ y: 6 * 20
+ height: 4 * 20
+ width: 22 * 20
+ color: "white"
+ }
+ Rectangle {
+ x: 6 * 20
+ width: 4 * 20
+ height: 16 * 20
+ color: "white"
+ }
+ Rectangle {
+ y: 7 * 20
+ height: 2 * 20
+ width: 22 * 20
+ color: "#002868"
+ }
+ Rectangle {
+ x: 7 * 20
+ width: 2 * 20
+ height: 16 * 20
+ color: "#002868"
+ }
+ }
+ smooth: true
+ }
+ vertexShader: "
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ highp vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ mesh: GridMesh {
+ property int r: 2
+ resolution: Qt.size(r, r)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml
new file mode 100644
index 0000000000..0043282efd
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_4.qml
@@ -0,0 +1,60 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "skyblue"
+ ShaderEffect {
+ anchors.centerIn: parent
+ width: 16 * 16
+ height: 24 * 16
+ property variant source: ShaderEffectSource {
+ sourceItem: Rectangle {
+ width: 22 * 20
+ height: 16 * 20
+ color: "#EF2B2D"
+ Rectangle {
+ y: 6 * 20
+ height: 4 * 20
+ width: 22 * 20
+ color: "white"
+ }
+ Rectangle {
+ x: 6 * 20
+ width: 4 * 20
+ height: 16 * 20
+ color: "white"
+ }
+ Rectangle {
+ y: 7 * 20
+ height: 2 * 20
+ width: 22 * 20
+ color: "#002868"
+ }
+ Rectangle {
+ x: 7 * 20
+ width: 2 * 20
+ height: 16 * 20
+ color: "#002868"
+ }
+ }
+ smooth: true
+ }
+ vertexShader: "
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ highp vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ mesh: GridMesh {
+ property int r: 4
+ resolution: Qt.size(r, r)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml
new file mode 100644
index 0000000000..f9427a1f16
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/gridmesh/resolution_8.qml
@@ -0,0 +1,60 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "skyblue"
+ ShaderEffect {
+ anchors.centerIn: parent
+ width: 16 * 16
+ height: 24 * 16
+ property variant source: ShaderEffectSource {
+ sourceItem: Rectangle {
+ width: 22 * 20
+ height: 16 * 20
+ color: "#EF2B2D"
+ Rectangle {
+ y: 6 * 20
+ height: 4 * 20
+ width: 22 * 20
+ color: "white"
+ }
+ Rectangle {
+ x: 6 * 20
+ width: 4 * 20
+ height: 16 * 20
+ color: "white"
+ }
+ Rectangle {
+ y: 7 * 20
+ height: 2 * 20
+ width: 22 * 20
+ color: "#002868"
+ }
+ Rectangle {
+ x: 7 * 20
+ width: 2 * 20
+ height: 16 * 20
+ color: "#002868"
+ }
+ }
+ smooth: true
+ }
+ vertexShader: "
+ uniform highp mat4 qt_Matrix;
+ attribute highp vec4 qt_Vertex;
+ attribute highp vec2 qt_MultiTexCoord0;
+ varying highp vec2 qt_TexCoord0;
+ void main() {
+ highp vec4 pos = qt_Vertex;
+ pos.x += sin(qt_Vertex.y * 0.02) * 20.;
+ pos.y += sin(qt_Vertex.x * 0.02) * 20.;
+ gl_Position = qt_Matrix * pos;
+ qt_TexCoord0 = qt_MultiTexCoord0;
+ }"
+ mesh: GridMesh {
+ property int r: 8
+ resolution: Qt.size(r, r)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml
new file mode 100644
index 0000000000..83469531b1
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_1.qml
@@ -0,0 +1,64 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: draggee
+ width: 200
+ height: 80
+ x: 20
+ y: 15
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "steelBlue" }
+ GradientStop { position: 0.49; color: "white" }
+ GradientStop { position: 0.5; color: "gray" }
+ GradientStop { position: 1.0; color: "darkGray" }
+ }
+ radius: 20
+ border.width: 2
+ border.color: "black"
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 40
+ text: "Position 1"
+ }
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: draggee
+ hideSource: true
+ property real margins: 6
+ sourceRect: Qt.rect(-margins, -margins, sourceItem.width + 2 * margins, sourceItem.height + 2 * margins)
+ smooth: true
+ }
+
+ ShaderEffect{
+ id: effect
+ anchors.fill: source.sourceItem
+ anchors.margins: -source.margins
+ property variant source: source
+ property variant offset: Qt.size(4 / width, 4 / height)
+ property variant delta: Qt.size(0.5 / width, 0.5 / height)
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ uniform highp vec2 offset;
+ uniform highp vec2 delta;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ highp vec2 delta2 = vec2(delta.x, -delta.y);
+ lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
+ + texture2D(source, qt_TexCoord0 - offset - delta).a
+ + texture2D(source, qt_TexCoord0 - offset + delta2).a
+ + texture2D(source, qt_TexCoord0 - offset - delta2).a);
+ lowp vec4 color = texture2D(source, qt_TexCoord0);
+ gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
+ }
+ "
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml
new file mode 100644
index 0000000000..160b89168e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/hiddensource_2.qml
@@ -0,0 +1,65 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: draggee
+ width: 200
+ height: 80
+ x: 100
+ y: 360
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "steelBlue" }
+ GradientStop { position: 0.49; color: "white" }
+ GradientStop { position: 0.5; color: "gray" }
+ GradientStop { position: 1.0; color: "darkGray" }
+ }
+ radius: 20
+ border.width: 2
+ border.color: "black"
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 40
+ text: "Position 2"
+ }
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: draggee
+ hideSource: true
+ property real margins: 6
+ sourceRect: Qt.rect(-margins, -margins, sourceItem.width + 2 * margins, sourceItem.height + 2 * margins)
+ smooth: true
+ }
+
+ ShaderEffect{
+ id: effect
+ anchors.fill: source.sourceItem
+ anchors.margins: -source.margins
+ property variant source: source
+ property variant offset: Qt.size(4 / width, 4 / height)
+ property variant delta: Qt.size(0.5 / width, 0.5 / height)
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ uniform highp vec2 offset;
+ uniform highp vec2 delta;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ highp vec2 delta2 = vec2(delta.x, -delta.y);
+ lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
+ + texture2D(source, qt_TexCoord0 - offset - delta).a
+ + texture2D(source, qt_TexCoord0 - offset + delta2).a
+ + texture2D(source, qt_TexCoord0 - offset - delta2).a);
+ lowp vec4 color = texture2D(source, qt_TexCoord0);
+ gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
+ }
+ "
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml
new file mode 100644
index 0000000000..566edddedb
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_1.qml
@@ -0,0 +1,64 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: draggee
+ width: 200
+ height: 80
+ x: 20
+ y: 15
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "steelBlue" }
+ GradientStop { position: 0.49; color: "white" }
+ GradientStop { position: 0.5; color: "gray" }
+ GradientStop { position: 1.0; color: "darkGray" }
+ }
+ radius: 20
+ border.width: 2
+ border.color: "black"
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 40
+ text: "Position 1"
+ }
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: draggee
+ hideSource: false
+ property real margins: 6
+ sourceRect: Qt.rect(-margins, -margins, sourceItem.width + 2 * margins, sourceItem.height + 2 * margins)
+ smooth: true
+ }
+
+ ShaderEffect{
+ id: effect
+ anchors.fill: source.sourceItem
+ anchors.margins: -source.margins
+ property variant source: source
+ property variant offset: Qt.size(4 / width, 4 / height)
+ property variant delta: Qt.size(0.5 / width, 0.5 / height)
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ uniform highp vec2 offset;
+ uniform highp vec2 delta;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ highp vec2 delta2 = vec2(delta.x, -delta.y);
+ lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
+ + texture2D(source, qt_TexCoord0 - offset - delta).a
+ + texture2D(source, qt_TexCoord0 - offset + delta2).a
+ + texture2D(source, qt_TexCoord0 - offset - delta2).a);
+ lowp vec4 color = texture2D(source, qt_TexCoord0);
+ gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
+ }
+ "
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml
new file mode 100644
index 0000000000..0b8038e9ee
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/hiddensource/unhidden_2.qml
@@ -0,0 +1,66 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: draggee
+ width: 200
+ height: 80
+ x: 100
+ y: 360
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "steelBlue" }
+ GradientStop { position: 0.49; color: "white" }
+ GradientStop { position: 0.5; color: "gray" }
+ GradientStop { position: 1.0; color: "darkGray" }
+ }
+ radius: 20
+ border.width: 2
+ border.color: "black"
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 40
+ text: "Position 2"
+ }
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: draggee
+ hideSource: false
+ property real margins: 6
+ sourceRect: Qt.rect(-margins, -margins, sourceItem.width + 2 * margins, sourceItem.height + 2 * margins)
+ smooth: true
+ }
+
+ ShaderEffect{
+ id: effect
+ anchors.fill: source.sourceItem
+ anchors.margins: -source.margins
+ property variant source: source
+ property variant offset: Qt.size(4 / width, 4 / height)
+ property variant delta: Qt.size(0.5 / width, 0.5 / height)
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ uniform highp vec2 offset;
+ uniform highp vec2 delta;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ highp vec2 delta2 = vec2(delta.x, -delta.y);
+ lowp float shadow = 0.25 * (texture2D(source, qt_TexCoord0 - offset + delta).a
+ + texture2D(source, qt_TexCoord0 - offset - delta).a
+ + texture2D(source, qt_TexCoord0 - offset + delta2).a
+ + texture2D(source, qt_TexCoord0 - offset - delta2).a);
+ lowp vec4 color = texture2D(source, qt_TexCoord0);
+ gl_FragColor = mix(vec4(vec3(0.), 0.5 * shadow), color, color.a);
+ }
+ "
+ }
+}
+
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml b/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml
new file mode 100644
index 0000000000..132f160a26
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/image/async.qml
@@ -0,0 +1,28 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Image {
+ id: image;
+ source: "./face-smile.png"
+ visible: false
+ asynchronous: true
+ }
+
+ ShaderEffect {
+ anchors.fill: image
+ property variant source: image
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 0, 1) + texture2D(source, qt_TexCoord0);
+ }
+ "
+ visible: image.status == Image.Ready
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/image/face-smile.png b/tests/manual/scenegraph_lancelot/data/shaders/image/face-smile.png
new file mode 100644
index 0000000000..3d66d72578
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/image/face-smile.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml b/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml
new file mode 100644
index 0000000000..878eddeda5
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/image/source.qml
@@ -0,0 +1,26 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Image {
+ id: image;
+ source: "face-smile.png"
+ visible: false
+ }
+
+ ShaderEffect {
+ anchors.fill: image
+ property variant source: image
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 0, 1) + texture2D(source, qt_TexCoord0);
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml
new file mode 100644
index 0000000000..0383feaf91
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_1.qml
@@ -0,0 +1,44 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ anchors.centerIn: parent
+ transform: Rotation { angle: 45 }
+ }
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffect {
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml
new file mode 100644
index 0000000000..2e7074c65d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/liveonce_2.qml
@@ -0,0 +1,44 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ anchors.centerIn: parent
+ transform: Rotation { angle: 90 }
+ }
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffect {
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml
new file mode 100644
index 0000000000..3793e655c7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_1.qml
@@ -0,0 +1,68 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ anchors.centerIn: parent
+ transform: Rotation{ angle: 45}
+ }
+ }
+
+ ShaderEffectSource {
+ id: source1
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffectSource {
+ id: source2
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffect{
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source1
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(1, qt_TexCoord0.y, 0, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+ ShaderEffect {
+ y: parent.height / 2
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source2
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml
new file mode 100644
index 0000000000..2d8a4b6c09
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/livetwice_2.qml
@@ -0,0 +1,68 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ anchors.centerIn: parent
+ transform: Rotation{ angle: 90}
+ }
+ }
+
+ ShaderEffectSource {
+ id: source1
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffectSource {
+ id: source2
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffect{
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source1
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(1, qt_TexCoord0.y, 0, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+ ShaderEffect {
+ y: parent.height / 2
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source2
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml b/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml
new file mode 100644
index 0000000000..67e0cc36ad
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/live/samesource.qml
@@ -0,0 +1,53 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffect {
+ width: parent.width
+ height: parent.height / 2
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(0, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+ ShaderEffect {
+ width: parent.width
+ y: parent.height / 2
+ height: parent.height / 2
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, 1, 0, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_1.qml
new file mode 100644
index 0000000000..82d288ef9b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_1.qml
@@ -0,0 +1,31 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "black"
+
+ Text {
+ id: text
+ anchors.fill: parent
+ font.pixelSize: 16
+ text: "In the field of computer graphics, a shader is a set of software instructions which"
+ + " is used primarily to calculate rendering effects on graphics hardware with a high "
+ + "degree of flexibility. Shaders are used to program the graphics processing unit (GP"
+ + "U) programmable rendering pipeline, which has mostly superseded the fixed-function "
+ + "pipeline that allowed only common geometry transformation and pixel-shading functio"
+ + "ns; with shaders, customized effects can be used."
+ wrapMode: Text.Wrap
+ color: "yellow"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ anchors.fill: parent
+ sourceItem: text
+ smooth: true
+ mipmap: false
+ scale: 1.0
+
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_2.qml
new file mode 100644
index 0000000000..d234eb3ef2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_2.qml
@@ -0,0 +1,31 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "black"
+
+ Text {
+ id: text
+ anchors.fill: parent
+ font.pixelSize: 16
+ text: "In the field of computer graphics, a shader is a set of software instructions which"
+ + " is used primarily to calculate rendering effects on graphics hardware with a high "
+ + "degree of flexibility. Shaders are used to program the graphics processing unit (GP"
+ + "U) programmable rendering pipeline, which has mostly superseded the fixed-function "
+ + "pipeline that allowed only common geometry transformation and pixel-shading functio"
+ + "ns; with shaders, customized effects can be used."
+ wrapMode: Text.Wrap
+ color: "yellow"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ anchors.fill: parent
+ sourceItem: text
+ smooth: true
+ mipmap: true
+ scale: 1.0
+
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_3.qml b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_3.qml
new file mode 100644
index 0000000000..229d61088d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_3.qml
@@ -0,0 +1,30 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "black"
+
+ Text {
+ id: text
+ anchors.fill: parent
+ font.pixelSize: 16
+ text: "In the field of computer graphics, a shader is a set of software instructions which"
+ + " is used primarily to calculate rendering effects on graphics hardware with a high "
+ + "degree of flexibility. Shaders are used to program the graphics processing unit (GP"
+ + "U) programmable rendering pipeline, which has mostly superseded the fixed-function "
+ + "pipeline that allowed only common geometry transformation and pixel-shading functio"
+ + "ns; with shaders, customized effects can be used."
+ wrapMode: Text.Wrap
+ color: "yellow"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ anchors.fill: parent
+ sourceItem: text
+ smooth: true
+ mipmap: false
+ scale: 0.6
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_4.qml b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_4.qml
new file mode 100644
index 0000000000..01bca9616e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/mimap/mimap_4.qml
@@ -0,0 +1,30 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 320
+ height: 480
+ color: "black"
+
+ Text {
+ id: text
+ anchors.fill: parent
+ font.pixelSize: 16
+ text: "In the field of computer graphics, a shader is a set of software instructions which"
+ + " is used primarily to calculate rendering effects on graphics hardware with a high "
+ + "degree of flexibility. Shaders are used to program the graphics processing unit (GP"
+ + "U) programmable rendering pipeline, which has mostly superseded the fixed-function "
+ + "pipeline that allowed only common geometry transformation and pixel-shading functio"
+ + "ns; with shaders, customized effects can be used."
+ wrapMode: Text.Wrap
+ color: "yellow"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ anchors.fill: parent
+ sourceItem: text
+ smooth: true
+ mipmap: true
+ scale: 0.6
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/nesting/nesting.qml b/tests/manual/scenegraph_lancelot/data/shaders/nesting/nesting.qml
new file mode 100644
index 0000000000..a1461aa0df
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/nesting/nesting.qml
@@ -0,0 +1,28 @@
+import QtQuick 2.0
+
+Rectangle {
+ id: root
+ width: 320
+ height: 480
+
+ Text {
+ id: textItem
+ text: "Text Item"
+ visible: false
+ }
+
+ ShaderEffect {
+ width: root.width / 2
+ height: root.height / 2
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ property variant source: ShaderEffectSource {
+ sourceItem: ShaderEffect {
+ width: root.width / 2
+ height: root.height /2
+ property variant source: ShaderEffectSource { sourceItem: textItem }
+ }
+ }
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_1.qml
new file mode 100644
index 0000000000..43843c677b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_1.qml
@@ -0,0 +1,28 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: foo
+ width: 200
+ height: 200
+ radius: 100
+ anchors.centerIn: parent
+ gradient: Gradient {
+ GradientStop { position: 0; color: "red" }
+ GradientStop { position: 0.5; color: "white" }
+ GradientStop { position: 1; color: "blue" }
+ }
+ ShaderEffectSource {
+ id: buffer
+ anchors.fill: parent
+ sourceItem: foo
+ live: false
+ smooth: true
+ rotation: 45
+ recursive: true
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_2.qml
new file mode 100644
index 0000000000..957131b4b7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/recursive/recursive_2.qml
@@ -0,0 +1,28 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: foo
+ width: 200
+ height: 200
+ radius: 100
+ anchors.centerIn: parent
+ gradient: Gradient {
+ GradientStop { position: 0; color: "red" }
+ GradientStop { position: 0.5; color: "white" }
+ GradientStop { position: 1; color: "blue" }
+ }
+ ShaderEffectSource {
+ id: buffer
+ anchors.fill: parent
+ sourceItem: foo
+ live: false
+ smooth: true
+ rotation: 90
+ recursive: true
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml
new file mode 100644
index 0000000000..d57f7c5dfb
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/one-source.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffect {
+ anchors.fill: text;
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml
new file mode 100644
index 0000000000..46fa6f5583
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/rect.qml
@@ -0,0 +1,54 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ sourceRect: Qt.rect(rect.x - text.x, rect.y - text.y, rect.width, rect.height)
+ }
+
+ ShaderEffect {
+ anchors.fill: rect
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+ Rectangle {
+ id: rect
+ x: 100
+ y: 100
+ width: 100
+ height: 100
+ color: "transparent"
+ border.width: 2
+ border.color: "red"
+ MouseArea {
+ anchors.fill: parent
+ drag.target: parent
+ drag.axis: Drag.XandYAxis
+ drag.minimumX: 0
+ drag.maximumX: parent.parent.width - width
+ drag.minimumY: 0
+ drag.maximumY: parent.parent.height - height
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml
new file mode 100644
index 0000000000..9df6b13c1e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_1.qml
@@ -0,0 +1,61 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: rect1
+ x: 10
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ Rectangle {
+ id: rect2
+ x: 100
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ Rectangle {
+ id: rect3
+ x: 190
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ ShaderEffectSource {
+ id: source
+ property int counter
+ sourceItem: rect1
+ hideSource: true
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.fill: source.sourceItem
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml
new file mode 100644
index 0000000000..f997630d30
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_2.qml
@@ -0,0 +1,61 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: rect1
+ x: 10
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ Rectangle {
+ id: rect2
+ x: 100
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ Rectangle {
+ id: rect3
+ x: 190
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ ShaderEffectSource {
+ id: source
+ property int counter
+ sourceItem: rect2
+ hideSource: true
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.fill: source.sourceItem
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/switch_3.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_3.qml
new file mode 100644
index 0000000000..0d3c1fc4ee
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/switch_3.qml
@@ -0,0 +1,61 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: rect1
+ x: 10
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ Rectangle {
+ id: rect2
+ x: 100
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ Rectangle {
+ id: rect3
+ x: 190
+ y: 10
+ width: 80
+ height: 80
+ radius: 20
+ color: "black"
+ }
+
+ ShaderEffectSource {
+ id: source
+ property int counter
+ sourceItem: rect3
+ hideSource: true
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.fill: source.sourceItem
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml
new file mode 100644
index 0000000000..1fadabe5b6
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/two-sources.qml
@@ -0,0 +1,57 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ id: rect;
+ anchors.centerIn: parent
+ width: 1
+ height: 10
+ visible: false
+
+ gradient: Gradient {
+ GradientStop { position: 0; color: "#ff0000" }
+ GradientStop { position: 0.5; color: "#00ff00" }
+ GradientStop { position: 1; color: "#0000ff" }
+ }
+ }
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ id: maskSource
+ sourceItem: text
+ smooth: true
+ }
+
+ ShaderEffectSource {
+ id: colorSource
+ sourceItem: rect;
+ smooth: true
+ }
+
+ ShaderEffect {
+ anchors.fill: text;
+
+ property variant colorSource: colorSource
+ property variant maskSource: maskSource;
+
+ fragmentShader: "
+ uniform lowp sampler2D maskSource;
+ uniform lowp sampler2D colorSource;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = texture2D(maskSource, qt_TexCoord0).a * texture2D(colorSource, qt_TexCoord0.yx);
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml
new file mode 100644
index 0000000000..7a3bf9fd36
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_1.qml
@@ -0,0 +1,40 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ font.pixelSize: 80
+ text: "Shaderz!"
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ hideSource: true
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.top: text.bottom
+ anchors.left: text.left
+ width: text.width
+ height: text.height
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml
new file mode 100644
index 0000000000..d60dbaee3d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/source/visible_2.qml
@@ -0,0 +1,40 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ font.pixelSize: 80
+ text: "Shaderz!"
+ }
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ hideSource: false
+ }
+
+ ShaderEffect {
+ id: effect
+ anchors.top: text.bottom
+ anchors.left: text.left
+ width: text.width
+ height: text.height
+
+ property variant source: source
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ gl_FragColor = vec4(qt_TexCoord0.x, qt_TexCoord0.y, 1, 1) * texture2D(source, qt_TexCoord0).a;
+ }
+ "
+
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml b/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml
new file mode 100644
index 0000000000..ab8db47009
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/texture/size.qml
@@ -0,0 +1,46 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ ShaderEffectSource {
+ id: source
+ sourceItem: text
+ textureSize: Qt.size(text.width / 2, text.height / 2)
+ smooth: true
+ }
+
+ ShaderEffect {
+ anchors.fill: text
+
+ property variant source: source
+ property variant textureSize: source.textureSize
+ property color color: "black"
+
+ fragmentShader: "
+ uniform lowp sampler2D source;
+ varying highp vec2 qt_TexCoord0;
+ uniform highp vec2 textureSize;
+ uniform lowp vec4 color;
+ uniform lowp float qt_Opacity;
+ void main() {
+ highp vec2 dx = vec2(0.5 / textureSize.x, 0.);
+ highp vec2 dy = vec2(0., 0.5 / textureSize.y);
+ gl_FragColor = color * 0.25
+ * (texture2D(source, qt_TexCoord0 + dx + dy).a
+ + texture2D(source, qt_TexCoord0 + dx - dy).a
+ + texture2D(source, qt_TexCoord0 - dx + dy).a
+ + texture2D(source, qt_TexCoord0 - dx - dy).a);
+ }
+ "
+ }
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ color: "white"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_1.qml b/tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_1.qml
new file mode 100644
index 0000000000..ad4cce9546
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_1.qml
@@ -0,0 +1,32 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ visible: false
+ Item {
+ Text {
+ id: text
+ font.pixelSize: 80
+ text: "Shaderz!"
+ color: "black"
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ anchors.centerIn: parent
+ transform: Rotation { angle: 45 }
+ }
+ }
+ }
+ }
+
+ ShaderEffectSource {
+ width: text.width
+ height: text.height
+ anchors.centerIn: parent
+ sourceItem: text
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_2.qml b/tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_2.qml
new file mode 100644
index 0000000000..834c69f93a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/tree/hiddentree_2.qml
@@ -0,0 +1,32 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Rectangle {
+ visible: false
+ Item {
+ Text {
+ id: text
+ font.pixelSize: 80
+ text: "Shaderz!"
+ color: "black"
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ anchors.centerIn: parent
+ transform: Rotation { angle: 90 }
+ }
+ }
+ }
+ }
+
+ ShaderEffectSource {
+ width: text.width
+ height: text.height
+ anchors.centerIn: parent
+ sourceItem: text
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml b/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml
new file mode 100644
index 0000000000..c008114810
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shaders/wrap/modes.qml
@@ -0,0 +1,68 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.pixelSize: 80
+ text: "Shaderz!"
+ visible: false
+ }
+
+ ShaderEffectSource {
+ id: clamp
+ sourceItem: text
+ smooth: true
+ wrapMode: ShaderEffectSource.ClampToEdge
+ }
+
+ ShaderEffectSource {
+ id: hRepeat
+ sourceItem: text
+ smooth: true
+ wrapMode: ShaderEffectSource.RepeatHorizontally
+ }
+
+ ShaderEffectSource {
+ id: vRepeat
+ sourceItem: text
+ smooth: true
+ wrapMode: ShaderEffectSource.RepeatVertically
+ }
+
+ ShaderEffectSource {
+ id: repeat
+ sourceItem: text
+ smooth: true
+ wrapMode: ShaderEffectSource.Repeat
+ }
+
+ ShaderEffect {
+ anchors.fill: parent
+
+ property variant cyan: hRepeat
+ property variant magenta: vRepeat
+ property variant yellow: repeat
+ property variant black: clamp
+
+ fragmentShader: "
+ uniform lowp sampler2D cyan;
+ uniform lowp sampler2D magenta;
+ uniform lowp sampler2D yellow;
+ uniform lowp sampler2D black;
+ varying highp vec2 qt_TexCoord0;
+ uniform lowp float qt_Opacity;
+ void main() {
+ highp vec2 t = qt_TexCoord0 * 3. - 1.;
+ lowp float c = texture2D(cyan, t + vec2(.05, .09)).a;
+ lowp float m = texture2D(magenta, t + vec2(.04, -.10)).a;
+ lowp float y = texture2D(yellow, t + vec2(-.10, .01)).a;
+ lowp float k = texture2D(black, t).a;
+ gl_FragColor = 1. - vec4(c + k, m + k, y + k, 0.);
+ }
+ "
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/shared/blue_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/blue_72x96.png
new file mode 100644
index 0000000000..b9e584d8bd
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/blue_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/bw_1535x2244.jpg b/tests/manual/scenegraph_lancelot/data/shared/bw_1535x2244.jpg
new file mode 100644
index 0000000000..0fcf12edc3
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/bw_1535x2244.jpg
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/col320x480.jpg b/tests/manual/scenegraph_lancelot/data/shared/col320x480.jpg
new file mode 100644
index 0000000000..c1b54caea8
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/col320x480.jpg
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/cyan_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/cyan_72x96.png
new file mode 100644
index 0000000000..c1ae9f3eee
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/cyan_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/green_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/green_72x96.png
new file mode 100644
index 0000000000..2ddadde72c
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/green_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/orange_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/orange_72x96.png
new file mode 100644
index 0000000000..2b0f0c961c
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/orange_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/red_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/red_72x96.png
new file mode 100644
index 0000000000..db015768d7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/red_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/sample_1.png b/tests/manual/scenegraph_lancelot/data/shared/sample_1.png
new file mode 100644
index 0000000000..24d02f4c22
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/sample_1.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/tile.png b/tests/manual/scenegraph_lancelot/data/shared/tile.png
new file mode 100644
index 0000000000..1c54278442
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/tile.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/violet_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/violet_72x96.png
new file mode 100644
index 0000000000..d8ecf51756
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/violet_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/winter.png b/tests/manual/scenegraph_lancelot/data/shared/winter.png
new file mode 100644
index 0000000000..6a8a7a7981
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/winter.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/world.png b/tests/manual/scenegraph_lancelot/data/shared/world.png
new file mode 100644
index 0000000000..ddbe3fe368
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/world.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/shared/yellow_72x96.png b/tests/manual/scenegraph_lancelot/data/shared/yellow_72x96.png
new file mode 100644
index 0000000000..569b6c1dd7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/shared/yellow_72x96.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/text/data/logo.png b/tests/manual/scenegraph_lancelot/data/text/data/logo.png
new file mode 100644
index 0000000000..d75936b007
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/data/logo.png
Binary files differ
diff --git a/tests/manual/scenegraph_lancelot/data/text/element_sizes.qml b/tests/manual/scenegraph_lancelot/data/text/element_sizes.qml
new file mode 100644
index 0000000000..d570caba9d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/element_sizes.qml
@@ -0,0 +1,31 @@
+import QtQuick 2.0
+
+//compare default font sizes
+Item {
+ width: 320
+ height: 480
+ Text {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.family: "Arial"
+ font.pixelSize: 14
+ }
+ TextEdit {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.family: "Arial"
+ font.pixelSize: 14
+ }
+ TextInput {
+ id: text_0002
+ anchors.top: text_0001.bottom
+ anchors.left: parent.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.family: "Arial"
+ font.pixelSize: 14
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/scale_smoothed.qml b/tests/manual/scenegraph_lancelot/data/text/scale_smoothed.qml
new file mode 100644
index 0000000000..72bdf9274a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/scale_smoothed.qml
@@ -0,0 +1,79 @@
+import QtQuick 2.0
+
+//vary font scale with smoothing
+
+Item {
+ width: 320
+ height: 480
+ property bool smoothing: true
+ Text {
+ id: text_0000
+ x: 0
+ y: 0
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.3}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: text_0000.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.4}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0002
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.5}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0003
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.6}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0004
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.8; }
+ smooth: smoothing
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_1000_chinese_characters.qml b/tests/manual/scenegraph_lancelot/data/text/text_1000_chinese_characters.qml
new file mode 100644
index 0000000000..9545e6242f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_1000_chinese_characters.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ width: 320
+ height: 480
+
+ property int fontSize: 10
+
+ Column {
+ spacing: 2
+ width: parent.width
+ Text {
+ font.pixelSize: root.fontSize
+ width: parent.width
+ wrapMode: Text.Wrap
+ text:"天地玄黄,宇宙洪荒。日月盈昃,辰宿列张。寒来暑往,秋收冬藏。闰余成岁,律吕调阳。云腾致雨,露结为霜。金生丽水,玉出崑冈。剑号巨阙,珠称夜光。果珍李柰,菜重芥姜。海咸河淡,鳞潜羽翔。龙师火帝,鸟官人皇。始制文字,乃服衣裳。推位让国,有虞陶唐。弔民伐罪,周发商汤。坐朝问道,垂拱平章。爱育黎首,臣伏戎羌。遐迩壹体,率宾归王。鸣凤在竹,白驹食场。化被草木,赖及万方。盖此身发,四大五常。恭惟鞠养,岂敢毁伤。女慕贞洁,男效才良。知过必改,得能莫忘。罔谈彼短,靡恃己长。信使可覆,器欲难量。墨悲丝染,诗讚羔羊。景行维贤,克念作圣。德建名立,形端表正。空谷传声,虚堂习听。祸因恶积,福缘善庆。尺璧非宝,寸阴是竞。资父事君,曰严与敬。孝当竭力,忠则尽命。临深履薄,夙兴温清。似兰斯馨,如松之盛。川流不息,渊澄取映。容止若思,言辞安定。笃初诚美,慎终宜令。荣业所基,籍甚无竟。学优登仕,摄职从政。存以甘棠,去而益咏。乐殊贵贱,礼别尊卑。上和下睦,夫唱妇随。外受傅训,入奉母仪。诸姑伯叔,犹子比儿。孔怀兄弟,同气连枝。交友投分,切磨箴规。仁慈隐恻,造次弗离。节义廉退,颠沛匪亏。性静情逸,心动神疲。守真志满,逐物意移。坚持雅操,好爵自縻。都邑华夏,东西二京。背邙面洛,浮渭据泾。宫殿盘郁,楼观飞惊。图写禽兽,画彩仙灵。丙舍傍启,甲帐对楹。肆筵设席,鼓瑟吹笙。升阶纳陛,弁转疑星。右通广内,左达承明。既集坟典,亦聚群英。杜稿钟隶,漆书壁经。府罗将相,路侠槐卿。户封八县,家给千兵。高冠陪辇,驱毂振缨。世禄侈富,车驾肥轻。策功茂实,勒碑刻铭。磻溪伊尹,佐时阿衡。奄宅曲阜,微旦孰营。桓公匡合,济弱扶倾。绮迥汉惠,说感武丁。俊乂密勿,多士寔宁。晋楚更霸,赵魏困横。假途灭虢,践土会盟。何遵约法,韩弊烦刑。起翦颇牧,用军最精。宣威沙漠,驰誉丹青。九州禹迹,百郡秦并。嶽宗泰岱,禅主云亭。雁门紫塞,鸡田赤城。昆池碣石,钜野洞庭。旷远绵邈,巖岫杳冥。治本于农,务兹稼穑。俶载南亩,我蓺黍稷。税熟贡新,劝赏黜陟。孟轲敦素,史鱼秉直。庶几中庸,劳谦谨敕。聆音察理,鉴貌辨色。贻厥嘉猷,勉其祇植。省躬讥诫,宠增抗极。殆辱近耻,林皋幸即。两疏见机,解组谁逼。索居閒处,沉默寂寥。求古寻论,散虑逍遥。欣奏累遣,戚谢欢招。渠荷的历,园莽抽条。枇杷晚翠,梧桐早凋。陈根委翳,落叶飘飖。游鲲独运,凌摩绛霄。耽读翫市,寓目囊箱。易輶攸畏,属耳垣墙。具膳餐饭,适口充肠。饱饫烹宰,饥厌糟糠。亲戚故旧,老少异粮。妾御织纺,侍巾帷房。纨扇圆絜,银烛炜煌。昼眠夕寐,蓝笋象床。弦歌酒䜩,接杯举觞。矫手顿足,悦豫且康。嫡后嗣续,祭祀蒸尝。稽颡再拜,悚惧恐惶。笺牒简要,顾答审详。骸垢想浴,执热愿凉。驴骡犊特,骇跃超骧。诛斩贼盗,捕获叛亡。布射辽丸,嵇琴阮啸。恬笔伦纸,钧巧任钓。释纷利俗,并皆佳妙。毛施淑姿,工颦妍笑。年矢每催,曦晖朗曜。璇玑悬斡,晦魄环照。指薪修祜,永绥吉劭。矩步引领,俯仰廊庙。束带矜庄,徘徊瞻眺。孤陋寡闻,愚蒙等诮。谓语助者,焉哉乎也。"
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_2500_chinese_characters.qml b/tests/manual/scenegraph_lancelot/data/text/text_2500_chinese_characters.qml
new file mode 100644
index 0000000000..3d2ea8be58
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_2500_chinese_characters.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ width: 320
+ height: 480
+
+ property string chars: "一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马乡丰王井开夫天无元专云扎艺木五支厅不太犬区历尤友匹车巨牙屯比互切瓦止少日中冈贝内水见午牛手毛气升长仁什片仆化仇币仍仅斤爪反介父从今凶分乏公仓月氏勿欠风丹匀乌凤勾文六方火为斗忆订计户认心尺引丑巴孔队办以允予劝双书幻玉刊示末未击打巧正扑扒功扔去甘世古节本术可丙左厉右石布龙平灭轧东卡北占业旧帅归且旦目叶甲申叮电号田由史只央兄叼叫另叨叹四生失禾丘付仗代仙们仪白仔他斥瓜乎丛令用甩印乐句匆册犯外处冬鸟务包饥主市立闪兰半汁汇头汉宁穴它讨写让礼训必议讯记永司尼民出辽奶奴加召皮边发孕圣对台矛纠母幼丝式刑动扛寺吉扣考托老执巩圾扩扫地扬场耳共芒亚芝朽朴机权过臣再协西压厌在有百存而页匠夸夺灰达列死成夹轨邪划迈毕至此贞师尘尖劣光当早吐吓虫曲团同吊吃因吸吗屿帆岁回岂刚则肉网年朱先丢舌竹迁乔伟传乒乓休伍伏优伐延件任伤价份华仰仿伙伪自血向似后行舟全会杀合兆企众爷伞创肌朵杂危旬旨负各名多争色壮冲冰庄庆亦刘齐交次衣产决充妄闭问闯羊并关米灯州汗污江池汤忙兴宇守宅字安讲军许论农讽设访寻那迅尽导异孙阵阳收阶阴防奸如妇好她妈戏羽观欢买红纤级约纪驰巡寿弄麦形进戒吞远违运扶抚坛技坏扰拒找批扯址走抄坝贡攻赤折抓扮抢孝均抛投坟抗坑坊抖护壳志扭块声把报却劫芽花芹芬苍芳严芦劳克苏杆杠杜材村杏极李杨求更束豆两丽医辰励否还歼来连步坚旱盯呈时吴助县里呆园旷围呀吨足邮男困吵串员听吩吹呜吧吼别岗帐财针钉告我乱利秃秀私每兵估体何但伸作伯伶佣低你住位伴身皂佛近彻役返余希坐谷妥含邻岔肝肚肠龟免狂犹角删条卵岛迎饭饮系言冻状亩况床库疗应冷这序辛弃冶忘闲间闷判灶灿弟汪沙汽沃泛沟没沈沉怀忧快完宋宏牢究穷灾良证启评补初社识诉诊词译君灵即层尿尾迟局改张忌际陆阿陈阻附妙妖妨努忍劲鸡驱纯纱纳纲驳纵纷纸纹纺驴纽奉玩环武青责现表规抹拢拔拣担坦押抽拐拖拍者顶拆拥抵拘势抱垃拉拦拌幸招坡披拨择抬其取苦若茂苹苗英范直茄茎茅林枝杯柜析板松枪构杰述枕丧或画卧事刺枣雨卖矿码厕奔奇奋态欧垄妻轰顷转斩轮软到非叔肯齿些虎虏肾贤尚旺具果味昆国昌畅明易昂典固忠咐呼鸣咏呢岸岩帖罗帜岭凯败贩购图钓制知垂牧物乖刮秆和季委佳侍供使例版侄侦侧凭侨佩货依的迫质欣征往爬彼径所舍金命斧爸采受乳贪念贫肤肺肢肿胀朋股肥服胁周昏鱼兔狐忽狗备饰饱饲变京享店夜庙府底剂郊废净盲放刻育闸闹郑券卷单炒炊炕炎炉沫浅法泄河沾泪油泊沿泡注泻泳泥沸波泼泽治怖性怕怜怪学宝宗定宜审宙官空帘实试郎诗肩房诚衬衫视话诞询该详建肃录隶居届刷屈弦承孟孤陕降限妹姑姐姓始驾参艰线练组细驶织终驻驼绍经贯奏春帮珍玻毒型挂封持项垮挎城挠政赴赵挡挺括拴拾挑指垫挣挤拼挖按挥挪某甚革荐巷带草茧茶荒茫荡荣故胡南药标枯柄栋相查柏柳柱柿栏树要咸威歪研砖厘厚砌砍面耐耍牵残殃轻鸦皆背战点临览竖省削尝是盼眨哄显哑冒映星昨畏趴胃贵界虹虾蚁思蚂虽品咽骂哗咱响哈咬咳哪炭峡罚贱贴骨钞钟钢钥钩卸缸拜看矩怎牲选适秒香种秋科重复竿段便俩贷顺修保促侮俭俗俘信皇泉鬼侵追俊盾待律很须叙剑逃食盆胆胜胞胖脉勉狭狮独狡狱狠贸怨急饶蚀饺饼弯将奖哀亭亮度迹庭疮疯疫疤姿亲音帝施闻阀阁差养美姜叛送类迷前首逆总炼炸炮烂剃洁洪洒浇浊洞测洗活派洽染济洋洲浑浓津恒恢恰恼恨举觉宣室宫宪突穿窃客冠语扁袄祖神祝误诱说诵垦退既屋昼费陡眉孩除险院娃姥姨姻娇怒架贺盈勇怠柔垒绑绒结绕骄绘给络骆绝绞统耕耗艳泰珠班素蚕顽盏匪捞栽捕振载赶起盐捎捏埋捉捆捐损都哲逝捡换挽热恐壶挨耻耽恭莲莫荷获晋恶真框桂档桐株桥桃格校核样根索哥速逗栗配翅辱唇夏础破原套逐烈殊顾轿较顿毙致柴桌虑监紧党晒眠晓鸭晃晌晕蚊哨哭恩唤啊唉罢峰圆贼贿钱钳钻铁铃铅缺氧特牺造乘敌秤租积秧秩称秘透笔笑笋债借值倚倾倒倘俱倡候俯倍倦健臭射躬息徒徐舰舱般航途拿爹爱颂翁脆脂胸胳脏胶脑狸狼逢留皱饿恋桨浆衰高席准座脊症病疾疼疲效离唐资凉站剖竞部旁旅畜阅羞瓶拳粉料益兼烤烘烦烧烛烟递涛浙涝酒涉消浩海涂浴浮流润浪浸涨烫涌悟悄悔悦害宽家宵宴宾窄容宰案请朗诸读扇袜袖袍被祥课谁调冤谅谈谊剥恳展剧屑弱陵陶陷陪娱娘通能难预桑绢绣验继球理捧堵描域掩捷排掉堆推掀授教掏掠培接控探据掘职基著勒黄萌萝菌菜萄菊萍菠营械梦梢梅检梳梯桶救副票戚爽聋袭盛雪辅辆虚雀堂常匙晨睁眯眼悬野啦晚啄距跃略蛇累唱患唯崖崭崇圈铜铲银甜梨犁移笨笼笛符第敏做袋悠偿偶偷您售停偏假得衔盘船斜盒鸽悉欲彩领脚脖脸脱象够猜猪猎猫猛馅馆凑减毫麻痒痕廊康庸鹿盗章竟商族旋望率着盖粘粗粒断剪兽清添淋淹渠渐混渔淘液淡深婆梁渗情惜惭悼惧惕惊惨惯寇寄宿窑密谋谎祸谜逮敢屠弹随蛋隆隐婚婶颈绩绪续骑绳维绵绸绿琴斑替款堪搭塔越趁趋超提堤博揭喜插揪搜煮援裁搁搂搅握揉斯期欺联散惹葬葛董葡敬葱落朝辜葵棒棋植森椅椒棵棍棉棚棕惠惑逼厨厦硬确雁殖裂雄暂雅辈悲紫辉敞赏掌晴暑最量喷晶喇遇喊景践跌跑遗蛙蛛蜓喝喂喘喉幅帽赌赔黑铸铺链销锁锄锅锈锋锐短智毯鹅剩稍程稀税筐等筑策筛筒答筋筝傲傅牌堡集焦傍储奥街惩御循艇舒番释禽腊脾腔鲁猾猴然馋装蛮就痛童阔善羡普粪尊道曾焰港湖渣湿温渴滑湾渡游滋溉愤慌惰愧愉慨割寒富窜窝窗遍裕裤裙谢谣谦属屡强粥疏隔隙絮嫂登缎缓编骗缘瑞魂肆摄摸填搏塌鼓摆携搬摇搞塘摊蒜勤鹊蓝墓幕蓬蓄蒙蒸献禁楚想槐榆楼概赖酬感碍碑碎碰碗碌雷零雾雹输督龄鉴睛睡睬鄙愚暖盟歇暗照跨跳跪路跟遣蛾蜂嗓置罪罩错锡锣锤锦键锯矮辞稠愁筹签简毁舅鼠催傻像躲微愈遥腰腥腹腾腿触解酱痰廉新韵意粮数煎塑慈煤煌满漠源滤滥滔溪溜滚滨粱滩慎誉塞谨福群殿辟障嫌嫁叠缝缠静碧璃墙撇嘉摧截誓境摘摔聚蔽慕暮蔑模榴榜榨歌遭酷酿酸磁愿需弊裳颗嗽蜻蜡蝇蜘赚锹锻舞稳算箩管僚鼻魄貌膜膊膀鲜疑馒裹敲豪膏遮腐瘦辣竭端旗精歉熄熔漆漂漫滴演漏慢寨赛察蜜谱嫩翠熊凳骡缩慧撕撒趣趟撑播撞撤增聪鞋蕉蔬横槽樱橡飘醋醉震霉瞒题暴瞎影踢踏踩踪蝶蝴嘱墨镇靠稻黎稿稼箱箭篇僵躺僻德艘膝膛熟摩颜毅糊遵潜潮懂额慰劈操燕薯薪薄颠橘整融醒餐嘴蹄器赠默镜赞篮邀衡膨雕磨凝辨辩糖糕燃澡激懒壁避缴戴擦鞠藏霜霞瞧蹈螺穗繁辫赢糟糠燥臂翼骤鞭覆蹦镰翻鹰警攀蹲颤瓣爆疆壤耀躁嚼嚷籍魔灌蠢霸露囊罐"
+ property int fontSize: 40
+
+ Text {
+ id: textElement
+ property int characterIndex: 0
+
+ font.pixelSize: root.fontSize
+ anchors.centerIn: root
+ text: ""
+
+ Timer {
+ id: timer
+ interval: 100
+ running: true
+ repeat: true
+ onTriggered: {
+ textElement.text = root.chars.charAt(textElement.characterIndex)
+ textElement.characterIndex = (textElement.characterIndex + 1) % root.chars.length
+ if (textElement.characterIndex == 0) {
+ console.debug("Finished with " + root.chars.length + " chars!")
+ timer.stop()
+ }
+ }
+ }
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_arabic.qml b/tests/manual/scenegraph_lancelot/data/text/text_arabic.qml
new file mode 100644
index 0000000000..8c68a1730a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_arabic.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "هو أمّا حكومة القاذفات مكن, وفي تنفّس الشرقي لهيمنة أن. هو قام هزيمة وأزيز اندلاع, ومن أي وبداية الواقعة. و إخضاع الكونجرس الموسوعة حول, جُل و سابق للغزو،, به، الحرب كنقطة المارق تم. شدّت الشطر وحلفاؤها بـ أسر, هذه بمعارضة والديون باستخدام تم, بـ معاملة الجنوبي لها. وسفن لهذه الحزب قام ٣٠, من الحرة عشوائية فعل, غير ٣٠ أوسع علاقة إستمات."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_background_color.qml b/tests/manual/scenegraph_lancelot/data/text/text_background_color.qml
new file mode 100644
index 0000000000..4c6fa16bc2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_background_color.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ color: "green"
+ textFormat: Text.RichText
+ text: "<body bgcolor=lightblue>Some text<br />Some more text</body>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_background_color_styledtext.qml b/tests/manual/scenegraph_lancelot/data/text/text_background_color_styledtext.qml
new file mode 100644
index 0000000000..ebf3adc035
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_background_color_styledtext.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ color: "green"
+ textFormat: Text.StyledText
+ text: "<body bgcolor=lightblue>Some text<br />Some more text</body>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bengali.qml b/tests/manual/scenegraph_lancelot/data/text/text_bengali.qml
new file mode 100644
index 0000000000..ff04c23743
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bengali.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial" // Should use Lohit Bengali
+ font.pixelSize: 20
+ text: "ধারা ১: সমস্ত মানুষ স্বাধীনভাবে সমান মর্যাদা এবং অধিকার নিয়ে জন্মগ্রহণ করে। তাঁদের বিবেক এবং বুদ্ধি আছে; সুতরাং সকলেরই একে অপরের প্রতি ভ্রাতৃত্বসুলভ মনোভাব নিয়ে আচরণ করা উচিৎ।"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bidi.qml b/tests/manual/scenegraph_lancelot/data/text/text_bidi.qml
new file mode 100644
index 0000000000..25e7f51803
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bidi.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "Lorem ipsum dolor sit amet, agam sonet vitae. "
+ + "جُل أم تشرشل والنازي. عل وقد كنقطة الهجوم. "
+ + "Dolorum assueverit vis ex. Zril graeci eirmod sed."
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_left_elide.qml b/tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_left_elide.qml
new file mode 100644
index 0000000000..e8bf2e6d44
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_left_elide.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "\u202e This is RTL \u202c"
+ elide: Text.ElideLeft
+ width: 100
+ wrapMode: Text.NoWrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_right_elide.qml b/tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_right_elide.qml
new file mode 100644
index 0000000000..aedf34d9fb
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bidi_control_character_right_elide.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "\u202e This is RTL \u202c"
+ elide: Text.ElideRight
+ width: 100
+ wrapMode: Text.NoWrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bidi_left_elide.qml b/tests/manual/scenegraph_lancelot/data/text/text_bidi_left_elide.qml
new file mode 100644
index 0000000000..03dac8a460
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bidi_left_elide.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "هو أمّا حكومة القاذفات مكن"
+ elide: Text.ElideLeft
+ width: 100
+ wrapMode: Text.NoWrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bidi_right_elide.qml b/tests/manual/scenegraph_lancelot/data/text/text_bidi_right_elide.qml
new file mode 100644
index 0000000000..2d7e4347db
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bidi_right_elide.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "هو أمّا حكومة القاذفات مكن"
+ elide: Text.ElideRight
+ width: 100
+ wrapMode: Text.NoWrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_bidi_underline.qml b/tests/manual/scenegraph_lancelot/data/text/text_bidi_underline.qml
new file mode 100644
index 0000000000..244cf7c22a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_bidi_underline.qml
@@ -0,0 +1,18 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ font.underline: true
+ text: "Lorem ipsum dolor sit amet, agam sonet vitae. "
+ + "جُل أم تشرشل والنازي. عل وقد كنقطة الهجوم. "
+ + "Dolorum assueverit vis ex. Zril graeci eirmod sed."
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_capitalization.qml b/tests/manual/scenegraph_lancelot/data/text/text_capitalization.qml
new file mode 100644
index 0000000000..e01e855f89
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_capitalization.qml
@@ -0,0 +1,47 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ id: upperCaseText
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.AllUppercase
+ text: "This text is all uppercase"
+ }
+
+ Text {
+ id: lowerCaseText
+ anchors.top: upperCaseText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.AllLowercase
+ text: "This text is all lowercase"
+ }
+
+ Text {
+ id: smallCapsText
+ anchors.top: lowerCaseText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.SmallCaps
+ text: "This text is smallcaps"
+ }
+
+ Text {
+ id: capitalizedText
+ anchors.top: smallCapsText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.Capitalize
+ text: "This text is capitalized"
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_chinese.qml b/tests/manual/scenegraph_lancelot/data/text/text_chinese.qml
new file mode 100644
index 0000000000..509dd183c4
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_chinese.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.pixelSize: 20
+ text: "禖 犿玒 鋑鋡髬 蘹蠮躘 飹勫嫢, 緁 軵逯 烍烚珜 訬軗郲 箖緌翢 毹 肒芅 瀿犨皫 迡俶倗 觛詏貁, 庌弝 訰貥郪 蹢鎒鎛 烺焆琀 槏, 蒛 犆犅 燲獯璯 耏胠臿 螒螝螜 珶珸 絼 蛃袚觙 簻臗藱, 鞁鬿 跿 堔埧娾 幨懅憴 榯 雈靮傿 裺觨誖 糋罶羬 靮傿, 氀濆 犵艿邔 谾踘遳 緱翬膞 暕 踙 毼毹 樛槷殦 忀瀸蘌"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_colored_text.qml b/tests/manual/scenegraph_lancelot/data/text/text_colored_text.qml
new file mode 100644
index 0000000000..1b31ab6117
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_colored_text.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ color: "blue"
+ textFormat: Text.RichText
+ text: "<font color=\"red\">Lorem ipsum</font> <font color=\"green\">dolor sit amet<font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_cyrillic.qml b/tests/manual/scenegraph_lancelot/data/text/text_cyrillic.qml
new file mode 100644
index 0000000000..00e10dddb9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_cyrillic.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "Ну миров называть опа, назад всегда предназначенная для от, работали гринспана обеспечении как ну. Себе делаете написано те для, том действия проектом по, хватит комнату представим он как. Другие работал медицинское вас ты. Том такие значения ну."
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_devanagari.qml b/tests/manual/scenegraph_lancelot/data/text/text_devanagari.qml
new file mode 100644
index 0000000000..ea5830d991
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_devanagari.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "सार्वजनिक विकेन्द्रित वर्णन कोहम विषय वेबजाल दिनांक माहितीवानीज्य औषधिक लक्षण हैं। द्वारा विभाजन प्रोत्साहित मुख्य विनिमय जानकारी पहोच गयेगया विस्तरणक्षमता होगा जिसकी मुख्य रखते बिन्दुओ शारिरिक बीसबतेबोध कीने नवंबर सभिसमज संस्थान"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_floating_image_left.qml b/tests/manual/scenegraph_lancelot/data/text/text_floating_image_left.qml
new file mode 100644
index 0000000000..27bd29c4e3
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_floating_image_left.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ width: parent.width
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ textFormat: Text.RichText
+ text: "This image is to the<img align=left src=\"data/logo.png\" /> left of the text <br />More text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_floating_image_right.qml b/tests/manual/scenegraph_lancelot/data/text/text_floating_image_right.qml
new file mode 100644
index 0000000000..65949d7bf7
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_floating_image_right.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: parent.width
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ textFormat: Text.RichText
+ text: "This image is to the<img align=right src=\"data/logo.png\" /> right of the text <br />More text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_fonts.qml b/tests/manual/scenegraph_lancelot/data/text/text_fonts.qml
new file mode 100644
index 0000000000..bc1f411159
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_fonts.qml
@@ -0,0 +1,104 @@
+import QtQuick 2.0
+
+//test different fonts
+Item {
+ width: 320
+ height: 480
+ Text {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Light
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Helvetica"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.DemiBold
+ color: "black"
+ font.family: "Courier"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Bold
+ color: "black"
+ font.family: "Calibri"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0004
+ width: 150
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Black
+ color: "black"
+ font.family: "Loma"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0005
+ width: 150
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Bitstream Charter"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0006
+ width: 150
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "FreeSans"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0007
+ width: 150
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Garuda"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_georgian.qml b/tests/manual/scenegraph_lancelot/data/text/text_georgian.qml
new file mode 100644
index 0000000000..f63dcf1c13
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_georgian.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "„ყოველი საიდუმლოჲ ამას ენასა შინა დამარხულ არს“ – იოანე-ზოსიმე (X ს.)"
+
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_hebrew.qml b/tests/manual/scenegraph_lancelot/data/text/text_hebrew.qml
new file mode 100644
index 0000000000..105c4e27b3
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_hebrew.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "שמו אל קהילה אגרונומיה. שדרות בהשחתה בהתייחסות אם עוד, את עזה יוצרים אירועים. בה אנא כניסה אחרונים ופיתוחה, או כימיה הגרפים אחד. של שער הבאים קודמות טבלאות. בקרבת שימושי סוציולוגיה שער מה, מתן כלכלה משחקים או, בדף ליום ערבית למחיקה בה. מאמר המלצת פיסיקה שער בה."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_inline_image.qml b/tests/manual/scenegraph_lancelot/data/text/text_inline_image.qml
new file mode 100644
index 0000000000..b401c578f2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_inline_image.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "This image is <img width=16 height=16 src=\"data/logo.png\" /> in the middle of the text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_italic_bold.qml b/tests/manual/scenegraph_lancelot/data/text/text_italic_bold.qml
new file mode 100644
index 0000000000..256e8ee8ba
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_italic_bold.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ width: parent.width
+ anchors.centerIn: parent
+ font.pixelSize: 20
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ text: "<i>Lorem ipsum dolor sit amet</i>, consectetur <b>adipiscing</b> elit. Maecenas nibh."
+ font.family: "Arial"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_italic_bold_chinese.qml b/tests/manual/scenegraph_lancelot/data/text/text_italic_bold_chinese.qml
new file mode 100644
index 0000000000..be93b869c8
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_italic_bold_chinese.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ width: parent.width
+ anchors.centerIn: parent
+ font.pixelSize: 20
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ text: "<i>滊煁 罞耖茭 醙醠鍖 箯</i>, 彃 榾毄 <b>螏螉褩</b> 籿紁羑"
+ font.family: "Arial"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_khmer.qml b/tests/manual/scenegraph_lancelot/data/text/text_khmer.qml
new file mode 100644
index 0000000000..e4bbe46c0f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_khmer.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "អក្សរច្រៀង"
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_circle.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_circle.qml
new file mode 100644
index 0000000000..52c12be682
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_circle.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "<html><body>Here's a list: <ul style=\"list-style-type: circle\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul> And some more text</body></html>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_inline_image.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_inline_image.qml
new file mode 100644
index 0000000000..6557cbf027
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_inline_image.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ul><li>List item 1</li><li>List <img height=16 width=16 src=\"data/logo.png\" />item 2</li><li>List item 3</li></ul> And some more text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_ordered.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered.qml
new file mode 100644
index 0000000000..6a74436512
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ol><li>List item 1</li><li>List item 2</li><li>List item 3</li></ol> And some more text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_alpha.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_alpha.qml
new file mode 100644
index 0000000000..48cae8f16b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_alpha.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ol style=\"list-style-type: lower-alpha\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ol> And some more text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_roman.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_roman.qml
new file mode 100644
index 0000000000..e6a25c3eca
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_lower_roman.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ol style=\"list-style-type: lower-roman\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ol> And some more text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_alpha.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_alpha.qml
new file mode 100644
index 0000000000..079b92c097
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_alpha.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ol style=\"list-style-type: upper-alpha\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ol> And some more text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_roman.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_roman.qml
new file mode 100644
index 0000000000..27d60a5374
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_ordered_upper_roman.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ol style=\"list-style-type: upper-roman\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ol> And some more text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_list_square.qml b/tests/manual/scenegraph_lancelot/data/text/text_list_square.qml
new file mode 100644
index 0000000000..36227eb754
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_list_square.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "<html><body>Here's a list: <ul style=\"list-style-type: square\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul> And some more text</body></html>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_multiline.qml b/tests/manual/scenegraph_lancelot/data/text/text_multiline.qml
new file mode 100644
index 0000000000..d2eaa0ad5e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_multiline.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Qt.RichText
+ text: "First line<br />Second line<br />Third line"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_multiline_overline.qml b/tests/manual/scenegraph_lancelot/data/text/text_multiline_overline.qml
new file mode 100644
index 0000000000..3df75f6924
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_multiline_overline.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ clip: true
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ font.overline: true
+ text: "First line\nSecond line\nThird line"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_multiline_partial_underline.qml b/tests/manual/scenegraph_lancelot/data/text/text_multiline_partial_underline.qml
new file mode 100644
index 0000000000..75cc37d185
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_multiline_partial_underline.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ clip: true
+
+ Text {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ text: "First line<br />Second <u>line<br />Third</u> line"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_multiline_strikeout.qml b/tests/manual/scenegraph_lancelot/data/text/text_multiline_strikeout.qml
new file mode 100644
index 0000000000..6216cc415a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_multiline_strikeout.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ clip: true
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.strikeout: true
+ text: "First line\nSecond line\nThird line"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_multiline_underline.qml b/tests/manual/scenegraph_lancelot/data/text/text_multiline_underline.qml
new file mode 100644
index 0000000000..0d0d935461
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_multiline_underline.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.underline: true
+ text: "First line\nSecond line\nThird line"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_multiparagraph.qml b/tests/manual/scenegraph_lancelot/data/text/text_multiparagraph.qml
new file mode 100644
index 0000000000..ae25f04712
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_multiparagraph.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Qt.RichText
+ text: "<p>First paragraph</p><p>Second paragraph</p><p>Third paragraph</p>"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_overline_multisize.qml b/tests/manual/scenegraph_lancelot/data/text/text_overline_multisize.qml
new file mode 100644
index 0000000000..4b12ef781f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_overline_multisize.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 10
+ font.overline: true
+ textFormat: Text.RichText
+ text: "Lorem ipsum <font size=16>dolor sit amet</font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_partially_colored_ligature.qml b/tests/manual/scenegraph_lancelot/data/text/text_partially_colored_ligature.qml
new file mode 100644
index 0000000000..c4dfad8bf9
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_partially_colored_ligature.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ clip: true
+
+ Text {
+ id: text
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 20
+ textFormat: Text.StyledText
+ text: "Are grif<font color=\"#00ff00\">f</font>ins birds or mammals?"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_resize_glyph_cache.qml b/tests/manual/scenegraph_lancelot/data/text/text_resize_glyph_cache.qml
new file mode 100644
index 0000000000..8b09b5f680
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_resize_glyph_cache.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ text: "abcdefghijklmnopqrstuvwxyzABCDEFG"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_rotation_smoothed.qml b/tests/manual/scenegraph_lancelot/data/text/text_rotation_smoothed.qml
new file mode 100644
index 0000000000..040cf0f50d
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_rotation_smoothed.qml
@@ -0,0 +1,144 @@
+import QtQuick 2.0
+
+//vary font rotation with smoothing
+
+Item {
+ width: 320
+ height: 480
+ property bool smoothing: true
+ Text {
+ id: text_0000
+ x: 0
+ y: 0
+ width: 150
+ height: 50
+ text: "10 degrees. The quick brown fox jumps over the lazy dog. 0123456789."
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 25 ; origin.y: 25; angle: 10}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: text_0000.left
+ width: 150
+ height: 50
+ text: "20 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 30 ; origin.y: 25; angle: 20}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0002
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ width: 150
+ height: 50
+ text: "30 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 35 ; origin.y: 25; angle: 30}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0003
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ width: 150
+ height: 50
+ text: "40 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 40 ; origin.y: 25; angle: 40}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0004
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ width: 150
+ height: 50
+ text: "50 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 45 ; origin.y: 25; angle: 50}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0005
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ width: 150
+ height: 50
+ text: "60 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 50 ; origin.y: 25; angle: 60}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0006
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ width: 150
+ height: 50
+ text: "70 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 30 ; origin.y: 25; angle: 70}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0007
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ width: 150
+ height: 50
+ text: "80 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 20 ; origin.y: 25; angle: 80}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0008
+ anchors.top: text_0007.bottom
+ anchors.left: text_0007.left
+ width: 150
+ height: 50
+ text: "90 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 10 ; origin.y: 25; angle: 90}
+ smooth: smoothing
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_rotation_unsmoothed.qml b/tests/manual/scenegraph_lancelot/data/text/text_rotation_unsmoothed.qml
new file mode 100644
index 0000000000..a094995c9e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_rotation_unsmoothed.qml
@@ -0,0 +1,144 @@
+import QtQuick 2.0
+
+//vary font rotation without smoothing
+
+Item {
+ width: 320
+ height: 480
+ property bool smoothing: false
+ Text {
+ id: text_0000
+ x: 0
+ y: 0
+ width: 150
+ height: 50
+ text: "10 degrees. The quick brown fox jumps over the lazy dog. 0123456789."
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 25 ; origin.y: 25; angle: 10}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: text_0000.left
+ width: 150
+ height: 50
+ text: "20 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 30 ; origin.y: 25; angle: 20}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0002
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ width: 150
+ height: 50
+ text: "30 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 35 ; origin.y: 25; angle: 30}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0003
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ width: 150
+ height: 50
+ text: "40 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 40 ; origin.y: 25; angle: 40}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0004
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ width: 150
+ height: 50
+ text: "50 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 45 ; origin.y: 25; angle: 50}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0005
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ width: 150
+ height: 50
+ text: "60 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 50 ; origin.y: 25; angle: 60}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0006
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ width: 150
+ height: 50
+ text: "70 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 30 ; origin.y: 25; angle: 70}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0007
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ width: 150
+ height: 50
+ text: "80 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 20 ; origin.y: 25; angle: 80}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0008
+ anchors.top: text_0007.bottom
+ anchors.left: text_0007.left
+ width: 150
+ height: 50
+ text: "90 degrees. The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.NoWrap
+ transform: Rotation{origin.x: 10 ; origin.y: 25; angle: 90}
+ smooth: smoothing
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_scale_unsmoothed.qml b/tests/manual/scenegraph_lancelot/data/text/text_scale_unsmoothed.qml
new file mode 100644
index 0000000000..fe7c4c96de
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_scale_unsmoothed.qml
@@ -0,0 +1,79 @@
+import QtQuick 2.0
+
+//vary font scale without smoothing
+
+Item {
+ width: 320
+ height: 480
+ property bool smoothing: false
+ Text {
+ id: text_0000
+ x: 0
+ y: 0
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.3}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: text_0000.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.4}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0002
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.5}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0003
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.6}
+ smooth: smoothing
+ }
+ Text {
+ id: text_0004
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ transform: Scale{origin.x: 0 ; origin.y: 0; xScale: 0.8; }
+ smooth: smoothing
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_strikeout_multisize.qml b/tests/manual/scenegraph_lancelot/data/text/text_strikeout_multisize.qml
new file mode 100644
index 0000000000..7a5964cb3f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_strikeout_multisize.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 10
+ font.strikeout: true
+ textFormat: Text.RichText
+ text: "Lorem ipsum <font size=14>dolor sit amet</font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_style.qml b/tests/manual/scenegraph_lancelot/data/text/text_style.qml
new file mode 100644
index 0000000000..4155709835
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_style.qml
@@ -0,0 +1,56 @@
+import QtQuick 2.0
+
+//vary font style
+
+Item {
+ width: 320
+ height: 480
+ Text {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 14
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Outline (looks a bit shit)"
+ style: Text.Outline
+ color: "black"
+ font.family: "Helvetica"
+ font.pointSize: 14
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Raised"
+ style: Text.Raised
+ color: "black"
+ font.family: "Courier"
+ font.pointSize: 14
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Sunken"
+ style: Text.Sunken
+ color: "black"
+ font.family: "Calibri"
+ font.pointSize: 14
+ wrapMode: Text.Wrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_style_color.qml b/tests/manual/scenegraph_lancelot/data/text/text_style_color.qml
new file mode 100644
index 0000000000..4986312bf2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_style_color.qml
@@ -0,0 +1,60 @@
+import QtQuick 2.0
+
+//vary font style and style color
+
+Item {
+ width: 320
+ height: 480
+ Text {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Normal"
+ style: Text.Normal
+ styleColor: "red"
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Outline (looks a bit shit)"
+ style: Text.Outline
+ styleColor: "blue"
+ color: "black"
+ font.family: "Helvetica"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Raised"
+ style: Text.Raised
+ styleColor: "red"
+ color: "black"
+ font.family: "Courier"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789. style: Sunken"
+ style: Text.Sunken
+ styleColor: "yellow"
+ color: "black"
+ font.family: "Calibri"
+ font.pointSize: 12
+ wrapMode: Text.Wrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_table.qml b/tests/manual/scenegraph_lancelot/data/text/text_table.qml
new file mode 100644
index 0000000000..1f7d49c595
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_table.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "A table: <table border=2>"
+ + "<tr><th>Header 1</th><th>Header 2</th></tr>"
+ + "<tr><td>Cell 1</td><td>Cell 2</td></tr>"
+ + "<tr><td>Cell 3</td><td>Cell 4</td></tr>"
+ + "<tr><td colspan=2>Cell 5</td></tr>"
+ + "<tr><td rowspan=2>Cell 6</td><td>Cell 7</tr>"
+ + "<tr><td>Cell 8</td></tr>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_table_inline_image.qml b/tests/manual/scenegraph_lancelot/data/text/text_table_inline_image.qml
new file mode 100644
index 0000000000..028c1a3fb4
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_table_inline_image.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "A table: <table border=2>"
+ + "<tr><th>Header 1</th><th>Header 2</th></tr>"
+ + "<tr><td>Cell 1</td><td>Cell 2 <img height=16 width=16 src=\"data/logo.png\" /></td></tr>"
+ + "<tr><td>Cell <img height=16 width=16 src=\"data/logo.png\" /> 3</td><td>Cell 4</td></tr>"
+ + "<tr><td colspan=2>Ce<img height=16 width=16 src=\"data/logo.png\" />ll 5</td></tr>"
+ + "<tr><td rowspan=2> <img height=16 width=16 src=\"data/logo.png\" />Cell 6</td><td>Cell 7</tr>"
+ + "<tr><td>Cell 8 <img height=16 width=16 src=\"data/logo.png\" /></td></tr>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_table_selected.qml b/tests/manual/scenegraph_lancelot/data/text/text_table_selected.qml
new file mode 100644
index 0000000000..51ff20b409
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_table_selected.qml
@@ -0,0 +1,25 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "A table: <table border=2>"
+ + "<tr><th>Header 1</th><th>Header 2</th></tr>"
+ + "<tr><td>Cell 1</td><td>Cell 2</td></tr>"
+ + "<tr><td>Cell 3</td><td>Cell 4</td></tr>"
+ + "<tr><td colspan=2>Cell 5</td></tr>"
+ + "<tr><td rowspan=2>Cell 6</td><td>Cell 7</tr>"
+ + "<tr><td>Cell 8</td></tr>"
+
+ Component.onCompleted: {
+ textEdit.select(10, 30)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_tamil.qml b/tests/manual/scenegraph_lancelot/data/text/text_tamil.qml
new file mode 100644
index 0000000000..31fccbcd54
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_tamil.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "லட்சுமிநாராயணன்"
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_thai.qml b/tests/manual/scenegraph_lancelot/data/text/text_thai.qml
new file mode 100644
index 0000000000..b001e92f98
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_thai.qml
@@ -0,0 +1,18 @@
+// test Thai font rendering and line breaking
+
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.fill: parent
+ wrapMode: Text.Wrap
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "ภาษาไทย เป็นภาษาราชการของประเทศไทย และภาษาแม่ของชาวไทย และชนเชื้อสายอื่นในประเทศไทย ภาษาไทยเป็นภาษาในกลุ่มภาษาไท"
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_underline_merged.qml b/tests/manual/scenegraph_lancelot/data/text/text_underline_merged.qml
new file mode 100644
index 0000000000..9a5996603a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_underline_merged.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ width: parent.width
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ text: "<u>Lorem</u> ipsum <u><font size=20>dolor sit amet</font>, consect</u>etur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_underline_merged_colored.qml b/tests/manual/scenegraph_lancelot/data/text/text_underline_merged_colored.qml
new file mode 100644
index 0000000000..7725131d5f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_underline_merged_colored.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ width: parent.width
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ text: "<u>Lorem</u> ipsum <u><font size=20 style=\"color: red\">dolor sit amet</font>, consect</u>etur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_underline_multisize.qml b/tests/manual/scenegraph_lancelot/data/text/text_underline_multisize.qml
new file mode 100644
index 0000000000..4ee54487d8
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_underline_multisize.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 10
+ font.underline: true
+ textFormat: Text.RichText
+ text: "Lorem ipsum <font size=14>dolor sit amet</font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_weight.qml b/tests/manual/scenegraph_lancelot/data/text/text_weight.qml
new file mode 100644
index 0000000000..a72894b76f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_weight.qml
@@ -0,0 +1,104 @@
+import QtQuick 2.0
+
+//vary font.weight
+
+Item {
+ width: 320
+ height: 480
+ Text {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Light
+ color: "black"
+ font.family: "Meera"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Mallige"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.DemiBold
+ color: "black"
+ font.family: "Norasi"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Bold
+ color: "black"
+ font.family: "Purisa"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0004
+ width: 150
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Black
+ color: "black"
+ font.family: "Saab"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0005
+ width: 150
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Sawasdee"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0006
+ width: 150
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Symbol"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ Text {
+ id: text_0007
+ width: 150
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "UnBatang"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_wrap_elide.qml b/tests/manual/scenegraph_lancelot/data/text/text_wrap_elide.qml
new file mode 100644
index 0000000000..9dcacd78bb
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_wrap_elide.qml
@@ -0,0 +1,104 @@
+import QtQuick 2.0
+
+//test single font with different elide and wrap modes
+
+Item {
+ width: 320
+ height: 480
+ Text {
+ id: text_0000
+ x: 0
+ y: 0
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. Elide left"
+ font.bold: false
+ elide: Text.ElideLeft
+ color: "red"
+ font.family: "Arial"
+ font.pointSize: 24
+ }
+ Text {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: text_0000.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. Elide middle"
+ font.bold: false
+ elide: Text.ElideMiddle
+ color: "blue"
+ font.family: "Arial"
+ font.pointSize: 24
+ }
+ Text {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. Elide right"
+ font.bold: false
+ elide: Text.ElideRight
+ color: "yellow"
+ font.family: "Arial"
+ font.pointSize: 24
+ }
+ Text {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. Elide none"
+ font.bold: false
+ elide: Text.ElideNone
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 24
+ }
+ Text {
+ id: text_0004
+ width: 150
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ text: "The quick brown fox jumps over the lazy dog. wrapMode: NoWrap"
+ font.bold: false
+ wrapMode: Text.NoWrap
+ color: "green"
+ font.family: "Arial"
+ font.pointSize: 24
+ }
+ Text {
+ id: text_0005
+ width: 150
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ text: "The quick brown fox jumps over the lazy dog. wrapMode: WordWrap "
+ font.bold: false
+ wrapMode: Text.WordWrap
+ color: "light grey"
+ font.family: "Arial"
+ font.pointSize: 12
+ }
+ Text {
+ id: text_0006
+ width: 150
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ text: "The quick brown fox jumps over the lazy dog. wrapMode: wrapAnywhere "
+ font.bold: false
+ wrapMode: Text.WrapAnywhere
+ color: "black"
+ font.family: "Arial"
+ font.pointSize: 12
+ }
+ Text {
+ id: text_0007
+ width: 150
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ text: "The quick brown fox jumps over the lazy dog. wrapMode: wrap "
+ font.bold: false
+ wrapMode: Text.Wrap
+ color: "light green"
+ font.family: "Arial"
+ font.pointSize: 12
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_arabic.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_arabic.qml
new file mode 100644
index 0000000000..5622adc117
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_arabic.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "هو أمّا حكومة القاذفات مكن, وفي تنفّس الشرقي لهيمنة أن. هو قام هزيمة وأزيز اندلاع, ومن أي وبداية الواقعة. و إخضاع الكونجرس الموسوعة حول, جُل و سابق للغزو،, به، الحرب كنقطة المارق تم. شدّت الشطر وحلفاؤها بـ أسر, هذه بمعارضة والديون باستخدام تم, بـ معاملة الجنوبي لها. وسفن لهذه الحزب قام ٣٠, من الحرة عشوائية فعل, غير ٣٠ أوسع علاقة إستمات."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_background_color.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_background_color.qml
new file mode 100644
index 0000000000..c8ca62f7e8
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_background_color.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ color: "green"
+ textFormat: Text.RichText
+ text: "<body bgcolor=lightblue>Some text<br />Some more text</body>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_bidi.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_bidi.qml
new file mode 100644
index 0000000000..9804568435
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_bidi.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "Lorem ipsum dolor sit amet, agam sonet vitae. "
+ + "جُل أم تشرشل والنازي. عل وقد كنقطة الهجوم. "
+ + "Dolorum assueverit vis ex. Zril graeci eirmod sed."
+ }
+}
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_bidi_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_bidi_selected.qml
new file mode 100644
index 0000000000..4f5b27a8d8
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_bidi_selected.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ TextEdit {
+ anchors.centerIn: parent
+ id: textEdit
+ font.family: "Arial"
+ font.pixelSize: 14
+ text: "Lorem ipsum لمّ استبدال dolor sit."
+
+ Component.onCompleted: {
+ textEdit.select(10, 18)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_capitalization.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_capitalization.qml
new file mode 100644
index 0000000000..312966f649
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_capitalization.qml
@@ -0,0 +1,47 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: upperCaseText
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.AllUppercase
+ text: "This text is all uppercase"
+ }
+
+ TextEdit {
+ id: lowerCaseText
+ anchors.top: upperCaseText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.AllLowercase
+ text: "This text is all lowercase"
+ }
+
+ TextEdit {
+ id: smallCapsText
+ anchors.top: lowerCaseText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.SmallCaps
+ text: "This text is smallcaps"
+ }
+
+ TextEdit {
+ id: capitalizedText
+ anchors.top: smallCapsText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.Capitalize
+ text: "This text is capitalized"
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_chinese.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_chinese.qml
new file mode 100644
index 0000000000..1c2229a5ff
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_chinese.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.pixelSize: 20
+ text: "禖 犿玒 鋑鋡髬 蘹蠮躘 飹勫嫢, 緁 軵逯 烍烚珜 訬軗郲 箖緌翢 毹 肒芅 瀿犨皫 迡俶倗 觛詏貁, 庌弝 訰貥郪 蹢鎒鎛 烺焆琀 槏, 蒛 犆犅 燲獯璯 耏胠臿 螒螝螜 珶珸 絼 蛃袚觙 簻臗藱, 鞁鬿 跿 堔埧娾 幨懅憴 榯 雈靮傿 裺觨誖 糋罶羬 靮傿, 氀濆 犵艿邔 谾踘遳 緱翬膞 暕 踙 毼毹 樛槷殦 忀瀸蘌"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_cyrillic.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_cyrillic.qml
new file mode 100644
index 0000000000..4943a82a92
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_cyrillic.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "Ну миров называть опа, назад всегда предназначенная для от, работали гринспана обеспечении как ну. Себе делаете написано те для, том действия проектом по, хватит комнату представим он как. Другие работал медицинское вас ты. Том такие значения ну."
+ }
+}
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_devanagari.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_devanagari.qml
new file mode 100644
index 0000000000..1f56bfcf93
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_devanagari.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "सार्वजनिक विकेन्द्रित वर्णन कोहम विषय वेबजाल दिनांक माहितीवानीज्य औषधिक लक्षण हैं। द्वारा विभाजन प्रोत्साहित मुख्य विनिमय जानकारी पहोच गयेगया विस्तरणक्षमता होगा जिसकी मुख्य रखते बिन्दुओ शारिरिक बीसबतेबोध कीने नवंबर सभिसमज संस्थान"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_left.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_left.qml
new file mode 100644
index 0000000000..a180dcc39b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_left.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: parent.width
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ textFormat: Text.RichText
+ text: "This image is to the<img align=left src=\"data/logo.png\" /> left of the text <br />More text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_right.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_right.qml
new file mode 100644
index 0000000000..1f8c1d5514
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_floating_image_right.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: parent.width
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ textFormat: Text.RichText
+ text: "This image is to the<img align=right src=\"data/logo.png\" /> right of the text <br />More text"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_hebrew.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_hebrew.qml
new file mode 100644
index 0000000000..42ec48cd1b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_hebrew.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.fill: parent
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ font.family: "Arial"
+ font.pixelSize: 20
+ text: "שמו אל קהילה אגרונומיה. שדרות בהשחתה בהתייחסות אם עוד, את עזה יוצרים אירועים. בה אנא כניסה אחרונים ופיתוחה, או כימיה הגרפים אחד. של שער הבאים קודמות טבלאות. בקרבת שימושי סוציולוגיה שער מה, מתן כלכלה משחקים או, בדף ליום ערבית למחיקה בה. מאמר המלצת פיסיקה שער בה."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_list_circle.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_list_circle.qml
new file mode 100644
index 0000000000..e314fcc256
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_list_circle.qml
@@ -0,0 +1,14 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "<html><body>Here's a list: <ul style=\"list-style-type: circle\"><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul> And some more text</body></html>"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_list_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_list_selected.qml
new file mode 100644
index 0000000000..cadb2a0fe5
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_list_selected.qml
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Here's a list: <ul><li>List item 1</li><li>List item 2</li><li>List item 3</li></ul> And some more text"
+
+ Component.onCompleted: {
+ textEdit.select(18, 30)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned.qml
new file mode 100644
index 0000000000..340b096ab3
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned.qml
@@ -0,0 +1,18 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignHCenter
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected.qml
new file mode 100644
index 0000000000..f15de61a63
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignHCenter
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+
+ Component.onCompleted: {
+ textEdit.select(50, 80)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected_eol.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected_eol.qml
new file mode 100644
index 0000000000..e9540059d2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_selected_eol.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignHCenter
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+
+ Component.onCompleted: {
+ textEdit.select(63, 67)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline.qml
new file mode 100644
index 0000000000..4570d1fa3b
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline.qml
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.underline: true
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignHCenter
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline_selected.qml
new file mode 100644
index 0000000000..6d9d0da2de
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_center_aligned_underline_selected.qml
@@ -0,0 +1,23 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.underline: true
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignRight
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+
+ Component.onCompleted: {
+ textEdit.select(50, 80)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_hebrew_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_hebrew_selected.qml
new file mode 100644
index 0000000000..f72a173ae6
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_hebrew_selected.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ text: "הבהרה לערכים אחד אל, אל הספרות אירועים ותשובות שתי, סדר בה עסקים העזרה אגרונומיה. את והוא מוסיקה סטטיסטיקה זכר. בקר העמוד לחיבור של, ויש את הקהילה ממונרכיה פסיכולוגיה. שער המזנון לויקיפדיה את, אתה סרבול ערכים בלשנות או, ריקוד האנציקלופדיה כדי דת. אל לתרום משחקים וספציפיים אחד, או מיזמי המקובל כלל. אם הקהילה משופרות אחד, בקר רפואה מדויקים של, פנאי וספציפיים כלל מה. לעתים וספציפיים סוציולוגיה עזה אל, לשון אקראי דת אחד, רקטות לויקיפדים אחד את."
+
+ Component.onCompleted: {
+ textEdit.select(50, 80)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_partial_underline.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_partial_underline.qml
new file mode 100644
index 0000000000..a32baae412
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_partial_underline.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ clip: true
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "First line<br />Second <u>line<br />Third</u> line"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned.qml
new file mode 100644
index 0000000000..c90e565ba2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned.qml
@@ -0,0 +1,18 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ clip: true
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignRight
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned_selected.qml
new file mode 100644
index 0000000000..7afd9ce1e2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_right_aligned_selected.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ horizontalAlignment: TextEdit.AlignRight
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+
+ Component.onCompleted: {
+ textEdit.select(50, 80)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_eol.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_eol.qml
new file mode 100644
index 0000000000..38dd31c484
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_eol.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+
+ Component.onCompleted: {
+ textEdit.select(63, 67)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_long.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_long.qml
new file mode 100644
index 0000000000..6cab2c4e79
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiline_selected_long.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ width: 200
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In id diam vitae enim fringilla vestibulum. Pellentesque non leo justo, quis vestibulum augue"
+
+ Component.onCompleted: {
+ textEdit.select(50, 80)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_overline.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_overline.qml
new file mode 100644
index 0000000000..4476249253
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_overline.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Qt.RichText
+ font.overline: true
+ text: "<p>First line</p><p>Second line</p><p>Third line</p>"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_partial_underline.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_partial_underline.qml
new file mode 100644
index 0000000000..664270c059
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_partial_underline.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "<p>First line</p><p>Second <u>line</u></p><p><u>Third</u> line</p>"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_selected.qml
new file mode 100644
index 0000000000..5bd327453e
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_selected.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 20
+ textFormat: Text.RichText
+ text: "<p>First line</p><p>Second line</p><p>Third line</p><p>Fourth line</p>"
+
+ Component.onCompleted: {
+ textEdit.select(18, 26)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_strikeout.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_strikeout.qml
new file mode 100644
index 0000000000..3520961e0f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_strikeout.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Qt.RichText
+ font.strikeout: true
+ text: "<p>First line</p><p>Second line</p><p>Third line</p>"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_underline.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_underline.qml
new file mode 100644
index 0000000000..d84c9f2bac
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_multiparagraph_underline.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Text {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Qt.RichText
+ font.underline: true
+ text: "<p>First line</p><p>Second line</p><p>Third line</p>"
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_overline_multisize.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_overline_multisize.qml
new file mode 100644
index 0000000000..6a827b561f
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_overline_multisize.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 10
+ font.overline: true
+ textFormat: Text.RichText
+ text: "Lorem ipsum <font size=14>dolor sit amet</font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_resize_glyph_cache.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_resize_glyph_cache.qml
new file mode 100644
index 0000000000..b305755489
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_resize_glyph_cache.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ text: "abcdefghijklmnopqrstuvwxyzABCDEFG"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_selected_inline_image.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_inline_image.qml
new file mode 100644
index 0000000000..e159d45a81
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_inline_image.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.pixelSize: 16
+ width: parent.width
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+ textFormat: Text.RichText
+ text: "This is selected from here and <img width=16 height=16 src=\"data/logo.png\" /> to here but not further"
+
+ Component.onCompleted: {
+ textEdit.select(22, 40)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_selected_ligature.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_ligature.qml
new file mode 100644
index 0000000000..1380222e25
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_ligature.qml
@@ -0,0 +1,18 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ id: textEdit
+ font.pixelSize: 16
+ font.family: "Arial"
+ text: "Are griffins birds or mammals?"
+
+ Component.onCompleted: {
+ textEdit.select(3, 8)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_selected_space.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_space.qml
new file mode 100644
index 0000000000..9fe74e0b83
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_space.qml
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ text: "Lorem Ipsum (space should be selected)"
+
+ Component.onCompleted: {
+ textEdit.select(5, 6)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_selected_space_at_eol.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_space_at_eol.qml
new file mode 100644
index 0000000000..a07b8da625
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_selected_space_at_eol.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ textFormat: Text.RichText
+ text: "Lorem <br />Ipsum (space should be selected)"
+
+ Component.onCompleted: {
+ textEdit.select(5, 6)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_selection_color.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_selection_color.qml
new file mode 100644
index 0000000000..5143ed5315
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_selection_color.qml
@@ -0,0 +1,22 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ id: textEdit
+ anchors.centerIn: parent
+ width: parent.width
+ font.pixelSize: 14
+ text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas nibh"
+ wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
+
+ selectionColor: "red"
+ selectedTextColor: "blue"
+
+ Component.onCompleted: {
+ textEdit.select(6, 17)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_strikeout_multisize.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_strikeout_multisize.qml
new file mode 100644
index 0000000000..f3c22ea9fc
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_strikeout_multisize.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 10
+ font.strikeout: true
+ textFormat: Text.RichText
+ text: "Lorem ipsum <font size=14>dolor sit amet</font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_underline_multisize.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_underline_multisize.qml
new file mode 100644
index 0000000000..a7a99e96dd
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_underline_multisize.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextEdit {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 10
+ font.underline: true
+ textFormat: Text.RichText
+ text: "Lorem ipsum <font size=14>dolor sit amet</font>, consectetur."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textedit_weight.qml b/tests/manual/scenegraph_lancelot/data/text/textedit_weight.qml
new file mode 100644
index 0000000000..0ad0c8cc26
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textedit_weight.qml
@@ -0,0 +1,104 @@
+import QtQuick 2.0
+
+//vary font.weight
+
+Item {
+ width: 320
+ height: 480
+ TextEdit {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Light
+ color: "black"
+ font.family: "Meera"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Mallige"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.DemiBold
+ color: "black"
+ font.family: "Norasi"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Bold
+ color: "black"
+ font.family: "Purisa"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0004
+ width: 150
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Black
+ color: "black"
+ font.family: "Saab"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0005
+ width: 150
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Sawasdee"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0006
+ width: 150
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Symbol"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextEdit {
+ id: text_0007
+ width: 150
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "UnBatang"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_arabic.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_arabic.qml
new file mode 100644
index 0000000000..eaa5daaee2
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_arabic.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 12
+ text: "جُل أم تشرشل والنازي. عل وقد كنقطة الهجوم."
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_bidi_selected.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_bidi_selected.qml
new file mode 100644
index 0000000000..cba63885e6
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_bidi_selected.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+ TextInput {
+ anchors.centerIn: parent
+ id: textInput
+ font.family: "Arial"
+ font.pixelSize: 14
+ text: "Lorem ipsum لمّ استبدال dolor sit."
+
+ Component.onCompleted: {
+ textInput.select(10, 18)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_capitalization.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_capitalization.qml
new file mode 100644
index 0000000000..6dd8061ff4
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_capitalization.qml
@@ -0,0 +1,47 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ id: upperCaseText
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.AllUppercase
+ text: "This text is all uppercase"
+ }
+
+ TextInput {
+ id: lowerCaseText
+ anchors.top: upperCaseText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.AllLowercase
+ text: "This text is all lowercase"
+ }
+
+ TextInput {
+ id: smallCapsText
+ anchors.top: lowerCaseText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.SmallCaps
+ text: "This text is smallcaps"
+ }
+
+ TextInput {
+ id: capitalizedText
+ anchors.top: smallCapsText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: "Arial"
+ font.pixelSize: 16
+ font.capitalization: Font.Capitalize
+ text: "This text is capitalized"
+ }
+
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_chinese.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_chinese.qml
new file mode 100644
index 0000000000..de170e422a
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_chinese.qml
@@ -0,0 +1,15 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ font.pixelSize: 12
+ text: "滊煁 罞耖茭 醙醠鍖 箯, 彃 榾毄 螏螉褩 籿紁羑"
+ }
+}
+
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_cyrillic.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_cyrillic.qml
new file mode 100644
index 0000000000..9057af8ea5
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_cyrillic.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 12
+ text: "Мы проходят состояние фактически его, две бы быстрее."
+ }
+}
+
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_devanagari.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_devanagari.qml
new file mode 100644
index 0000000000..6b45e4cb14
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_devanagari.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 12
+ text: "जिम्मे तरहथा। विस्तरणक्षमता ७हल विभाग क्षमता ढांचामात्रुभाषा जाने"
+ }
+}
+
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_echomodes.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_echomodes.qml
new file mode 100644
index 0000000000..27f9ff0d17
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_echomodes.qml
@@ -0,0 +1,42 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ Column {
+ anchors.centerIn: parent
+
+ TextInput {
+ font.pixelSize: 16
+ font.family: "Arial"
+ echoMode: TextInput.Normal
+ text: "Lorem ipsum"
+ }
+ TextInput {
+ font.pixelSize: 16
+ font.family: "Arial"
+ echoMode: TextInput.NoEcho
+ text: "Lorem ipsum"
+ }
+ TextInput {
+ font.pixelSize: 16
+ font.family: "Arial"
+ echoMode: TextInput.Password
+ text: "Lorem ipsum"
+ }
+ TextInput {
+ font.pixelSize: 16
+ font.family: "Arial"
+ echoMode: TextInput.PasswordEchoOnEdit
+ text: "Lorem ipsum"
+ }
+ TextInput {
+ font.pixelSize: 16
+ font.family: "Arial"
+ echoMode: TextInput.Password
+ passwordCharacter: "o"
+ text: "Lorem ipsum"
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_hebrew.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_hebrew.qml
new file mode 100644
index 0000000000..b591940e31
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_hebrew.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 12
+ text: "צעד גם לימודים מיתולוגיה אנתרופולוגיה, לכאן אחרים בעברית."
+ }
+}
+
+
+
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_resize_glyph_cache.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_resize_glyph_cache.qml
new file mode 100644
index 0000000000..1ab7640742
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_resize_glyph_cache.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ text: "abcdefghijklmnopqrstuvwxyzABCDEFG"
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_selected_ligature.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_selected_ligature.qml
new file mode 100644
index 0000000000..9c8b30f743
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_selected_ligature.qml
@@ -0,0 +1,18 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ anchors.centerIn: parent
+ id: textInput
+ font.pixelSize: 12
+ font.family: "Arial"
+ text: "Are griffins birds or mammals?"
+
+ Component.onCompleted: {
+ textInput.select(3, 8)
+ }
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_selected_space.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_selected_space.qml
new file mode 100644
index 0000000000..f1a4ce2099
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_selected_space.qml
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+
+Item {
+ width: 320
+ height: 480
+
+ TextInput {
+ id: textInput
+ anchors.centerIn: parent
+ font.family: "Arial"
+ font.pixelSize: 16
+ text: "Lorem Ipsum (space should be selected)"
+
+ Component.onCompleted: {
+ textInput.select(5, 6)
+ }
+ }
+
+}
diff --git a/tests/manual/scenegraph_lancelot/data/text/textinput_weight.qml b/tests/manual/scenegraph_lancelot/data/text/textinput_weight.qml
new file mode 100644
index 0000000000..3e4a4f2669
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/textinput_weight.qml
@@ -0,0 +1,104 @@
+import QtQuick 2.0
+
+//vary font.weight
+
+Item {
+ width: 320
+ height: 480
+ TextInput {
+ id: text_0000
+ anchors.top: parent.top
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Light
+ color: "black"
+ font.family: "Meera"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0001
+ anchors.top: text_0000.bottom
+ anchors.left: parent.left
+ width: 150
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Mallige"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0002
+ width: 150
+ anchors.top: text_0001.bottom
+ anchors.left: text_0001.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.DemiBold
+ color: "black"
+ font.family: "Norasi"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0003
+ width: 150
+ anchors.top: text_0002.bottom
+ anchors.left: text_0002.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Bold
+ color: "black"
+ font.family: "Purisa"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0004
+ width: 150
+ anchors.top: text_0003.bottom
+ anchors.left: text_0003.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Black
+ color: "black"
+ font.family: "Saab"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0005
+ width: 150
+ anchors.top: text_0004.bottom
+ anchors.left: text_0004.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Sawasdee"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0006
+ width: 150
+ anchors.top: text_0005.bottom
+ anchors.left: text_0005.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "Symbol"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+ TextInput {
+ id: text_0007
+ width: 150
+ anchors.top: text_0006.bottom
+ anchors.left: text_0006.left
+ text: "The quick brown fox jumps over the lazy dog. 0123456789"
+ font.weight: Font.Normal
+ color: "black"
+ font.family: "UnBatang"
+ font.pointSize: 10
+ wrapMode: Text.Wrap
+ }
+}
diff --git a/tests/manual/scenegraph_lancelot/hostinfo.sh b/tests/manual/scenegraph_lancelot/hostinfo.sh
new file mode 100644
index 0000000000..58ab9de5c1
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/hostinfo.sh
@@ -0,0 +1,90 @@
+#!/bin/sh
+#############################################################################
+##
+## Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+## Contact: http://www.qt-project.org/legal
+##
+## This file is part of the QtQml module of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and Digia. For licensing terms and
+## conditions see http://qt.digia.com/licensing. For further information
+## use the contact form at http://qt.digia.com/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 2.1 requirements
+## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## In addition, as a special exception, Digia gives you certain additional
+## rights. These rights are described in the Digia Qt LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 3.0 as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU General Public License version 3.0 requirements will be
+## met: http://www.gnu.org/copyleft/gpl.html.
+##
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+# printProperty(): prints a key-value pair from given key and cmd list.
+# If running cmd fails, or does not produce any stdout, nothing is printed.
+# Arguments: $1: key, $2: cmd, $3: optional, field specification as to cut(1) -f
+printProperty ()
+{
+ key=$1
+ val=`{ eval $2 ; } 2>/dev/null`
+ [ -n "$3" ] && val=`echo $val | tr -s '[:blank:]' '\t' | cut -f$3`
+ [ -n "$val" ] && echo $key: $val
+}
+
+# printEnvVar(): prints a key-value pair from given environment variable name.
+# key is printed as "Env_<varname>".
+# If the variable is undefined, value is printed as UNDEFINED.
+# Arguments: $1: varname
+
+printEnvVar ()
+{
+ key=Env_$1
+ val=`eval 'echo $'$1`
+ [ -z "$val" ] && val='[undefined]'
+ echo $key: $val
+}
+
+
+# printOnOff(): prints a key-value pair from given environment variable name.
+# If variable is defined, value is printed as "<key>-On"; otherwise "<key>-Off".
+# Arguments: $1: key $2: varname
+
+printOnOff ()
+{
+ key=$1
+ val=`eval 'echo $'$2`
+ if [ -z "$val" ] ; then
+ val=Off
+ else
+ val=On
+ fi
+ echo $key: $key-$val
+}
+
+# ------------
+
+printProperty Uname "uname -a"
+
+printProperty WlanMAC "ifconfig wlan0 | grep HWaddr" 5
+
+printEnvVar QMLSCENE_DEVICE
diff --git a/tests/manual/scenegraph_lancelot/scenegrabber/main.cpp b/tests/manual/scenegraph_lancelot/scenegrabber/main.cpp
new file mode 100644
index 0000000000..e112df1812
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/scenegrabber/main.cpp
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QTimer>
+#include <QtCore/QDebug>
+#include <QtCore/QFileInfo>
+#include <QtGui/QGuiApplication>
+#include <QtGui/QImage>
+
+#include <QtQuick/QQuickView>
+#include <QtQuick/QQuickItem>
+
+// Timeout values:
+
+// A valid screen grab requires the scene to not change
+// for SCENE_STABLE_TIME ms (default 500)
+#define SCENE_STABLE_TIME 500
+
+// Give up after SCENE_TIMEOUT ms
+#define SCENE_TIMEOUT 16000
+
+
+//#define GRABBERDEBUG
+
+class GrabbingView : public QQuickView
+{
+ Q_OBJECT
+
+public:
+ GrabbingView(const QString &outputFile)
+ : ofile(outputFile), frames(0), isGrabbing(false)
+ {
+ connect(this, SIGNAL(afterRendering()), SLOT(renderingDone()));
+ QTimer::singleShot(SCENE_TIMEOUT, this, SLOT(timedOut()));
+ stableSceneTimer.setSingleShot(true);
+ connect(&stableSceneTimer, SIGNAL(timeout()), SLOT(sceneStabilized()));
+ }
+
+private slots:
+ void renderingDone()
+ {
+ if (isGrabbing)
+ return;
+ isGrabbing = true;
+ frames++;
+#ifdef GRABBERDEBUG
+ printf("...frame %i\n", frames);
+#endif
+ QImage img = grabWindow();
+ //qDebug() << "Rendering done, grab is" << !img.isNull() << "timer valid:" << stableSceneTimer.isActive() << "same as last:" << (img == lastGrab);
+ if (!img.isNull() && img != lastGrab) {
+ lastGrab = img;
+ stableSceneTimer.start(SCENE_STABLE_TIME);
+ }
+ isGrabbing = false;
+ }
+
+ void sceneStabilized()
+ {
+#ifdef GRABBERDEBUG
+ printf("...sceneStabilized IN\n");
+#endif
+ if (ofile == "-") { // Write to stdout
+ QFile of;
+ if (!of.open(1, QIODevice::WriteOnly) || !lastGrab.save(&of, "ppm")) {
+ qWarning() << "Error: failed to write grabbed image to stdout.";
+ QGuiApplication::exit(2);
+ return;
+ }
+ } else {
+ if (!lastGrab.save(ofile)) {
+ qWarning() << "Error: failed to store grabbed image to" << ofile;
+ QGuiApplication::exit(2);
+ return;
+ }
+ }
+
+ QGuiApplication::exit(0);
+#ifdef GRABBERDEBUG
+ printf("...sceneStabilized OUT\n");
+#endif
+ }
+
+ void timedOut()
+ {
+ qWarning() << "Error: timed out waiting for scene to stabilize." << frames << "frame(s) received. Last grab was" << (lastGrab.isNull() ? "invalid." : "valid.");
+ QGuiApplication::exit(3);
+ }
+
+private:
+ QImage lastGrab;
+ QTimer stableSceneTimer;
+ QString ofile;
+ int frames;
+ bool isGrabbing;
+};
+
+
+extern uint qt_qhash_seed;
+
+int main(int argc, char *argv[])
+{
+ qt_qhash_seed = 0;
+
+ QGuiApplication a(argc, argv);
+
+ // Parse command line
+ QString ifile, ofile;
+ bool noText = false;
+ QStringList args = a.arguments();
+ int i = 0;
+ bool argError = false;
+ while (++i < args.size()) {
+ QString arg = args.at(i);
+ if ((arg == "-o") && (i < args.size()-1)) {
+ ofile = args.at(++i);
+ }
+ else if (arg == "-notext") {
+ noText = true;
+ }
+ else if (arg == "--cache-distance-fields") {
+ ;
+ }
+ else if (ifile.isEmpty()) {
+ ifile = arg;
+ }
+ else {
+ argError = true;
+ break;
+ }
+ }
+ if (argError || ifile.isEmpty() || ofile.isEmpty()) {
+ qWarning() << "Usage:" << args.at(0).toLatin1().constData() << "[-notext] <qml-infile> -o <outfile or - for ppm on stdout>";
+ return 1;
+ }
+
+ QFileInfo ifi(ifile);
+ if (!ifi.exists() || !ifi.isReadable() || !ifi.isFile()) {
+ qWarning() << args.at(0).toLatin1().constData() << " error: unreadable input file" << ifile;
+ return 1;
+ }
+ // End parsing
+
+ GrabbingView v(ofile);
+ v.setSource(QUrl::fromLocalFile(ifile));
+
+ if (noText) {
+ QList<QQuickItem*> items = v.rootObject()->findChildren<QQuickItem*>();
+ foreach (QQuickItem *item, items) {
+ if (QByteArray(item->metaObject()->className()).contains("Text"))
+ item->setVisible(false);
+ }
+ }
+
+ v.show();
+
+ int retVal = a.exec();
+#ifdef GRABBERDEBUG
+ printf("...retVal=%i\n", retVal);
+#endif
+
+ return retVal;
+}
+
+#include "main.moc"
diff --git a/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro b/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro
new file mode 100644
index 0000000000..24f0f8a315
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/scenegrabber/scenegrabber.pro
@@ -0,0 +1,8 @@
+TARGET = qmlscenegrabber
+DESTDIR=..
+macx:CONFIG -= app_bundle
+CONFIG += console
+
+QT += quick
+
+SOURCES += main.cpp
diff --git a/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro b/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro
new file mode 100644
index 0000000000..24f4f18739
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/scenegraph/scenegraph.pro
@@ -0,0 +1,11 @@
+CONFIG += testcase insignificant_test
+TARGET = tst_scenegraph
+DESTDIR=..
+macx:CONFIG -= app_bundle
+CONFIG += console
+
+SOURCES += tst_scenegraph.cpp
+
+# Include Lancelot protocol code to communicate with baseline server.
+# Assuming that we are in a normal Qt5 source code tree
+include(../../../../../qtbase/tests/baselineserver/shared/qbaselinetest.pri)
diff --git a/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp b/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp
new file mode 100644
index 0000000000..fb26b80cc1
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/scenegraph/tst_scenegraph.cpp
@@ -0,0 +1,271 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qbaselinetest.h>
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDirIterator>
+#include <QtCore/QDebug>
+#include <QtCore/QProcess>
+#include <QtGui/QImage>
+
+
+QString blockify(const QByteArray& s)
+{
+ const char* indent = "\n | ";
+ QByteArray block = s.trimmed();
+ block.replace('\n', indent);
+ block.prepend(indent);
+ block.append('\n');
+ return block;
+}
+
+
+class tst_Scenegraph : public QObject
+{
+ Q_OBJECT
+
+public:
+ tst_Scenegraph();
+
+private Q_SLOTS:
+ void initTestCase();
+ void cleanup();
+ void testNoTextRendering_data();
+ void testNoTextRendering();
+ void testRendering_data();
+ void testRendering();
+
+private:
+ void setupTestSuite(const QByteArray& filter = QByteArray());
+ void runTest(const QStringList& extraArgs = QStringList());
+ bool renderAndGrab(const QString& qmlFile, const QStringList& extraArgs, QImage *screenshot, QString *errMsg);
+ quint16 checksumFileOrDir(const QString &path);
+
+ int consecutiveErrors; // Not test failures (image mismatches), but system failures (so no image at all)
+ bool aborted; // This run given up because of too many system failures
+};
+
+
+tst_Scenegraph::tst_Scenegraph()
+ : consecutiveErrors(0), aborted(false)
+{
+}
+
+
+void tst_Scenegraph::initTestCase()
+{
+ QByteArray msg;
+ if (!QBaselineTest::connectToBaselineServer(&msg))
+ QSKIP(msg);
+}
+
+
+void tst_Scenegraph::cleanup()
+{
+ // Allow subsystems time to settle
+ if (!aborted)
+ QTest::qWait(200);
+}
+
+void tst_Scenegraph::testNoTextRendering_data()
+{
+ setupTestSuite("text/");
+ consecutiveErrors = 0;
+ aborted = false;
+}
+
+
+void tst_Scenegraph::testNoTextRendering()
+{
+ runTest(QStringList() << "-notext");
+}
+
+
+void tst_Scenegraph::testRendering_data()
+{
+ setupTestSuite();
+ consecutiveErrors = 0;
+ aborted = false;
+}
+
+
+void tst_Scenegraph::testRendering()
+{
+ runTest();
+}
+
+
+void tst_Scenegraph::setupTestSuite(const QByteArray& filter)
+{
+ QTest::addColumn<QString>("qmlFile");
+ int numItems = 0;
+
+ QString testSuiteDir = QLatin1String("data");
+ QString testSuiteLocation = QCoreApplication::applicationDirPath();
+ QString testSuitePath = testSuiteLocation + QDir::separator() + testSuiteDir;
+ QFileInfo fi(testSuitePath);
+ if (!fi.exists() || !fi.isDir() || !fi.isReadable())
+ QSKIP("Test suite data directory missing or unreadable: " + testSuitePath.toLatin1());
+
+ QStringList ignoreItems;
+ QFile ignoreFile(testSuitePath + "/Ignore");
+ if (ignoreFile.open(QIODevice::ReadOnly)) {
+ while (!ignoreFile.atEnd()) {
+ QByteArray line = ignoreFile.readLine().trimmed();
+ if (!line.isEmpty() && !line.startsWith('#'))
+ ignoreItems += line;
+ }
+ }
+
+ QStringList itemFiles;
+ QDirIterator it(testSuitePath, QDirIterator::Subdirectories);
+ while (it.hasNext()) {
+ QString fp = it.next();
+ if (fp.endsWith(".qml")) {
+ QString itemName = fp.mid(testSuitePath.length() + 1);
+ if (!ignoreItems.contains(itemName) && (filter.isEmpty() || !itemName.startsWith(filter)))
+ itemFiles.append(it.filePath());
+ }
+ }
+
+ qSort(itemFiles);
+ foreach (const QString &filePath, itemFiles) {
+ QByteArray itemName = filePath.mid(testSuitePath.length() + 1).toLatin1();
+ QBaselineTest::newRow(itemName, checksumFileOrDir(filePath)) << filePath;
+ numItems++;
+ }
+
+ if (!numItems)
+ QSKIP("No .qml test files found in " + testSuitePath.toLatin1());
+}
+
+
+void tst_Scenegraph::runTest(const QStringList& extraArgs)
+{
+ // qDebug() << "Rendering" << QTest::currentDataTag();
+
+ if (aborted)
+ QSKIP("System too unstable.");
+
+ QFETCH(QString, qmlFile);
+
+ QImage screenShot;
+ QString errorMessage;
+ if (renderAndGrab(qmlFile, extraArgs, &screenShot, &errorMessage)) {
+ consecutiveErrors = 0;
+ }
+ else {
+ if (++consecutiveErrors >= 3)
+ aborted = true; // Just give up if screen grabbing fails 3 times in a row
+ QFAIL(qPrintable("QuickView grabbing failed: " + errorMessage));
+ }
+
+ QBASELINE_TEST(screenShot);
+}
+
+
+bool tst_Scenegraph::renderAndGrab(const QString& qmlFile, const QStringList& extraArgs, QImage *screenshot, QString *errMsg)
+{
+ bool usePipe = true; // Whether to transport the grabbed image using temp. file or pipe. TBD: cmdline option
+ QProcess grabber;
+ QString cmd = QCoreApplication::applicationDirPath() + "/qmlscenegrabber";
+ QStringList args = extraArgs;
+ QString tmpfile = usePipe ? QString("-") : QString("/tmp/qmlscenegrabber-%1-out.ppm").arg(QCoreApplication::applicationPid());
+ args << qmlFile << "-o" << tmpfile;
+ grabber.start(cmd, args, QIODevice::ReadOnly);
+ grabber.waitForFinished(17000); //### hardcoded, must be larger than the scene timeout in qmlscenegrabber
+ if (grabber.state() != QProcess::NotRunning) {
+ grabber.terminate();
+ grabber.waitForFinished(3000);
+ }
+ QImage img;
+ bool res = usePipe ? img.load(&grabber, "ppm") : img.load(tmpfile);
+ if (!res || img.isNull()) {
+ if (errMsg) {
+ QString s("Failed to grab screen. qmlscenegrabber exitcode: %1. Process error: %2. Stderr:%3");
+ *errMsg = s.arg(grabber.exitCode()).arg(grabber.errorString()).arg(blockify(grabber.readAllStandardError()));
+ }
+ if (!usePipe)
+ QFile::remove(tmpfile);
+ return false;
+ }
+ if (screenshot)
+ *screenshot = img;
+ if (!usePipe)
+ QFile::remove(tmpfile);
+ return true;
+}
+
+
+quint16 tst_Scenegraph::checksumFileOrDir(const QString &path)
+{
+ QFileInfo fi(path);
+ if (!fi.exists() || !fi.isReadable())
+ return 0;
+ if (fi.isFile()) {
+ QFile f(path);
+ f.open(QIODevice::ReadOnly);
+ QByteArray contents = f.readAll();
+ return qChecksum(contents.constData(), contents.size());
+ }
+ if (fi.isDir()) {
+ static const QStringList nameFilters = QStringList() << "*.qml" << "*.cpp" << "*.png" << "*.jpg";
+ quint16 cs = 0;
+ foreach (QString item, QDir(fi.filePath()).entryList(nameFilters, QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot))
+ cs ^= checksumFileOrDir(path + "/" + item);
+ return cs;
+ }
+ return 0;
+}
+
+
+#define main _realmain
+QTEST_MAIN(tst_Scenegraph)
+#undef main
+
+int main(int argc, char *argv[])
+{
+ QBaselineTest::handleCmdLineArgs(&argc, &argv);
+ return _realmain(argc, argv);
+}
+
+#include "tst_scenegraph.moc"
diff --git a/tests/manual/scenegraph_lancelot/scenegraph_lancelot.pro b/tests/manual/scenegraph_lancelot/scenegraph_lancelot.pro
new file mode 100644
index 0000000000..55efdfcf21
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/scenegraph_lancelot.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+CONFIG += ordered
+SUBDIRS = scenegrabber scenegraph