1598 lines
197 KiB
HTML
1598 lines
197 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>Qt 4.8: pictureflow.cpp Example File (demos/embedded/fluidlauncher/pictureflow.cpp)</title>
|
|
<link rel="stylesheet" type="text/css" href="style/style.css" />
|
|
<script src="scripts/jquery.js" type="text/javascript"></script>
|
|
<script src="scripts/functions.js" type="text/javascript"></script>
|
|
<link rel="stylesheet" type="text/css" href="style/superfish.css" />
|
|
<link rel="stylesheet" type="text/css" href="style/narrow.css" />
|
|
<!--[if IE]>
|
|
<meta name="MSSmartTagsPreventParsing" content="true">
|
|
<meta http-equiv="imagetoolbar" content="no">
|
|
<![endif]-->
|
|
<!--[if lt IE 7]>
|
|
<link rel="stylesheet" type="text/css" href="style/style_ie6.css">
|
|
<![endif]-->
|
|
<!--[if IE 7]>
|
|
<link rel="stylesheet" type="text/css" href="style/style_ie7.css">
|
|
<![endif]-->
|
|
<!--[if IE 8]>
|
|
<link rel="stylesheet" type="text/css" href="style/style_ie8.css">
|
|
<![endif]-->
|
|
|
|
<script src="scripts/superfish.js" type="text/javascript"></script>
|
|
<script src="scripts/narrow.js" type="text/javascript"></script>
|
|
|
|
</head>
|
|
<body class="" onload="CheckEmptyAndLoadList();">
|
|
<div class="header" id="qtdocheader">
|
|
<div class="content">
|
|
<div id="nav-logo">
|
|
<a href="index.html">Home</a></div>
|
|
<a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
|
|
<div id="narrowsearch"></div>
|
|
<div id="nav-topright">
|
|
<ul>
|
|
<li class="nav-topright-home"><a href="http://qt.digia.com/">Qt HOME</a></li>
|
|
<li class="nav-topright-dev"><a href="http://qt-project.org/">DEV</a></li>
|
|
<li class="nav-topright-doc nav-topright-doc-active"><a href="http://qt-project.org/doc/">
|
|
DOC</a></li>
|
|
<li class="nav-topright-blog"><a href="http://blog.qt.digia.com/">BLOG</a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="shortCut">
|
|
<ul>
|
|
<li class="shortCut-topleft-inactive"><span><a href="index.html">Qt 4.8</a></span></li>
|
|
<li class="shortCut-topleft-active"><a href="http://qt-project.org/doc/">ALL VERSIONS </a></li>
|
|
</ul>
|
|
</div>
|
|
<ul class="sf-menu" id="narrowmenu">
|
|
<li><a href="#">API Lookup</a>
|
|
<ul>
|
|
<li><a href="classes.html">Class index</a></li>
|
|
<li><a href="functions.html">Function index</a></li>
|
|
<li><a href="modules.html">Modules</a></li>
|
|
<li><a href="namespaces.html">Namespaces</a></li>
|
|
<li><a href="qtglobal.html">Global Declarations</a></li>
|
|
<li><a href="qdeclarativeelements.html">QML elements</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#">Qt Topics</a>
|
|
<ul>
|
|
<li><a href="qt-basic-concepts.html">Programming with Qt</a></li>
|
|
<li><a href="qtquick.html">Device UIs & Qt Quick</a></li>
|
|
<li><a href="qt-gui-concepts.html">UI Design with Qt</a></li>
|
|
<li><a href="supported-platforms.html">Supported Platforms</a></li>
|
|
<li><a href="technology-apis.html">Qt and Key Technologies</a></li>
|
|
<li><a href="best-practices.html">How-To's and Best Practices</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#">Examples</a>
|
|
<ul>
|
|
<li><a href="all-examples.html">Examples</a></li>
|
|
<li><a href="tutorials.html">Tutorials</a></li>
|
|
<li><a href="demos.html">Demos</a></li>
|
|
<li><a href="qdeclarativeexamples.html">QML Examples</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="wrapper">
|
|
<div class="hd">
|
|
<span></span>
|
|
</div>
|
|
<div class="bd group">
|
|
<div class="sidebar">
|
|
<div class="searchlabel">
|
|
Search index:</div>
|
|
<div class="search" id="sidebarsearch">
|
|
<form id="qtdocsearch" action="" onsubmit="return false;">
|
|
<fieldset>
|
|
<input type="text" name="searchstring" id="pageType" value="" />
|
|
<div id="resultdialog">
|
|
<a href="#" id="resultclose">Close</a>
|
|
<p id="resultlinks" class="all"><a href="#" id="showallresults">All</a> | <a href="#" id="showapiresults">API</a> | <a href="#" id="showarticleresults">Articles</a> | <a href="#" id="showexampleresults">Examples</a></p>
|
|
<p id="searchcount" class="all"><span id="resultcount"></span><span id="apicount"></span><span id="articlecount"></span><span id="examplecount"></span> results:</p>
|
|
<ul id="resultlist" class="all">
|
|
</ul>
|
|
</div>
|
|
</fieldset>
|
|
</form>
|
|
</div>
|
|
<div class="box first bottombar" id="lookup">
|
|
<h2 title="API Lookup"><span></span>
|
|
API Lookup</h2>
|
|
<div id="list001" class="list">
|
|
<ul id="ul001" >
|
|
<li class="defaultLink"><a href="classes.html">Class index</a></li>
|
|
<li class="defaultLink"><a href="functions.html">Function index</a></li>
|
|
<li class="defaultLink"><a href="modules.html">Modules</a></li>
|
|
<li class="defaultLink"><a href="namespaces.html">Namespaces</a></li>
|
|
<li class="defaultLink"><a href="qtglobal.html">Global Declarations</a></li>
|
|
<li class="defaultLink"><a href="qdeclarativeelements.html">QML elements</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="box bottombar" id="topics">
|
|
<h2 title="Qt Topics"><span></span>
|
|
Qt Topics</h2>
|
|
<div id="list002" class="list">
|
|
<ul id="ul002" >
|
|
<li class="defaultLink"><a href="qt-basic-concepts.html">Programming with Qt</a></li>
|
|
<li class="defaultLink"><a href="qtquick.html">Device UIs & Qt Quick</a></li>
|
|
<li class="defaultLink"><a href="qt-gui-concepts.html">UI Design with Qt</a></li>
|
|
<li class="defaultLink"><a href="supported-platforms.html">Supported Platforms</a></li>
|
|
<li class="defaultLink"><a href="technology-apis.html">Qt and Key Technologies</a></li>
|
|
<li class="defaultLink"><a href="best-practices.html">How-To's and Best Practices</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="box" id="examples">
|
|
<h2 title="Examples"><span></span>
|
|
Examples</h2>
|
|
<div id="list003" class="list">
|
|
<ul id="ul003">
|
|
<li class="defaultLink"><a href="all-examples.html">Examples</a></li>
|
|
<li class="defaultLink"><a href="tutorials.html">Tutorials</a></li>
|
|
<li class="defaultLink"><a href="demos.html">Demos</a></li>
|
|
<li class="defaultLink"><a href="qdeclarativeexamples.html">QML Examples</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="wrap">
|
|
<div class="toolbar">
|
|
<div class="breadcrumb toolblock">
|
|
<ul>
|
|
<li class="first"><a href="index.html">Home</a></li>
|
|
<!-- Breadcrumbs go here -->
|
|
</ul>
|
|
</div>
|
|
<div class="toolbuttons toolblock">
|
|
<ul>
|
|
<li id="smallA" class="t_button">A</li>
|
|
<li id="medA" class="t_button active">A</li>
|
|
<li id="bigA" class="t_button">A</li>
|
|
<li id="print" class="t_button"><a href="javascript:this.print();">
|
|
<span>Print</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="content mainContent">
|
|
<h1 class="title">pictureflow.cpp Example File</h1>
|
|
<span class="small-subtitle">demos/embedded/fluidlauncher/pictureflow.cpp</span>
|
|
<!-- $$$demos/embedded/fluidlauncher/pictureflow.cpp-description -->
|
|
<div class="descr"> <a name="details"></a>
|
|
<pre class="cpp"> <span class="comment">/****************************************************************************
|
|
**
|
|
** Copyright (C) 2015 The Qt Company Ltd.
|
|
** Contact: http://www.qt.io/licensing/
|
|
**
|
|
** This file is part of the ActiveQt framework 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 The Qt Company Ltd 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$
|
|
**
|
|
****************************************************************************/</span>
|
|
|
|
<span class="comment">/*
|
|
ORIGINAL COPYRIGHT HEADER
|
|
PictureFlow - animated image show widget
|
|
http://pictureflow.googlecode.com
|
|
|
|
Copyright (C) 2007 Ariya Hidayat (ariya@kde.org)
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
THE SOFTWARE.
|
|
*/</span>
|
|
|
|
<span class="preprocessor">#include "pictureflow.h"</span>
|
|
|
|
<span class="preprocessor">#include <QBasicTimer></span>
|
|
<span class="preprocessor">#include <QCache></span>
|
|
<span class="preprocessor">#include <QImage></span>
|
|
<span class="preprocessor">#include <QKeyEvent></span>
|
|
<span class="preprocessor">#include <QPainter></span>
|
|
<span class="preprocessor">#include <QPixmap></span>
|
|
<span class="preprocessor">#include <QTimer></span>
|
|
<span class="preprocessor">#include <QVector></span>
|
|
<span class="preprocessor">#include <QWidget></span>
|
|
<span class="preprocessor">#include <QTime></span>
|
|
|
|
<span class="preprocessor">#ifdef Q_WS_QWS</span>
|
|
<span class="preprocessor">#include <QScreen></span>
|
|
<span class="preprocessor">#endif</span>
|
|
|
|
<span class="preprocessor">#include <QDebug></span>
|
|
|
|
<span class="keyword">static</span> <span class="keyword">const</span> <span class="type">int</span> captionFontSize <span class="operator">=</span>
|
|
<span class="preprocessor">#ifdef Q_WS_S60</span>
|
|
<span class="number">8</span>;
|
|
<span class="preprocessor">#else</span>
|
|
<span class="number">14</span>;
|
|
<span class="preprocessor">#endif</span>
|
|
|
|
<span class="comment">// uncomment this to enable bilinear filtering for texture mapping</span>
|
|
<span class="comment">// gives much better rendering, at the cost of memory space</span>
|
|
<span class="comment">// #define PICTUREFLOW_BILINEAR_FILTER</span>
|
|
|
|
<span class="comment">// for fixed-point arithmetic, we need minimum 32-bit long</span>
|
|
<span class="comment">// long long (64-bit) might be useful for multiplication and division</span>
|
|
<span class="keyword">typedef</span> <span class="type">long</span> PFreal;
|
|
|
|
<span class="keyword">typedef</span> <span class="type">unsigned</span> <span class="type">short</span> QRgb565;
|
|
|
|
<span class="preprocessor">#define RGB565_RED_MASK 0xF800</span>
|
|
<span class="preprocessor">#define RGB565_GREEN_MASK 0x07E0</span>
|
|
<span class="preprocessor">#define RGB565_BLUE_MASK 0x001F</span>
|
|
|
|
<span class="preprocessor">#define RGB565_RED(col) ((col&RGB565_RED_MASK)>>11)</span>
|
|
<span class="preprocessor">#define RGB565_GREEN(col) ((col&RGB565_GREEN_MASK)>>5)</span>
|
|
<span class="preprocessor">#define RGB565_BLUE(col) (col&RGB565_BLUE_MASK)</span>
|
|
|
|
<span class="preprocessor">#define PFREAL_SHIFT 10</span>
|
|
<span class="preprocessor">#define PFREAL_FACTOR (1 << PFREAL_SHIFT)</span>
|
|
<span class="preprocessor">#define PFREAL_ONE (1 << PFREAL_SHIFT)</span>
|
|
<span class="preprocessor">#define PFREAL_HALF (PFREAL_ONE >> 1)</span>
|
|
|
|
<span class="keyword">inline</span> PFreal fmul(PFreal a<span class="operator">,</span> PFreal b)
|
|
{
|
|
<span class="keyword">return</span> ((<span class="type">long</span> <span class="type">long</span>)(a))<span class="operator">*</span>((<span class="type">long</span> <span class="type">long</span>)(b)) <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT;
|
|
}
|
|
|
|
<span class="keyword">inline</span> PFreal fdiv(PFreal num<span class="operator">,</span> PFreal den)
|
|
{
|
|
<span class="type">long</span> <span class="type">long</span> p <span class="operator">=</span> (<span class="type">long</span> <span class="type">long</span>)(num) <span class="operator"><</span><span class="operator"><</span> (PFREAL_SHIFT<span class="operator">*</span><span class="number">2</span>);
|
|
<span class="type">long</span> <span class="type">long</span> q <span class="operator">=</span> p <span class="operator">/</span> (<span class="type">long</span> <span class="type">long</span>)den;
|
|
<span class="type">long</span> <span class="type">long</span> r <span class="operator">=</span> q <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT;
|
|
|
|
<span class="keyword">return</span> r;
|
|
}
|
|
|
|
<span class="keyword">inline</span> <span class="type">float</span> fixedToFloat(PFreal val)
|
|
{
|
|
<span class="keyword">return</span> ((<span class="type">float</span>)val) <span class="operator">/</span> (<span class="type">float</span>)PFREAL_ONE;
|
|
}
|
|
|
|
<span class="keyword">inline</span> PFreal floatToFixed(<span class="type">float</span> val)
|
|
{
|
|
<span class="keyword">return</span> (PFreal)(val<span class="operator">*</span>PFREAL_ONE);
|
|
}
|
|
|
|
<span class="preprocessor">#define IANGLE_MAX 1024</span>
|
|
<span class="preprocessor">#define IANGLE_MASK 1023</span>
|
|
|
|
<span class="comment">// warning: regenerate the table if IANGLE_MAX and PFREAL_SHIFT are changed!</span>
|
|
<span class="keyword">static</span> <span class="keyword">const</span> PFreal sinTable<span class="operator">[</span>IANGLE_MAX<span class="operator">]</span> <span class="operator">=</span> {
|
|
<span class="number">3</span><span class="operator">,</span> <span class="number">9</span><span class="operator">,</span> <span class="number">15</span><span class="operator">,</span> <span class="number">21</span><span class="operator">,</span> <span class="number">28</span><span class="operator">,</span> <span class="number">34</span><span class="operator">,</span> <span class="number">40</span><span class="operator">,</span> <span class="number">47</span><span class="operator">,</span>
|
|
<span class="number">53</span><span class="operator">,</span> <span class="number">59</span><span class="operator">,</span> <span class="number">65</span><span class="operator">,</span> <span class="number">72</span><span class="operator">,</span> <span class="number">78</span><span class="operator">,</span> <span class="number">84</span><span class="operator">,</span> <span class="number">90</span><span class="operator">,</span> <span class="number">97</span><span class="operator">,</span>
|
|
<span class="number">103</span><span class="operator">,</span> <span class="number">109</span><span class="operator">,</span> <span class="number">115</span><span class="operator">,</span> <span class="number">122</span><span class="operator">,</span> <span class="number">128</span><span class="operator">,</span> <span class="number">134</span><span class="operator">,</span> <span class="number">140</span><span class="operator">,</span> <span class="number">147</span><span class="operator">,</span>
|
|
<span class="number">153</span><span class="operator">,</span> <span class="number">159</span><span class="operator">,</span> <span class="number">165</span><span class="operator">,</span> <span class="number">171</span><span class="operator">,</span> <span class="number">178</span><span class="operator">,</span> <span class="number">184</span><span class="operator">,</span> <span class="number">190</span><span class="operator">,</span> <span class="number">196</span><span class="operator">,</span>
|
|
<span class="number">202</span><span class="operator">,</span> <span class="number">209</span><span class="operator">,</span> <span class="number">215</span><span class="operator">,</span> <span class="number">221</span><span class="operator">,</span> <span class="number">227</span><span class="operator">,</span> <span class="number">233</span><span class="operator">,</span> <span class="number">239</span><span class="operator">,</span> <span class="number">245</span><span class="operator">,</span>
|
|
<span class="number">251</span><span class="operator">,</span> <span class="number">257</span><span class="operator">,</span> <span class="number">264</span><span class="operator">,</span> <span class="number">270</span><span class="operator">,</span> <span class="number">276</span><span class="operator">,</span> <span class="number">282</span><span class="operator">,</span> <span class="number">288</span><span class="operator">,</span> <span class="number">294</span><span class="operator">,</span>
|
|
<span class="number">300</span><span class="operator">,</span> <span class="number">306</span><span class="operator">,</span> <span class="number">312</span><span class="operator">,</span> <span class="number">318</span><span class="operator">,</span> <span class="number">324</span><span class="operator">,</span> <span class="number">330</span><span class="operator">,</span> <span class="number">336</span><span class="operator">,</span> <span class="number">342</span><span class="operator">,</span>
|
|
<span class="number">347</span><span class="operator">,</span> <span class="number">353</span><span class="operator">,</span> <span class="number">359</span><span class="operator">,</span> <span class="number">365</span><span class="operator">,</span> <span class="number">371</span><span class="operator">,</span> <span class="number">377</span><span class="operator">,</span> <span class="number">383</span><span class="operator">,</span> <span class="number">388</span><span class="operator">,</span>
|
|
<span class="number">394</span><span class="operator">,</span> <span class="number">400</span><span class="operator">,</span> <span class="number">406</span><span class="operator">,</span> <span class="number">412</span><span class="operator">,</span> <span class="number">417</span><span class="operator">,</span> <span class="number">423</span><span class="operator">,</span> <span class="number">429</span><span class="operator">,</span> <span class="number">434</span><span class="operator">,</span>
|
|
<span class="number">440</span><span class="operator">,</span> <span class="number">446</span><span class="operator">,</span> <span class="number">451</span><span class="operator">,</span> <span class="number">457</span><span class="operator">,</span> <span class="number">463</span><span class="operator">,</span> <span class="number">468</span><span class="operator">,</span> <span class="number">474</span><span class="operator">,</span> <span class="number">479</span><span class="operator">,</span>
|
|
<span class="number">485</span><span class="operator">,</span> <span class="number">491</span><span class="operator">,</span> <span class="number">496</span><span class="operator">,</span> <span class="number">501</span><span class="operator">,</span> <span class="number">507</span><span class="operator">,</span> <span class="number">512</span><span class="operator">,</span> <span class="number">518</span><span class="operator">,</span> <span class="number">523</span><span class="operator">,</span>
|
|
<span class="number">529</span><span class="operator">,</span> <span class="number">534</span><span class="operator">,</span> <span class="number">539</span><span class="operator">,</span> <span class="number">545</span><span class="operator">,</span> <span class="number">550</span><span class="operator">,</span> <span class="number">555</span><span class="operator">,</span> <span class="number">561</span><span class="operator">,</span> <span class="number">566</span><span class="operator">,</span>
|
|
<span class="number">571</span><span class="operator">,</span> <span class="number">576</span><span class="operator">,</span> <span class="number">581</span><span class="operator">,</span> <span class="number">587</span><span class="operator">,</span> <span class="number">592</span><span class="operator">,</span> <span class="number">597</span><span class="operator">,</span> <span class="number">602</span><span class="operator">,</span> <span class="number">607</span><span class="operator">,</span>
|
|
<span class="number">612</span><span class="operator">,</span> <span class="number">617</span><span class="operator">,</span> <span class="number">622</span><span class="operator">,</span> <span class="number">627</span><span class="operator">,</span> <span class="number">632</span><span class="operator">,</span> <span class="number">637</span><span class="operator">,</span> <span class="number">642</span><span class="operator">,</span> <span class="number">647</span><span class="operator">,</span>
|
|
<span class="number">652</span><span class="operator">,</span> <span class="number">656</span><span class="operator">,</span> <span class="number">661</span><span class="operator">,</span> <span class="number">666</span><span class="operator">,</span> <span class="number">671</span><span class="operator">,</span> <span class="number">675</span><span class="operator">,</span> <span class="number">680</span><span class="operator">,</span> <span class="number">685</span><span class="operator">,</span>
|
|
<span class="number">690</span><span class="operator">,</span> <span class="number">694</span><span class="operator">,</span> <span class="number">699</span><span class="operator">,</span> <span class="number">703</span><span class="operator">,</span> <span class="number">708</span><span class="operator">,</span> <span class="number">712</span><span class="operator">,</span> <span class="number">717</span><span class="operator">,</span> <span class="number">721</span><span class="operator">,</span>
|
|
<span class="number">726</span><span class="operator">,</span> <span class="number">730</span><span class="operator">,</span> <span class="number">735</span><span class="operator">,</span> <span class="number">739</span><span class="operator">,</span> <span class="number">743</span><span class="operator">,</span> <span class="number">748</span><span class="operator">,</span> <span class="number">752</span><span class="operator">,</span> <span class="number">756</span><span class="operator">,</span>
|
|
<span class="number">760</span><span class="operator">,</span> <span class="number">765</span><span class="operator">,</span> <span class="number">769</span><span class="operator">,</span> <span class="number">773</span><span class="operator">,</span> <span class="number">777</span><span class="operator">,</span> <span class="number">781</span><span class="operator">,</span> <span class="number">785</span><span class="operator">,</span> <span class="number">789</span><span class="operator">,</span>
|
|
<span class="number">793</span><span class="operator">,</span> <span class="number">797</span><span class="operator">,</span> <span class="number">801</span><span class="operator">,</span> <span class="number">805</span><span class="operator">,</span> <span class="number">809</span><span class="operator">,</span> <span class="number">813</span><span class="operator">,</span> <span class="number">816</span><span class="operator">,</span> <span class="number">820</span><span class="operator">,</span>
|
|
<span class="number">824</span><span class="operator">,</span> <span class="number">828</span><span class="operator">,</span> <span class="number">831</span><span class="operator">,</span> <span class="number">835</span><span class="operator">,</span> <span class="number">839</span><span class="operator">,</span> <span class="number">842</span><span class="operator">,</span> <span class="number">846</span><span class="operator">,</span> <span class="number">849</span><span class="operator">,</span>
|
|
<span class="number">853</span><span class="operator">,</span> <span class="number">856</span><span class="operator">,</span> <span class="number">860</span><span class="operator">,</span> <span class="number">863</span><span class="operator">,</span> <span class="number">866</span><span class="operator">,</span> <span class="number">870</span><span class="operator">,</span> <span class="number">873</span><span class="operator">,</span> <span class="number">876</span><span class="operator">,</span>
|
|
<span class="number">879</span><span class="operator">,</span> <span class="number">883</span><span class="operator">,</span> <span class="number">886</span><span class="operator">,</span> <span class="number">889</span><span class="operator">,</span> <span class="number">892</span><span class="operator">,</span> <span class="number">895</span><span class="operator">,</span> <span class="number">898</span><span class="operator">,</span> <span class="number">901</span><span class="operator">,</span>
|
|
<span class="number">904</span><span class="operator">,</span> <span class="number">907</span><span class="operator">,</span> <span class="number">910</span><span class="operator">,</span> <span class="number">913</span><span class="operator">,</span> <span class="number">916</span><span class="operator">,</span> <span class="number">918</span><span class="operator">,</span> <span class="number">921</span><span class="operator">,</span> <span class="number">924</span><span class="operator">,</span>
|
|
<span class="number">927</span><span class="operator">,</span> <span class="number">929</span><span class="operator">,</span> <span class="number">932</span><span class="operator">,</span> <span class="number">934</span><span class="operator">,</span> <span class="number">937</span><span class="operator">,</span> <span class="number">939</span><span class="operator">,</span> <span class="number">942</span><span class="operator">,</span> <span class="number">944</span><span class="operator">,</span>
|
|
<span class="number">947</span><span class="operator">,</span> <span class="number">949</span><span class="operator">,</span> <span class="number">951</span><span class="operator">,</span> <span class="number">954</span><span class="operator">,</span> <span class="number">956</span><span class="operator">,</span> <span class="number">958</span><span class="operator">,</span> <span class="number">960</span><span class="operator">,</span> <span class="number">963</span><span class="operator">,</span>
|
|
<span class="number">965</span><span class="operator">,</span> <span class="number">967</span><span class="operator">,</span> <span class="number">969</span><span class="operator">,</span> <span class="number">971</span><span class="operator">,</span> <span class="number">973</span><span class="operator">,</span> <span class="number">975</span><span class="operator">,</span> <span class="number">977</span><span class="operator">,</span> <span class="number">978</span><span class="operator">,</span>
|
|
<span class="number">980</span><span class="operator">,</span> <span class="number">982</span><span class="operator">,</span> <span class="number">984</span><span class="operator">,</span> <span class="number">986</span><span class="operator">,</span> <span class="number">987</span><span class="operator">,</span> <span class="number">989</span><span class="operator">,</span> <span class="number">990</span><span class="operator">,</span> <span class="number">992</span><span class="operator">,</span>
|
|
<span class="number">994</span><span class="operator">,</span> <span class="number">995</span><span class="operator">,</span> <span class="number">997</span><span class="operator">,</span> <span class="number">998</span><span class="operator">,</span> <span class="number">999</span><span class="operator">,</span> <span class="number">1001</span><span class="operator">,</span> <span class="number">1002</span><span class="operator">,</span> <span class="number">1003</span><span class="operator">,</span>
|
|
<span class="number">1004</span><span class="operator">,</span> <span class="number">1006</span><span class="operator">,</span> <span class="number">1007</span><span class="operator">,</span> <span class="number">1008</span><span class="operator">,</span> <span class="number">1009</span><span class="operator">,</span> <span class="number">1010</span><span class="operator">,</span> <span class="number">1011</span><span class="operator">,</span> <span class="number">1012</span><span class="operator">,</span>
|
|
<span class="number">1013</span><span class="operator">,</span> <span class="number">1014</span><span class="operator">,</span> <span class="number">1015</span><span class="operator">,</span> <span class="number">1015</span><span class="operator">,</span> <span class="number">1016</span><span class="operator">,</span> <span class="number">1017</span><span class="operator">,</span> <span class="number">1018</span><span class="operator">,</span> <span class="number">1018</span><span class="operator">,</span>
|
|
<span class="number">1019</span><span class="operator">,</span> <span class="number">1019</span><span class="operator">,</span> <span class="number">1020</span><span class="operator">,</span> <span class="number">1020</span><span class="operator">,</span> <span class="number">1021</span><span class="operator">,</span> <span class="number">1021</span><span class="operator">,</span> <span class="number">1022</span><span class="operator">,</span> <span class="number">1022</span><span class="operator">,</span>
|
|
<span class="number">1022</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span>
|
|
<span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1023</span><span class="operator">,</span> <span class="number">1022</span><span class="operator">,</span>
|
|
<span class="number">1022</span><span class="operator">,</span> <span class="number">1022</span><span class="operator">,</span> <span class="number">1021</span><span class="operator">,</span> <span class="number">1021</span><span class="operator">,</span> <span class="number">1020</span><span class="operator">,</span> <span class="number">1020</span><span class="operator">,</span> <span class="number">1019</span><span class="operator">,</span> <span class="number">1019</span><span class="operator">,</span>
|
|
<span class="number">1018</span><span class="operator">,</span> <span class="number">1018</span><span class="operator">,</span> <span class="number">1017</span><span class="operator">,</span> <span class="number">1016</span><span class="operator">,</span> <span class="number">1015</span><span class="operator">,</span> <span class="number">1015</span><span class="operator">,</span> <span class="number">1014</span><span class="operator">,</span> <span class="number">1013</span><span class="operator">,</span>
|
|
<span class="number">1012</span><span class="operator">,</span> <span class="number">1011</span><span class="operator">,</span> <span class="number">1010</span><span class="operator">,</span> <span class="number">1009</span><span class="operator">,</span> <span class="number">1008</span><span class="operator">,</span> <span class="number">1007</span><span class="operator">,</span> <span class="number">1006</span><span class="operator">,</span> <span class="number">1004</span><span class="operator">,</span>
|
|
<span class="number">1003</span><span class="operator">,</span> <span class="number">1002</span><span class="operator">,</span> <span class="number">1001</span><span class="operator">,</span> <span class="number">999</span><span class="operator">,</span> <span class="number">998</span><span class="operator">,</span> <span class="number">997</span><span class="operator">,</span> <span class="number">995</span><span class="operator">,</span> <span class="number">994</span><span class="operator">,</span>
|
|
<span class="number">992</span><span class="operator">,</span> <span class="number">990</span><span class="operator">,</span> <span class="number">989</span><span class="operator">,</span> <span class="number">987</span><span class="operator">,</span> <span class="number">986</span><span class="operator">,</span> <span class="number">984</span><span class="operator">,</span> <span class="number">982</span><span class="operator">,</span> <span class="number">980</span><span class="operator">,</span>
|
|
<span class="number">978</span><span class="operator">,</span> <span class="number">977</span><span class="operator">,</span> <span class="number">975</span><span class="operator">,</span> <span class="number">973</span><span class="operator">,</span> <span class="number">971</span><span class="operator">,</span> <span class="number">969</span><span class="operator">,</span> <span class="number">967</span><span class="operator">,</span> <span class="number">965</span><span class="operator">,</span>
|
|
<span class="number">963</span><span class="operator">,</span> <span class="number">960</span><span class="operator">,</span> <span class="number">958</span><span class="operator">,</span> <span class="number">956</span><span class="operator">,</span> <span class="number">954</span><span class="operator">,</span> <span class="number">951</span><span class="operator">,</span> <span class="number">949</span><span class="operator">,</span> <span class="number">947</span><span class="operator">,</span>
|
|
<span class="number">944</span><span class="operator">,</span> <span class="number">942</span><span class="operator">,</span> <span class="number">939</span><span class="operator">,</span> <span class="number">937</span><span class="operator">,</span> <span class="number">934</span><span class="operator">,</span> <span class="number">932</span><span class="operator">,</span> <span class="number">929</span><span class="operator">,</span> <span class="number">927</span><span class="operator">,</span>
|
|
<span class="number">924</span><span class="operator">,</span> <span class="number">921</span><span class="operator">,</span> <span class="number">918</span><span class="operator">,</span> <span class="number">916</span><span class="operator">,</span> <span class="number">913</span><span class="operator">,</span> <span class="number">910</span><span class="operator">,</span> <span class="number">907</span><span class="operator">,</span> <span class="number">904</span><span class="operator">,</span>
|
|
<span class="number">901</span><span class="operator">,</span> <span class="number">898</span><span class="operator">,</span> <span class="number">895</span><span class="operator">,</span> <span class="number">892</span><span class="operator">,</span> <span class="number">889</span><span class="operator">,</span> <span class="number">886</span><span class="operator">,</span> <span class="number">883</span><span class="operator">,</span> <span class="number">879</span><span class="operator">,</span>
|
|
<span class="number">876</span><span class="operator">,</span> <span class="number">873</span><span class="operator">,</span> <span class="number">870</span><span class="operator">,</span> <span class="number">866</span><span class="operator">,</span> <span class="number">863</span><span class="operator">,</span> <span class="number">860</span><span class="operator">,</span> <span class="number">856</span><span class="operator">,</span> <span class="number">853</span><span class="operator">,</span>
|
|
<span class="number">849</span><span class="operator">,</span> <span class="number">846</span><span class="operator">,</span> <span class="number">842</span><span class="operator">,</span> <span class="number">839</span><span class="operator">,</span> <span class="number">835</span><span class="operator">,</span> <span class="number">831</span><span class="operator">,</span> <span class="number">828</span><span class="operator">,</span> <span class="number">824</span><span class="operator">,</span>
|
|
<span class="number">820</span><span class="operator">,</span> <span class="number">816</span><span class="operator">,</span> <span class="number">813</span><span class="operator">,</span> <span class="number">809</span><span class="operator">,</span> <span class="number">805</span><span class="operator">,</span> <span class="number">801</span><span class="operator">,</span> <span class="number">797</span><span class="operator">,</span> <span class="number">793</span><span class="operator">,</span>
|
|
<span class="number">789</span><span class="operator">,</span> <span class="number">785</span><span class="operator">,</span> <span class="number">781</span><span class="operator">,</span> <span class="number">777</span><span class="operator">,</span> <span class="number">773</span><span class="operator">,</span> <span class="number">769</span><span class="operator">,</span> <span class="number">765</span><span class="operator">,</span> <span class="number">760</span><span class="operator">,</span>
|
|
<span class="number">756</span><span class="operator">,</span> <span class="number">752</span><span class="operator">,</span> <span class="number">748</span><span class="operator">,</span> <span class="number">743</span><span class="operator">,</span> <span class="number">739</span><span class="operator">,</span> <span class="number">735</span><span class="operator">,</span> <span class="number">730</span><span class="operator">,</span> <span class="number">726</span><span class="operator">,</span>
|
|
<span class="number">721</span><span class="operator">,</span> <span class="number">717</span><span class="operator">,</span> <span class="number">712</span><span class="operator">,</span> <span class="number">708</span><span class="operator">,</span> <span class="number">703</span><span class="operator">,</span> <span class="number">699</span><span class="operator">,</span> <span class="number">694</span><span class="operator">,</span> <span class="number">690</span><span class="operator">,</span>
|
|
<span class="number">685</span><span class="operator">,</span> <span class="number">680</span><span class="operator">,</span> <span class="number">675</span><span class="operator">,</span> <span class="number">671</span><span class="operator">,</span> <span class="number">666</span><span class="operator">,</span> <span class="number">661</span><span class="operator">,</span> <span class="number">656</span><span class="operator">,</span> <span class="number">652</span><span class="operator">,</span>
|
|
<span class="number">647</span><span class="operator">,</span> <span class="number">642</span><span class="operator">,</span> <span class="number">637</span><span class="operator">,</span> <span class="number">632</span><span class="operator">,</span> <span class="number">627</span><span class="operator">,</span> <span class="number">622</span><span class="operator">,</span> <span class="number">617</span><span class="operator">,</span> <span class="number">612</span><span class="operator">,</span>
|
|
<span class="number">607</span><span class="operator">,</span> <span class="number">602</span><span class="operator">,</span> <span class="number">597</span><span class="operator">,</span> <span class="number">592</span><span class="operator">,</span> <span class="number">587</span><span class="operator">,</span> <span class="number">581</span><span class="operator">,</span> <span class="number">576</span><span class="operator">,</span> <span class="number">571</span><span class="operator">,</span>
|
|
<span class="number">566</span><span class="operator">,</span> <span class="number">561</span><span class="operator">,</span> <span class="number">555</span><span class="operator">,</span> <span class="number">550</span><span class="operator">,</span> <span class="number">545</span><span class="operator">,</span> <span class="number">539</span><span class="operator">,</span> <span class="number">534</span><span class="operator">,</span> <span class="number">529</span><span class="operator">,</span>
|
|
<span class="number">523</span><span class="operator">,</span> <span class="number">518</span><span class="operator">,</span> <span class="number">512</span><span class="operator">,</span> <span class="number">507</span><span class="operator">,</span> <span class="number">501</span><span class="operator">,</span> <span class="number">496</span><span class="operator">,</span> <span class="number">491</span><span class="operator">,</span> <span class="number">485</span><span class="operator">,</span>
|
|
<span class="number">479</span><span class="operator">,</span> <span class="number">474</span><span class="operator">,</span> <span class="number">468</span><span class="operator">,</span> <span class="number">463</span><span class="operator">,</span> <span class="number">457</span><span class="operator">,</span> <span class="number">451</span><span class="operator">,</span> <span class="number">446</span><span class="operator">,</span> <span class="number">440</span><span class="operator">,</span>
|
|
<span class="number">434</span><span class="operator">,</span> <span class="number">429</span><span class="operator">,</span> <span class="number">423</span><span class="operator">,</span> <span class="number">417</span><span class="operator">,</span> <span class="number">412</span><span class="operator">,</span> <span class="number">406</span><span class="operator">,</span> <span class="number">400</span><span class="operator">,</span> <span class="number">394</span><span class="operator">,</span>
|
|
<span class="number">388</span><span class="operator">,</span> <span class="number">383</span><span class="operator">,</span> <span class="number">377</span><span class="operator">,</span> <span class="number">371</span><span class="operator">,</span> <span class="number">365</span><span class="operator">,</span> <span class="number">359</span><span class="operator">,</span> <span class="number">353</span><span class="operator">,</span> <span class="number">347</span><span class="operator">,</span>
|
|
<span class="number">342</span><span class="operator">,</span> <span class="number">336</span><span class="operator">,</span> <span class="number">330</span><span class="operator">,</span> <span class="number">324</span><span class="operator">,</span> <span class="number">318</span><span class="operator">,</span> <span class="number">312</span><span class="operator">,</span> <span class="number">306</span><span class="operator">,</span> <span class="number">300</span><span class="operator">,</span>
|
|
<span class="number">294</span><span class="operator">,</span> <span class="number">288</span><span class="operator">,</span> <span class="number">282</span><span class="operator">,</span> <span class="number">276</span><span class="operator">,</span> <span class="number">270</span><span class="operator">,</span> <span class="number">264</span><span class="operator">,</span> <span class="number">257</span><span class="operator">,</span> <span class="number">251</span><span class="operator">,</span>
|
|
<span class="number">245</span><span class="operator">,</span> <span class="number">239</span><span class="operator">,</span> <span class="number">233</span><span class="operator">,</span> <span class="number">227</span><span class="operator">,</span> <span class="number">221</span><span class="operator">,</span> <span class="number">215</span><span class="operator">,</span> <span class="number">209</span><span class="operator">,</span> <span class="number">202</span><span class="operator">,</span>
|
|
<span class="number">196</span><span class="operator">,</span> <span class="number">190</span><span class="operator">,</span> <span class="number">184</span><span class="operator">,</span> <span class="number">178</span><span class="operator">,</span> <span class="number">171</span><span class="operator">,</span> <span class="number">165</span><span class="operator">,</span> <span class="number">159</span><span class="operator">,</span> <span class="number">153</span><span class="operator">,</span>
|
|
<span class="number">147</span><span class="operator">,</span> <span class="number">140</span><span class="operator">,</span> <span class="number">134</span><span class="operator">,</span> <span class="number">128</span><span class="operator">,</span> <span class="number">122</span><span class="operator">,</span> <span class="number">115</span><span class="operator">,</span> <span class="number">109</span><span class="operator">,</span> <span class="number">103</span><span class="operator">,</span>
|
|
<span class="number">97</span><span class="operator">,</span> <span class="number">90</span><span class="operator">,</span> <span class="number">84</span><span class="operator">,</span> <span class="number">78</span><span class="operator">,</span> <span class="number">72</span><span class="operator">,</span> <span class="number">65</span><span class="operator">,</span> <span class="number">59</span><span class="operator">,</span> <span class="number">53</span><span class="operator">,</span>
|
|
<span class="number">47</span><span class="operator">,</span> <span class="number">40</span><span class="operator">,</span> <span class="number">34</span><span class="operator">,</span> <span class="number">28</span><span class="operator">,</span> <span class="number">21</span><span class="operator">,</span> <span class="number">15</span><span class="operator">,</span> <span class="number">9</span><span class="operator">,</span> <span class="number">3</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">4</span><span class="operator">,</span> <span class="operator">-</span><span class="number">10</span><span class="operator">,</span> <span class="operator">-</span><span class="number">16</span><span class="operator">,</span> <span class="operator">-</span><span class="number">22</span><span class="operator">,</span> <span class="operator">-</span><span class="number">29</span><span class="operator">,</span> <span class="operator">-</span><span class="number">35</span><span class="operator">,</span> <span class="operator">-</span><span class="number">41</span><span class="operator">,</span> <span class="operator">-</span><span class="number">48</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">54</span><span class="operator">,</span> <span class="operator">-</span><span class="number">60</span><span class="operator">,</span> <span class="operator">-</span><span class="number">66</span><span class="operator">,</span> <span class="operator">-</span><span class="number">73</span><span class="operator">,</span> <span class="operator">-</span><span class="number">79</span><span class="operator">,</span> <span class="operator">-</span><span class="number">85</span><span class="operator">,</span> <span class="operator">-</span><span class="number">91</span><span class="operator">,</span> <span class="operator">-</span><span class="number">98</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">104</span><span class="operator">,</span> <span class="operator">-</span><span class="number">110</span><span class="operator">,</span> <span class="operator">-</span><span class="number">116</span><span class="operator">,</span> <span class="operator">-</span><span class="number">123</span><span class="operator">,</span> <span class="operator">-</span><span class="number">129</span><span class="operator">,</span> <span class="operator">-</span><span class="number">135</span><span class="operator">,</span> <span class="operator">-</span><span class="number">141</span><span class="operator">,</span> <span class="operator">-</span><span class="number">148</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">154</span><span class="operator">,</span> <span class="operator">-</span><span class="number">160</span><span class="operator">,</span> <span class="operator">-</span><span class="number">166</span><span class="operator">,</span> <span class="operator">-</span><span class="number">172</span><span class="operator">,</span> <span class="operator">-</span><span class="number">179</span><span class="operator">,</span> <span class="operator">-</span><span class="number">185</span><span class="operator">,</span> <span class="operator">-</span><span class="number">191</span><span class="operator">,</span> <span class="operator">-</span><span class="number">197</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">203</span><span class="operator">,</span> <span class="operator">-</span><span class="number">210</span><span class="operator">,</span> <span class="operator">-</span><span class="number">216</span><span class="operator">,</span> <span class="operator">-</span><span class="number">222</span><span class="operator">,</span> <span class="operator">-</span><span class="number">228</span><span class="operator">,</span> <span class="operator">-</span><span class="number">234</span><span class="operator">,</span> <span class="operator">-</span><span class="number">240</span><span class="operator">,</span> <span class="operator">-</span><span class="number">246</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">252</span><span class="operator">,</span> <span class="operator">-</span><span class="number">258</span><span class="operator">,</span> <span class="operator">-</span><span class="number">265</span><span class="operator">,</span> <span class="operator">-</span><span class="number">271</span><span class="operator">,</span> <span class="operator">-</span><span class="number">277</span><span class="operator">,</span> <span class="operator">-</span><span class="number">283</span><span class="operator">,</span> <span class="operator">-</span><span class="number">289</span><span class="operator">,</span> <span class="operator">-</span><span class="number">295</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">301</span><span class="operator">,</span> <span class="operator">-</span><span class="number">307</span><span class="operator">,</span> <span class="operator">-</span><span class="number">313</span><span class="operator">,</span> <span class="operator">-</span><span class="number">319</span><span class="operator">,</span> <span class="operator">-</span><span class="number">325</span><span class="operator">,</span> <span class="operator">-</span><span class="number">331</span><span class="operator">,</span> <span class="operator">-</span><span class="number">337</span><span class="operator">,</span> <span class="operator">-</span><span class="number">343</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">348</span><span class="operator">,</span> <span class="operator">-</span><span class="number">354</span><span class="operator">,</span> <span class="operator">-</span><span class="number">360</span><span class="operator">,</span> <span class="operator">-</span><span class="number">366</span><span class="operator">,</span> <span class="operator">-</span><span class="number">372</span><span class="operator">,</span> <span class="operator">-</span><span class="number">378</span><span class="operator">,</span> <span class="operator">-</span><span class="number">384</span><span class="operator">,</span> <span class="operator">-</span><span class="number">389</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">395</span><span class="operator">,</span> <span class="operator">-</span><span class="number">401</span><span class="operator">,</span> <span class="operator">-</span><span class="number">407</span><span class="operator">,</span> <span class="operator">-</span><span class="number">413</span><span class="operator">,</span> <span class="operator">-</span><span class="number">418</span><span class="operator">,</span> <span class="operator">-</span><span class="number">424</span><span class="operator">,</span> <span class="operator">-</span><span class="number">430</span><span class="operator">,</span> <span class="operator">-</span><span class="number">435</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">441</span><span class="operator">,</span> <span class="operator">-</span><span class="number">447</span><span class="operator">,</span> <span class="operator">-</span><span class="number">452</span><span class="operator">,</span> <span class="operator">-</span><span class="number">458</span><span class="operator">,</span> <span class="operator">-</span><span class="number">464</span><span class="operator">,</span> <span class="operator">-</span><span class="number">469</span><span class="operator">,</span> <span class="operator">-</span><span class="number">475</span><span class="operator">,</span> <span class="operator">-</span><span class="number">480</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">486</span><span class="operator">,</span> <span class="operator">-</span><span class="number">492</span><span class="operator">,</span> <span class="operator">-</span><span class="number">497</span><span class="operator">,</span> <span class="operator">-</span><span class="number">502</span><span class="operator">,</span> <span class="operator">-</span><span class="number">508</span><span class="operator">,</span> <span class="operator">-</span><span class="number">513</span><span class="operator">,</span> <span class="operator">-</span><span class="number">519</span><span class="operator">,</span> <span class="operator">-</span><span class="number">524</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">530</span><span class="operator">,</span> <span class="operator">-</span><span class="number">535</span><span class="operator">,</span> <span class="operator">-</span><span class="number">540</span><span class="operator">,</span> <span class="operator">-</span><span class="number">546</span><span class="operator">,</span> <span class="operator">-</span><span class="number">551</span><span class="operator">,</span> <span class="operator">-</span><span class="number">556</span><span class="operator">,</span> <span class="operator">-</span><span class="number">562</span><span class="operator">,</span> <span class="operator">-</span><span class="number">567</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">572</span><span class="operator">,</span> <span class="operator">-</span><span class="number">577</span><span class="operator">,</span> <span class="operator">-</span><span class="number">582</span><span class="operator">,</span> <span class="operator">-</span><span class="number">588</span><span class="operator">,</span> <span class="operator">-</span><span class="number">593</span><span class="operator">,</span> <span class="operator">-</span><span class="number">598</span><span class="operator">,</span> <span class="operator">-</span><span class="number">603</span><span class="operator">,</span> <span class="operator">-</span><span class="number">608</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">613</span><span class="operator">,</span> <span class="operator">-</span><span class="number">618</span><span class="operator">,</span> <span class="operator">-</span><span class="number">623</span><span class="operator">,</span> <span class="operator">-</span><span class="number">628</span><span class="operator">,</span> <span class="operator">-</span><span class="number">633</span><span class="operator">,</span> <span class="operator">-</span><span class="number">638</span><span class="operator">,</span> <span class="operator">-</span><span class="number">643</span><span class="operator">,</span> <span class="operator">-</span><span class="number">648</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">653</span><span class="operator">,</span> <span class="operator">-</span><span class="number">657</span><span class="operator">,</span> <span class="operator">-</span><span class="number">662</span><span class="operator">,</span> <span class="operator">-</span><span class="number">667</span><span class="operator">,</span> <span class="operator">-</span><span class="number">672</span><span class="operator">,</span> <span class="operator">-</span><span class="number">676</span><span class="operator">,</span> <span class="operator">-</span><span class="number">681</span><span class="operator">,</span> <span class="operator">-</span><span class="number">686</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">691</span><span class="operator">,</span> <span class="operator">-</span><span class="number">695</span><span class="operator">,</span> <span class="operator">-</span><span class="number">700</span><span class="operator">,</span> <span class="operator">-</span><span class="number">704</span><span class="operator">,</span> <span class="operator">-</span><span class="number">709</span><span class="operator">,</span> <span class="operator">-</span><span class="number">713</span><span class="operator">,</span> <span class="operator">-</span><span class="number">718</span><span class="operator">,</span> <span class="operator">-</span><span class="number">722</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">727</span><span class="operator">,</span> <span class="operator">-</span><span class="number">731</span><span class="operator">,</span> <span class="operator">-</span><span class="number">736</span><span class="operator">,</span> <span class="operator">-</span><span class="number">740</span><span class="operator">,</span> <span class="operator">-</span><span class="number">744</span><span class="operator">,</span> <span class="operator">-</span><span class="number">749</span><span class="operator">,</span> <span class="operator">-</span><span class="number">753</span><span class="operator">,</span> <span class="operator">-</span><span class="number">757</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">761</span><span class="operator">,</span> <span class="operator">-</span><span class="number">766</span><span class="operator">,</span> <span class="operator">-</span><span class="number">770</span><span class="operator">,</span> <span class="operator">-</span><span class="number">774</span><span class="operator">,</span> <span class="operator">-</span><span class="number">778</span><span class="operator">,</span> <span class="operator">-</span><span class="number">782</span><span class="operator">,</span> <span class="operator">-</span><span class="number">786</span><span class="operator">,</span> <span class="operator">-</span><span class="number">790</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">794</span><span class="operator">,</span> <span class="operator">-</span><span class="number">798</span><span class="operator">,</span> <span class="operator">-</span><span class="number">802</span><span class="operator">,</span> <span class="operator">-</span><span class="number">806</span><span class="operator">,</span> <span class="operator">-</span><span class="number">810</span><span class="operator">,</span> <span class="operator">-</span><span class="number">814</span><span class="operator">,</span> <span class="operator">-</span><span class="number">817</span><span class="operator">,</span> <span class="operator">-</span><span class="number">821</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">825</span><span class="operator">,</span> <span class="operator">-</span><span class="number">829</span><span class="operator">,</span> <span class="operator">-</span><span class="number">832</span><span class="operator">,</span> <span class="operator">-</span><span class="number">836</span><span class="operator">,</span> <span class="operator">-</span><span class="number">840</span><span class="operator">,</span> <span class="operator">-</span><span class="number">843</span><span class="operator">,</span> <span class="operator">-</span><span class="number">847</span><span class="operator">,</span> <span class="operator">-</span><span class="number">850</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">854</span><span class="operator">,</span> <span class="operator">-</span><span class="number">857</span><span class="operator">,</span> <span class="operator">-</span><span class="number">861</span><span class="operator">,</span> <span class="operator">-</span><span class="number">864</span><span class="operator">,</span> <span class="operator">-</span><span class="number">867</span><span class="operator">,</span> <span class="operator">-</span><span class="number">871</span><span class="operator">,</span> <span class="operator">-</span><span class="number">874</span><span class="operator">,</span> <span class="operator">-</span><span class="number">877</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">880</span><span class="operator">,</span> <span class="operator">-</span><span class="number">884</span><span class="operator">,</span> <span class="operator">-</span><span class="number">887</span><span class="operator">,</span> <span class="operator">-</span><span class="number">890</span><span class="operator">,</span> <span class="operator">-</span><span class="number">893</span><span class="operator">,</span> <span class="operator">-</span><span class="number">896</span><span class="operator">,</span> <span class="operator">-</span><span class="number">899</span><span class="operator">,</span> <span class="operator">-</span><span class="number">902</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">905</span><span class="operator">,</span> <span class="operator">-</span><span class="number">908</span><span class="operator">,</span> <span class="operator">-</span><span class="number">911</span><span class="operator">,</span> <span class="operator">-</span><span class="number">914</span><span class="operator">,</span> <span class="operator">-</span><span class="number">917</span><span class="operator">,</span> <span class="operator">-</span><span class="number">919</span><span class="operator">,</span> <span class="operator">-</span><span class="number">922</span><span class="operator">,</span> <span class="operator">-</span><span class="number">925</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">928</span><span class="operator">,</span> <span class="operator">-</span><span class="number">930</span><span class="operator">,</span> <span class="operator">-</span><span class="number">933</span><span class="operator">,</span> <span class="operator">-</span><span class="number">935</span><span class="operator">,</span> <span class="operator">-</span><span class="number">938</span><span class="operator">,</span> <span class="operator">-</span><span class="number">940</span><span class="operator">,</span> <span class="operator">-</span><span class="number">943</span><span class="operator">,</span> <span class="operator">-</span><span class="number">945</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">948</span><span class="operator">,</span> <span class="operator">-</span><span class="number">950</span><span class="operator">,</span> <span class="operator">-</span><span class="number">952</span><span class="operator">,</span> <span class="operator">-</span><span class="number">955</span><span class="operator">,</span> <span class="operator">-</span><span class="number">957</span><span class="operator">,</span> <span class="operator">-</span><span class="number">959</span><span class="operator">,</span> <span class="operator">-</span><span class="number">961</span><span class="operator">,</span> <span class="operator">-</span><span class="number">964</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">966</span><span class="operator">,</span> <span class="operator">-</span><span class="number">968</span><span class="operator">,</span> <span class="operator">-</span><span class="number">970</span><span class="operator">,</span> <span class="operator">-</span><span class="number">972</span><span class="operator">,</span> <span class="operator">-</span><span class="number">974</span><span class="operator">,</span> <span class="operator">-</span><span class="number">976</span><span class="operator">,</span> <span class="operator">-</span><span class="number">978</span><span class="operator">,</span> <span class="operator">-</span><span class="number">979</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">981</span><span class="operator">,</span> <span class="operator">-</span><span class="number">983</span><span class="operator">,</span> <span class="operator">-</span><span class="number">985</span><span class="operator">,</span> <span class="operator">-</span><span class="number">987</span><span class="operator">,</span> <span class="operator">-</span><span class="number">988</span><span class="operator">,</span> <span class="operator">-</span><span class="number">990</span><span class="operator">,</span> <span class="operator">-</span><span class="number">991</span><span class="operator">,</span> <span class="operator">-</span><span class="number">993</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">995</span><span class="operator">,</span> <span class="operator">-</span><span class="number">996</span><span class="operator">,</span> <span class="operator">-</span><span class="number">998</span><span class="operator">,</span> <span class="operator">-</span><span class="number">999</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1000</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1002</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1003</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1004</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1005</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1007</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1008</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1009</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1010</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1011</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1012</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1013</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1014</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1015</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1016</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1016</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1017</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1018</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1019</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1019</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1020</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1020</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1021</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1021</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1022</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1022</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1023</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1023</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1023</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1024</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1023</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1023</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1023</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1022</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1022</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1021</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1021</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1020</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1020</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1019</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1019</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1018</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1017</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1016</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1016</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1015</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1014</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1013</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1012</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1011</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1010</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1009</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1008</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1007</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1005</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">1004</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1003</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1002</span><span class="operator">,</span> <span class="operator">-</span><span class="number">1000</span><span class="operator">,</span> <span class="operator">-</span><span class="number">999</span><span class="operator">,</span> <span class="operator">-</span><span class="number">998</span><span class="operator">,</span> <span class="operator">-</span><span class="number">996</span><span class="operator">,</span> <span class="operator">-</span><span class="number">995</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">993</span><span class="operator">,</span> <span class="operator">-</span><span class="number">991</span><span class="operator">,</span> <span class="operator">-</span><span class="number">990</span><span class="operator">,</span> <span class="operator">-</span><span class="number">988</span><span class="operator">,</span> <span class="operator">-</span><span class="number">987</span><span class="operator">,</span> <span class="operator">-</span><span class="number">985</span><span class="operator">,</span> <span class="operator">-</span><span class="number">983</span><span class="operator">,</span> <span class="operator">-</span><span class="number">981</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">979</span><span class="operator">,</span> <span class="operator">-</span><span class="number">978</span><span class="operator">,</span> <span class="operator">-</span><span class="number">976</span><span class="operator">,</span> <span class="operator">-</span><span class="number">974</span><span class="operator">,</span> <span class="operator">-</span><span class="number">972</span><span class="operator">,</span> <span class="operator">-</span><span class="number">970</span><span class="operator">,</span> <span class="operator">-</span><span class="number">968</span><span class="operator">,</span> <span class="operator">-</span><span class="number">966</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">964</span><span class="operator">,</span> <span class="operator">-</span><span class="number">961</span><span class="operator">,</span> <span class="operator">-</span><span class="number">959</span><span class="operator">,</span> <span class="operator">-</span><span class="number">957</span><span class="operator">,</span> <span class="operator">-</span><span class="number">955</span><span class="operator">,</span> <span class="operator">-</span><span class="number">952</span><span class="operator">,</span> <span class="operator">-</span><span class="number">950</span><span class="operator">,</span> <span class="operator">-</span><span class="number">948</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">945</span><span class="operator">,</span> <span class="operator">-</span><span class="number">943</span><span class="operator">,</span> <span class="operator">-</span><span class="number">940</span><span class="operator">,</span> <span class="operator">-</span><span class="number">938</span><span class="operator">,</span> <span class="operator">-</span><span class="number">935</span><span class="operator">,</span> <span class="operator">-</span><span class="number">933</span><span class="operator">,</span> <span class="operator">-</span><span class="number">930</span><span class="operator">,</span> <span class="operator">-</span><span class="number">928</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">925</span><span class="operator">,</span> <span class="operator">-</span><span class="number">922</span><span class="operator">,</span> <span class="operator">-</span><span class="number">919</span><span class="operator">,</span> <span class="operator">-</span><span class="number">917</span><span class="operator">,</span> <span class="operator">-</span><span class="number">914</span><span class="operator">,</span> <span class="operator">-</span><span class="number">911</span><span class="operator">,</span> <span class="operator">-</span><span class="number">908</span><span class="operator">,</span> <span class="operator">-</span><span class="number">905</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">902</span><span class="operator">,</span> <span class="operator">-</span><span class="number">899</span><span class="operator">,</span> <span class="operator">-</span><span class="number">896</span><span class="operator">,</span> <span class="operator">-</span><span class="number">893</span><span class="operator">,</span> <span class="operator">-</span><span class="number">890</span><span class="operator">,</span> <span class="operator">-</span><span class="number">887</span><span class="operator">,</span> <span class="operator">-</span><span class="number">884</span><span class="operator">,</span> <span class="operator">-</span><span class="number">880</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">877</span><span class="operator">,</span> <span class="operator">-</span><span class="number">874</span><span class="operator">,</span> <span class="operator">-</span><span class="number">871</span><span class="operator">,</span> <span class="operator">-</span><span class="number">867</span><span class="operator">,</span> <span class="operator">-</span><span class="number">864</span><span class="operator">,</span> <span class="operator">-</span><span class="number">861</span><span class="operator">,</span> <span class="operator">-</span><span class="number">857</span><span class="operator">,</span> <span class="operator">-</span><span class="number">854</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">850</span><span class="operator">,</span> <span class="operator">-</span><span class="number">847</span><span class="operator">,</span> <span class="operator">-</span><span class="number">843</span><span class="operator">,</span> <span class="operator">-</span><span class="number">840</span><span class="operator">,</span> <span class="operator">-</span><span class="number">836</span><span class="operator">,</span> <span class="operator">-</span><span class="number">832</span><span class="operator">,</span> <span class="operator">-</span><span class="number">829</span><span class="operator">,</span> <span class="operator">-</span><span class="number">825</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">821</span><span class="operator">,</span> <span class="operator">-</span><span class="number">817</span><span class="operator">,</span> <span class="operator">-</span><span class="number">814</span><span class="operator">,</span> <span class="operator">-</span><span class="number">810</span><span class="operator">,</span> <span class="operator">-</span><span class="number">806</span><span class="operator">,</span> <span class="operator">-</span><span class="number">802</span><span class="operator">,</span> <span class="operator">-</span><span class="number">798</span><span class="operator">,</span> <span class="operator">-</span><span class="number">794</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">790</span><span class="operator">,</span> <span class="operator">-</span><span class="number">786</span><span class="operator">,</span> <span class="operator">-</span><span class="number">782</span><span class="operator">,</span> <span class="operator">-</span><span class="number">778</span><span class="operator">,</span> <span class="operator">-</span><span class="number">774</span><span class="operator">,</span> <span class="operator">-</span><span class="number">770</span><span class="operator">,</span> <span class="operator">-</span><span class="number">766</span><span class="operator">,</span> <span class="operator">-</span><span class="number">761</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">757</span><span class="operator">,</span> <span class="operator">-</span><span class="number">753</span><span class="operator">,</span> <span class="operator">-</span><span class="number">749</span><span class="operator">,</span> <span class="operator">-</span><span class="number">744</span><span class="operator">,</span> <span class="operator">-</span><span class="number">740</span><span class="operator">,</span> <span class="operator">-</span><span class="number">736</span><span class="operator">,</span> <span class="operator">-</span><span class="number">731</span><span class="operator">,</span> <span class="operator">-</span><span class="number">727</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">722</span><span class="operator">,</span> <span class="operator">-</span><span class="number">718</span><span class="operator">,</span> <span class="operator">-</span><span class="number">713</span><span class="operator">,</span> <span class="operator">-</span><span class="number">709</span><span class="operator">,</span> <span class="operator">-</span><span class="number">704</span><span class="operator">,</span> <span class="operator">-</span><span class="number">700</span><span class="operator">,</span> <span class="operator">-</span><span class="number">695</span><span class="operator">,</span> <span class="operator">-</span><span class="number">691</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">686</span><span class="operator">,</span> <span class="operator">-</span><span class="number">681</span><span class="operator">,</span> <span class="operator">-</span><span class="number">676</span><span class="operator">,</span> <span class="operator">-</span><span class="number">672</span><span class="operator">,</span> <span class="operator">-</span><span class="number">667</span><span class="operator">,</span> <span class="operator">-</span><span class="number">662</span><span class="operator">,</span> <span class="operator">-</span><span class="number">657</span><span class="operator">,</span> <span class="operator">-</span><span class="number">653</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">648</span><span class="operator">,</span> <span class="operator">-</span><span class="number">643</span><span class="operator">,</span> <span class="operator">-</span><span class="number">638</span><span class="operator">,</span> <span class="operator">-</span><span class="number">633</span><span class="operator">,</span> <span class="operator">-</span><span class="number">628</span><span class="operator">,</span> <span class="operator">-</span><span class="number">623</span><span class="operator">,</span> <span class="operator">-</span><span class="number">618</span><span class="operator">,</span> <span class="operator">-</span><span class="number">613</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">608</span><span class="operator">,</span> <span class="operator">-</span><span class="number">603</span><span class="operator">,</span> <span class="operator">-</span><span class="number">598</span><span class="operator">,</span> <span class="operator">-</span><span class="number">593</span><span class="operator">,</span> <span class="operator">-</span><span class="number">588</span><span class="operator">,</span> <span class="operator">-</span><span class="number">582</span><span class="operator">,</span> <span class="operator">-</span><span class="number">577</span><span class="operator">,</span> <span class="operator">-</span><span class="number">572</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">567</span><span class="operator">,</span> <span class="operator">-</span><span class="number">562</span><span class="operator">,</span> <span class="operator">-</span><span class="number">556</span><span class="operator">,</span> <span class="operator">-</span><span class="number">551</span><span class="operator">,</span> <span class="operator">-</span><span class="number">546</span><span class="operator">,</span> <span class="operator">-</span><span class="number">540</span><span class="operator">,</span> <span class="operator">-</span><span class="number">535</span><span class="operator">,</span> <span class="operator">-</span><span class="number">530</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">524</span><span class="operator">,</span> <span class="operator">-</span><span class="number">519</span><span class="operator">,</span> <span class="operator">-</span><span class="number">513</span><span class="operator">,</span> <span class="operator">-</span><span class="number">508</span><span class="operator">,</span> <span class="operator">-</span><span class="number">502</span><span class="operator">,</span> <span class="operator">-</span><span class="number">497</span><span class="operator">,</span> <span class="operator">-</span><span class="number">492</span><span class="operator">,</span> <span class="operator">-</span><span class="number">486</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">480</span><span class="operator">,</span> <span class="operator">-</span><span class="number">475</span><span class="operator">,</span> <span class="operator">-</span><span class="number">469</span><span class="operator">,</span> <span class="operator">-</span><span class="number">464</span><span class="operator">,</span> <span class="operator">-</span><span class="number">458</span><span class="operator">,</span> <span class="operator">-</span><span class="number">452</span><span class="operator">,</span> <span class="operator">-</span><span class="number">447</span><span class="operator">,</span> <span class="operator">-</span><span class="number">441</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">435</span><span class="operator">,</span> <span class="operator">-</span><span class="number">430</span><span class="operator">,</span> <span class="operator">-</span><span class="number">424</span><span class="operator">,</span> <span class="operator">-</span><span class="number">418</span><span class="operator">,</span> <span class="operator">-</span><span class="number">413</span><span class="operator">,</span> <span class="operator">-</span><span class="number">407</span><span class="operator">,</span> <span class="operator">-</span><span class="number">401</span><span class="operator">,</span> <span class="operator">-</span><span class="number">395</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">389</span><span class="operator">,</span> <span class="operator">-</span><span class="number">384</span><span class="operator">,</span> <span class="operator">-</span><span class="number">378</span><span class="operator">,</span> <span class="operator">-</span><span class="number">372</span><span class="operator">,</span> <span class="operator">-</span><span class="number">366</span><span class="operator">,</span> <span class="operator">-</span><span class="number">360</span><span class="operator">,</span> <span class="operator">-</span><span class="number">354</span><span class="operator">,</span> <span class="operator">-</span><span class="number">348</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">343</span><span class="operator">,</span> <span class="operator">-</span><span class="number">337</span><span class="operator">,</span> <span class="operator">-</span><span class="number">331</span><span class="operator">,</span> <span class="operator">-</span><span class="number">325</span><span class="operator">,</span> <span class="operator">-</span><span class="number">319</span><span class="operator">,</span> <span class="operator">-</span><span class="number">313</span><span class="operator">,</span> <span class="operator">-</span><span class="number">307</span><span class="operator">,</span> <span class="operator">-</span><span class="number">301</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">295</span><span class="operator">,</span> <span class="operator">-</span><span class="number">289</span><span class="operator">,</span> <span class="operator">-</span><span class="number">283</span><span class="operator">,</span> <span class="operator">-</span><span class="number">277</span><span class="operator">,</span> <span class="operator">-</span><span class="number">271</span><span class="operator">,</span> <span class="operator">-</span><span class="number">265</span><span class="operator">,</span> <span class="operator">-</span><span class="number">258</span><span class="operator">,</span> <span class="operator">-</span><span class="number">252</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">246</span><span class="operator">,</span> <span class="operator">-</span><span class="number">240</span><span class="operator">,</span> <span class="operator">-</span><span class="number">234</span><span class="operator">,</span> <span class="operator">-</span><span class="number">228</span><span class="operator">,</span> <span class="operator">-</span><span class="number">222</span><span class="operator">,</span> <span class="operator">-</span><span class="number">216</span><span class="operator">,</span> <span class="operator">-</span><span class="number">210</span><span class="operator">,</span> <span class="operator">-</span><span class="number">203</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">197</span><span class="operator">,</span> <span class="operator">-</span><span class="number">191</span><span class="operator">,</span> <span class="operator">-</span><span class="number">185</span><span class="operator">,</span> <span class="operator">-</span><span class="number">179</span><span class="operator">,</span> <span class="operator">-</span><span class="number">172</span><span class="operator">,</span> <span class="operator">-</span><span class="number">166</span><span class="operator">,</span> <span class="operator">-</span><span class="number">160</span><span class="operator">,</span> <span class="operator">-</span><span class="number">154</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">148</span><span class="operator">,</span> <span class="operator">-</span><span class="number">141</span><span class="operator">,</span> <span class="operator">-</span><span class="number">135</span><span class="operator">,</span> <span class="operator">-</span><span class="number">129</span><span class="operator">,</span> <span class="operator">-</span><span class="number">123</span><span class="operator">,</span> <span class="operator">-</span><span class="number">116</span><span class="operator">,</span> <span class="operator">-</span><span class="number">110</span><span class="operator">,</span> <span class="operator">-</span><span class="number">104</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">98</span><span class="operator">,</span> <span class="operator">-</span><span class="number">91</span><span class="operator">,</span> <span class="operator">-</span><span class="number">85</span><span class="operator">,</span> <span class="operator">-</span><span class="number">79</span><span class="operator">,</span> <span class="operator">-</span><span class="number">73</span><span class="operator">,</span> <span class="operator">-</span><span class="number">66</span><span class="operator">,</span> <span class="operator">-</span><span class="number">60</span><span class="operator">,</span> <span class="operator">-</span><span class="number">54</span><span class="operator">,</span>
|
|
<span class="operator">-</span><span class="number">48</span><span class="operator">,</span> <span class="operator">-</span><span class="number">41</span><span class="operator">,</span> <span class="operator">-</span><span class="number">35</span><span class="operator">,</span> <span class="operator">-</span><span class="number">29</span><span class="operator">,</span> <span class="operator">-</span><span class="number">22</span><span class="operator">,</span> <span class="operator">-</span><span class="number">16</span><span class="operator">,</span> <span class="operator">-</span><span class="number">10</span><span class="operator">,</span> <span class="operator">-</span><span class="number">4</span>
|
|
};
|
|
|
|
<span class="comment">// this is the program the generate the above table</span>
|
|
<span class="preprocessor">#if 0</span>
|
|
<span class="preprocessor">#include <stdio.h></span>
|
|
<span class="preprocessor">#include <math.h></span>
|
|
|
|
<span class="preprocessor">#ifndef M_PI</span>
|
|
<span class="preprocessor">#define M_PI 3.14159265358979323846</span>
|
|
<span class="preprocessor">#endif</span>
|
|
|
|
<span class="preprocessor">#define PFREAL_ONE 1024</span>
|
|
<span class="preprocessor">#define IANGLE_MAX 1024</span>
|
|
|
|
<span class="type">int</span> main(<span class="type">int</span><span class="operator">,</span> <span class="type">char</span><span class="operator">*</span><span class="operator">*</span>)
|
|
{
|
|
FILE<span class="operator">*</span>f <span class="operator">=</span> fopen(<span class="string">"table.c"</span><span class="operator">,</span><span class="string">"wt"</span>);
|
|
fprintf(f<span class="operator">,</span><span class="string">"PFreal sinTable[] = {\n"</span>);
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> <span class="number">128</span>; i<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="keyword">for</span>(<span class="type">int</span> j <span class="operator">=</span> <span class="number">0</span>; j <span class="operator"><</span> <span class="number">8</span>; j<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="type">int</span> iang <span class="operator">=</span> j<span class="operator">+</span>i<span class="operator">*</span><span class="number">8</span>;
|
|
<span class="type">double</span> ii <span class="operator">=</span> (<span class="type">double</span>)iang <span class="operator">+</span> <span class="number">0.5</span>;
|
|
<span class="type">double</span> angle <span class="operator">=</span> ii <span class="operator">*</span> <span class="number">2</span> <span class="operator">*</span> M_PI <span class="operator">/</span> IANGLE_MAX;
|
|
<span class="type">double</span> sinAngle <span class="operator">=</span> sin(angle);
|
|
fprintf(f<span class="operator">,</span><span class="string">"%6d, "</span><span class="operator">,</span> (<span class="type">int</span>)(floor(PFREAL_ONE<span class="operator">*</span>sinAngle)));
|
|
}
|
|
fprintf(f<span class="operator">,</span><span class="string">"\n"</span>);
|
|
}
|
|
fprintf(f<span class="operator">,</span><span class="string">"};\n"</span>);
|
|
fclose(f);
|
|
|
|
<span class="keyword">return</span> <span class="number">0</span>;
|
|
}
|
|
<span class="preprocessor">#endif</span>
|
|
|
|
<span class="keyword">inline</span> PFreal fsin(<span class="type">int</span> iangle)
|
|
{
|
|
<span class="keyword">while</span>(iangle <span class="operator"><</span> <span class="number">0</span>)
|
|
iangle <span class="operator">+</span><span class="operator">=</span> IANGLE_MAX;
|
|
<span class="keyword">return</span> sinTable<span class="operator">[</span>iangle <span class="operator">&</span> IANGLE_MASK<span class="operator">]</span>;
|
|
}
|
|
|
|
<span class="keyword">inline</span> PFreal fcos(<span class="type">int</span> iangle)
|
|
{
|
|
<span class="comment">// quarter phase shift</span>
|
|
<span class="keyword">return</span> fsin(iangle <span class="operator">+</span> (IANGLE_MAX <span class="operator">></span><span class="operator">></span> <span class="number">2</span>));
|
|
}
|
|
|
|
<span class="keyword">struct</span> SlideInfo
|
|
{
|
|
<span class="type">int</span> slideIndex;
|
|
<span class="type">int</span> angle;
|
|
PFreal cx;
|
|
PFreal cy;
|
|
};
|
|
|
|
<span class="keyword">class</span> PictureFlowPrivate
|
|
{
|
|
<span class="keyword">public</span>:
|
|
PictureFlowPrivate(PictureFlow<span class="operator">*</span> widget);
|
|
|
|
<span class="type">int</span> slideCount() <span class="keyword">const</span>;
|
|
<span class="type">void</span> setSlideCount(<span class="type">int</span> count);
|
|
|
|
<span class="type"><a href="qsize.html">QSize</a></span> slideSize() <span class="keyword">const</span>;
|
|
<span class="type">void</span> setSlideSize(<span class="type"><a href="qsize.html">QSize</a></span> size);
|
|
|
|
<span class="type">int</span> zoomFactor() <span class="keyword">const</span>;
|
|
<span class="type">void</span> setZoomFactor(<span class="type">int</span> z);
|
|
|
|
<span class="type"><a href="qimage.html">QImage</a></span> slide(<span class="type">int</span> index) <span class="keyword">const</span>;
|
|
<span class="type">void</span> setSlide(<span class="type">int</span> index<span class="operator">,</span> <span class="keyword">const</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">&</span> image);
|
|
|
|
<span class="type">int</span> currentSlide() <span class="keyword">const</span>;
|
|
<span class="type">void</span> setCurrentSlide(<span class="type">int</span> index);
|
|
|
|
<span class="type">int</span> getTarget() <span class="keyword">const</span>;
|
|
|
|
<span class="type">void</span> showPrevious();
|
|
<span class="type">void</span> showNext();
|
|
<span class="type">void</span> showSlide(<span class="type">int</span> index);
|
|
|
|
<span class="type">void</span> resize(<span class="type">int</span> w<span class="operator">,</span> <span class="type">int</span> h);
|
|
|
|
<span class="type">void</span> render();
|
|
<span class="type">void</span> startAnimation();
|
|
<span class="type">void</span> updateAnimation();
|
|
|
|
<span class="type">void</span> clearSurfaceCache();
|
|
|
|
<span class="type"><a href="qimage.html">QImage</a></span> buffer;
|
|
<span class="type"><a href="qbasictimer.html">QBasicTimer</a></span> animateTimer;
|
|
|
|
<span class="type">bool</span> singlePress;
|
|
<span class="type">int</span> singlePressThreshold;
|
|
<span class="type"><a href="qpoint.html">QPoint</a></span> firstPress;
|
|
<span class="type"><a href="qpoint.html">QPoint</a></span> previousPos;
|
|
<span class="type"><a href="qtime.html">QTime</a></span> previousPosTimestamp;
|
|
<span class="type">int</span> pixelDistanceMoved;
|
|
<span class="type">int</span> pixelsToMovePerSlide;
|
|
|
|
<span class="type"><a href="qvector.html">QVector</a></span><span class="operator"><</span><span class="type"><a href="qstring.html">QString</a></span><span class="operator">></span> captions;
|
|
|
|
<span class="keyword">private</span>:
|
|
PictureFlow<span class="operator">*</span> widget;
|
|
|
|
<span class="type">int</span> slideWidth;
|
|
<span class="type">int</span> slideHeight;
|
|
<span class="type">int</span> zoom;
|
|
|
|
<span class="type"><a href="qvector.html">QVector</a></span><span class="operator"><</span><span class="type"><a href="qimage.html">QImage</a></span><span class="operator">></span> slideImages;
|
|
<span class="type">int</span> centerIndex;
|
|
SlideInfo centerSlide;
|
|
<span class="type"><a href="qvector.html">QVector</a></span><span class="operator"><</span>SlideInfo<span class="operator">></span> leftSlides;
|
|
<span class="type"><a href="qvector.html">QVector</a></span><span class="operator"><</span>SlideInfo<span class="operator">></span> rightSlides;
|
|
|
|
<span class="type"><a href="qvector.html">QVector</a></span><span class="operator"><</span>PFreal<span class="operator">></span> rays;
|
|
<span class="type">int</span> itilt;
|
|
<span class="type">int</span> spacing;
|
|
PFreal offsetX;
|
|
PFreal offsetY;
|
|
|
|
<span class="type"><a href="qimage.html">QImage</a></span> blankSurface;
|
|
<span class="type"><a href="qcache.html">QCache</a></span><span class="operator"><</span><span class="type">int</span><span class="operator">,</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">></span> surfaceCache;
|
|
<span class="type"><a href="qtimer.html">QTimer</a></span> triggerTimer;
|
|
|
|
<span class="type">int</span> slideFrame;
|
|
<span class="type">int</span> step;
|
|
<span class="type">int</span> target;
|
|
<span class="type">int</span> fade;
|
|
|
|
<span class="type">void</span> recalc(<span class="type">int</span> w<span class="operator">,</span> <span class="type">int</span> h);
|
|
<span class="type"><a href="qrect.html">QRect</a></span> renderSlide(<span class="keyword">const</span> SlideInfo <span class="operator">&</span>slide<span class="operator">,</span> <span class="type">int</span> alpha<span class="operator">=</span><span class="number">256</span><span class="operator">,</span> <span class="type">int</span> col1<span class="operator">=</span><span class="operator">-</span><span class="number">1</span><span class="operator">,</span> <span class="type">int</span> col<span class="operator">=</span><span class="operator">-</span><span class="number">1</span>);
|
|
<span class="type"><a href="qimage.html">QImage</a></span><span class="operator">*</span> surface(<span class="type">int</span> slideIndex);
|
|
<span class="type">void</span> triggerRender();
|
|
<span class="type">void</span> resetSlides();
|
|
};
|
|
|
|
PictureFlowPrivate<span class="operator">::</span>PictureFlowPrivate(PictureFlow<span class="operator">*</span> w)
|
|
{
|
|
widget <span class="operator">=</span> w;
|
|
|
|
slideWidth <span class="operator">=</span> <span class="number">200</span>;
|
|
slideHeight <span class="operator">=</span> <span class="number">200</span>;
|
|
zoom <span class="operator">=</span> <span class="number">100</span>;
|
|
|
|
centerIndex <span class="operator">=</span> <span class="number">0</span>;
|
|
|
|
slideFrame <span class="operator">=</span> <span class="number">0</span>;
|
|
step <span class="operator">=</span> <span class="number">0</span>;
|
|
target <span class="operator">=</span> <span class="number">0</span>;
|
|
fade <span class="operator">=</span> <span class="number">256</span>;
|
|
|
|
triggerTimer<span class="operator">.</span>setSingleShot(<span class="keyword">true</span>);
|
|
triggerTimer<span class="operator">.</span>setInterval(<span class="number">0</span>);
|
|
<span class="type"><a href="qobject.html">QObject</a></span><span class="operator">::</span>connect(<span class="operator">&</span>triggerTimer<span class="operator">,</span> SIGNAL(timeout())<span class="operator">,</span> widget<span class="operator">,</span> SLOT(render()));
|
|
|
|
recalc(<span class="number">200</span><span class="operator">,</span> <span class="number">200</span>);
|
|
resetSlides();
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlowPrivate<span class="operator">::</span>slideCount() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> slideImages<span class="operator">.</span>count();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>setSlideCount(<span class="type">int</span> count)
|
|
{
|
|
slideImages<span class="operator">.</span>resize(count);
|
|
captions<span class="operator">.</span>resize(count);
|
|
surfaceCache<span class="operator">.</span>clear();
|
|
resetSlides();
|
|
triggerRender();
|
|
}
|
|
|
|
<span class="type"><a href="qsize.html">QSize</a></span> PictureFlowPrivate<span class="operator">::</span>slideSize() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> <span class="type"><a href="qsize.html">QSize</a></span>(slideWidth<span class="operator">,</span> slideHeight);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>setSlideSize(<span class="type"><a href="qsize.html">QSize</a></span> size)
|
|
{
|
|
slideWidth <span class="operator">=</span> size<span class="operator">.</span>width();
|
|
slideHeight <span class="operator">=</span> size<span class="operator">.</span>height();
|
|
recalc(buffer<span class="operator">.</span>width()<span class="operator">,</span> buffer<span class="operator">.</span>height());
|
|
triggerRender();
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlowPrivate<span class="operator">::</span>zoomFactor() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> zoom;
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>setZoomFactor(<span class="type">int</span> z)
|
|
{
|
|
<span class="keyword">if</span>(z <span class="operator"><</span><span class="operator">=</span> <span class="number">0</span>)
|
|
<span class="keyword">return</span>;
|
|
|
|
zoom <span class="operator">=</span> z;
|
|
recalc(buffer<span class="operator">.</span>width()<span class="operator">,</span> buffer<span class="operator">.</span>height());
|
|
triggerRender();
|
|
}
|
|
|
|
<span class="type"><a href="qimage.html">QImage</a></span> PictureFlowPrivate<span class="operator">::</span>slide(<span class="type">int</span> index) <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> slideImages<span class="operator">[</span>index<span class="operator">]</span>;
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>setSlide(<span class="type">int</span> index<span class="operator">,</span> <span class="keyword">const</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">&</span> image)
|
|
{
|
|
<span class="keyword">if</span>((index <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>) <span class="operator">&</span><span class="operator">&</span> (index <span class="operator"><</span> slideImages<span class="operator">.</span>count()))
|
|
{
|
|
slideImages<span class="operator">[</span>index<span class="operator">]</span> <span class="operator">=</span> image;
|
|
surfaceCache<span class="operator">.</span>remove(index);
|
|
triggerRender();
|
|
}
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlowPrivate<span class="operator">::</span>getTarget() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> target;
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlowPrivate<span class="operator">::</span>currentSlide() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> centerIndex;
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>setCurrentSlide(<span class="type">int</span> index)
|
|
{
|
|
step <span class="operator">=</span> <span class="number">0</span>;
|
|
centerIndex <span class="operator">=</span> <a href="qtglobal.html#qBound">qBound</a>(index<span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> slideImages<span class="operator">.</span>count()<span class="operator">-</span><span class="number">1</span>);
|
|
target <span class="operator">=</span> centerIndex;
|
|
slideFrame <span class="operator">=</span> index <span class="operator"><</span><span class="operator"><</span> <span class="number">16</span>;
|
|
resetSlides();
|
|
triggerRender();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>showPrevious()
|
|
{
|
|
<span class="keyword">if</span>(step <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>)
|
|
{
|
|
<span class="keyword">if</span>(centerIndex <span class="operator">></span> <span class="number">0</span>)
|
|
{
|
|
target<span class="operator">-</span><span class="operator">-</span>;
|
|
startAnimation();
|
|
}
|
|
}
|
|
<span class="keyword">else</span>
|
|
{
|
|
target <span class="operator">=</span> <a href="qtglobal.html#qMax">qMax</a>(<span class="number">0</span><span class="operator">,</span> centerIndex <span class="operator">-</span> <span class="number">2</span>);
|
|
}
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>showNext()
|
|
{
|
|
<span class="keyword">if</span>(step <span class="operator"><</span><span class="operator">=</span> <span class="number">0</span>)
|
|
{
|
|
<span class="keyword">if</span>(centerIndex <span class="operator"><</span> slideImages<span class="operator">.</span>count()<span class="operator">-</span><span class="number">1</span>)
|
|
{
|
|
target<span class="operator">+</span><span class="operator">+</span>;
|
|
startAnimation();
|
|
}
|
|
}
|
|
<span class="keyword">else</span>
|
|
{
|
|
target <span class="operator">=</span> <a href="qtglobal.html#qMin">qMin</a>(centerIndex <span class="operator">+</span> <span class="number">2</span><span class="operator">,</span> slideImages<span class="operator">.</span>count()<span class="operator">-</span><span class="number">1</span>);
|
|
}
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>showSlide(<span class="type">int</span> index)
|
|
{
|
|
index <span class="operator">=</span> <a href="qtglobal.html#qMax">qMax</a>(index<span class="operator">,</span> <span class="number">0</span>);
|
|
index <span class="operator">=</span> <a href="qtglobal.html#qMin">qMin</a>(slideImages<span class="operator">.</span>count()<span class="operator">-</span><span class="number">1</span><span class="operator">,</span> index);
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> centerSlide<span class="operator">.</span>slideIndex)
|
|
<span class="keyword">return</span>;
|
|
|
|
target <span class="operator">=</span> index;
|
|
startAnimation();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>resize(<span class="type">int</span> w<span class="operator">,</span> <span class="type">int</span> h)
|
|
{
|
|
recalc(w<span class="operator">,</span> h);
|
|
resetSlides();
|
|
triggerRender();
|
|
}
|
|
|
|
<span class="comment">// adjust slides so that they are in "steady state" position</span>
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>resetSlides()
|
|
{
|
|
centerSlide<span class="operator">.</span>angle <span class="operator">=</span> <span class="number">0</span>;
|
|
centerSlide<span class="operator">.</span>cx <span class="operator">=</span> <span class="number">0</span>;
|
|
centerSlide<span class="operator">.</span>cy <span class="operator">=</span> <span class="number">0</span>;
|
|
centerSlide<span class="operator">.</span>slideIndex <span class="operator">=</span> centerIndex;
|
|
|
|
leftSlides<span class="operator">.</span>clear();
|
|
leftSlides<span class="operator">.</span>resize(<span class="number">3</span>);
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> leftSlides<span class="operator">.</span>count(); i<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
SlideInfo<span class="operator">&</span> si <span class="operator">=</span> leftSlides<span class="operator">[</span>i<span class="operator">]</span>;
|
|
si<span class="operator">.</span>angle <span class="operator">=</span> itilt;
|
|
si<span class="operator">.</span>cx <span class="operator">=</span> <span class="operator">-</span>(offsetX <span class="operator">+</span> spacing<span class="operator">*</span>i<span class="operator">*</span>PFREAL_ONE);
|
|
si<span class="operator">.</span>cy <span class="operator">=</span> offsetY;
|
|
si<span class="operator">.</span>slideIndex <span class="operator">=</span> centerIndex<span class="operator">-</span><span class="number">1</span><span class="operator">-</span>i;
|
|
<span class="comment">//qDebug() << "Left[" << i << "] x=" << fixedToFloat(si.cx) << ", y=" << fixedToFloat(si.cy) ;</span>
|
|
}
|
|
|
|
rightSlides<span class="operator">.</span>clear();
|
|
rightSlides<span class="operator">.</span>resize(<span class="number">3</span>);
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> rightSlides<span class="operator">.</span>count(); i<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
SlideInfo<span class="operator">&</span> si <span class="operator">=</span> rightSlides<span class="operator">[</span>i<span class="operator">]</span>;
|
|
si<span class="operator">.</span>angle <span class="operator">=</span> <span class="operator">-</span>itilt;
|
|
si<span class="operator">.</span>cx <span class="operator">=</span> offsetX <span class="operator">+</span> spacing<span class="operator">*</span>i<span class="operator">*</span>PFREAL_ONE;
|
|
si<span class="operator">.</span>cy <span class="operator">=</span> offsetY;
|
|
si<span class="operator">.</span>slideIndex <span class="operator">=</span> centerIndex<span class="operator">+</span><span class="number">1</span><span class="operator">+</span>i;
|
|
<span class="comment">//qDebug() << "Right[" << i << "] x=" << fixedToFloat(si.cx) << ", y=" << fixedToFloat(si.cy) ;</span>
|
|
}
|
|
}
|
|
|
|
<span class="preprocessor">#define BILINEAR_STRETCH_HOR 4</span>
|
|
<span class="preprocessor">#define BILINEAR_STRETCH_VER 4</span>
|
|
|
|
<span class="keyword">static</span> <span class="type"><a href="qimage.html">QImage</a></span> prepareSurface(<span class="type"><a href="qimage.html">QImage</a></span> img<span class="operator">,</span> <span class="type">int</span> w<span class="operator">,</span> <span class="type">int</span> h)
|
|
{
|
|
<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>TransformationMode mode <span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>SmoothTransformation;
|
|
img <span class="operator">=</span> img<span class="operator">.</span>scaled(w<span class="operator">,</span> h<span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>IgnoreAspectRatio<span class="operator">,</span> mode);
|
|
|
|
<span class="comment">// slightly larger, to accommodate for the reflection</span>
|
|
<span class="type">int</span> hs <span class="operator">=</span> h <span class="operator">*</span> <span class="number">2</span>;
|
|
<span class="type">int</span> hofs <span class="operator">=</span> h <span class="operator">/</span> <span class="number">3</span>;
|
|
|
|
<span class="comment">// offscreen buffer: black is sweet</span>
|
|
<span class="type"><a href="qimage.html">QImage</a></span> result(hs<span class="operator">,</span> w<span class="operator">,</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">::</span>Format_RGB16);
|
|
result<span class="operator">.</span>fill(<span class="number">0</span>);
|
|
|
|
<span class="comment">// transpose the image, this is to speed-up the rendering</span>
|
|
<span class="comment">// because we process one column at a time</span>
|
|
<span class="comment">// (and much better and faster to work row-wise, i.e in one scanline)</span>
|
|
<span class="keyword">for</span>(<span class="type">int</span> x <span class="operator">=</span> <span class="number">0</span>; x <span class="operator"><</span> w; x<span class="operator">+</span><span class="operator">+</span>)
|
|
<span class="keyword">for</span>(<span class="type">int</span> y <span class="operator">=</span> <span class="number">0</span>; y <span class="operator"><</span> h; y<span class="operator">+</span><span class="operator">+</span>)
|
|
result<span class="operator">.</span>setPixel(hofs <span class="operator">+</span> y<span class="operator">,</span> x<span class="operator">,</span> img<span class="operator">.</span>pixel(x<span class="operator">,</span> y));
|
|
|
|
<span class="comment">// create the reflection</span>
|
|
<span class="type">int</span> ht <span class="operator">=</span> hs <span class="operator">-</span> h <span class="operator">-</span> hofs;
|
|
<span class="type">int</span> hte <span class="operator">=</span> ht;
|
|
<span class="keyword">for</span>(<span class="type">int</span> x <span class="operator">=</span> <span class="number">0</span>; x <span class="operator"><</span> w; x<span class="operator">+</span><span class="operator">+</span>)
|
|
<span class="keyword">for</span>(<span class="type">int</span> y <span class="operator">=</span> <span class="number">0</span>; y <span class="operator"><</span> ht; y<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="type"><a href="qcolor.html#QRgb-typedef">QRgb</a></span> color <span class="operator">=</span> img<span class="operator">.</span>pixel(x<span class="operator">,</span> img<span class="operator">.</span>height()<span class="operator">-</span>y<span class="operator">-</span><span class="number">1</span>);
|
|
<span class="comment">//QRgb565 color = img.scanLine(img.height()-y-1) + x*sizeof(QRgb565); //img.pixel(x, img.height()-y-1);</span>
|
|
<span class="type">int</span> a <span class="operator">=</span> <a href="qcolor.html#qAlpha">qAlpha</a>(color);
|
|
<span class="type">int</span> r <span class="operator">=</span> <a href="qcolor.html#qRed">qRed</a>(color) <span class="operator">*</span> a <span class="operator">/</span> <span class="number">256</span> <span class="operator">*</span> (hte <span class="operator">-</span> y) <span class="operator">/</span> hte <span class="operator">*</span> <span class="number">3</span><span class="operator">/</span><span class="number">5</span>;
|
|
<span class="type">int</span> g <span class="operator">=</span> <a href="qcolor.html#qGreen">qGreen</a>(color) <span class="operator">*</span> a <span class="operator">/</span> <span class="number">256</span> <span class="operator">*</span> (hte <span class="operator">-</span> y) <span class="operator">/</span> hte <span class="operator">*</span> <span class="number">3</span><span class="operator">/</span><span class="number">5</span>;
|
|
<span class="type">int</span> b <span class="operator">=</span> <a href="qcolor.html#qBlue">qBlue</a>(color) <span class="operator">*</span> a <span class="operator">/</span> <span class="number">256</span> <span class="operator">*</span> (hte <span class="operator">-</span> y) <span class="operator">/</span> hte <span class="operator">*</span> <span class="number">3</span><span class="operator">/</span><span class="number">5</span>;
|
|
result<span class="operator">.</span>setPixel(h<span class="operator">+</span>hofs<span class="operator">+</span>y<span class="operator">,</span> x<span class="operator">,</span> <a href="qcolor.html#qRgb">qRgb</a>(r<span class="operator">,</span> g<span class="operator">,</span> b));
|
|
}
|
|
|
|
<span class="preprocessor">#ifdef PICTUREFLOW_BILINEAR_FILTER</span>
|
|
<span class="type">int</span> hh <span class="operator">=</span> BILINEAR_STRETCH_VER<span class="operator">*</span>hs;
|
|
<span class="type">int</span> ww <span class="operator">=</span> BILINEAR_STRETCH_HOR<span class="operator">*</span>w;
|
|
result <span class="operator">=</span> result<span class="operator">.</span>scaled(hh<span class="operator">,</span> ww<span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>IgnoreAspectRatio<span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>SmoothTransformation);
|
|
<span class="preprocessor">#endif</span>
|
|
|
|
<span class="keyword">return</span> result;
|
|
}
|
|
|
|
<span class="comment">// get transformed image for specified slide</span>
|
|
<span class="comment">// if it does not exist, create it and place it in the cache</span>
|
|
<span class="type"><a href="qimage.html">QImage</a></span><span class="operator">*</span> PictureFlowPrivate<span class="operator">::</span>surface(<span class="type">int</span> slideIndex)
|
|
{
|
|
<span class="keyword">if</span>(slideIndex <span class="operator"><</span> <span class="number">0</span>)
|
|
<span class="keyword">return</span> <span class="number">0</span>;
|
|
<span class="keyword">if</span>(slideIndex <span class="operator">></span><span class="operator">=</span> slideImages<span class="operator">.</span>count())
|
|
<span class="keyword">return</span> <span class="number">0</span>;
|
|
|
|
<span class="keyword">if</span>(surfaceCache<span class="operator">.</span>contains(slideIndex))
|
|
<span class="keyword">return</span> surfaceCache<span class="operator">[</span>slideIndex<span class="operator">]</span>;
|
|
|
|
<span class="type"><a href="qimage.html">QImage</a></span> img <span class="operator">=</span> widget<span class="operator">-</span><span class="operator">></span>slide(slideIndex);
|
|
<span class="keyword">if</span>(img<span class="operator">.</span>isNull())
|
|
{
|
|
<span class="keyword">if</span>(blankSurface<span class="operator">.</span>isNull())
|
|
{
|
|
blankSurface <span class="operator">=</span> <span class="type"><a href="qimage.html">QImage</a></span>(slideWidth<span class="operator">,</span> slideHeight<span class="operator">,</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">::</span>Format_RGB16);
|
|
|
|
<span class="type"><a href="qpainter.html">QPainter</a></span> painter(<span class="operator">&</span>blankSurface);
|
|
<span class="type"><a href="qpoint.html">QPoint</a></span> p1(slideWidth<span class="operator">*</span><span class="number">4</span><span class="operator">/</span><span class="number">10</span><span class="operator">,</span> <span class="number">0</span>);
|
|
<span class="type"><a href="qpoint.html">QPoint</a></span> p2(slideWidth<span class="operator">*</span><span class="number">6</span><span class="operator">/</span><span class="number">10</span><span class="operator">,</span> slideHeight);
|
|
<span class="type"><a href="qlineargradient.html">QLinearGradient</a></span> linearGrad(p1<span class="operator">,</span> p2);
|
|
linearGrad<span class="operator">.</span>setColorAt(<span class="number">0</span><span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>black);
|
|
linearGrad<span class="operator">.</span>setColorAt(<span class="number">1</span><span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>white);
|
|
painter<span class="operator">.</span>setBrush(linearGrad);
|
|
painter<span class="operator">.</span>fillRect(<span class="number">0</span><span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> slideWidth<span class="operator">,</span> slideHeight<span class="operator">,</span> <span class="type"><a href="qbrush.html">QBrush</a></span>(linearGrad));
|
|
|
|
painter<span class="operator">.</span>setPen(<span class="type"><a href="qpen.html">QPen</a></span>(<span class="type"><a href="qcolor.html">QColor</a></span>(<span class="number">64</span><span class="operator">,</span><span class="number">64</span><span class="operator">,</span><span class="number">64</span>)<span class="operator">,</span> <span class="number">4</span>));
|
|
painter<span class="operator">.</span>setBrush(<span class="type"><a href="qbrush.html">QBrush</a></span>());
|
|
painter<span class="operator">.</span>drawRect(<span class="number">2</span><span class="operator">,</span> <span class="number">2</span><span class="operator">,</span> slideWidth<span class="operator">-</span><span class="number">3</span><span class="operator">,</span> slideHeight<span class="operator">-</span><span class="number">3</span>);
|
|
painter<span class="operator">.</span>end();
|
|
blankSurface <span class="operator">=</span> prepareSurface(blankSurface<span class="operator">,</span> slideWidth<span class="operator">,</span> slideHeight);
|
|
}
|
|
<span class="keyword">return</span> <span class="operator">&</span>blankSurface;
|
|
}
|
|
|
|
surfaceCache<span class="operator">.</span>insert(slideIndex<span class="operator">,</span> <span class="keyword">new</span> <span class="type"><a href="qimage.html">QImage</a></span>(prepareSurface(img<span class="operator">,</span> slideWidth<span class="operator">,</span> slideHeight)));
|
|
<span class="keyword">return</span> surfaceCache<span class="operator">[</span>slideIndex<span class="operator">]</span>;
|
|
}
|
|
|
|
<span class="comment">// Schedules rendering the slides. Call this function to avoid immediate</span>
|
|
<span class="comment">// render and thus cause less flicker.</span>
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>triggerRender()
|
|
{
|
|
triggerTimer<span class="operator">.</span>start();
|
|
}
|
|
|
|
<span class="comment">// Render the slides. Updates only the offscreen buffer.</span>
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>render()
|
|
{
|
|
buffer<span class="operator">.</span>fill(<span class="number">0</span>);
|
|
|
|
<span class="type">int</span> nleft <span class="operator">=</span> leftSlides<span class="operator">.</span>count();
|
|
<span class="type">int</span> nright <span class="operator">=</span> rightSlides<span class="operator">.</span>count();
|
|
|
|
<span class="type"><a href="qrect.html">QRect</a></span> r <span class="operator">=</span> renderSlide(centerSlide);
|
|
<span class="type">int</span> c1 <span class="operator">=</span> r<span class="operator">.</span>left();
|
|
<span class="type">int</span> c2 <span class="operator">=</span> r<span class="operator">.</span>right();
|
|
|
|
<span class="keyword">if</span>(step <span class="operator">=</span><span class="operator">=</span> <span class="number">0</span>)
|
|
{
|
|
<span class="comment">// no animation, boring plain rendering</span>
|
|
<span class="keyword">for</span>(<span class="type">int</span> index <span class="operator">=</span> <span class="number">0</span>; index <span class="operator"><</span> nleft<span class="operator">-</span><span class="number">1</span>; index<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="type">int</span> alpha <span class="operator">=</span> (index <span class="operator"><</span> nleft<span class="operator">-</span><span class="number">2</span>) <span class="operator">?</span> <span class="number">256</span> : <span class="number">128</span>;
|
|
<span class="type"><a href="qrect.html">QRect</a></span> rs <span class="operator">=</span> renderSlide(leftSlides<span class="operator">[</span>index<span class="operator">]</span><span class="operator">,</span> alpha<span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> c1<span class="operator">-</span><span class="number">1</span>);
|
|
<span class="keyword">if</span>(<span class="operator">!</span>rs<span class="operator">.</span>isEmpty())
|
|
c1 <span class="operator">=</span> rs<span class="operator">.</span>left();
|
|
}
|
|
<span class="keyword">for</span>(<span class="type">int</span> index <span class="operator">=</span> <span class="number">0</span>; index <span class="operator"><</span> nright<span class="operator">-</span><span class="number">1</span>; index<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="type">int</span> alpha <span class="operator">=</span> (index <span class="operator"><</span> nright<span class="operator">-</span><span class="number">2</span>) <span class="operator">?</span> <span class="number">256</span> : <span class="number">128</span>;
|
|
<span class="type"><a href="qrect.html">QRect</a></span> rs <span class="operator">=</span> renderSlide(rightSlides<span class="operator">[</span>index<span class="operator">]</span><span class="operator">,</span> alpha<span class="operator">,</span> c2<span class="operator">+</span><span class="number">1</span><span class="operator">,</span> buffer<span class="operator">.</span>width());
|
|
<span class="keyword">if</span>(<span class="operator">!</span>rs<span class="operator">.</span>isEmpty())
|
|
c2 <span class="operator">=</span> rs<span class="operator">.</span>right();
|
|
}
|
|
|
|
<span class="type"><a href="qpainter.html">QPainter</a></span> painter;
|
|
painter<span class="operator">.</span>begin(<span class="operator">&</span>buffer);
|
|
|
|
<span class="type"><a href="qfont.html">QFont</a></span> font(<span class="string">"Arial"</span><span class="operator">,</span> captionFontSize);
|
|
font<span class="operator">.</span>setBold(<span class="keyword">true</span>);
|
|
painter<span class="operator">.</span>setFont(font);
|
|
painter<span class="operator">.</span>setPen(<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>white);
|
|
<span class="comment">//painter.setPen(QColor(255,255,255,127));</span>
|
|
|
|
<span class="keyword">if</span> (<span class="operator">!</span>captions<span class="operator">.</span>isEmpty())
|
|
painter<span class="operator">.</span>drawText( <span class="type"><a href="qrect.html">QRect</a></span>(<span class="number">0</span><span class="operator">,</span><span class="number">0</span><span class="operator">,</span> buffer<span class="operator">.</span>width()<span class="operator">,</span> (buffer<span class="operator">.</span>height() <span class="operator">-</span> slideSize()<span class="operator">.</span>height())<span class="operator">/</span><span class="number">4</span>)<span class="operator">,</span>
|
|
<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>AlignCenter<span class="operator">,</span> captions<span class="operator">[</span>centerIndex<span class="operator">]</span>);
|
|
|
|
painter<span class="operator">.</span>end();
|
|
|
|
}
|
|
<span class="keyword">else</span>
|
|
{
|
|
<span class="comment">// the first and last slide must fade in/fade out</span>
|
|
<span class="keyword">for</span>(<span class="type">int</span> index <span class="operator">=</span> <span class="number">0</span>; index <span class="operator"><</span> nleft; index<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="type">int</span> alpha <span class="operator">=</span> <span class="number">256</span>;
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> nleft<span class="operator">-</span><span class="number">1</span>)
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> <span class="number">0</span> : <span class="number">128</span><span class="operator">-</span>fade<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> nleft<span class="operator">-</span><span class="number">2</span>)
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> <span class="number">128</span><span class="operator">-</span>fade<span class="operator">/</span><span class="number">2</span> : <span class="number">256</span><span class="operator">-</span>fade<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> nleft<span class="operator">-</span><span class="number">3</span>)
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> <span class="number">256</span><span class="operator">-</span>fade<span class="operator">/</span><span class="number">2</span> : <span class="number">256</span>;
|
|
<span class="type"><a href="qrect.html">QRect</a></span> rs <span class="operator">=</span> renderSlide(leftSlides<span class="operator">[</span>index<span class="operator">]</span><span class="operator">,</span> alpha<span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> c1<span class="operator">-</span><span class="number">1</span>);
|
|
<span class="keyword">if</span>(<span class="operator">!</span>rs<span class="operator">.</span>isEmpty())
|
|
c1 <span class="operator">=</span> rs<span class="operator">.</span>left();
|
|
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> <span class="number">256</span><span class="operator">-</span>fade<span class="operator">/</span><span class="number">2</span> : <span class="number">256</span>;
|
|
}
|
|
<span class="keyword">for</span>(<span class="type">int</span> index <span class="operator">=</span> <span class="number">0</span>; index <span class="operator"><</span> nright; index<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
<span class="type">int</span> alpha <span class="operator">=</span> (index <span class="operator"><</span> nright<span class="operator">-</span><span class="number">2</span>) <span class="operator">?</span> <span class="number">256</span> : <span class="number">128</span>;
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> nright<span class="operator">-</span><span class="number">1</span>)
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> fade<span class="operator">/</span><span class="number">2</span> : <span class="number">0</span>;
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> nright<span class="operator">-</span><span class="number">2</span>)
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> <span class="number">128</span><span class="operator">+</span>fade<span class="operator">/</span><span class="number">2</span> : fade<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="keyword">if</span>(index <span class="operator">=</span><span class="operator">=</span> nright<span class="operator">-</span><span class="number">3</span>)
|
|
alpha <span class="operator">=</span> (step <span class="operator">></span> <span class="number">0</span>) <span class="operator">?</span> <span class="number">256</span> : <span class="number">128</span><span class="operator">+</span>fade<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="type"><a href="qrect.html">QRect</a></span> rs <span class="operator">=</span> renderSlide(rightSlides<span class="operator">[</span>index<span class="operator">]</span><span class="operator">,</span> alpha<span class="operator">,</span> c2<span class="operator">+</span><span class="number">1</span><span class="operator">,</span> buffer<span class="operator">.</span>width());
|
|
<span class="keyword">if</span>(<span class="operator">!</span>rs<span class="operator">.</span>isEmpty())
|
|
c2 <span class="operator">=</span> rs<span class="operator">.</span>right();
|
|
}
|
|
|
|
<span class="type"><a href="qpainter.html">QPainter</a></span> painter;
|
|
painter<span class="operator">.</span>begin(<span class="operator">&</span>buffer);
|
|
|
|
<span class="type"><a href="qfont.html">QFont</a></span> font(<span class="string">"Arial"</span><span class="operator">,</span> captionFontSize);
|
|
font<span class="operator">.</span>setBold(<span class="keyword">true</span>);
|
|
painter<span class="operator">.</span>setFont(font);
|
|
|
|
<span class="type">int</span> leftTextIndex <span class="operator">=</span> (step<span class="operator">></span><span class="number">0</span>) <span class="operator">?</span> centerIndex : centerIndex<span class="operator">-</span><span class="number">1</span>;
|
|
|
|
painter<span class="operator">.</span>setPen(<span class="type"><a href="qcolor.html">QColor</a></span>(<span class="number">255</span><span class="operator">,</span><span class="number">255</span><span class="operator">,</span><span class="number">255</span><span class="operator">,</span> (<span class="number">255</span><span class="operator">-</span>fade) ));
|
|
painter<span class="operator">.</span>drawText( <span class="type"><a href="qrect.html">QRect</a></span>(<span class="number">0</span><span class="operator">,</span><span class="number">0</span><span class="operator">,</span> buffer<span class="operator">.</span>width()<span class="operator">,</span> (buffer<span class="operator">.</span>height() <span class="operator">-</span> slideSize()<span class="operator">.</span>height())<span class="operator">/</span><span class="number">4</span>)<span class="operator">,</span>
|
|
<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>AlignCenter<span class="operator">,</span> captions<span class="operator">[</span>leftTextIndex<span class="operator">]</span>);
|
|
|
|
painter<span class="operator">.</span>setPen(<span class="type"><a href="qcolor.html">QColor</a></span>(<span class="number">255</span><span class="operator">,</span><span class="number">255</span><span class="operator">,</span><span class="number">255</span><span class="operator">,</span> fade));
|
|
painter<span class="operator">.</span>drawText( <span class="type"><a href="qrect.html">QRect</a></span>(<span class="number">0</span><span class="operator">,</span><span class="number">0</span><span class="operator">,</span> buffer<span class="operator">.</span>width()<span class="operator">,</span> (buffer<span class="operator">.</span>height() <span class="operator">-</span> slideSize()<span class="operator">.</span>height())<span class="operator">/</span><span class="number">4</span>)<span class="operator">,</span>
|
|
<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>AlignCenter<span class="operator">,</span> captions<span class="operator">[</span>leftTextIndex<span class="operator">+</span><span class="number">1</span><span class="operator">]</span>);
|
|
|
|
painter<span class="operator">.</span>end();
|
|
}
|
|
}
|
|
|
|
<span class="keyword">static</span> <span class="keyword">inline</span> <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> BYTE_MUL_RGB16(<span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> x<span class="operator">,</span> <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> a) {
|
|
a <span class="operator">+</span><span class="operator">=</span> <span class="number">1</span>;
|
|
<span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> t <span class="operator">=</span> (((x <span class="operator">&</span> <span class="number">0x07e0</span>)<span class="operator">*</span>a) <span class="operator">></span><span class="operator">></span> <span class="number">8</span>) <span class="operator">&</span> <span class="number">0x07e0</span>;
|
|
t <span class="operator">|</span><span class="operator">=</span> (((x <span class="operator">&</span> <span class="number">0xf81f</span>)<span class="operator">*</span>(a<span class="operator">></span><span class="operator">></span><span class="number">2</span>)) <span class="operator">></span><span class="operator">></span> <span class="number">6</span>) <span class="operator">&</span> <span class="number">0xf81f</span>;
|
|
<span class="keyword">return</span> t;
|
|
}
|
|
|
|
<span class="keyword">static</span> <span class="keyword">inline</span> <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> BYTE_MUL_RGB16_32(<span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> x<span class="operator">,</span> <span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> a) {
|
|
<span class="type"><a href="qtglobal.html#uint-typedef">uint</a></span> t <span class="operator">=</span> (((x <span class="operator">&</span> <span class="number">0xf81f07e0</span>) <span class="operator">></span><span class="operator">></span> <span class="number">5</span>)<span class="operator">*</span>a) <span class="operator">&</span> <span class="number">0xf81f07e0</span>;
|
|
t <span class="operator">|</span><span class="operator">=</span> (((x <span class="operator">&</span> <span class="number">0x07e0f81f</span>)<span class="operator">*</span>a) <span class="operator">></span><span class="operator">></span> <span class="number">5</span>) <span class="operator">&</span> <span class="number">0x07e0f81f</span>;
|
|
<span class="keyword">return</span> t;
|
|
}
|
|
|
|
<span class="comment">// Renders a slide to offscreen buffer. Returns a rect of the rendered area.</span>
|
|
<span class="comment">// alpha=256 means normal, alpha=0 is fully black, alpha=128 half transparent</span>
|
|
<span class="comment">// col1 and col2 limit the column for rendering.</span>
|
|
<span class="type"><a href="qrect.html">QRect</a></span> PictureFlowPrivate<span class="operator">::</span>renderSlide(<span class="keyword">const</span> SlideInfo <span class="operator">&</span>slide<span class="operator">,</span> <span class="type">int</span> alpha<span class="operator">,</span>
|
|
<span class="type">int</span> col1<span class="operator">,</span> <span class="type">int</span> col2)
|
|
{
|
|
<span class="type"><a href="qimage.html">QImage</a></span><span class="operator">*</span> src <span class="operator">=</span> surface(slide<span class="operator">.</span>slideIndex);
|
|
<span class="keyword">if</span>(<span class="operator">!</span>src)
|
|
<span class="keyword">return</span> <span class="type"><a href="qrect.html">QRect</a></span>();
|
|
|
|
<span class="type"><a href="qrect.html">QRect</a></span> rect(<span class="number">0</span><span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> <span class="number">0</span><span class="operator">,</span> <span class="number">0</span>);
|
|
|
|
<span class="preprocessor">#ifdef PICTUREFLOW_BILINEAR_FILTER</span>
|
|
<span class="type">int</span> sw <span class="operator">=</span> src<span class="operator">-</span><span class="operator">></span>height() <span class="operator">/</span> BILINEAR_STRETCH_HOR;
|
|
<span class="type">int</span> sh <span class="operator">=</span> src<span class="operator">-</span><span class="operator">></span>width() <span class="operator">/</span> BILINEAR_STRETCH_VER;
|
|
<span class="preprocessor">#else</span>
|
|
<span class="type">int</span> sw <span class="operator">=</span> src<span class="operator">-</span><span class="operator">></span>height();
|
|
<span class="type">int</span> sh <span class="operator">=</span> src<span class="operator">-</span><span class="operator">></span>width();
|
|
<span class="preprocessor">#endif</span>
|
|
<span class="type">int</span> h <span class="operator">=</span> buffer<span class="operator">.</span>height();
|
|
<span class="type">int</span> w <span class="operator">=</span> buffer<span class="operator">.</span>width();
|
|
|
|
<span class="keyword">if</span>(col1 <span class="operator">></span> col2)
|
|
{
|
|
<span class="type">int</span> c <span class="operator">=</span> col2;
|
|
col2 <span class="operator">=</span> col1;
|
|
col1 <span class="operator">=</span> c;
|
|
}
|
|
|
|
col1 <span class="operator">=</span> (col1 <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>) <span class="operator">?</span> col1 : <span class="number">0</span>;
|
|
col2 <span class="operator">=</span> (col2 <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>) <span class="operator">?</span> col2 : w<span class="operator">-</span><span class="number">1</span>;
|
|
col1 <span class="operator">=</span> <a href="qtglobal.html#qMin">qMin</a>(col1<span class="operator">,</span> w<span class="operator">-</span><span class="number">1</span>);
|
|
col2 <span class="operator">=</span> <a href="qtglobal.html#qMin">qMin</a>(col2<span class="operator">,</span> w<span class="operator">-</span><span class="number">1</span>);
|
|
|
|
<span class="type">int</span> distance <span class="operator">=</span> h <span class="operator">*</span> <span class="number">100</span> <span class="operator">/</span> zoom;
|
|
PFreal sdx <span class="operator">=</span> fcos(slide<span class="operator">.</span>angle);
|
|
PFreal sdy <span class="operator">=</span> fsin(slide<span class="operator">.</span>angle);
|
|
PFreal xs <span class="operator">=</span> slide<span class="operator">.</span>cx <span class="operator">-</span> slideWidth <span class="operator">*</span> sdx<span class="operator">/</span><span class="number">2</span>;
|
|
PFreal ys <span class="operator">=</span> slide<span class="operator">.</span>cy <span class="operator">-</span> slideWidth <span class="operator">*</span> sdy<span class="operator">/</span><span class="number">2</span>;
|
|
PFreal dist <span class="operator">=</span> distance <span class="operator">*</span> PFREAL_ONE;
|
|
|
|
<span class="type">int</span> xi <span class="operator">=</span> <a href="qtglobal.html#qMax">qMax</a>((PFreal)<span class="number">0</span><span class="operator">,</span> ((w<span class="operator">*</span>PFREAL_ONE<span class="operator">/</span><span class="number">2</span>) <span class="operator">+</span> fdiv(xs<span class="operator">*</span>h<span class="operator">,</span> dist<span class="operator">+</span>ys)) <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT);
|
|
<span class="keyword">if</span>(xi <span class="operator">></span><span class="operator">=</span> w)
|
|
<span class="keyword">return</span> rect;
|
|
|
|
<span class="type">bool</span> flag <span class="operator">=</span> <span class="keyword">false</span>;
|
|
rect<span class="operator">.</span>setLeft(xi);
|
|
<span class="keyword">for</span>(<span class="type">int</span> x <span class="operator">=</span> <a href="qtglobal.html#qMax">qMax</a>(xi<span class="operator">,</span> col1); x <span class="operator"><</span><span class="operator">=</span> col2; x<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
PFreal hity <span class="operator">=</span> <span class="number">0</span>;
|
|
PFreal fk <span class="operator">=</span> rays<span class="operator">[</span>x<span class="operator">]</span>;
|
|
<span class="keyword">if</span>(sdy)
|
|
{
|
|
fk <span class="operator">=</span> fk <span class="operator">-</span> fdiv(sdx<span class="operator">,</span>sdy);
|
|
hity <span class="operator">=</span> <span class="operator">-</span>fdiv((rays<span class="operator">[</span>x<span class="operator">]</span><span class="operator">*</span>distance <span class="operator">-</span> slide<span class="operator">.</span>cx <span class="operator">+</span> slide<span class="operator">.</span>cy<span class="operator">*</span>sdx<span class="operator">/</span>sdy)<span class="operator">,</span> fk);
|
|
}
|
|
|
|
dist <span class="operator">=</span> distance<span class="operator">*</span>PFREAL_ONE <span class="operator">+</span> hity;
|
|
<span class="keyword">if</span>(dist <span class="operator"><</span> <span class="number">0</span>)
|
|
<span class="keyword">continue</span>;
|
|
|
|
PFreal hitx <span class="operator">=</span> fmul(dist<span class="operator">,</span> rays<span class="operator">[</span>x<span class="operator">]</span>);
|
|
PFreal hitdist <span class="operator">=</span> fdiv(hitx <span class="operator">-</span> slide<span class="operator">.</span>cx<span class="operator">,</span> sdx);
|
|
|
|
<span class="preprocessor">#ifdef PICTUREFLOW_BILINEAR_FILTER</span>
|
|
<span class="type">int</span> column <span class="operator">=</span> sw<span class="operator">*</span>BILINEAR_STRETCH_HOR<span class="operator">/</span><span class="number">2</span> <span class="operator">+</span> (hitdist<span class="operator">*</span>BILINEAR_STRETCH_HOR <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT);
|
|
<span class="keyword">if</span>(column <span class="operator">></span><span class="operator">=</span> sw<span class="operator">*</span>BILINEAR_STRETCH_HOR)
|
|
<span class="keyword">break</span>;
|
|
<span class="preprocessor">#else</span>
|
|
<span class="type">int</span> column <span class="operator">=</span> sw<span class="operator">/</span><span class="number">2</span> <span class="operator">+</span> (hitdist <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT);
|
|
<span class="keyword">if</span>(column <span class="operator">></span><span class="operator">=</span> sw)
|
|
<span class="keyword">break</span>;
|
|
<span class="preprocessor">#endif</span>
|
|
<span class="keyword">if</span>(column <span class="operator"><</span> <span class="number">0</span>)
|
|
<span class="keyword">continue</span>;
|
|
|
|
rect<span class="operator">.</span>setRight(x);
|
|
<span class="keyword">if</span>(<span class="operator">!</span>flag)
|
|
rect<span class="operator">.</span>setLeft(x);
|
|
flag <span class="operator">=</span> <span class="keyword">true</span>;
|
|
|
|
<span class="type">int</span> y1 <span class="operator">=</span> h<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="type">int</span> y2 <span class="operator">=</span> y1<span class="operator">+</span> <span class="number">1</span>;
|
|
QRgb565<span class="operator">*</span> pixel1 <span class="operator">=</span> (QRgb565<span class="operator">*</span>)(buffer<span class="operator">.</span>scanLine(y1)) <span class="operator">+</span> x;
|
|
QRgb565<span class="operator">*</span> pixel2 <span class="operator">=</span> (QRgb565<span class="operator">*</span>)(buffer<span class="operator">.</span>scanLine(y2)) <span class="operator">+</span> x;
|
|
<span class="type">int</span> pixelstep <span class="operator">=</span> pixel2 <span class="operator">-</span> pixel1;
|
|
|
|
<span class="preprocessor">#ifdef PICTUREFLOW_BILINEAR_FILTER</span>
|
|
<span class="type">int</span> center <span class="operator">=</span> (sh<span class="operator">*</span>BILINEAR_STRETCH_VER<span class="operator">/</span><span class="number">2</span>);
|
|
<span class="type">int</span> dy <span class="operator">=</span> dist<span class="operator">*</span>BILINEAR_STRETCH_VER <span class="operator">/</span> h;
|
|
<span class="preprocessor">#else</span>
|
|
<span class="type">int</span> center <span class="operator">=</span> (sh<span class="operator">/</span><span class="number">2</span>);
|
|
<span class="type">int</span> dy <span class="operator">=</span> dist <span class="operator">/</span> h;
|
|
<span class="preprocessor">#endif</span>
|
|
<span class="type">int</span> p1 <span class="operator">=</span> center<span class="operator">*</span>PFREAL_ONE <span class="operator">-</span> dy<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="type">int</span> p2 <span class="operator">=</span> center<span class="operator">*</span>PFREAL_ONE <span class="operator">+</span> dy<span class="operator">/</span><span class="number">2</span>;
|
|
|
|
<span class="keyword">const</span> QRgb565 <span class="operator">*</span>ptr <span class="operator">=</span> (<span class="keyword">const</span> QRgb565<span class="operator">*</span>)(src<span class="operator">-</span><span class="operator">></span>scanLine(column));
|
|
<span class="keyword">if</span>(alpha <span class="operator">=</span><span class="operator">=</span> <span class="number">256</span>)
|
|
<span class="keyword">while</span>((y1 <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>) <span class="operator">&</span><span class="operator">&</span> (y2 <span class="operator"><</span> h) <span class="operator">&</span><span class="operator">&</span> (p1 <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>))
|
|
{
|
|
<span class="operator">*</span>pixel1 <span class="operator">=</span> ptr<span class="operator">[</span>p1 <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT<span class="operator">]</span>;
|
|
<span class="operator">*</span>pixel2 <span class="operator">=</span> ptr<span class="operator">[</span>p2 <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT<span class="operator">]</span>;
|
|
p1 <span class="operator">-</span><span class="operator">=</span> dy;
|
|
p2 <span class="operator">+</span><span class="operator">=</span> dy;
|
|
y1<span class="operator">-</span><span class="operator">-</span>;
|
|
y2<span class="operator">+</span><span class="operator">+</span>;
|
|
pixel1 <span class="operator">-</span><span class="operator">=</span> pixelstep;
|
|
pixel2 <span class="operator">+</span><span class="operator">=</span> pixelstep;
|
|
}
|
|
<span class="keyword">else</span>
|
|
<span class="keyword">while</span>((y1 <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>) <span class="operator">&</span><span class="operator">&</span> (y2 <span class="operator"><</span> h) <span class="operator">&</span><span class="operator">&</span> (p1 <span class="operator">></span><span class="operator">=</span> <span class="number">0</span>))
|
|
{
|
|
QRgb565 c1 <span class="operator">=</span> ptr<span class="operator">[</span>p1 <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT<span class="operator">]</span>;
|
|
QRgb565 c2 <span class="operator">=</span> ptr<span class="operator">[</span>p2 <span class="operator">></span><span class="operator">></span> PFREAL_SHIFT<span class="operator">]</span>;
|
|
|
|
<span class="operator">*</span>pixel1 <span class="operator">=</span> BYTE_MUL_RGB16(c1<span class="operator">,</span> alpha);
|
|
<span class="operator">*</span>pixel2 <span class="operator">=</span> BYTE_MUL_RGB16(c2<span class="operator">,</span> alpha);
|
|
|
|
<span class="comment">/*
|
|
int r1 = qRed(c1) * alpha/256;
|
|
int g1 = qGreen(c1) * alpha/256;
|
|
int b1 = qBlue(c1) * alpha/256;
|
|
int r2 = qRed(c2) * alpha/256;
|
|
int g2 = qGreen(c2) * alpha/256;
|
|
int b2 = qBlue(c2) * alpha/256;
|
|
*pixel1 = qRgb(r1, g1, b1);
|
|
*pixel2 = qRgb(r2, g2, b2);
|
|
*/</span>
|
|
p1 <span class="operator">-</span><span class="operator">=</span> dy;
|
|
p2 <span class="operator">+</span><span class="operator">=</span> dy;
|
|
y1<span class="operator">-</span><span class="operator">-</span>;
|
|
y2<span class="operator">+</span><span class="operator">+</span>;
|
|
pixel1 <span class="operator">-</span><span class="operator">=</span> pixelstep;
|
|
pixel2 <span class="operator">+</span><span class="operator">=</span> pixelstep;
|
|
}
|
|
}
|
|
|
|
rect<span class="operator">.</span>setTop(<span class="number">0</span>);
|
|
rect<span class="operator">.</span>setBottom(h<span class="operator">-</span><span class="number">1</span>);
|
|
<span class="keyword">return</span> rect;
|
|
}
|
|
|
|
<span class="comment">// Updates look-up table and other stuff necessary for the rendering.</span>
|
|
<span class="comment">// Call this when the viewport size or slide dimension is changed.</span>
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>recalc(<span class="type">int</span> ww<span class="operator">,</span> <span class="type">int</span> wh)
|
|
{
|
|
<span class="type">int</span> w <span class="operator">=</span> (ww<span class="operator">+</span><span class="number">1</span>)<span class="operator">/</span><span class="number">2</span>;
|
|
<span class="type">int</span> h <span class="operator">=</span> (wh<span class="operator">+</span><span class="number">1</span>)<span class="operator">/</span><span class="number">2</span>;
|
|
buffer <span class="operator">=</span> <span class="type"><a href="qimage.html">QImage</a></span>(ww<span class="operator">,</span> wh<span class="operator">,</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">::</span>Format_RGB16);
|
|
buffer<span class="operator">.</span>fill(<span class="number">0</span>);
|
|
|
|
rays<span class="operator">.</span>resize(w<span class="operator">*</span><span class="number">2</span>);
|
|
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> w; i<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
PFreal gg <span class="operator">=</span> (PFREAL_HALF <span class="operator">+</span> i <span class="operator">*</span> PFREAL_ONE) <span class="operator">/</span> (<span class="number">2</span><span class="operator">*</span>h);
|
|
rays<span class="operator">[</span>w<span class="operator">-</span>i<span class="operator">-</span><span class="number">1</span><span class="operator">]</span> <span class="operator">=</span> <span class="operator">-</span>gg;
|
|
rays<span class="operator">[</span>w<span class="operator">+</span>i<span class="operator">]</span> <span class="operator">=</span> gg;
|
|
}
|
|
|
|
<span class="comment">// pointer must move more than 1/15 of the window to enter drag mode</span>
|
|
singlePressThreshold <span class="operator">=</span> ww <span class="operator">/</span> <span class="number">15</span>;
|
|
<span class="comment">// qDebug() << "singlePressThreshold now set to " << singlePressThreshold;</span>
|
|
|
|
pixelsToMovePerSlide <span class="operator">=</span> ww <span class="operator">/</span> <span class="number">3</span>;
|
|
<span class="comment">// qDebug() << "pixelsToMovePerSlide now set to " << pixelsToMovePerSlide;</span>
|
|
|
|
itilt <span class="operator">=</span> <span class="number">80</span> <span class="operator">*</span> IANGLE_MAX <span class="operator">/</span> <span class="number">360</span>; <span class="comment">// approx. 80 degrees tilted</span>
|
|
|
|
offsetY <span class="operator">=</span> slideWidth<span class="operator">/</span><span class="number">2</span> <span class="operator">*</span> fsin(itilt);
|
|
offsetY <span class="operator">+</span><span class="operator">=</span> slideWidth <span class="operator">*</span> PFREAL_ONE <span class="operator">/</span> <span class="number">4</span>;
|
|
|
|
<span class="comment">// offsetX = slideWidth/2 * (PFREAL_ONE-fcos(itilt));</span>
|
|
<span class="comment">// offsetX += slideWidth * PFREAL_ONE;</span>
|
|
|
|
<span class="comment">// center slide + side slide</span>
|
|
offsetX <span class="operator">=</span> slideWidth<span class="operator">*</span>PFREAL_ONE;
|
|
<span class="comment">// offsetX = 150*PFREAL_ONE;//(slideWidth/2)*PFREAL_ONE + ( slideWidth*fcos(itilt) )/2;</span>
|
|
<span class="comment">// qDebug() << "center width = " << slideWidth;</span>
|
|
<span class="comment">// qDebug() << "side width = " << fixedToFloat(slideWidth/2 * (PFREAL_ONE-fcos(itilt)));</span>
|
|
<span class="comment">// qDebug() << "offsetX now " << fixedToFloat(offsetX);</span>
|
|
|
|
spacing <span class="operator">=</span> slideWidth<span class="operator">/</span><span class="number">5</span>;
|
|
|
|
surfaceCache<span class="operator">.</span>clear();
|
|
blankSurface <span class="operator">=</span> <span class="type"><a href="qimage.html">QImage</a></span>();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>startAnimation()
|
|
{
|
|
<span class="keyword">if</span>(<span class="operator">!</span>animateTimer<span class="operator">.</span>isActive())
|
|
{
|
|
step <span class="operator">=</span> (target <span class="operator"><</span> centerSlide<span class="operator">.</span>slideIndex) <span class="operator">?</span> <span class="operator">-</span><span class="number">1</span> : <span class="number">1</span>;
|
|
animateTimer<span class="operator">.</span>start(<span class="number">30</span><span class="operator">,</span> widget);
|
|
}
|
|
}
|
|
|
|
<span class="comment">// Updates the animation effect. Call this periodically from a timer.</span>
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>updateAnimation()
|
|
{
|
|
<span class="keyword">if</span>(<span class="operator">!</span>animateTimer<span class="operator">.</span>isActive())
|
|
<span class="keyword">return</span>;
|
|
<span class="keyword">if</span>(step <span class="operator">=</span><span class="operator">=</span> <span class="number">0</span>)
|
|
<span class="keyword">return</span>;
|
|
|
|
<span class="type">int</span> speed <span class="operator">=</span> <span class="number">16384</span>;
|
|
|
|
<span class="comment">// deaccelerate when approaching the target</span>
|
|
<span class="keyword">if</span>(<span class="keyword">true</span>)
|
|
{
|
|
<span class="keyword">const</span> <span class="type">int</span> max <span class="operator">=</span> <span class="number">2</span> <span class="operator">*</span> <span class="number">65536</span>;
|
|
|
|
<span class="type">int</span> fi <span class="operator">=</span> slideFrame;
|
|
fi <span class="operator">-</span><span class="operator">=</span> (target <span class="operator"><</span><span class="operator"><</span> <span class="number">16</span>);
|
|
<span class="keyword">if</span>(fi <span class="operator"><</span> <span class="number">0</span>)
|
|
fi <span class="operator">=</span> <span class="operator">-</span>fi;
|
|
fi <span class="operator">=</span> <a href="qtglobal.html#qMin">qMin</a>(fi<span class="operator">,</span> max);
|
|
|
|
<span class="type">int</span> ia <span class="operator">=</span> IANGLE_MAX <span class="operator">*</span> (fi<span class="operator">-</span>max<span class="operator">/</span><span class="number">2</span>) <span class="operator">/</span> (max<span class="operator">*</span><span class="number">2</span>);
|
|
speed <span class="operator">=</span> <span class="number">512</span> <span class="operator">+</span> <span class="number">16384</span> <span class="operator">*</span> (PFREAL_ONE<span class="operator">+</span>fsin(ia))<span class="operator">/</span>PFREAL_ONE;
|
|
}
|
|
|
|
slideFrame <span class="operator">+</span><span class="operator">=</span> speed<span class="operator">*</span>step;
|
|
|
|
<span class="type">int</span> index <span class="operator">=</span> slideFrame <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
<span class="type">int</span> pos <span class="operator">=</span> slideFrame <span class="operator">&</span> <span class="number">0xffff</span>;
|
|
<span class="type">int</span> neg <span class="operator">=</span> <span class="number">65536</span> <span class="operator">-</span> pos;
|
|
<span class="type">int</span> tick <span class="operator">=</span> (step <span class="operator"><</span> <span class="number">0</span>) <span class="operator">?</span> neg : pos;
|
|
PFreal ftick <span class="operator">=</span> (tick <span class="operator">*</span> PFREAL_ONE) <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
|
|
<span class="comment">// the leftmost and rightmost slide must fade away</span>
|
|
fade <span class="operator">=</span> pos <span class="operator">/</span> <span class="number">256</span>;
|
|
|
|
<span class="keyword">if</span>(step <span class="operator"><</span> <span class="number">0</span>)
|
|
index<span class="operator">+</span><span class="operator">+</span>;
|
|
<span class="keyword">if</span>(centerIndex <span class="operator">!</span><span class="operator">=</span> index)
|
|
{
|
|
centerIndex <span class="operator">=</span> index;
|
|
slideFrame <span class="operator">=</span> index <span class="operator"><</span><span class="operator"><</span> <span class="number">16</span>;
|
|
centerSlide<span class="operator">.</span>slideIndex <span class="operator">=</span> centerIndex;
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> leftSlides<span class="operator">.</span>count(); i<span class="operator">+</span><span class="operator">+</span>)
|
|
leftSlides<span class="operator">[</span>i<span class="operator">]</span><span class="operator">.</span>slideIndex <span class="operator">=</span> centerIndex<span class="operator">-</span><span class="number">1</span><span class="operator">-</span>i;
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> rightSlides<span class="operator">.</span>count(); i<span class="operator">+</span><span class="operator">+</span>)
|
|
rightSlides<span class="operator">[</span>i<span class="operator">]</span><span class="operator">.</span>slideIndex <span class="operator">=</span> centerIndex<span class="operator">+</span><span class="number">1</span><span class="operator">+</span>i;
|
|
}
|
|
|
|
centerSlide<span class="operator">.</span>angle <span class="operator">=</span> (step <span class="operator">*</span> tick <span class="operator">*</span> itilt) <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
centerSlide<span class="operator">.</span>cx <span class="operator">=</span> <span class="operator">-</span>step <span class="operator">*</span> fmul(offsetX<span class="operator">,</span> ftick);
|
|
centerSlide<span class="operator">.</span>cy <span class="operator">=</span> fmul(offsetY<span class="operator">,</span> ftick);
|
|
|
|
<span class="keyword">if</span>(centerIndex <span class="operator">=</span><span class="operator">=</span> target)
|
|
{
|
|
resetSlides();
|
|
animateTimer<span class="operator">.</span>stop();
|
|
triggerRender();
|
|
step <span class="operator">=</span> <span class="number">0</span>;
|
|
fade <span class="operator">=</span> <span class="number">256</span>;
|
|
<span class="keyword">return</span>;
|
|
}
|
|
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> leftSlides<span class="operator">.</span>count(); i<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
SlideInfo<span class="operator">&</span> si <span class="operator">=</span> leftSlides<span class="operator">[</span>i<span class="operator">]</span>;
|
|
si<span class="operator">.</span>angle <span class="operator">=</span> itilt;
|
|
si<span class="operator">.</span>cx <span class="operator">=</span> <span class="operator">-</span>(offsetX <span class="operator">+</span> spacing<span class="operator">*</span>i<span class="operator">*</span>PFREAL_ONE <span class="operator">+</span> step<span class="operator">*</span>spacing<span class="operator">*</span>ftick);
|
|
si<span class="operator">.</span>cy <span class="operator">=</span> offsetY;
|
|
}
|
|
|
|
<span class="keyword">for</span>(<span class="type">int</span> i <span class="operator">=</span> <span class="number">0</span>; i <span class="operator"><</span> rightSlides<span class="operator">.</span>count(); i<span class="operator">+</span><span class="operator">+</span>)
|
|
{
|
|
SlideInfo<span class="operator">&</span> si <span class="operator">=</span> rightSlides<span class="operator">[</span>i<span class="operator">]</span>;
|
|
si<span class="operator">.</span>angle <span class="operator">=</span> <span class="operator">-</span>itilt;
|
|
si<span class="operator">.</span>cx <span class="operator">=</span> offsetX <span class="operator">+</span> spacing<span class="operator">*</span>i<span class="operator">*</span>PFREAL_ONE <span class="operator">-</span> step<span class="operator">*</span>spacing<span class="operator">*</span>ftick;
|
|
si<span class="operator">.</span>cy <span class="operator">=</span> offsetY;
|
|
}
|
|
|
|
<span class="keyword">if</span>(step <span class="operator">></span> <span class="number">0</span>)
|
|
{
|
|
PFreal ftick <span class="operator">=</span> (neg <span class="operator">*</span> PFREAL_ONE) <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
rightSlides<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>angle <span class="operator">=</span> <span class="operator">-</span>(neg <span class="operator">*</span> itilt) <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
rightSlides<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>cx <span class="operator">=</span> fmul(offsetX<span class="operator">,</span> ftick);
|
|
rightSlides<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>cy <span class="operator">=</span> fmul(offsetY<span class="operator">,</span> ftick);
|
|
}
|
|
<span class="keyword">else</span>
|
|
{
|
|
PFreal ftick <span class="operator">=</span> (pos <span class="operator">*</span> PFREAL_ONE) <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
leftSlides<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>angle <span class="operator">=</span> (pos <span class="operator">*</span> itilt) <span class="operator">></span><span class="operator">></span> <span class="number">16</span>;
|
|
leftSlides<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>cx <span class="operator">=</span> <span class="operator">-</span>fmul(offsetX<span class="operator">,</span> ftick);
|
|
leftSlides<span class="operator">[</span><span class="number">0</span><span class="operator">]</span><span class="operator">.</span>cy <span class="operator">=</span> fmul(offsetY<span class="operator">,</span> ftick);
|
|
}
|
|
|
|
<span class="comment">// must change direction ?</span>
|
|
<span class="keyword">if</span>(target <span class="operator"><</span> index) <span class="keyword">if</span>(step <span class="operator">></span> <span class="number">0</span>)
|
|
step <span class="operator">=</span> <span class="operator">-</span><span class="number">1</span>;
|
|
<span class="keyword">if</span>(target <span class="operator">></span> index) <span class="keyword">if</span>(step <span class="operator"><</span> <span class="number">0</span>)
|
|
step <span class="operator">=</span> <span class="number">1</span>;
|
|
|
|
triggerRender();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlowPrivate<span class="operator">::</span>clearSurfaceCache()
|
|
{
|
|
surfaceCache<span class="operator">.</span>clear();
|
|
}
|
|
|
|
<span class="comment">// -----------------------------------------</span>
|
|
|
|
PictureFlow<span class="operator">::</span>PictureFlow(<span class="type"><a href="qwidget.html">QWidget</a></span><span class="operator">*</span> parent): <span class="type"><a href="qwidget.html">QWidget</a></span>(parent)
|
|
{
|
|
d <span class="operator">=</span> <span class="keyword">new</span> PictureFlowPrivate(<span class="keyword">this</span>);
|
|
|
|
setAttribute(<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>WA_StaticContents<span class="operator">,</span> <span class="keyword">true</span>);
|
|
setAttribute(<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>WA_OpaquePaintEvent<span class="operator">,</span> <span class="keyword">true</span>);
|
|
setAttribute(<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>WA_NoSystemBackground<span class="operator">,</span> <span class="keyword">true</span>);
|
|
|
|
<span class="preprocessor">#ifdef Q_WS_QWS</span>
|
|
<span class="keyword">if</span> (<span class="type"><a href="qscreen.html">QScreen</a></span><span class="operator">::</span>instance()<span class="operator">-</span><span class="operator">></span>pixelFormat() <span class="operator">!</span><span class="operator">=</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">::</span>Format_Invalid)
|
|
setAttribute(<span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>WA_PaintOnScreen<span class="operator">,</span> <span class="keyword">true</span>);
|
|
<span class="preprocessor">#endif</span>
|
|
}
|
|
|
|
PictureFlow<span class="operator">::</span><span class="operator">~</span>PictureFlow()
|
|
{
|
|
<span class="keyword">delete</span> d;
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlow<span class="operator">::</span>slideCount() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> d<span class="operator">-</span><span class="operator">></span>slideCount();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setSlideCount(<span class="type">int</span> count)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setSlideCount(count);
|
|
}
|
|
|
|
<span class="type"><a href="qsize.html">QSize</a></span> PictureFlow<span class="operator">::</span>slideSize() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> d<span class="operator">-</span><span class="operator">></span>slideSize();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setSlideSize(<span class="type"><a href="qsize.html">QSize</a></span> size)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setSlideSize(size);
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlow<span class="operator">::</span>zoomFactor() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> d<span class="operator">-</span><span class="operator">></span>zoomFactor();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setZoomFactor(<span class="type">int</span> z)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setZoomFactor(z);
|
|
}
|
|
|
|
<span class="type"><a href="qimage.html">QImage</a></span> PictureFlow<span class="operator">::</span>slide(<span class="type">int</span> index) <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> d<span class="operator">-</span><span class="operator">></span>slide(index);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setSlide(<span class="type">int</span> index<span class="operator">,</span> <span class="keyword">const</span> <span class="type"><a href="qimage.html">QImage</a></span><span class="operator">&</span> image)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setSlide(index<span class="operator">,</span> image);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setSlide(<span class="type">int</span> index<span class="operator">,</span> <span class="keyword">const</span> <span class="type"><a href="qpixmap.html">QPixmap</a></span><span class="operator">&</span> pixmap)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setSlide(index<span class="operator">,</span> pixmap<span class="operator">.</span>toImage());
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setSlideCaption(<span class="type">int</span> index<span class="operator">,</span> <span class="type"><a href="qstring.html">QString</a></span> caption)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>captions<span class="operator">[</span>index<span class="operator">]</span> <span class="operator">=</span> caption;
|
|
}
|
|
|
|
<span class="type">int</span> PictureFlow<span class="operator">::</span>currentSlide() <span class="keyword">const</span>
|
|
{
|
|
<span class="keyword">return</span> d<span class="operator">-</span><span class="operator">></span>currentSlide();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>setCurrentSlide(<span class="type">int</span> index)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setCurrentSlide(index);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>clear()
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>setSlideCount(<span class="number">0</span>);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>clearCaches()
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>clearSurfaceCache();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>render()
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>render();
|
|
update();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>showPrevious()
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>showPrevious();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>showNext()
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>showNext();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>showSlide(<span class="type">int</span> index)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>showSlide(index);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>keyPressEvent(<span class="type"><a href="qkeyevent.html">QKeyEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
<span class="keyword">if</span>(event<span class="operator">-</span><span class="operator">></span>key() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>Key_Left)
|
|
{
|
|
<span class="keyword">if</span>(event<span class="operator">-</span><span class="operator">></span>modifiers() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>ControlModifier)
|
|
showSlide(currentSlide()<span class="operator">-</span><span class="number">10</span>);
|
|
<span class="keyword">else</span>
|
|
showPrevious();
|
|
event<span class="operator">-</span><span class="operator">></span>accept();
|
|
<span class="keyword">return</span>;
|
|
}
|
|
|
|
<span class="keyword">if</span>(event<span class="operator">-</span><span class="operator">></span>key() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>Key_Right)
|
|
{
|
|
<span class="keyword">if</span>(event<span class="operator">-</span><span class="operator">></span>modifiers() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>ControlModifier)
|
|
showSlide(currentSlide()<span class="operator">+</span><span class="number">10</span>);
|
|
<span class="keyword">else</span>
|
|
showNext();
|
|
event<span class="operator">-</span><span class="operator">></span>accept();
|
|
<span class="keyword">return</span>;
|
|
}
|
|
|
|
<span class="keyword">if</span> (event<span class="operator">-</span><span class="operator">></span>key() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>Key_Enter <span class="operator">|</span><span class="operator">|</span> event<span class="operator">-</span><span class="operator">></span>key() <span class="operator">=</span><span class="operator">=</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>Key_Select) {
|
|
<span class="keyword">emit</span> itemActivated(d<span class="operator">-</span><span class="operator">></span>getTarget());
|
|
event<span class="operator">-</span><span class="operator">></span>accept();
|
|
<span class="keyword">return</span>;
|
|
}
|
|
|
|
event<span class="operator">-</span><span class="operator">></span>ignore();
|
|
}
|
|
|
|
<span class="preprocessor">#define SPEED_LOWER_THRESHOLD 10</span>
|
|
<span class="preprocessor">#define SPEED_UPPER_LIMIT 40</span>
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>mouseMoveEvent(<span class="type"><a href="qmouseevent.html">QMouseEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
<span class="type">int</span> distanceMovedSinceLastEvent <span class="operator">=</span> event<span class="operator">-</span><span class="operator">></span>pos()<span class="operator">.</span>x() <span class="operator">-</span> d<span class="operator">-</span><span class="operator">></span>previousPos<span class="operator">.</span>x();
|
|
|
|
<span class="comment">// Check to see if we need to switch from single press mode to a drag mode</span>
|
|
<span class="keyword">if</span> (d<span class="operator">-</span><span class="operator">></span>singlePress)
|
|
{
|
|
<span class="comment">// Increment the distance moved for this event</span>
|
|
d<span class="operator">-</span><span class="operator">></span>pixelDistanceMoved <span class="operator">+</span><span class="operator">=</span> distanceMovedSinceLastEvent;
|
|
|
|
<span class="comment">// Check against threshold</span>
|
|
<span class="keyword">if</span> (<a href="qtglobal.html#qAbs">qAbs</a>(d<span class="operator">-</span><span class="operator">></span>pixelDistanceMoved) <span class="operator">></span> d<span class="operator">-</span><span class="operator">></span>singlePressThreshold)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>singlePress <span class="operator">=</span> <span class="keyword">false</span>;
|
|
<span class="comment">// qDebug() << "DRAG MODE ON";</span>
|
|
}
|
|
}
|
|
|
|
<span class="keyword">if</span> (<span class="operator">!</span>d<span class="operator">-</span><span class="operator">></span>singlePress)
|
|
{
|
|
<span class="type">int</span> speed;
|
|
<span class="comment">// Calculate velocity in a 10th of a window width per second</span>
|
|
<span class="keyword">if</span> (d<span class="operator">-</span><span class="operator">></span>previousPosTimestamp<span class="operator">.</span>elapsed() <span class="operator">=</span><span class="operator">=</span> <span class="number">0</span>)
|
|
speed <span class="operator">=</span> SPEED_LOWER_THRESHOLD;
|
|
<span class="keyword">else</span>
|
|
{
|
|
speed <span class="operator">=</span> ((<a href="qtglobal.html#qAbs">qAbs</a>(event<span class="operator">-</span><span class="operator">></span>pos()<span class="operator">.</span>x()<span class="operator">-</span>d<span class="operator">-</span><span class="operator">></span>previousPos<span class="operator">.</span>x())<span class="operator">*</span><span class="number">1000</span>) <span class="operator">/</span> d<span class="operator">-</span><span class="operator">></span>previousPosTimestamp<span class="operator">.</span>elapsed())
|
|
<span class="operator">/</span> (d<span class="operator">-</span><span class="operator">></span>buffer<span class="operator">.</span>width() <span class="operator">/</span> <span class="number">10</span>);
|
|
|
|
<span class="keyword">if</span> (speed <span class="operator"><</span> SPEED_LOWER_THRESHOLD)
|
|
speed <span class="operator">=</span> SPEED_LOWER_THRESHOLD;
|
|
<span class="keyword">else</span> <span class="keyword">if</span> (speed <span class="operator">></span> SPEED_UPPER_LIMIT)
|
|
speed <span class="operator">=</span> SPEED_UPPER_LIMIT;
|
|
<span class="keyword">else</span> {
|
|
speed <span class="operator">=</span> SPEED_LOWER_THRESHOLD <span class="operator">+</span> (speed <span class="operator">/</span> <span class="number">3</span>);
|
|
<span class="comment">// qDebug() << "ACCELERATION ENABLED Speed = " << speed << ", Distance = " << distanceMovedSinceLastEvent;</span>
|
|
}
|
|
}
|
|
|
|
<span class="comment">// qDebug() << "Speed = " << speed;</span>
|
|
|
|
<span class="comment">// int incr = ((event->pos().x() - d->previousPos.x())/10) * speed;</span>
|
|
|
|
<span class="comment">// qDebug() << "Incremented by " << incr;</span>
|
|
|
|
<span class="type">int</span> incr <span class="operator">=</span> (distanceMovedSinceLastEvent <span class="operator">*</span> speed);
|
|
|
|
<span class="comment">//qDebug() << "(distanceMovedSinceLastEvent * speed) = " << incr;</span>
|
|
|
|
<span class="keyword">if</span> (incr <span class="operator">></span> d<span class="operator">-</span><span class="operator">></span>pixelsToMovePerSlide<span class="operator">*</span><span class="number">2</span>) {
|
|
incr <span class="operator">=</span> d<span class="operator">-</span><span class="operator">></span>pixelsToMovePerSlide<span class="operator">*</span><span class="number">2</span>;
|
|
<span class="comment">//qDebug() << "Limiting incr to " << incr;</span>
|
|
}
|
|
|
|
d<span class="operator">-</span><span class="operator">></span>pixelDistanceMoved <span class="operator">+</span><span class="operator">=</span> (distanceMovedSinceLastEvent <span class="operator">*</span> speed);
|
|
<span class="comment">// qDebug() << "distance: " << d->pixelDistanceMoved;</span>
|
|
|
|
<span class="type">int</span> slideInc;
|
|
|
|
slideInc <span class="operator">=</span> d<span class="operator">-</span><span class="operator">></span>pixelDistanceMoved <span class="operator">/</span> (d<span class="operator">-</span><span class="operator">></span>pixelsToMovePerSlide <span class="operator">*</span> <span class="number">10</span>);
|
|
|
|
<span class="keyword">if</span> (slideInc <span class="operator">!</span><span class="operator">=</span> <span class="number">0</span>) {
|
|
<span class="type">int</span> targetSlide <span class="operator">=</span> d<span class="operator">-</span><span class="operator">></span>getTarget() <span class="operator">-</span> slideInc;
|
|
showSlide(targetSlide);
|
|
<span class="comment">// qDebug() << "TargetSlide = " << targetSlide;</span>
|
|
|
|
<span class="comment">//qDebug() << "Decrementing pixelDistanceMoved by " << (d->pixelsToMovePerSlide *10) * slideInc;</span>
|
|
|
|
d<span class="operator">-</span><span class="operator">></span>pixelDistanceMoved <span class="operator">-</span><span class="operator">=</span> (d<span class="operator">-</span><span class="operator">></span>pixelsToMovePerSlide <span class="operator">*</span><span class="number">10</span>) <span class="operator">*</span> slideInc;
|
|
|
|
<span class="comment">/*
|
|
if ( (targetSlide <= 0) || (targetSlide >= d->slideCount()-1) )
|
|
d->pixelDistanceMoved = 0;
|
|
*/</span>
|
|
}
|
|
}
|
|
|
|
d<span class="operator">-</span><span class="operator">></span>previousPos <span class="operator">=</span> event<span class="operator">-</span><span class="operator">></span>pos();
|
|
d<span class="operator">-</span><span class="operator">></span>previousPosTimestamp<span class="operator">.</span>restart();
|
|
|
|
<span class="keyword">emit</span> inputReceived();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>mousePressEvent(<span class="type"><a href="qmouseevent.html">QMouseEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>firstPress <span class="operator">=</span> event<span class="operator">-</span><span class="operator">></span>pos();
|
|
d<span class="operator">-</span><span class="operator">></span>previousPos <span class="operator">=</span> event<span class="operator">-</span><span class="operator">></span>pos();
|
|
d<span class="operator">-</span><span class="operator">></span>previousPosTimestamp<span class="operator">.</span>start();
|
|
d<span class="operator">-</span><span class="operator">></span>singlePress <span class="operator">=</span> <span class="keyword">true</span>; <span class="comment">// Initially assume a single press</span>
|
|
<span class="comment">// d->dragStartSlide = d->getTarget();</span>
|
|
d<span class="operator">-</span><span class="operator">></span>pixelDistanceMoved <span class="operator">=</span> <span class="number">0</span>;
|
|
|
|
<span class="keyword">emit</span> inputReceived();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>mouseReleaseEvent(<span class="type"><a href="qmouseevent.html">QMouseEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
<span class="type">int</span> sideWidth <span class="operator">=</span> (d<span class="operator">-</span><span class="operator">></span>buffer<span class="operator">.</span>width() <span class="operator">-</span> slideSize()<span class="operator">.</span>width()) <span class="operator">/</span><span class="number">2</span>;
|
|
|
|
<span class="keyword">if</span> (d<span class="operator">-</span><span class="operator">></span>singlePress)
|
|
{
|
|
<span class="keyword">if</span> (event<span class="operator">-</span><span class="operator">></span>x() <span class="operator"><</span> sideWidth )
|
|
{
|
|
showPrevious();
|
|
} <span class="keyword">else</span> <span class="keyword">if</span> ( event<span class="operator">-</span><span class="operator">></span>x() <span class="operator">></span> sideWidth <span class="operator">+</span> slideSize()<span class="operator">.</span>width() ) {
|
|
showNext();
|
|
} <span class="keyword">else</span> {
|
|
<span class="keyword">emit</span> itemActivated(d<span class="operator">-</span><span class="operator">></span>getTarget());
|
|
}
|
|
|
|
event<span class="operator">-</span><span class="operator">></span>accept();
|
|
}
|
|
|
|
<span class="keyword">emit</span> inputReceived();
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>paintEvent(<span class="type"><a href="qpaintevent.html">QPaintEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
Q_UNUSED(event);
|
|
<span class="type"><a href="qpainter.html">QPainter</a></span> painter(<span class="keyword">this</span>);
|
|
painter<span class="operator">.</span>setRenderHint(<span class="type"><a href="qpainter.html">QPainter</a></span><span class="operator">::</span>Antialiasing<span class="operator">,</span> <span class="keyword">false</span>);
|
|
painter<span class="operator">.</span>drawImage(<span class="type"><a href="qpoint.html">QPoint</a></span>(<span class="number">0</span><span class="operator">,</span><span class="number">0</span>)<span class="operator">,</span> d<span class="operator">-</span><span class="operator">></span>buffer);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>resizeEvent(<span class="type"><a href="qresizeevent.html">QResizeEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
d<span class="operator">-</span><span class="operator">></span>resize(width()<span class="operator">,</span> height());
|
|
<span class="type"><a href="qwidget.html">QWidget</a></span><span class="operator">::</span>resizeEvent(event);
|
|
}
|
|
|
|
<span class="type">void</span> PictureFlow<span class="operator">::</span>timerEvent(<span class="type"><a href="qtimerevent.html">QTimerEvent</a></span><span class="operator">*</span> event)
|
|
{
|
|
<span class="keyword">if</span>(event<span class="operator">-</span><span class="operator">></span>timerId() <span class="operator">=</span><span class="operator">=</span> d<span class="operator">-</span><span class="operator">></span>animateTimer<span class="operator">.</span>timerId())
|
|
{
|
|
<span class="comment">// QTime now = QTime::currentTime();</span>
|
|
d<span class="operator">-</span><span class="operator">></span>updateAnimation();
|
|
<span class="comment">// d->animateTimer.start(qMax(0, 30-now.elapsed() ), this);</span>
|
|
}
|
|
<span class="keyword">else</span>
|
|
<span class="type"><a href="qwidget.html">QWidget</a></span><span class="operator">::</span>timerEvent(event);
|
|
}</pre>
|
|
</div>
|
|
<!-- @@@demos/embedded/fluidlauncher/pictureflow.cpp -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="ft">
|
|
<span></span>
|
|
</div>
|
|
</div>
|
|
<div class="footer">
|
|
<p>
|
|
<acronym title="Copyright">©</acronym> 2015 The Qt Company Ltd.
|
|
Documentation contributions included herein are the copyrights of
|
|
their respective owners.</p>
|
|
<br />
|
|
<p>
|
|
The documentation provided herein is licensed under the terms of the
|
|
<a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
|
|
License version 1.3</a> as published by the Free Software Foundation.</p>
|
|
<p>
|
|
Documentation sources may be obtained from <a href="http://www.qt-project.org">
|
|
www.qt-project.org</a>.</p>
|
|
<br />
|
|
<p>
|
|
Qt and respective logos are trademarks of The Qt Company Ltd
|
|
in Finland and/or other countries worldwide. All other trademarks are property
|
|
of their respective owners. <a title="Privacy Policy"
|
|
href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
|
|
</div>
|
|
|
|
<script src="scripts/functions.js" type="text/javascript"></script>
|
|
</body>
|
|
</html>
|