diff options
Diffstat (limited to 'demos/mobile/qtbubblelevel')
34 files changed, 3143 insertions, 0 deletions
diff --git a/demos/mobile/qtbubblelevel/accelerometerfilter.cpp b/demos/mobile/qtbubblelevel/accelerometerfilter.cpp new file mode 100644 index 0000000..2d3a48a --- /dev/null +++ b/demos/mobile/qtbubblelevel/accelerometerfilter.cpp @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <math.h> +#include "accelerometerfilter.h" + +#define RADIANS_TO_DEGREES 57.2957795 + +AccelerometerFilter::AccelerometerFilter() + : x(0), y(0), z(0) +{ +} + +//! [0] +bool AccelerometerFilter::filter(QAccelerometerReading *reading) +{ + qreal rx = reading->x(); + qreal ry = reading->y(); + qreal rz = reading->z(); + + qreal divider = sqrt(rx * rx + ry * ry + rz * rz); + + // Lowpass factor +#ifdef Q_OS_SYMBIAN + float lowPassFactor = 0.10; +#else + float lowPassFactor = 0.05; +#endif + + // Calculate the axis angles in degrees and reduce the noise in sensor + // readings. + x += (acos(rx / divider) * RADIANS_TO_DEGREES - 90 - x) * lowPassFactor; + y += (acos(ry / divider) * RADIANS_TO_DEGREES - 90 - y) * lowPassFactor; + z += (acos(rz / divider) * RADIANS_TO_DEGREES - 90 - z) * lowPassFactor; + + // The orientations of the accelerometers are different between + // Symbian and Maemo devices so we use the different axes + // depending on the platform. +#if defined(Q_OS_SYMBIAN) + emit rotationChanged(-y); +#else + emit rotationChanged(x); +#endif + + // Don't store the reading in the sensor. + return false; +} +//! [0] diff --git a/demos/mobile/qtbubblelevel/accelerometerfilter.h b/demos/mobile/qtbubblelevel/accelerometerfilter.h new file mode 100644 index 0000000..0eeffa3 --- /dev/null +++ b/demos/mobile/qtbubblelevel/accelerometerfilter.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ACCELEROMETERFILTER_H +#define ACCELEROMETERFILTER_H + +//! [0] +#include <QAccelerometerFilter> +#include <QVariant> + +QTM_USE_NAMESPACE + +class AccelerometerFilter + : public QObject, public QAccelerometerFilter +{ + Q_OBJECT + +protected: + qreal x; + qreal y; + qreal z; + +public: + AccelerometerFilter(); + bool filter(QAccelerometerReading *reading); + +signals: + void rotationChanged(const QVariant °); +}; +//! [0] + +#endif // ACCELEROMETERFILTER_H diff --git a/demos/mobile/qtbubblelevel/debian/changelog b/demos/mobile/qtbubblelevel/debian/changelog new file mode 100644 index 0000000..0413145 --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/changelog @@ -0,0 +1,19 @@ +qtbubblelevel (1.2.0) stable; urgency=low + + * Improved the usability of the calibration dialog. + + -- Forum Nokia <FN.Documentation@nokia.com> Wed, 16 Feb 2011 12:59:30 +0100 + +qtbubblelevel (1.1.0) stable; urgency=low + + * QtMobility Rotation sensor support + + -- Antonio Aloisio <antonio.aloisio@nokia.com> Tue, 15 Jun 2010 9:03:02 +0100 + + +qtbubblelevel (1.0.0) unstable; urgency=low + + * Initial release + + -- Antonio Aloisio <antonio.aloisio@nokia.com> Tue, 15 Jun 2010 9:03:02 +0100 + diff --git a/demos/mobile/qtbubblelevel/debian/compat b/demos/mobile/qtbubblelevel/debian/compat new file mode 100644 index 0000000..7f8f011 --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/compat @@ -0,0 +1 @@ +7 diff --git a/demos/mobile/qtbubblelevel/debian/control b/demos/mobile/qtbubblelevel/debian/control new file mode 100644 index 0000000..5980327 --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/control @@ -0,0 +1,12 @@ +Source: qtbubblelevel +Section: user/games +Priority: extra +Maintainer: Forum Nokia <FN.Documentation@nokia.com> +Build-Depends: debhelper (>= 5), libqt4-dev, libqtm-sensors +Standards-Version: 3.7.3 + +Package: qtbubblelevel +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Qt Bubble Level example + QtQuick example diff --git a/demos/mobile/qtbubblelevel/debian/copyright b/demos/mobile/qtbubblelevel/debian/copyright new file mode 100644 index 0000000..e8dea63 --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/copyright @@ -0,0 +1,36 @@ +This package was debianized by unknown <anonymous@digia.com> on +Tue, 15 Jun 2010 9:03:02 +0100. + +It was downloaded from <fill in http/ftp site> + +Upstream Author: <put author(s) name and email here> + +Copyright: <put the year(s) of the copyright, and the names of the + copyright holder(s) here> + +License: + + This package is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. + + +The Debian packaging is (C) 2010, unknown <anonymous@digia.com> and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. + + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff --git a/demos/mobile/qtbubblelevel/debian/dirs b/demos/mobile/qtbubblelevel/debian/dirs new file mode 100644 index 0000000..80507f1 --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/share/applications/hildon diff --git a/demos/mobile/qtbubblelevel/debian/files b/demos/mobile/qtbubblelevel/debian/files new file mode 100644 index 0000000..3d43242 --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/files @@ -0,0 +1 @@ +qtbubblelevel_1.2.0_armel.deb user/games extra diff --git a/demos/mobile/qtbubblelevel/debian/postinst b/demos/mobile/qtbubblelevel/debian/postinst new file mode 100644 index 0000000..79fb6dd --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/postinst @@ -0,0 +1,5 @@ +#!/bin/sh -e + +gtk-update-icon-cache -f /usr/share/icons/hicolor + +exit 0 diff --git a/demos/mobile/qtbubblelevel/debian/rules b/demos/mobile/qtbubblelevel/debian/rules new file mode 100644 index 0000000..f18b9cd --- /dev/null +++ b/demos/mobile/qtbubblelevel/debian/rules @@ -0,0 +1,91 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + + + + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + #docbook-to-man debian/qtbubblelevel.sgml > qtbubblelevel.1 + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + $(MAKE) clean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/qtbubblelevel. + $(MAKE) INSTALL_ROOT="$(CURDIR)"/debian/qtbubblelevel install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link +# dh_strip + dh_compress + dh_fixperms +# dh_perl + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/demos/mobile/qtbubblelevel/icons/26x26/qtbubblelevel.png b/demos/mobile/qtbubblelevel/icons/26x26/qtbubblelevel.png Binary files differnew file mode 100644 index 0000000..ae34ccf --- /dev/null +++ b/demos/mobile/qtbubblelevel/icons/26x26/qtbubblelevel.png diff --git a/demos/mobile/qtbubblelevel/icons/40x40/qtbubblelevel.png b/demos/mobile/qtbubblelevel/icons/40x40/qtbubblelevel.png Binary files differnew file mode 100644 index 0000000..6230f55 --- /dev/null +++ b/demos/mobile/qtbubblelevel/icons/40x40/qtbubblelevel.png diff --git a/demos/mobile/qtbubblelevel/icons/64x64/qtbubblelevel.png b/demos/mobile/qtbubblelevel/icons/64x64/qtbubblelevel.png Binary files differnew file mode 100644 index 0000000..375326c --- /dev/null +++ b/demos/mobile/qtbubblelevel/icons/64x64/qtbubblelevel.png diff --git a/demos/mobile/qtbubblelevel/icons/bubblelevel.svg b/demos/mobile/qtbubblelevel/icons/bubblelevel.svg new file mode 100644 index 0000000..a3c30df --- /dev/null +++ b/demos/mobile/qtbubblelevel/icons/bubblelevel.svg @@ -0,0 +1,264 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="128" + height="128" + id="svg2" + version="1.1" + inkscape:version="0.48.0 r9654" + sodipodi:docname="bubblelevel.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.98994949" + inkscape:cx="599.30983" + inkscape:cy="93.17066" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1680" + inkscape:window-height="1003" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-924.36218)"> + <image + y="923.61945" + x="0.05510572" + id="image2993" + xlink:href="data:image/png;base64,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 +" + height="129" + width="128" /> + </g> +</svg> diff --git a/demos/mobile/qtbubblelevel/icons/qtbl_icon.png b/demos/mobile/qtbubblelevel/icons/qtbl_icon.png Binary files differnew file mode 100644 index 0000000..780fbb4 --- /dev/null +++ b/demos/mobile/qtbubblelevel/icons/qtbl_icon.png diff --git a/demos/mobile/qtbubblelevel/icons/xpm/qtbubblelevel.xpm b/demos/mobile/qtbubblelevel/icons/xpm/qtbubblelevel.xpm new file mode 100644 index 0000000..19f3c2f --- /dev/null +++ b/demos/mobile/qtbubblelevel/icons/xpm/qtbubblelevel.xpm @@ -0,0 +1,1783 @@ +/* XPM */ +static char * qtbubblelevel_xpm[] = { +"64 64 1716 2", +" c None", +". c #BBD2A8", +"+ c #BBD1A8", +"@ c #BFD3A5", +"# c #C0D2AA", +"$ c #A4B594", +"% c #94A488", +"& c #B2C3A5", +"* c #A5B694", +"= c #A6B893", +"- c #A7B993", +"; c #A8BA93", +"> c #A6B891", +", c #A7B992", +"' c #A7B792", +") c #A7B896", +"! c #A8B997", +"~ c #A9BA98", +"{ c #ABBC99", +"] c #AABB99", +"^ c #AABB98", +"/ c #A8B996", +"( c #A9BA97", +"_ c #ADBC94", +": c #ACBA95", +"< c #ABB895", +"[ c #ADBC9A", +"} c #B6C3A5", +"| c #95A285", +"1 c #A9BA99", +"2 c #BDD4AA", +"3 c #AFC897", +"4 c #AFC898", +"5 c #AFC797", +"6 c #B4C994", +"7 c #B4C799", +"8 c #97A981", +"9 c #839570", +"0 c #8C9E7A", +"a c #7B8C65", +"b c #7E9167", +"c c #7D9268", +"d c #7E9268", +"e c #7E926A", +"f c #82966E", +"g c #859972", +"h c #889B74", +"i c #8CA07A", +"j c #8FA37D", +"k c #91A47E", +"l c #93A680", +"m c #94A881", +"n c #93A781", +"o c #95A983", +"p c #96AA83", +"q c #94A882", +"r c #94A880", +"s c #94A780", +"t c #93A47A", +"u c #90A079", +"v c #8D9C77", +"w c #8B9A78", +"x c #98A787", +"y c #879576", +"z c #9CAE89", +"A c #B1CA9A", +"B c #B1C999", +"C c #A7BF8A", +"D c #A8C18A", +"E c #A8C18B", +"F c #A8C08A", +"G c #ACC286", +"H c #ACC08A", +"I c #93A677", +"J c #7A8C63", +"K c #7A8D62", +"L c #778A5D", +"M c #7C905F", +"N c #799162", +"O c #7A9163", +"P c #799063", +"Q c #7B9363", +"R c #7C9464", +"S c #7C9465", +"T c #819869", +"U c #849C6D", +"V c #89A071", +"W c #8DA478", +"X c #90A77C", +"Y c #94AB80", +"Z c #96AD82", +"` c #97AE83", +" . c #96AE83", +".. c #98AD82", +"+. c #99AF84", +"@. c #9AB085", +"#. c #99B085", +"$. c #98AE83", +"%. c #97AD81", +"&. c #96A97D", +"*. c #91A378", +"=. c #8C9F76", +"-. c #879973", +";. c #879875", +">. c #819271", +",. c #96AA80", +"'. c #AAC38C", +"). c #A9C28C", +"!. c #A7C189", +"~. c #A8C189", +"{. c #A2BB80", +"]. c #A2BB82", +"^. c #A1BA81", +"/. c #A4BD83", +"(. c #A3BD82", +"_. c #A5BC7D", +":. c #A4B980", +"<. c #8CA06F", +"[. c #798B5F", +"}. c #788B5E", +"|. c #7A8D5D", +"1. c #7D935F", +"2. c #7A9661", +"3. c #7C9762", +"4. c #7C9763", +"5. c #819B66", +"6. c #829D68", +"7. c #829D66", +"8. c #819C65", +"9. c #849F68", +"0. c #86A16A", +"a. c #87A26C", +"b. c #8CA674", +"c. c #8FA979", +"d. c #92AD7D", +"e. c #95AF7F", +"f. c #96B080", +"g. c #97B180", +"h. c #98B282", +"i. c #9AB383", +"j. c #9AB483", +"k. c #99B282", +"l. c #97B080", +"m. c #96AF7F", +"n. c #93A879", +"o. c #8DA375", +"p. c #889D72", +"q. c #81966D", +"r. c #7E926B", +"s. c #7B8E6A", +"t. c #94A97C", +"u. c #A4BD84", +"v. c #A3BC82", +"w. c #A1BA82", +"x. c #A2BB83", +"y. c #A3BB84", +"z. c #A5BD86", +"A. c #A5BD85", +"B. c #A6BC7F", +"C. c #A5BA83", +"D. c #90A274", +"E. c #7D9165", +"F. c #7E9266", +"G. c #7E9262", +"H. c #809662", +"I. c #7E9C61", +"J. c #819E64", +"K. c #83A166", +"L. c #88A56B", +"M. c #89A76C", +"N. c #89A769", +"O. c #8BA96B", +"P. c #8CAB6B", +"Q. c #8FAD74", +"R. c #92AF79", +"S. c #95B27C", +"T. c #97B57E", +"U. c #98B67E", +"V. c #9AB880", +"W. c #9CB982", +"X. c #9CBA83", +"Y. c #9DBA83", +"Z. c #9BB881", +"`. c #99B67F", +" + c #98B57E", +".+ c #96B27D", +"++ c #93AB79", +"@+ c #8CA574", +"#+ c #879F70", +"$+ c #829A6D", +"%+ c #80976D", +"&+ c #7D946C", +"*+ c #95AC7D", +"=+ c #A4BC85", +"-+ c #A3BA84", +";+ c #A3BC84", +">+ c #A4BC88", +",+ c #A4BC89", +"'+ c #A6BE8B", +")+ c #A5BE8A", +"!+ c #A7BC83", +"~+ c #A8BC88", +"{+ c #94A77B", +"]+ c #85976F", +"^+ c #869870", +"/+ c #83966B", +"(+ c #859A69", +"_+ c #84A365", +":+ c #88A869", +"<+ c #8CAC6D", +"[+ c #90B071", +"}+ c #91B172", +"|+ c #91B170", +"1+ c #91B26D", +"2+ c #91B26E", +"3+ c #91B16E", +"4+ c #90B16C", +"5+ c #93B370", +"6+ c #95B376", +"7+ c #96B47A", +"8+ c #99B87E", +"9+ c #9CBA80", +"0+ c #9BBA80", +"a+ c #9EBD82", +"b+ c #9FBE83", +"c+ c #A0BF84", +"d+ c #9DBB81", +"e+ c #9BBA7F", +"f+ c #9AB97E", +"g+ c #98B67D", +"h+ c #93AD79", +"i+ c #8DA874", +"j+ c #87A271", +"k+ c #849E6F", +"l+ c #849E72", +"m+ c #80996F", +"n+ c #96AE80", +"o+ c #A5BD8A", +"p+ c #A3BB88", +"q+ c #A7BF8C", +"r+ c #A6BE8C", +"s+ c #A8C08E", +"t+ c #A8C08D", +"u+ c #A8C08B", +"v+ c #A8BE8B", +"w+ c #95AA80", +"x+ c #899C7A", +"y+ c #8B9F78", +"z+ c #879C71", +"A+ c #879E71", +"B+ c #8AA86E", +"C+ c #8EAD70", +"D+ c #92B274", +"E+ c #94B776", +"F+ c #94B875", +"G+ c #93B872", +"H+ c #93B973", +"I+ c #97B976", +"J+ c #96B976", +"K+ c #98B976", +"L+ c #98BB77", +"M+ c #97B97A", +"N+ c #99BA7D", +"O+ c #9ABB7E", +"P+ c #9BBD80", +"Q+ c #9EBF82", +"R+ c #9FC082", +"S+ c #9FC183", +"T+ c #A1C284", +"U+ c #A0C184", +"V+ c #A3BF88", +"W+ c #A3C086", +"X+ c #A3C087", +"Y+ c #9FBC82", +"Z+ c #9EBC80", +"`+ c #9EBB80", +" @ c #9AB77C", +".@ c #92AF78", +"+@ c #8DA87A", +"@@ c #89A279", +"#@ c #869F74", +"$@ c #8CA378", +"%@ c #889D73", +"&@ c #9AB084", +"*@ c #A7BF8D", +"=@ c #A5BD8B", +"-@ c #A6BE87", +";@ c #A6BF87", +">@ c #A5BF87", +",@ c #A7BF89", +"'@ c #A6C087", +")@ c #93AB7E", +"!@ c #8A9E7D", +"~@ c #8FA67B", +"{@ c #849D6D", +"]@ c #88A072", +"^@ c #8BA971", +"/@ c #8FAF73", +"(@ c #92B675", +"_@ c #94BA74", +":@ c #92BC71", +"<@ c #91BE6D", +"[@ c #94BE71", +"}@ c #96BC78", +"|@ c #97BD78", +"1@ c #96BD78", +"2@ c #98BF7A", +"3@ c #99BF7A", +"4@ c #9CC27E", +"5@ c #9BC17D", +"6@ c #9DC380", +"7@ c #9EC480", +"8@ c #9EC380", +"9@ c #A1C185", +"0@ c #A1C282", +"a@ c #9DBE7E", +"b@ c #9DBE7D", +"c@ c #9CBD7B", +"d@ c #97B875", +"e@ c #92B273", +"f@ c #8CA97B", +"g@ c #88A17C", +"h@ c #879E74", +"i@ c #8DA074", +"j@ c #9BB081", +"k@ c #A7C089", +"l@ c #A5BE88", +"m@ c #A6BF86", +"n@ c #93AF6E", +"o@ c #94B06E", +"p@ c #93B06E", +"q@ c #93B070", +"r@ c #95B16F", +"s@ c #809B63", +"t@ c #758F61", +"u@ c #86A16B", +"v@ c #6F8A50", +"w@ c #728F58", +"x@ c #729757", +"y@ c #789E5B", +"z@ c #7DA75D", +"A@ c #7EAC5C", +"B@ c #7EAE5A", +"C@ c #81B259", +"D@ c #81B25D", +"E@ c #83B061", +"F@ c #83B161", +"G@ c #85B363", +"H@ c #84B363", +"I@ c #86B465", +"J@ c #86B565", +"K@ c #86B464", +"L@ c #88B666", +"M@ c #88B767", +"N@ c #8BB468", +"O@ c #8BB568", +"P@ c #8BB567", +"Q@ c #89B263", +"R@ c #87B163", +"S@ c #84AD5F", +"T@ c #7EA759", +"U@ c #7C9E59", +"V@ c #78955F", +"W@ c #728E5E", +"X@ c #748F5A", +"Y@ c #889F68", +"Z@ c #7A905E", +"`@ c #88A06A", +" # c #97B472", +".# c #97B372", +"+# c #94B06F", +"@# c #94B06D", +"## c #7A994D", +"$# c #7A9A4E", +"%# c #799A4E", +"&# c #799A4B", +"*# c #607E3B", +"=# c #537038", +"-# c #6F8E4D", +";# c #52712B", +"># c #4D6D2C", +",# c #4C752E", +"'# c #537D32", +")# c #598737", +"!# c #5D8E38", +"~# c #5E9337", +"{# c #619838", +"]# c #62993B", +"^# c #62963B", +"/# c #62973B", +"(# c #64993D", +"_# c #63993C", +":# c #65993E", +"<# c #659A3E", +"[# c #649A3D", +"}# c #669A40", +"|# c #679B40", +"1# c #679B3F", +"2# c #6A9B3B", +"3# c #6A9B3C", +"4# c #6A9B3D", +"5# c #67983C", +"6# c #65953B", +"7# c #5F9036", +"8# c #59882F", +"9# c #577B30", +"0# c #517334", +"a# c #4D6D30", +"b# c #557533", +"c# c #708C4B", +"d# c #587037", +"e# c #6B8647", +"f# c #7C9C50", +"g# c #719440", +"h# c #719540", +"i# c #71953F", +"j# c #709441", +"k# c #6F933D", +"l# c #56792E", +"m# c #496929", +"n# c #6B8D45", +"o# c #527528", +"p# c #40631C", +"q# c #406920", +"r# c #436E21", +"s# c #4A7826", +"t# c #4F8129", +"u# c #518729", +"v# c #558C2A", +"w# c #568E2B", +"x# c #568D2B", +"y# c #578F2B", +"z# c #57902C", +"A# c #59912D", +"B# c #59912C", +"C# c #59912E", +"D# c #59902D", +"E# c #5D9228", +"F# c #5C9027", +"G# c #5A8E2A", +"H# c #5A8D2C", +"I# c #56892B", +"J# c #508226", +"K# c #4A7B23", +"L# c #476E21", +"M# c #416721", +"N# c #3F631E", +"O# c #577A2F", +"P# c #6A8A42", +"Q# c #4A6529", +"R# c #5D7C38", +"S# c #709440", +"T# c #6A913A", +"U# c #6B923A", +"V# c #6A923B", +"W# c #699037", +"X# c #507528", +"Y# c #436724", +"Z# c #678C41", +"`# c #5E8533", +" $ c #42671D", +".$ c #3E631D", +"+$ c #3F671D", +"@$ c #456E20", +"#$ c #4A7823", +"$$ c #4C7D23", +"%$ c #518325", +"&$ c #528625", +"*$ c #528923", +"=$ c #548A24", +"-$ c #558C26", +";$ c #568D27", +">$ c #568C25", +",$ c #588B23", +"'$ c #578924", +")$ c #558626", +"!$ c #538328", +"~$ c #4E7D28", +"{$ c #487625", +"]$ c #437020", +"^$ c #3D671B", +"/$ c #3B621B", +"($ c #436920", +"_$ c #618538", +":$ c #66883E", +"<$ c #446126", +"[$ c #597935", +"}$ c #668E36", +"|$ c #668E35", +"1$ c #658D36", +"2$ c #648C33", +"3$ c #4B7225", +"4$ c #416522", +"5$ c #61873B", +"6$ c #658B3B", +"7$ c #52762D", +"8$ c #3E5D1B", +"9$ c #3D5E19", +"0$ c #40641B", +"a$ c #466E1E", +"b$ c #48731E", +"c$ c #4D7921", +"d$ c #4F7F21", +"e$ c #4F821F", +"f$ c #518421", +"g$ c #538622", +"h$ c #538723", +"i$ c #548722", +"j$ c #548724", +"k$ c #548723", +"l$ c #558320", +"m$ c #538122", +"n$ c #517E24", +"o$ c #4D7926", +"p$ c #477326", +"q$ c #416B22", +"r$ c #3B661D", +"s$ c #376117", +"t$ c #39611C", +"u$ c #50772D", +"v$ c #63893A", +"w$ c #60833A", +"x$ c #405E25", +"y$ c #547633", +"z$ c #628A33", +"A$ c #628A32", +"B$ c #608833", +"C$ c #638832", +"D$ c #4E6E28", +"E$ c #436023", +"F$ c #608038", +"G$ c #638835", +"H$ c #5C8334", +"I$ c #446720", +"J$ c #375A16", +"K$ c #3B5F1C", +"L$ c #3F6420", +"M$ c #42681E", +"N$ c #486F1E", +"O$ c #49761E", +"P$ c #497A21", +"Q$ c #4C7D21", +"R$ c #4E8022", +"S$ c #508122", +"T$ c #518222", +"U$ c #528423", +"V$ c #518322", +"W$ c #518324", +"X$ c #518323", +"Y$ c #4F811C", +"Z$ c #50821B", +"`$ c #50821D", +" % c #50821F", +".% c #508221", +"+% c #4F811F", +"@% c #4F8020", +"#% c #517B21", +"$% c #4F7921", +"%% c #4C7522", +"&% c #497122", +"*% c #41691F", +"=% c #3E651E", +"-% c #385F19", +";% c #355D11", +">% c #436A1E", +",% c #5C8132", +"'% c #618535", +")% c #5D7C33", +"!% c #405C1F", +"~% c #52732C", +"{% c #618A33", +"]% c #5D8630", +"^% c #5E8630", +"/% c #5E8530", +"(% c #5C832F", +"_% c #608330", +":% c #4E6A28", +"<% c #425B22", +"[% c #5F7C35", +"}% c #5E832E", +"|% c #5D8432", +"1% c #517829", +"2% c #3B6016", +"3% c #355917", +"4% c #385C1C", +"5% c #3D611B", +"6% c #40661C", +"7% c #426C1C", +"8% c #42711E", +"9% c #45751F", +"0% c #487820", +"a% c #4A7A20", +"b% c #4C7C1F", +"c% c #4D7E21", +"d% c #4D7E22", +"e% c #4B7E18", +"f% c #4B7E17", +"g% c #4B7E19", +"h% c #4B7D1B", +"i% c #4B7C1D", +"j% c #497A1E", +"k% c #49781D", +"l% c #4B721F", +"m% c #49701F", +"n% c #466C1E", +"o% c #3C611B", +"p% c #3B601B", +"q% c #365B16", +"r% c #3E6516", +"s% c #537929", +"t% c #5E8230", +"u% c #608031", +"v% c #5A792F", +"w% c #415B1A", +"x% c #507027", +"y% c #59812B", +"z% c #577E2A", +"A% c #5A7E2B", +"B% c #496523", +"C% c #3E561E", +"D% c #5A7731", +"E% c #597F29", +"F% c #59812C", +"G% c #577E29", +"H% c #4C7322", +"I% c #395D15", +"J% c #335815", +"K% c #355915", +"L% c #375C17", +"M% c #386018", +"N% c #3B6717", +"O% c #3E6B1A", +"P% c #416E1A", +"Q% c #43711C", +"R% c #46731B", +"S% c #47751A", +"T% c #48761C", +"U% c #48771D", +"V% c #467716", +"W% c #467614", +"X% c #467617", +"Y% c #467518", +"Z% c #457318", +"`% c #43711A", +" & c #416E19", +".& c #42681D", +"+& c #3F651B", +"@& c #3C611A", +"#& c #3A5F1A", +"$& c #385C19", +"%& c #345817", +"&& c #395E1A", +"*& c #4D7425", +"=& c #5A8031", +"-& c #5A7E2C", +";& c #5C7D2D", +">& c #57752C", +",& c #3D5817", +"'& c #4C6C24", +")& c #59812A", +"!& c #567E28", +"~& c #557D28", +"{& c #537B27", +"]& c #567A27", +"^& c #466120", +"/& c #3B541B", +"(& c #57742E", +"_& c #567C26", +":& c #567D28", +"<& c #537C22", +"[& c #537A24", +"}& c #486E1E", +"|& c #375D14", +"1& c #315612", +"2& c #305415", +"3& c #325916", +"4& c #355E14", +"5& c #386217", +"6& c #3A6417", +"7& c #3E6819", +"8& c #3F6A18", +"9& c #416C17", +"0& c #436E1A", +"a& c #446F1B", +"b& c #436F1B", +"c& c #456F1C", +"d& c #456F1D", +"e& c #426F16", +"f& c #436F16", +"g& c #426D16", +"h& c #416D19", +"i& c #406A18", +"j& c #3C6619", +"k& c #395D1A", +"l& c #355A17", +"m& c #325714", +"n& c #325614", +"o& c #385D1B", +"p& c #496E29", +"q& c #557C2D", +"r& c #567C2D", +"s& c #557927", +"t& c #58792A", +"u& c #547128", +"v& c #3B5615", +"w& c #496920", +"x& c #557E28", +"y& c #517923", +"z& c #527A24", +"A& c #517924", +"B& c #507623", +"C& c #547724", +"D& c #435F1D", +"E& c #3A531A", +"F& c #55722C", +"G& c #537923", +"H& c #537A25", +"I& c #517822", +"J& c #527A22", +"K& c #507822", +"L& c #486E1F", +"M& c #395E15", +"N& c #2F5311", +"O& c #2F5412", +"P& c #315813", +"Q& c #335A15", +"R& c #365D16", +"S& c #375F15", +"T& c #396015", +"U& c #3B6214", +"V& c #3C6416", +"W& c #3D6517", +"X& c #3F6719", +"Y& c #3F6716", +"Z& c #3D6616", +"`& c #3C6415", +" * c #3A6217", +".* c #395F17", +"+* c #385E17", +"@* c #345818", +"#* c #325615", +"$* c #2D510F", +"%* c #2E530F", +"&* c #395E18", +"** c #486D26", +"=* c #51762E", +"-* c #52782A", +";* c #527828", +">* c #547726", +",* c #547626", +"'* c #516F25", +")* c #395313", +"!* c #45661E", +"~* c #527A23", +"{* c #4D751F", +"]* c #4D751E", +"^* c #4C7320", +"/* c #517421", +"(* c #405C1A", +"_* c #375017", +":* c #516E28", +"<* c #4F741F", +"[* c #4E7523", +"}* c #4C7424", +"|* c #4D7521", +"1* c #4D751D", +"2* c #486F1F", +"3* c #3B6017", +"4* c #2F5411", +"5* c #2C5011", +"6* c #2C500F", +"7* c #305511", +"8* c #315611", +"9* c #335810", +"0* c #345A0F", +"a* c #355B11", +"b* c #355B12", +"c* c #375D13", +"d* c #375D12", +"e* c #355B10", +"f* c #345A12", +"g* c #335812", +"h* c #315512", +"i* c #2F5413", +"j* c #2E5212", +"k* c #2D5210", +"l* c #2C510D", +"m* c #30550F", +"n* c #3C6219", +"o* c #466D20", +"p* c #4C7324", +"q* c #4D7325", +"r* c #4C7325", +"s* c #4E7324", +"t* c #4F7321", +"u* c #517224", +"v* c #4E6C22", +"w* c #36500F", +"x* c #42631A", +"y* c #4A721C", +"z* c #4A711B", +"A* c #4A701D", +"B* c #4D711E", +"C* c #3C5A16", +"D* c #334D12", +"E* c #4D6B23", +"F* c #4A6F1A", +"G* c #4A701E", +"H* c #4A7024", +"I* c #4A701F", +"J* c #4A7119", +"K* c #487017", +"L* c #4B721C", +"M* c #476E1E", +"N* c #40661F", +"O* c #385A1D", +"P* c #2E5112", +"Q* c #2D500F", +"R* c #2B500B", +"S* c #2C500B", +"T* c #2E530B", +"U* c #2E520B", +"V* c #2E520C", +"W* c #2D520B", +"X* c #2F540D", +"Y* c #30540E", +"Z* c #30540D", +"`* c #2F530D", +" = c #2E510B", +".= c #2C4F0B", +"+= c #2C500D", +"@= c #2D5010", +"#= c #2C4E11", +"$= c #2B4F10", +"%= c #305510", +"&= c #395E17", +"*= c #43691F", +"== c #476E20", +"-= c #476E1D", +";= c #49701B", +">= c #4A711D", +",= c #4A6F22", +"'= c #497020", +")= c #4B701D", +"!= c #4E701F", +"~= c #4B6920", +"{= c #324E0C", +"]= c #3F6116", +"^= c #49721B", +"/= c #476F19", +"(= c #466E18", +"_= c #476F1A", +":= c #476E19", +"<= c #385E0E", +"[= c #2E5406", +"}= c #446B18", +"|= c #436B15", +"1= c #456D18", +"2= c #476D1B", +"3= c #476F18", +"4= c #476E1F", +"5= c #446A21", +"6= c #3D621A", +"7= c #385D14", +"8= c #30550C", +"9= c #2D5109", +"0= c #2A4F05", +"a= c #284D09", +"b= c #294D0C", +"c= c #294D0A", +"d= c #294D0B", +"e= c #2B4F0D", +"f= c #294F08", +"g= c #294D08", +"h= c #294E07", +"i= c #284D07", +"j= c #325612", +"k= c #416816", +"l= c #446C19", +"m= c #476E1A", +"n= c #476D19", +"o= c #466F18", +"p= c #486F19", +"q= c #436917", +"r= c #2E5304", +"s= c #3A600E", +"t= c #416913", +"u= c #406812", +"v= c #3C640E", +"w= c #426A14", +"x= c #436B14", +"y= c #426A17", +"z= c #42681B", +"A= c #41671A", +"B= c #3D6316", +"C= c #385E10", +"D= c #2C520C", +"E= c #2B500A", +"F= c #2E530D", +"G= c #2E5409", +"H= c #31560C", +"I= c #3A5F14", +"J= c #3D6317", +"K= c #40661A", +"L= c #42691C", +"M= c #3B630E", +"N= c #3E6610", +"O= c #3F6710", +"P= c #3F6711", +"Q= c #3E6714", +"R= c #3F6617", +"S= c #3D6415", +"T= c #406718", +"U= c #406618", +"V= c #3E6616", +"W= c #3E6515", +"X= c #3B6212", +"Y= c #3B6111", +"Z= c #3D6314", +"`= c #3D6214", +" - c #3D6412", +".- c #3E6413", +"+- c #406715", +"@- c #3E6713", +"#- c #3F6714", +"$- c #406614", +"%- c #406811", +"&- c #3D650F", +"*- c #3B630D", +"=- c #3B630F", +"-- c #3B6211", +";- c #3D6414", +">- c #3E6514", +",- c #3C6312", +"'- c #3D650C", +")- c #3D650D", +"!- c #3D640C", +"~- c #3D650E", +"{- c #3E660E", +"]- c #3E660D", +"^- c #3E660F", +"/- c #3A620C", +"(- c #3B620D", +"_- c #3B620F", +":- c #3B610B", +"<- c #3B630A", +"[- c #3B630B", +"}- c #375F09", +"|- c #375F0A", +"1- c #375F08", +"2- c #375F07", +"3- c #375F0B", +"4- c #345C06", +"5- c #345C07", +"6- c #335C07", +"7- c #355C07", +"8- c #355C05", +"9- c #355C04", +"0- c #355C06", +"a- c #355A09", +"b- c #355B0A", +"c- c #355B09", +"d- c #355B06", +"e- c #355D06", +"f- c #335C06", +"g- c #2E5704", +"h- c #305804", +"i- c #305806", +"j- c #305906", +"k- c #305704", +"l- c #305805", +"m- c #325605", +"n- c #335705", +"o- c #335605", +"p- c #325604", +"q- c #345806", +"r- c #355807", +"s- c #335706", +"t- c #335704", +"u- c #335505", +"v- c #325606", +"w- c #345906", +"x- c #335805", +"y- c #325903", +"z- c #325B01", +"A- c #325B02", +"B- c #315A02", +"C- c #2F5800", +"D- c #305901", +"E- c #305900", +"F- c #335503", +"G- c #355305", +"H- c #355404", +"I- c #2D5601", +"J- c #2E5702", +"K- c #2F5703", +"L- c #305904", +"M- c #2F5804", +"N- c #315502", +"O- c #325603", +"P- c #315503", +"Q- c #315602", +"R- c #305503", +"S- c #315504", +"T- c #305404", +"U- c #325704", +"V- c #315704", +"W- c #325502", +"X- c #305602", +"Y- c #315900", +"Z- c #315901", +"`- c #305701", +" ; c #2E5700", +".; c #2F5700", +"+; c #2E5600", +"@; c #315500", +"#; c #335501", +"$; c #335500", +"%; c #737E40", +"&; c #737D40", +"*; c #717D3E", +"=; c #727C3F", +"-; c #727D40", +";; c #747B3F", +">; c #757C40", +",; c #73793D", +"'; c #71793D", +"); c #72793D", +"!; c #71793C", +"~; c #737A3E", +"{; c #71783C", +"]; c #70773B", +"^; c #71773C", +"/; c #757C3F", +"(; c #747B3E", +"_; c #737C3C", +":; c #737D39", +"<; c #737D3A", +"[; c #727B39", +"}; c #707B38", +"|; c #717B38", +"1; c #717B37", +"2; c #717A36", +"3; c #CAAE84", +"4; c #C9AE83", +"5; c #C7AB80", +"6; c #C3A77D", +"7; c #C4A97D", +"8; c #C6AA80", +"9; c #C5A97E", +"0; c #C9AA80", +"a; c #CAAA81", +"b; c #C9A980", +"c; c #C6A67D", +"d; c #C6A57C", +"e; c #C8A87F", +"f; c #C9AA81", +"g; c #C7A77E", +"h; c #C3A37A", +"i; c #BF9F76", +"j; c #C1A178", +"k; c #C3A379", +"l; c #C2A179", +"m; c #C0A077", +"n; c #C2A279", +"o; c #C09F77", +"p; c #C0A177", +"q; c #C4A47B", +"r; c #C6A67C", +"s; c #C5A67C", +"t; c #CBAB82", +"u; c #CCAB81", +"v; c #CCAB82", +"w; c #CAAB81", +"x; c #C8A77E", +"y; c #C5A57C", +"z; c #C7A67D", +"A; c #C7A87F", +"B; c #C9A97F", +"C; c #C9A87F", +"D; c #C4A37B", +"E; c #C4A478", +"F; c #C2A273", +"G; c #C3A375", +"H; c #C4A475", +"I; c #C0A172", +"J; c #C1A171", +"K; c #C1A173", +"L; c #C1A373", +"M; c #C2A374", +"N; c #C2A373", +"O; c #CC9F6B", +"P; c #D0A370", +"Q; c #D0A36F", +"R; c #CB9E6B", +"S; c #CDA06C", +"T; c #CCA06C", +"U; c #CE9C69", +"V; c #CC9A67", +"W; c #C99765", +"X; c #CB9966", +"Y; c #C79664", +"Z; c #C49260", +"`; c #C89764", +" > c #CA9965", +".> c #C89765", +"+> c #C79563", +"@> c #C2915E", +"#> c #C08F5C", +"$> c #C3925F", +"%> c #BF8F5B", +"&> c #BD8B59", +"*> c #C3915F", +"=> c #C69462", +"-> c #C89664", +";> c #CB9A67", +">> c #CB9968", +",> c #CB9B67", +"'> c #CD9C69", +")> c #CD9B68", +"!> c #CE9D6A", +"~> c #CE9C6A", +"{> c #CA9866", +"]> c #C69562", +"^> c #C1905D", +"/> c #C2905E", +"(> c #C69461", +"_> c #CA9966", +":> c #C59461", +"<> c #C5935F", +"[> c #C28F59", +"}> c #C3915A", +"|> c #C7945E", +"1> c #C5935D", +"2> c #C08E58", +"3> c #BC8853", +"4> c #BB8654", +"5> c #BB8655", +"6> c #BA8655", +"7> c #BC8A4B", +"8> c #C1904F", +"9> c #BF8D4D", +"0> c #C19050", +"a> c #C29050", +"b> c #BE8C4C", +"c> c #C28D4E", +"d> c #C18A4C", +"e> c #BD8649", +"f> c #BD8749", +"g> c #BB8547", +"h> c #B78142", +"i> c #B88244", +"j> c #B68042", +"k> c #B98244", +"l> c #BB8447", +"m> c #BC8648", +"n> c #BA8446", +"o> c #BE874A", +"p> c #BD8648", +"q> c #B68041", +"r> c #B98445", +"s> c #BA8445", +"t> c #B88245", +"u> c #B98344", +"v> c #BE8749", +"w> c #C08A4C", +"x> c #BF894B", +"y> c #BE894B", +"z> c #C0894B", +"A> c #BF884A", +"B> c #BA8546", +"C> c #B78143", +"D> c #B88345", +"E> c #BA8346", +"F> c #B78144", +"G> c #BA8345", +"H> c #BB8546", +"I> c #BB8446", +"J> c #BE884A", +"K> c #BD8546", +"L> c #BC8342", +"M> c #BD8443", +"N> c #C08646", +"O> c #BB8342", +"P> c #B67C3B", +"Q> c #AA702F", +"R> c #A76830", +"S> c #A4622F", +"T> c #A3622F", +"U> c #B78145", +"V> c #C58E52", +"W> c #BF874B", +"X> c #BC8347", +"Y> c #B98345", +"Z> c #B88344", +"`> c #B88146", +" , c #B98146", +"., c #B98045", +"+, c #B98046", +"@, c #BB8348", +"#, c #BA8046", +"$, c #B97E44", +"%, c #BB7F45", +"&, c #B87D43", +"*, c #B87C42", +"=, c #B67B41", +"-, c #B5793E", +";, c #B3783E", +">, c #B2773C", +",, c #B07539", +"', c #AD7236", +"), c #AD7136", +"!, c #AA6E33", +"~, c #AD7237", +"{, c #AE7336", +"], c #AD7135", +"^, c #B67B3F", +"/, c #B87E41", +"(, c #B67C3F", +"_, c #B77C40", +":, c #B77D3F", +"<, c #B67D41", +"[, c #B87F42", +"}, c #B98043", +"|, c #BA8144", +"1, c #BF8449", +"2, c #BD8248", +"3, c #BF8349", +"4, c #BE8348", +"5, c #BB8145", +"6, c #B67C40", +"7, c #B4793C", +"8, c #B77B3F", +"9, c #BA7E42", +"0, c #BC8044", +"a, c #BB7F43", +"b, c #BC8145", +"c, c #B97D41", +"d, c #B6783A", +"e, c #B67636", +"f, c #B67738", +"g, c #B97A3B", +"h, c #BD7D3F", +"i, c #B9783B", +"j, c #AE6E31", +"k, c #AB6330", +"l, c #A95E2F", +"m, c #A95C2D", +"n, c #A6733B", +"o, c #BD874F", +"p, c #C48852", +"q, c #B98044", +"r, c #BD8A4B", +"s, c #C39252", +"t, c #C59557", +"u, c #C59457", +"v, c #C49255", +"w, c #C79256", +"x, c #C99257", +"y, c #C38B51", +"z, c #C58A51", +"A, c #C48853", +"B, c #C48851", +"C, c #C38752", +"D, c #C18650", +"E, c #BD814B", +"F, c #BA7F48", +"G, c #B97E46", +"H, c #B87D45", +"I, c #B47941", +"J, c #B57A42", +"K, c #B2773F", +"L, c #B37840", +"M, c #B87D41", +"N, c #BB8044", +"O, c #BE8347", +"P, c #BF8448", +"Q, c #BA7F43", +"R, c #B27C3E", +"S, c #B47E40", +"T, c #B58042", +"U, c #B68142", +"V, c #B68143", +"W, c #B98346", +"X, c #C18551", +"Y, c #C28651", +"Z, c #C0844E", +"`, c #BD8149", +" ' c #BC8147", +".' c #B57A3E", +"+' c #BB7E43", +"@' c #BF8045", +"#' c #C28449", +"$' c #BF8247", +"%' c #C08348", +"&' c #BD7F40", +"*' c #BD803A", +"=' c #BC7F3D", +"-' c #BE8140", +";' c #BB7E3F", +">' c #B4763A", +",' c #AE6F34", +"'' c #B06E35", +")' c #B67239", +"!' c #B26F36", +"~' c #7F5123", +"{' c #9C6A3D", +"]' c #B2794B", +"^' c #B27541", +"/' c #B87B44", +"(' c #BE864A", +"_' c #C28D4D", +":' c #C18C49", +"<' c #BC8643", +"[' c #BC8441", +"}' c #BE8141", +"|' c #C08243", +"1' c #C18343", +"2' c #BF8041", +"3' c #BC8144", +"4' c #BD8244", +"5' c #BD8144", +"6' c #BC8143", +"7' c #BB8042", +"8' c #B97E42", +"9' c #BA7F47", +"0' c #BD8249", +"a' c #C0854D", +"b' c #C2874F", +"c' c #C38850", +"d' c #C78C51", +"e' c #C88D51", +"f' c #C4894D", +"g' c #C08549", +"h' c #BD8246", +"i' c #BB8144", +"j' c #B77D41", +"k' c #BE8448", +"l' c #BE8446", +"m' c #BD8348", +"n' c #C0844F", +"o' c #C18550", +"p' c #BE824B", +"q' c #BF844A", +"r' c #C1874B", +"s' c #C18749", +"t' c #C08546", +"u' c #BF8145", +"v' c #C08246", +"w' c #C08245", +"x' c #C48649", +"y' c #C4864A", +"z' c #C48646", +"A' c #C38742", +"B' c #C58946", +"C' c #CA8D4C", +"D' c #C18447", +"E' c #B7793D", +"F' c #B07237", +"G' c #B27641", +"H' c #B67A48", +"I' c #B27644", +"J' c #6C4321", +"K' c #744522", +"L' c #8F5933", +"M' c #96592D", +"N' c #A0612F", +"O' c #AF7137", +"P' c #BD8245", +"Q' c #BF8C4D", +"R' c #BF8A4B", +"S' c #BA8043", +"T' c #C18649", +"U' c #C38549", +"V' c #C38647", +"W' c #C08444", +"X' c #BD8141", +"Y' c #BC803F", +"Z' c #BD7F3F", +"`' c #BE8142", +" ) c #BC8142", +".) c #BB8045", +"+) c #B87D42", +"@) c #C2874B", +"#) c #C1864A", +"$) c #B2773B", +"%) c #B6783D", +"&) c #B07136", +"*) c #B07036", +"=) c #B3743A", +"-) c #B5763B", +";) c #B7783D", +">) c #B7793F", +",) c #B47742", +"') c #B77C45", +")) c #B77C43", +"!) c #BA7F44", +"~) c #BD8345", +"{) c #BD8344", +"]) c #BA8040", +"^) c #BA7D3E", +"/) c #B67A3A", +"() c #B47638", +"_) c #B87B3C", +":) c #BB7D3F", +"<) c #BA7C3F", +"[) c #B97C3B", +"}) c #B67937", +"|) c #B37636", +"1) c #B5773A", +"2) c #AD6F34", +"3) c #A96B32", +"4) c #A4662E", +"5) c #986132", +"6) c #A16E42", +"7) c #A06C41", +"8) c #583012", +"9) c #633515", +"0) c #76401E", +"a) c #8C4E26", +"b) c #9A5A2A", +"c) c #AE6F37", +"d) c #B3763A", +"e) c #AC7C34", +"f) c #B18038", +"g) c #B17D37", +"h) c #AD7630", +"i) c #AA722C", +"j) c #A8702A", +"k) c #A96D2B", +"l) c #AF6E35", +"m) c #B37339", +"n) c #B6753C", +"o) c #B9793E", +"p) c #BB7A42", +"q) c #BD7F44", +"r) c #BD8445", +"s) c #C3884A", +"t) c #C48A4B", +"u) c #C58B4C", +"v) c #C78C4E", +"w) c #CA8F53", +"x) c #C98E52", +"y) c #C78C50", +"z) c #C68B4F", +"A) c #C58A4E", +"B) c #C8884D", +"C) c #C5854A", +"D) c #C28248", +"E) c #C07E45", +"F) c #BE7D43", +"G) c #BB7A40", +"H) c #BE7E45", +"I) c #C0854C", +"J) c #C2874C", +"K) c #C08648", +"L) c #C28849", +"M) c #C18745", +"N) c #BC823F", +"O) c #BD803F", +"P) c #BB7E3D", +"Q) c #B77A3A", +"R) c #B87B3B", +"S) c #B67939", +"T) c #B57837", +"U) c #B47739", +"V) c #BA7C40", +"W) c #B97A42", +"X) c #B0723B", +"Y) c #955621", +"Z) c #824C21", +"`) c #814F27", +" ! c #835129", +".! c #5F3210", +"+! c #6E3D19", +"@! c #804722", +"#! c #905128", +"$! c #945626", +"%! c #A16530", +"&! c #A76E36", +"*! c #B57B3D", +"=! c #BD8243", +"-! c #BD8042", +";! c #BE7D40", +">! c #C07E41", +",! c #C47F43", +"'! c #C57F45", +")! c #C17D47", +"!! c #C17F48", +"~! c #C07D46", +"{! c #BF7D46", +"]! c #BC7943", +"^! c #B8753F", +"/! c #AE7535", +"(! c #AF7535", +"_! c #B17737", +":! c #B37939", +"<! c #AF7635", +"[! c #A76D2D", +"}! c #A66C2E", +"|! c #A66B2F", +"1! c #A3682C", +"2! c #A06529", +"3! c #A4692D", +"4! c #A96E32", +"5! c #A76C30", +"6! c #A86C31", +"7! c #A3672B", +"8! c #A2662A", +"9! c #A16528", +"0! c #A16529", +"a! c #A66A2E", +"b! c #A76C31", +"c! c #AD7335", +"d! c #B07636", +"e! c #B07734", +"f! c #AE7530", +"g! c #AD732E", +"h! c #AF722E", +"i! c #AA6E2A", +"j! c #A76A27", +"k! c #AA6D2A", +"l! c #A86B2A", +"m! c #AB6D2F", +"n! c #A6682D", +"o! c #A06229", +"p! c #A66731", +"q! c #A96A35", +"r! c #A96A37", +"s! c #9D6237", +"t! c #7F451D", +"u! c #7F451C", +"v! c #9B693F", +"w! c #A36E43", +"x! c #9C6136", +"y! c #9F6234", +"z! c #9C5F2F", +"A! c #8C5521", +"B! c #AA7640", +"C! c #AF743F", +"D! c #A86A36", +"E! c #A2632E", +"F! c #A2602D", +"G! c #A6612E", +"H! c #A6602D", +"I! c #A25B27", +"J! c #A15E20", +"K! c #A05D1E", +"L! c #A36121", +"M! c #A25F20", +"N! c #9D5B1C", +"O! c #A26021", +"P! c #AC6D2D", +"Q! c #B17836", +"R! c #B87F3C", +"S! c #BB823F", +"T! c #BE8543", +"U! c #BE8542", +"V! c #C08744", +"W! c #C28749", +"X! c #C3884D", +"Y! c #CB9054", +"Z! c #CC9155", +"`! c #CE9357", +" ~ c #CB9457", +".~ c #CA9356", +"+~ c #C89153", +"@~ c #C48D4F", +"#~ c #C48D50", +"$~ c #C1894C", +"%~ c #BC8244", +"&~ c #BF8545", +"*~ c #BA803E", +"=~ c #B57C37", +"-~ c #B67D36", +";~ c #B87F38", +">~ c #BA7E38", +",~ c #B97D37", +"'~ c #B57933", +")~ c #B67A34", +"!~ c #BD813B", +"~~ c #C1853F", +"{~ c #C18443", +"]~ c #C6884D", +"^~ c #CB8D52", +"/~ c #CD8E56", +"(~ c #CD8E58", +"_~ c #C0814D", +":~ c #AA6B39", +"<~ c #925222", +"[~ c #8A481A", +"}~ c #8E4C1D", +"|~ c #AE7243", +"1~ c #AC6F3F", +"2~ c #9C5D2B", +"3~ c #B27341", +"4~ c #B37745", +"5~ c #7F4717", +"6~ c #996333", +"7~ c #B48046", +"8~ c #BC864C", +"9~ c #BE864C", +"0~ c #C0874D", +"a~ c #C1874E", +"b~ c #BF864D", +"c~ c #C0844A", +"d~ c #BD813F", +"e~ c #BA7D3C", +"f~ c #BB7F3D", +"g~ c #BC803E", +"h~ c #C38644", +"i~ c #C38A49", +"j~ c #C48F4D", +"k~ c #C99353", +"l~ c #CD9656", +"m~ c #CD9756", +"n~ c #C48E4E", +"o~ c #B98342", +"p~ c #B78045", +"q~ c #BA8149", +"r~ c #B9834B", +"s~ c #B37D47", +"t~ c #AE7942", +"u~ c #AC7741", +"v~ c #AB7943", +"w~ c #AC7A44", +"x~ c #AC7942", +"y~ c #AA7842", +"z~ c #A97641", +"A~ c #AC7944", +"B~ c #A97640", +"C~ c #A7713B", +"D~ c #A9733C", +"E~ c #BF884F", +"F~ c #C99356", +"G~ c #C99553", +"H~ c #CB9653", +"I~ c #CB9751", +"J~ c #CC9351", +"K~ c #C48D4B", +"L~ c #C08746", +"M~ c #C08848", +"N~ c #C28A4B", +"O~ c #C38A4C", +"P~ c #C1884D", +"Q~ c #BC844E", +"R~ c #AF7844", +"S~ c #A46A38", +"T~ c #9C602E", +"U~ c #945320", +"V~ c #97531F", +"W~ c #A35F26", +"X~ c #B16B31", +"Y~ c #B56F34", +"Z~ c #A86332", +"`~ c #A6632F", +" { c #AC6933", +".{ c #A96933", +"+{ c #91521F", +"@{ c #854718", +"#{ c #8D4F25", +"${ c #875221", +"%{ c #85511F", +"&{ c #84501E", +"*{ c #8B5625", +"={ c #925E2D", +"-{ c #94602E", +";{ c #8C5826", +">{ c #895623", +",{ c #8F5B28", +"'{ c #8F5C29", +"){ c #8E5B28", +"!{ c #8C5725", +"~{ c #925E2C", +"{{ c #94612F", +"]{ c #93602D", +"^{ c #966331", +"/{ c #A06E3B", +"({ c #9E6A38", +"_{ c #8B5727", +":{ c #885325", +"<{ c #845225", +"[{ c #855428", +"}{ c #84562B", +"|{ c #7F532A", +"1{ c #82562F", +"2{ c #86562E", +"3{ c #85542C", +"4{ c #84532B", +"5{ c #825129", +"6{ c #7D4C24", +"7{ c #77461E", +"8{ c #6B3912", +"9{ c #633110", +"0{ c #653310", +"a{ c #7B4A22", +"b{ c #89582C", +"c{ c #956634", +"d{ c #9F6F3C", +"e{ c #9E6F39", +"f{ c #986A36", +"g{ c #8A5B28", +"h{ c #825322", +"i{ c #865728", +"j{ c #89592D", +"k{ c #8C5C30", +"l{ c #8C5D33", +"m{ c #8A5D32", +"n{ c #8A5D34", +"o{ c #8E5D31", +"p{ c #9A6232", +"q{ c #AB6A31", +"r{ c #B56E2F", +"s{ c #BC7631", +"t{ c #BF7B34", +"u{ c #BF7B35", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +". . . . . . + @ # $ % & * = - ; ; > , , ' ) ) ) ) ! ~ { { ] ^ / ( / ^ { { { { { { { { { ( ( ( ( _ : < [ } | 1 2 2 2 . . . . . . ", +"3 4 4 4 4 4 5 6 7 8 9 0 a b c d d d d d d e e e f g h i j k l m m n o p p p p p p p p p q r m s t u v w x y z A A B 5 4 4 4 4 5 ", +"C D D D E E F G H I J K L M N O P Q R R R S S S T U V W X Y Z ` ...+.@.@.@.@.@.@.@.@.#.$. .` %.&.*.=.-.;.>.,.'.'.).!.D ~.E E F ", +"{.].].^././.(._.:.<.[.}.|.1.2.3.4.5.6.6.7.7.7.8.9.0.a.b.c.d.e.f.g.h.i.j.j.j.j.j.j.j.j.j.k.g.l.m.n.o.p.q.r.s.t.u.u.v.w.].].]./.].", +"x.y.y.y.z.z.A.B.C.D.E.F.G.H.I.J.K.L.M.M.N.N.N.N.N.O.P.Q.R.S.T.U.V.W.X.Y.Y.Y.Y.Y.Y.Y.Y.X.Z.`. +.+++@+#+$+%+&+*+z.z.=+-+y.-+;+z.u.", +">+,+,+,+'+'+)+!+~+{+]+^+/+(+_+:+<+[+}+}+|+1+2+3+4+3+5+6+7+8+9+0+a+b+c+c+c+c+c+c+c+c+c+c+d+e+f+g+h+i+j+k+l+m+n+'+'+o+p+,+p+o+'+'+", +"q+q+q+r+s+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+I+I+J+K+L+M+N+O+P+Q+R+S+T+T+T+T+T+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@t+t+*@=@r+=@*@s+*@", +"-@;@;@;@;@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@3@3@3@3@3@4@4@5@6@7@7@7@7@7@8@9@T+0@a@b@c@d@e@f@g@h@n.i@j@!.!.!.!.!.k@l@m@;@", +"n@o@o@o@o@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@E@G@G@G@G@G@G@H@I@J@K@L@M@M@M@M@M@L@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ # # # # #.#+#@#p@", +"##$#$#$#$#$#%#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#/#(#(#(#(#(#(#_#:#<#[#}#|#|#|#|#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#f#f#f#f#f#$#$#$#", +"g#h#h#h#h#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#A#A#A#A#A#A#A#A#A#B#C#C#C#C#C#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#h#h#h#h#h#h#h#h#S#", +"T#U#U#U#U#U#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$&$*$=$-$;$;$;$;$;$;$;$;$;$;$;$;$;$;$;$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$U#U#U#U#U#U#U#U#U#", +"}$}$}$}$}$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$j$j$j$j$j$j$k$k$k$k$k$k$k$g$l$m$n$o$p$q$r$s$t$u$v$w$x$y$}$}$}$}$}$}$}$}$}$", +"z$A$z$z$z$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$W$W$W$W$X$Y$Z$`$ %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%~%z$z$z$z$z$z$z$A${%", +"]%^%^%^%^%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%c%d%d%d%d%d%c%e%f%g%h%i%j%k%l%m%n%6%o%p%q%r%s%t%u%v%w%x%^%^%^%^%^%^%^%^%^%", +"y%y%y%y%y%y%y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%U%U%U%U%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&y%y%y%y%y%y%y%)&F%", +"!&!&!&!&!&!&~&{&]&^&/&(&_&:&<&[&}&|&1&2&3&4&5&6&7&8&9&0&a&a&b&c&d&c&e&f&g&h&i&7&j&K$k&l&m&n&o&p&q&r&s&t&u&v&w&!&!&!&!&!&!&!&!&x&", +"y&z&z&z&z&z&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&W&W&X&X&X&Y&Z&`& *.*+*R&@*#*$*%*&***=*-*;*>*,*'*)*!*z&z&z&z&z&z&z&z&~*", +"{*{*{*{*{*{*]*^*/*(*_*:*<*[*}*|*1*{*2*3*4*5*6*7*8*9*0*a*b*b*a*c*|&|&d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*{*{*{*{*{*{*{*{*{*", +"y*y*y*y*y*y*z*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=y*y*y*y*y*y*y*y*^=", +"/=/=/=/=/=/=(=_=:=<=[=}=|=1=2=/=3=3=3=/=4=5=6=7=8=9=0=a=b=c=d=e=e=e=f=g=h=i=S*j=+*k=l=m=:=n=/=3=_=_=o=p=q=r=s=/=/=/=/=/=/=/=/=/=", +"|=|=|=|=|=|=|=t=|=u=v=t=w=w=|=|=|=|=|=x=y=z=z=z=A=B=C=9*m*D=E=F=F=V*G=H=e*I=J=K=L=|=|=|=|=|=|=|=|=|=|=|=t=M=N=|=|=|=|=|=|=|=|=|=", +"O=P=P=P=P=P=P=P=P=w=u=P=N=P=P=P=P=P=P=O=Q=R=r%S=T=U=V=R=W=X=Y=Z=Z=`= -.-+-+-@-#-$-%-u=u=N=P=P=P=P=P=P=P=P=u=P=P=P=P=P=P=P=P=P=P=", +"v=&-&-&-&-&-&-&-N=N=*-&-*-&-&-&-&-&-&-&-=-Y=X=--;->-,-v='-)-!-~-{-{-{-]-^-~-~-~-)-&-N=&-&-&-&-&-&-&-&-&-&-/-v=&-&-&-&-&-&-&-&-v=", +"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-(-_-_-_-_-_-_-:-<-<-<-<-<-<-<-[-[-[-[-[-[-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-", +"}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-|-|-|-|-|-|-1-1-1-1-1-1-2-|-3-3-3-3-3-|-1-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-}-", +"4-5-5-5-5-5-6-7-7-7-7-7-7-7-7-7-7-7-7-7-8-8-8-8-8-8-9-0-0-0-0-0-0-8-a-b-b-b-b-b-c-d-7-7-7-7-7-7-7-7-7-7-7-7-d-e-e-4-4-4-f-0-7-0-", +"g-h-i-j-k-l-l-m-n-n-o-o-o-p-q-r-q-q-q-q-s-t-n-n-n-n-n-u-o-o-u-n-n-n-n-s-s-s-s-s-v-q-r-q-q-w-w-x-o-n-n-n-n-o-y-z-A-B-C-D-E-F-G-H-", +"I-J-K-L-L-L-M-N-O-O-P-P-P-N-t-n-t-Q-O-O-R-S-S-T-p-U-U-N-P-P-R-O-O-O-O-O-O-O-O-O-N-t-n-t-V-U-U-W-O-O-O-O-O-O-X-Y-Z-`- ;.;+;@;#;$;", +"%;&;*;=;%;%;-;;;>;>;,;';);!;~;;;~;{;!;!;{;~;~;);];{;^;!;);););/;>;>;>;>;>;>;>;>;(;;;;;;;;;;;;;~;>;>;>;>;>;>;_;:;<;[;};|;|;1;1;2;", +"3;4;5;6;7;8;9;0;a;a;b;c;d;e;a;f;0;g;h;i;j;k;l;j;m;n;o;p;q;r;s;e;a;t;u;v;v;w;0;b;x;s;y;e;g;z;A;e;A;B;b;C;y;D;E;F;G;H;I;J;K;L;M;N;", +"O;P;Q;O;R;S;T;U;V;W;X;Y;Z;`; >.>W;+>@>#>$>Z;%>&>%>*>$>@>=>->->;>>>,>'>'>)>!>~>{>]>=>]>*>^>/>$>$>(>`;_>W;:>(><>[>}>|>1>2>3>4>5>6>", +"7>8>9>0>a>b>b>c>d>e>f>g>h>i>j>k>l>m>n>g>o>p>i>q>g>r>i>g>s>t>u>n>v>w>x>x>y>z>A>B>C>D>g>E>C>F>G>H>g>g>I>p>J>f>K>L>M>N>O>P>Q>R>S>T>", +"U>V>W>X>I>Y>Z>`> ,.,+,@,#,$,%,&,*,=,-,;,;,>,,,',),!,~,{,],,,^,/,(,_,:,<,[,},|,|,|,1,2,3,4,5,6,7,8,9,0,a,b,c,d,e,f,g,h,i,j,k,l,m,", +"n,o,p,%,q,r,s,t,u,v,w,x,y,z,A,A,B,C,D,E,F,G,H,I,J,K,L,*,M,N,O,P,Q,_,R,S,T,U,V,F>W,X,Y,Z,`, '/,.'+'@'#'$'%'$'&'*'='-';'>',''')'!'", +"~'{']'^'/'('_':'<'['}'|'1'2'3'4'5'4'6'7'8'9'0'0'a'b'c'd'e'f'g'P,O,h'i'j'6,Q,k'l'm'n'o'p'q'r's't'u'v'w'v'x'y'z'A'B'C'D'E'F'G'H'I'", +"J'K'L'M'N'O'P'b>Q'R'E>S'T'U'V'W'X'Y'Z'`' )b,.)+)_,h'O,@)#)h'M,$),,^,%)&)*)=)-);)>),)')))!)~){)])^)/)()_):)<)[)})|)1)2)3)4)5)6)7)", +"8)9)0)a)b)c)d)e)f)g)h)i)j)k)l)m)m)n)o)p)q)r)t's)t)u)v)w)x)y)y)f'z)A)B)C)D)E)F)G)H)`,I)J)K)L)M)N)O)P)Q)R)R)S)T)|)U)V)W)X)Y)Z)`) !", +".!+!@!#!$!%!&!*!=!-!;!>!,!'!)!!!~!{!]!^!=)/!(!_!:!<![!}!|!1!2!3!4!5!',6!7!8!9!0!a!b!5!c!d!e!f!g!h!i!i!j!k!k!l!m!n!o!p!q!r!s!t!u!", +"v!w!x!y!z!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!e'x)Y!Z!`! ~.~+~@~c>#~$~h'%~&~*~=~-~;~>~,~'~)~!~~~{~]~^~/~(~_~:~<~[~}~", +"|~1~2~3~4~5~6~7~8~9~0~a~b~c~d~e~f~='g~h~i~j~k~l~m~n~o~p~q~r~r~s~t~u~v~w~x~y~z~A~B~C~D~E~F~G~H~I~J~K~L~M~N~O~P~Q~R~S~T~U~V~W~X~Y~", +"Z~`~ {.{+{@{#{${%{&{*{={-{;{>{,{'{){!{;{~{{{]{^{/{({~{_{:{<{[{}{|{1{2{3{4{5{6{7{8{9{0{a{b{c{d{e{f{g{h{i{j{k{l{m{n{o{p{q{r{s{t{u{"}; diff --git a/demos/mobile/qtbubblelevel/main.cpp b/demos/mobile/qtbubblelevel/main.cpp new file mode 100644 index 0000000..eb66e25 --- /dev/null +++ b/demos/mobile/qtbubblelevel/main.cpp @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtDeclarative> +#include <QtGui> +#include <QAccelerometer> + +#include "accelerometerfilter.h" +#include "settings.h" +#include "taskswitcher.h" + +// Lock orientation in Symbian +#ifdef Q_OS_SYMBIAN + #include <eikenv.h> + #include <eikappui.h> + #include <aknenv.h> + #include <aknappui.h> +#endif + +QTM_USE_NAMESPACE + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + +#ifdef Q_OS_SYMBIAN + // Lock orientation to landscape in Symbian + CAknAppUi* appUi = dynamic_cast<CAknAppUi*> (CEikonEnv::Static()->AppUi()); + TRAP_IGNORE( + if (appUi) + appUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape); + ) +#endif + + //! [0] + QDeclarativeView view; + view.setSource(QUrl("qrc:/qml/BubbleLevel.qml")); + view.setResizeMode(QDeclarativeView::SizeRootObjectToView); + //! [0] + + // ![1] + Settings settings; + + QAccelerometer sensor; + AccelerometerFilter filter; + sensor.addFilter(&filter); + //! [1] + + //! [2] + QObject *rootObject = dynamic_cast<QObject*>(view.rootObject()); + + // Associate Qt / QML signals and slots + QObject::connect(rootObject, SIGNAL(saveCorrectionAngle(const QVariant&)), + &settings, SLOT(saveCorrectionAngle(const QVariant&))); + + QObject::connect(&filter, SIGNAL(rotationChanged(const QVariant&)), + rootObject, SLOT(handleRotation(const QVariant&))); + + QObject::connect(&settings, SIGNAL(correctionAngle(const QVariant&)), + rootObject, SLOT(setCorrectionAngle(const QVariant&))); + + QObject::connect((QObject*)view.engine(), SIGNAL(quit()), + &app, SLOT(quit())); + //! [2] + + //! [3] +#ifdef Q_WS_MAEMO_5 + TaskSwitcher taskSwitcher; + + QObject::connect(rootObject, SIGNAL(minimizeApplication()), + &taskSwitcher, SLOT(minimizeApplication())); + + // Show the task switcher button + rootObject->setProperty("taskSwitcherVisible", true); +#endif + //! [3] + + //! [4] + // Read correction factor from permanent storage and emit it to QML side + settings.loadAndEmitCorrectionAngle(); + + // Begin measuring of the accelerometer sensor + sensor.start(); + //! [4] + + //! [5] +#if defined(Q_WS_MAEMO_5) || defined(Q_OS_SYMBIAN) || defined(Q_WS_SIMULATOR) + view.setGeometry(QApplication::desktop()->screenGeometry()); + view.showFullScreen(); +#else + view.setGeometry((QRect(100, 100, 800, 480))); + view.show(); +#endif + //! [5] + + return app.exec(); +} diff --git a/demos/mobile/qtbubblelevel/qml/BubbleLevel.qml b/demos/mobile/qtbubblelevel/qml/BubbleLevel.qml new file mode 100644 index 0000000..237b662 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/BubbleLevel.qml @@ -0,0 +1,225 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Image { + id: bubbleLevel + + //! [0] + // Signaled when task switcher button is pressed + signal minimizeApplication() + + // Signaled when correction angle is saved + signal saveCorrectionAngle(variant angle) + + // These functions are used as Qt slots + function handleRotation(deg) { + horTube.rawangle = deg + } + + function setCorrectionAngle(deg) { + horTube.angleconstant = deg + } + + // Used to show the task switcher button in Maemo targets + property alias taskSwitcherVisible: taskSwitcher.visible + //! [0] + + anchors.fill: parent + source: "images/board.png" + smooth: true + + MouseArea { + anchors.fill: parent + onClicked: sign.frontSide = true + } + + Button { + id: taskSwitcher + + anchors { + left: parent.left + right: horTube.left + verticalCenter: horTube.verticalCenter + margins: (parent.width - (horTube.x + horTube.width)) / 4 + } + + height: width + source: "images/taskswitcher.png" + mouseAreaScale: 2 + onClicked: bubbleLevel.minimizeApplication() + visible: false + } + + Button { + id: exitButton + + anchors { + left: horTube.right + right: parent.right + verticalCenter: horTube.verticalCenter + margins: (parent.width - (horTube.x + horTube.width)) / 4 + } + + height: width + source: "images/exit.png" + mouseAreaScale: 2 + onClicked: Qt.quit() + } + + //! [1] + Tube { + id: horTube + + property real rawangle: 0 + property real angleconstant: 0 + + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width * 0.775; height: parent.height * 0.15625 + deg: rawangle - angleconstant + } + //! [1] + + Flipable { + id: sign + + property bool frontSide: true + + x: parent.width * 0.185; y: parent.height * 0.669 + width: parent.width * 0.63; height: parent.height * 0.258 + + MouseArea { + anchors.fill: parent + onClicked: sign.frontSide = !sign.frontSide + z: -1 + } + + transform: Rotation { + + origin.x: sign.width / 2; origin.y: sign.height / 2 + axis.x: 1; axis.y: 0; axis.z: 0 + angle: sign.frontSide ? 0 : 180 + + Behavior on angle { + RotationAnimation { + direction: RotationAnimation.Clockwise + easing.type: Easing.InOutCubic; duration: 300 + } + } + } + + front: Image { + anchors.fill: parent + source: "images/signwithtext.png" + smooth: true + } + + back: Image { + anchors.fill: parent + source: "images/signblank.png" + smooth: true + + Text { + id: oldValue + + anchors { + left: parent.left; leftMargin: parent.width * 0.10 + right: saveButton.left; rightMargin: 10 + verticalCenter: parent.verticalCenter + } + + text: "Place the device on a level surface and tap Calibrate." + color: "#302020" + wrapMode: Text.WordWrap + font { bold: false; pixelSize: Math.min(parent.width, parent.height) * 0.19 } + } + + Button { + id: saveButton + + anchors { + right: parent.right; rightMargin: parent.width * 0.09 + verticalCenter: parent.verticalCenter + } + + width: parent.width * 0.25; height: parent.height * 0.65 + border { width: 2; color: "#555555" } + radius: 10 + + onClicked: { + horTube.angleconstant = horTube.rawangle + saveCorrectionAngle(horTube.angleconstant) + } + + gradient: Gradient { + GradientStop { position: 0.0; color: "#999999" } + GradientStop { position: 0.2; color: "#BBBBBB" } + GradientStop { position: 0.8; color: "#BBBBBB" } + GradientStop { position: 1.0; color: "#999999" } + } + + Text { + anchors.centerIn: parent + color: "#302020" + text: "Calibrate" + font { bold: true; pixelSize: parent.width * 0.15 } + smooth: true + } + } + } + } + + Button { + anchors { + left: sign.right + right: parent.right + verticalCenter: sign.verticalCenter + margins: (parent.width - (sign.x + sign.width)) / 4 + } + + height: width + source: "images/calibbutton.png" + mouseAreaScale: 2 + smooth: true + + onClicked: sign.frontSide = !sign.frontSide + } +} diff --git a/demos/mobile/qtbubblelevel/qml/Button.qml b/demos/mobile/qtbubblelevel/qml/Button.qml new file mode 100644 index 0000000..213ee1b --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/Button.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +Rectangle { + id: button + + property alias source: image.source + property alias mouseAreaScale: mouseArea.scale + + signal clicked + + width: 50; height: 50 + color: "transparent" + + Behavior on scale { NumberAnimation { duration: 50 } } + + Image { + id: image + + anchors.fill: parent + smooth: true + } + + MouseArea { + id: mouseArea + + anchors.fill: parent + onClicked: { button.clicked() } + onEntered: { button.scale = 0.9 } + onExited: { button.scale = 1.0 } + } +} diff --git a/demos/mobile/qtbubblelevel/qml/Tube.qml b/demos/mobile/qtbubblelevel/qml/Tube.qml new file mode 100644 index 0000000..f39c9d6 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/Tube.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 1.0 + +//! [0] +Item { + id: tube + + property real deg + + Image { + id: bubble + + property real center: tube.width / 2 + property real bubbleCenter: bubble.width / 2 + + function calX() { + var newX = center + tube.deg / -20 * center + + if((newX - bubbleCenter) < 0) { + return 0 + } + else if((newX + bubbleCenter) > tube.width) { + return tube.width - 2 * bubbleCenter + } + + return newX - bubbleCenter; + } + + x: calX() + width: 0.16129032 * parent.width; height: 0.66666667 * parent.height + source: "images/bubble.png" + smooth: true + } + + Image { + anchors.horizontalCenter: parent.horizontalCenter + width: 0.36451613 * parent.width; height: 0.66666667 * parent.height + source: "images/scale.png" + } + + Image { + width: parent.width; height: 0.32 * parent.height + opacity: 0.8 + source: "images/reflection.png" + } +} +//! [0] diff --git a/demos/mobile/qtbubblelevel/qml/images/board.png b/demos/mobile/qtbubblelevel/qml/images/board.png Binary files differnew file mode 100644 index 0000000..aaed8d0 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/board.png diff --git a/demos/mobile/qtbubblelevel/qml/images/bubble.png b/demos/mobile/qtbubblelevel/qml/images/bubble.png Binary files differnew file mode 100644 index 0000000..e73be9e --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/bubble.png diff --git a/demos/mobile/qtbubblelevel/qml/images/calibbutton.png b/demos/mobile/qtbubblelevel/qml/images/calibbutton.png Binary files differnew file mode 100644 index 0000000..5f84dad --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/calibbutton.png diff --git a/demos/mobile/qtbubblelevel/qml/images/exit.png b/demos/mobile/qtbubblelevel/qml/images/exit.png Binary files differnew file mode 100644 index 0000000..64a6163 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/exit.png diff --git a/demos/mobile/qtbubblelevel/qml/images/reflection.png b/demos/mobile/qtbubblelevel/qml/images/reflection.png Binary files differnew file mode 100644 index 0000000..093781e --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/reflection.png diff --git a/demos/mobile/qtbubblelevel/qml/images/scale.png b/demos/mobile/qtbubblelevel/qml/images/scale.png Binary files differnew file mode 100644 index 0000000..c75b21e --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/scale.png diff --git a/demos/mobile/qtbubblelevel/qml/images/signblank.png b/demos/mobile/qtbubblelevel/qml/images/signblank.png Binary files differnew file mode 100644 index 0000000..03b53cc --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/signblank.png diff --git a/demos/mobile/qtbubblelevel/qml/images/signwithtext.png b/demos/mobile/qtbubblelevel/qml/images/signwithtext.png Binary files differnew file mode 100644 index 0000000..be9c050 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/signwithtext.png diff --git a/demos/mobile/qtbubblelevel/qml/images/taskswitcher.png b/demos/mobile/qtbubblelevel/qml/images/taskswitcher.png Binary files differnew file mode 100644 index 0000000..89ff7a1 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qml/images/taskswitcher.png diff --git a/demos/mobile/qtbubblelevel/qtbubblelevel.pro b/demos/mobile/qtbubblelevel/qtbubblelevel.pro new file mode 100644 index 0000000..8646308 --- /dev/null +++ b/demos/mobile/qtbubblelevel/qtbubblelevel.pro @@ -0,0 +1,61 @@ +# Copyright (c) 2011 Nokia Corporation. + +QT += core gui declarative +CONFIG += mobility +MOBILITY += sensors + +TARGET = qtbubblelevel +TEMPLATE = app + +VERSION = 1.2.0 + +HEADERS += taskswitcher.h \ + accelerometerfilter.h \ + settings.h + +SOURCES += main.cpp \ + taskswitcher.cpp \ + accelerometerfilter.cpp + +OTHER_FILES += qml/*.qml \ + qml/images/*.png + +RESOURCES = resources.qrc + +maemo5 { + BINDIR = /opt/usr/bin + DATADIR = /usr/share + DEFINES += DATADIR=\\\"$$DATADIR\\\" \ + PKGDATADIR=\\\"$$PKGDATADIR\\\" + INSTALLS += target \ + desktop \ + iconxpm \ + icon26 \ + icon40 \ + icon64 + + target.path = $$BINDIR + desktop.path = $$DATADIR/applications/hildon + desktop.files += $${TARGET}.desktop + + iconxpm.path = $$DATADIR/pixmap + iconxpm.files += icons/xpm/qtbubblelevel.xpm + + icon26.path = $$DATADIR/icons/hicolor/26x26/apps + icon26.files += icons/26x26/qtbubblelevel.png + + icon40.path = $$DATADIR/icons/hicolor/40x40/apps + icon40.files += icons/40x40/qtbubblelevel.png + + icon64.path = $$DATADIR/icons/hicolor/64x64/apps + icon64.files += icons/64x64/qtbubblelevel.png +} + +symbian { + TARGET = QtBubbleLevel + + # To lock the application to landscape orientation + LIBS += -lcone -leikcore -lavkon + + ICON = icons/bubblelevel.svg +} diff --git a/demos/mobile/qtbubblelevel/resources.qrc b/demos/mobile/qtbubblelevel/resources.qrc new file mode 100644 index 0000000..8f57e82 --- /dev/null +++ b/demos/mobile/qtbubblelevel/resources.qrc @@ -0,0 +1,16 @@ +<RCC> + <qresource prefix="/"> + <file>qml/BubbleLevel.qml</file> + <file>qml/Tube.qml</file> + <file>qml/Button.qml</file> + <file>qml/images/taskswitcher.png</file> + <file>qml/images/exit.png</file> + <file>qml/images/board.png</file> + <file>qml/images/bubble.png</file> + <file>qml/images/scale.png</file> + <file>qml/images/reflection.png</file> + <file>qml/images/signwithtext.png</file> + <file>qml/images/calibbutton.png</file> + <file>qml/images/signblank.png</file> + </qresource> +</RCC> diff --git a/demos/mobile/qtbubblelevel/settings.h b/demos/mobile/qtbubblelevel/settings.h new file mode 100644 index 0000000..2096637 --- /dev/null +++ b/demos/mobile/qtbubblelevel/settings.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SETTINGS_H +#define SETTINGS_H + +#include <QtCore> + +class Settings : public QObject +{ + Q_OBJECT + +public: + void loadAndEmitCorrectionAngle() { + QSettings settings("Nokia corp", "QtBubbleLevel"); + emit correctionAngle(settings.value("CorrectionAngle", "0.0f")); + } + +signals: + void correctionAngle(const QVariant &angle); + +public slots: + void saveCorrectionAngle(const QVariant &angle) { + QSettings settings("Nokia corp", "QtBubbleLevel"); + settings.setValue("CorrectionAngle", angle); + } +}; + +#endif // SETTINGS_H diff --git a/demos/mobile/qtbubblelevel/taskswitcher.cpp b/demos/mobile/qtbubblelevel/taskswitcher.cpp new file mode 100644 index 0000000..5a3a9fb --- /dev/null +++ b/demos/mobile/qtbubblelevel/taskswitcher.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "taskswitcher.h" + +// Task Switcher for maemo +#ifdef Q_WS_MAEMO_5 + #include <QtDBus/QtDBus> +#endif + + +void TaskSwitcher::minimizeApplication() +{ + //! [0] + #ifdef Q_WS_MAEMO_5 + // Uses DBus to minimize application in Maemo + QDBusConnection connection = QDBusConnection::sessionBus(); + QDBusMessage message = + QDBusMessage::createSignal("/","com.nokia.hildon_desktop", + "exit_app_view"); + connection.send(message); + #endif + //! [0] +} diff --git a/demos/mobile/qtbubblelevel/taskswitcher.h b/demos/mobile/qtbubblelevel/taskswitcher.h new file mode 100644 index 0000000..f7966d3 --- /dev/null +++ b/demos/mobile/qtbubblelevel/taskswitcher.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtDeclarative module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef TASKSWITCHER_H +#define TASKSWITCHER_H + +#include <QObject> + +class TaskSwitcher : public QObject +{ + Q_OBJECT + +public slots: + void minimizeApplication(); +}; + +#endif // TASKSWITCHER_H |