summaryrefslogtreecommitdiffstats
path: root/examples/declarative/aspectratio/face_fit.qml
diff options
context:
space:
mode:
authorWarwick Allison <warwick.allison@nokia.com>2009-05-01 00:13:10 (GMT)
committerWarwick Allison <warwick.allison@nokia.com>2009-05-01 00:13:10 (GMT)
commit8650453c304a350ac3fb3e43b2f0b3aaa8ed0217 (patch)
tree0c50b08cde6812c577b3b6cf8ba3f0e701734772 /examples/declarative/aspectratio/face_fit.qml
parent0e664dabc5b7325634e54d120eb374940497ca0f (diff)
downloadQt-8650453c304a350ac3fb3e43b2f0b3aaa8ed0217.zip
Qt-8650453c304a350ac3fb3e43b2f0b3aaa8ed0217.tar.gz
Qt-8650453c304a350ac3fb3e43b2f0b3aaa8ed0217.tar.bz2
Show how to achieve aspect-ratio-maintaining effects.
Diffstat (limited to 'examples/declarative/aspectratio/face_fit.qml')
-rw-r--r--examples/declarative/aspectratio/face_fit.qml26
1 files changed, 26 insertions, 0 deletions
diff --git a/examples/declarative/aspectratio/face_fit.qml b/examples/declarative/aspectratio/face_fit.qml
new file mode 100644
index 0000000..35c63ce
--- /dev/null
+++ b/examples/declarative/aspectratio/face_fit.qml
@@ -0,0 +1,26 @@
+// The Image primitive does not have any special handling for maintaining
+// aspect ratio. This example shows that you can provide whatever specific
+// behaviour you like.
+//
+// Here, we implement a hybrid of the "scale to fit" and "scale and crop"
+// behaviours which will crop up to 25% from *one* dimension if necessary
+// to fully scale the other. This is a realistic algorithm, for example
+// when the edges of the image contain less vital information than the
+// center - such as a face.
+//
+Rect {
+ // default size: whole image, unscaled
+ width: Image.width
+ height: Image.height
+ color: "gray"
+ clip: true
+
+ Image {
+ id: Image
+ source: "pics/face.png"
+ x: (parent.width-width*scale)/2
+ y: (parent.height-height*scale)/2
+ scale: Math.max(Math.min(parent.width/width*1.333,parent.height/height),
+ Math.min(parent.width/width,parent.height/height*1.333))
+ }
+}