digiKam
Loading...
Searching...
No Matches
transitionmngr_p.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2017-05-24
7 * Description : images transition manager.
8 *
9 * SPDX-FileCopyrightText: 2017-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// C++ includes
18
19#include <cmath>
20
21// Qt includes
22
23#include <QPainter>
24#include <QPainterPath>
25#include <QPolygon>
26#include <QRandomGenerator>
27
28// Local includes
29
30#include "transitionmngr.h"
31#include "digikam_config.h"
32#include "digikam_debug.h"
33
34namespace Digikam
35{
36
37class Q_DECL_HIDDEN TransitionMngr::Private
38{
39public:
40
41 typedef int (TransitionMngr::Private::*TransMethod)(bool);
42
43public:
44
46 {
47 registerTransitions();
48 }
49
51 {
52 if (eff_intArray)
53 {
54 delete [] eff_intArray;
55 }
56 }
57
58
59 QMap<TransitionMngr::TransType, TransMethod> eff_transList;
60
65
66 bool eff_isRunning = false;
67 TransitionMngr::TransType eff_curTransition = TransitionMngr::None;
68
69 // values for state of various transitions:
70 int eff_x = 0;
71 int eff_y = 0;
72 int eff_w = 0;
73 int eff_h = 0;
74 int eff_dx = 0;
75 int eff_dy = 0;
76 int eff_ix = 0;
77 int eff_iy = 0;
78 int eff_i = 0;
79 int eff_j = 0;
80 int eff_subType = 0;
81 int eff_x0 = 0;
82 int eff_y0 = 0;
83 int eff_x1 = 0;
84 int eff_y1 = 0;
85 int eff_wait = 0;
86 double eff_fx = 0;
87 double eff_fy = 0;
88 double eff_alpha = 0;
89 double eff_fd = 0;
90
91 int* eff_intArray = nullptr;
92 bool eff_pdone = false;
93 bool** eff_pixelMatrix = nullptr;
94
95 //static
96 QPolygon eff_pa = QPolygon(4);
97
98 int eff_px = 0;
99 int eff_py = 0;
100 int eff_psx = 0;
101 int eff_psy = 0;
102
103public:
104
105 void registerTransitions();
106
107 TransitionMngr::TransType getRandomTransition() const;
108
109private:
110
111 // Internal functions to render an effect frame.
112 // aInit is to true when effect is initialized (first call).
113 // The returned integer value is a tempo in ms to wait between frames,
114 // or -1 if the effect is completed.
115
116 int transitionNone(bool aInit);
117 int transitionChessboard(bool aInit);
118 int transitionMeltdown(bool aInit);
119 int transitionSweep(bool aInit);
120 int transitionMosaic(bool aInit);
121 int transitionCubism(bool aInit);
122 int transitionRandom(bool aInit);
123 int transitionGrowing(bool aInit);
124 int transitionHorizLines(bool aInit);
125 int transitionVertLines(bool aInit);
126 int transitionMultiCircleOut(bool aInit);
127 int transitionSpiralIn(bool aInit);
128 int transitionCircleOut(bool aInit);
129 int transitionBlobs(bool aInit);
130 int transitionFade(bool aInit);
131 int transitionSlideL2R(bool aInit);
132 int transitionSlideR2L(bool aInit);
133 int transitionSlideT2B(bool aInit);
134 int transitionSlideB2T(bool aInit);
135 int transitionPushL2R(bool aInit);
136 int transitionPushR2L(bool aInit);
137 int transitionPushT2B(bool aInit);
138 int transitionPushB2T(bool aInit);
139 int transitionSwapL2R(bool aInit);
140 int transitionSwapR2L(bool aInit);
141 int transitionSwapT2B(bool aInit);
142 int transitionSwapB2T(bool aInit);
143 int transitionBlurIn(bool aInit);
144 int transitionBlurOut(bool aInit);
145
146private:
147
148 QRgb convertFromPremult(const QRgb& p) const;
149 QImage fastBlur(const QImage& img, int radius) const;
150
151private:
152
153 QRandomGenerator* randomGenerator = QRandomGenerator::global();
154};
155
156} // namespace Digikam
Definition transitionmngr_p.h:38
QMap< TransitionMngr::TransType, TransMethod > eff_transList
Definition transitionmngr_p.h:59
QSize eff_outSize
Definition transitionmngr_p.h:64
QImage eff_curFrame
Definition transitionmngr_p.h:63
QImage eff_outImage
Definition transitionmngr_p.h:62
~Private()
Definition transitionmngr_p.h:50
QImage eff_inImage
Definition transitionmngr_p.h:61
Private()
Definition transitionmngr_p.h:45
Definition transitionmngr.h:31
TransType
Definition transitionmngr.h:35
Definition datefolderview.cpp:34