8 #include <QDomDocument>
14 int zoomedWidth =
static_cast<int>(
static_cast<float>(size.width()) *
m_hzoom);
15 int zoomedHeight =
static_cast<int>(
static_cast<float>(size.height()) *
m_vzoom);
22 y = -zoomedHeight / 2;
break;
26 y = -size.height() / 2;
break;
30 y = size.height() - zoomedHeight / 2;
break;
38 x = -zoomedWidth / 2;
break;
42 x = -size.width() / 2;
break;
46 x = size.width() - zoomedWidth / 2;
break;
49 return {x, y, zoomedWidth, zoomedHeight};
54 if (
GetMythDB()->GetBoolSetting(
"SmoothTransitions",
true))
93 setStartValue(animation->startValue());
94 setEndValue(animation->endValue());
95 setEasingCurve(animation->easingCurve());
96 setDuration(animation->duration());
110 int offset = (direction() == Forward) ? interval.count() : -interval.count();
111 setCurrentTime(currentTime() + offset);
113 if (endValue() == currentValue())
115 if (direction() == Forward)
118 setDirection(Backward);
123 else if (startValue() == currentValue())
125 if (direction() == Backward)
128 setDirection(Forward);
137 if (curve ==
"Linear") setEasingCurve(QEasingCurve::Linear);
138 else if (curve ==
"InQuad") setEasingCurve(QEasingCurve::InQuad);
139 else if (curve ==
"OutQuad") setEasingCurve(QEasingCurve::OutQuad);
140 else if (curve ==
"InOutQuad") setEasingCurve(QEasingCurve::InOutQuad);
141 else if (curve ==
"OutInQuad") setEasingCurve(QEasingCurve::OutInQuad);
142 else if (curve ==
"InCubic") setEasingCurve(QEasingCurve::InCubic);
143 else if (curve ==
"OutCubic") setEasingCurve(QEasingCurve::OutCubic);
144 else if (curve ==
"InOutCubic") setEasingCurve(QEasingCurve::InOutCubic);
145 else if (curve ==
"OutInCubic") setEasingCurve(QEasingCurve::OutInCubic);
146 else if (curve ==
"InQuart") setEasingCurve(QEasingCurve::InQuart);
147 else if (curve ==
"OutQuart") setEasingCurve(QEasingCurve::OutQuart);
148 else if (curve ==
"InOutQuart") setEasingCurve(QEasingCurve::InOutQuart);
149 else if (curve ==
"OutInQuart") setEasingCurve(QEasingCurve::OutInQuart);
150 else if (curve ==
"InQuint") setEasingCurve(QEasingCurve::InQuint);
151 else if (curve ==
"OutQuint") setEasingCurve(QEasingCurve::OutQuint);
152 else if (curve ==
"InOutQuint") setEasingCurve(QEasingCurve::InOutQuint);
153 else if (curve ==
"OutInQuint") setEasingCurve(QEasingCurve::OutInQuint);
154 else if (curve ==
"InSine") setEasingCurve(QEasingCurve::InSine);
155 else if (curve ==
"OutSine") setEasingCurve(QEasingCurve::OutSine);
156 else if (curve ==
"InOutSine") setEasingCurve(QEasingCurve::InOutSine);
157 else if (curve ==
"OutInSine") setEasingCurve(QEasingCurve::OutInSine);
158 else if (curve ==
"InExpo") setEasingCurve(QEasingCurve::InExpo);
159 else if (curve ==
"OutExpo") setEasingCurve(QEasingCurve::OutExpo);
160 else if (curve ==
"InOutExpo") setEasingCurve(QEasingCurve::InOutExpo);
161 else if (curve ==
"OutInExpo") setEasingCurve(QEasingCurve::OutInExpo);
162 else if (curve ==
"InCirc") setEasingCurve(QEasingCurve::InCirc);
163 else if (curve ==
"OutCirc") setEasingCurve(QEasingCurve::OutCirc);
164 else if (curve ==
"InOutCirc") setEasingCurve(QEasingCurve::InOutCirc);
165 else if (curve ==
"OutInCirc") setEasingCurve(QEasingCurve::OutInCirc);
166 else if (curve ==
"InElastic") setEasingCurve(QEasingCurve::InElastic);
167 else if (curve ==
"OutElastic") setEasingCurve(QEasingCurve::OutElastic);
168 else if (curve ==
"InOutElastic") setEasingCurve(QEasingCurve::InOutElastic);
169 else if (curve ==
"OutInElastic") setEasingCurve(QEasingCurve::OutInElastic);
170 else if (curve ==
"InBack") setEasingCurve(QEasingCurve::InBack);
171 else if (curve ==
"OutBack") setEasingCurve(QEasingCurve::OutBack);
172 else if (curve ==
"InOutBack") setEasingCurve(QEasingCurve::InOutBack);
173 else if (curve ==
"OutInBack") setEasingCurve(QEasingCurve::OutInBack);
174 else if (curve ==
"InBounce") setEasingCurve(QEasingCurve::InBounce);
175 else if (curve ==
"OutBounce") setEasingCurve(QEasingCurve::OutBounce);
176 else if (curve ==
"InOutBounce") setEasingCurve(QEasingCurve::InOutBounce);
177 else if (curve ==
"OutInBounce") setEasingCurve(QEasingCurve::OutInBounce);
178 else if (curve ==
"InCurve") setEasingCurve(QEasingCurve::InCurve);
179 else if (curve ==
"OutCurve") setEasingCurve(QEasingCurve::OutCurve);
180 else if (curve ==
"SineCurve") setEasingCurve(QEasingCurve::SineCurve);
181 else if (curve ==
"CosineCurve") setEasingCurve(QEasingCurve::CosineCurve);
200 QString
t = element.attribute(
"trigger",
"AboutToShow");
202 if (
"AboutToHide" ==
t)
205 for (QDomNode child = element.firstChild(); !child.isNull();
206 child = child.nextSibling())
208 QDomElement section = child.toElement();
209 if (section.isNull())
211 if (section.tagName() ==
"section")
219 int duration = element.attribute(
"duration",
"500").toInt();
220 QString centre = element.attribute(
"centre",
"Middle");
221 for (QDomNode child = element.firstChild(); !child.isNull();
222 child = child.nextSibling())
224 QDomElement effect = child.toElement();
229 int effectduration = duration;
231 QString effect_duration = effect.attribute(
"duration",
"");
232 if (!effect_duration.isEmpty())
233 effectduration = effect_duration.toInt();
235 bool looped =
parseBool(effect.attribute(
"looped",
"false"));
236 bool reversible =
parseBool(effect.attribute(
"reversible",
"false"));
237 QString easingcurve = effect.attribute(
"easingcurve",
"Linear");
241 QString fxtype = effect.tagName();
242 if (fxtype ==
"alpha")
247 else if (fxtype ==
"position")
252 else if (fxtype ==
"angle")
257 else if (fxtype ==
"zoom")
262 else if (fxtype ==
"horizontalzoom")
267 else if (fxtype ==
"verticalzoom")
278 a->setStartValue(start);
280 a->setDuration(effectduration);
281 a->SetEasingCurve(easingcurve);
282 a->SetCentre(centre);
283 a->SetLooped(looped);
284 a->SetReversible(reversible);
292 QVariant& startValue, QVariant& endValue)
294 startValue = element.attribute(
"start",
"0").toInt();
295 endValue = element.attribute(
"end",
"0").toInt();
299 QVariant& startValue, QVariant& endValue,
327 QVariant& startValue, QVariant& endValue)
329 startValue = element.attribute(
"start",
"0").toFloat() / 100.0F;
330 endValue = element.attribute(
"end",
"0").toFloat() /100.0F;
334 QVariant& startValue, QVariant& endValue)
336 startValue = element.attribute(
"start",
"0").toFloat();
337 endValue = element.attribute(
"end",
"0").toFloat();