File indexing completed on 2025-03-09 03:52:07
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2007-11-14 0007 * Description : a presentation tool. 0008 * 0009 * SPDX-FileCopyrightText: 2007-2008 by Valerio Fuoglio <valerio dot fuoglio at gmail dot com> 0010 * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * 0012 * Parts of this code are based on smoothslidesaver by Carsten Weinhold 0013 * <carsten dot weinhold at gmx dot de> 0014 * 0015 * SPDX-License-Identifier: GPL-2.0-or-later 0016 * 0017 * ============================================================ */ 0018 0019 #ifndef DIGIKAM_KB_EFFECT_H 0020 #define DIGIKAM_KB_EFFECT_H 0021 0022 // Qt includes 0023 0024 #include <QObject> 0025 0026 namespace DigikamGenericPresentationPlugin 0027 { 0028 0029 class KBImage; 0030 class PresentationKB; 0031 0032 class KBEffect 0033 { 0034 0035 public: 0036 0037 typedef enum 0038 { 0039 Fade, 0040 Blend 0041 } Type; 0042 0043 public: 0044 0045 explicit KBEffect(PresentationKB* const parent, bool m_needFadeIn = true); 0046 virtual ~KBEffect() = default; 0047 0048 virtual bool fadeIn() const 0049 { 0050 return m_needFadeIn; 0051 }; 0052 0053 virtual void advanceTime(float step) = 0; 0054 virtual Type type() = 0; 0055 virtual bool done() = 0; 0056 0057 static Type chooseKBEffect(Type oldType); 0058 0059 protected: 0060 0061 void setupNewImage(int img); 0062 void swapImages(); 0063 KBImage* image(int img) const; 0064 0065 protected: 0066 0067 static int m_numKBEffectRepeated; 0068 bool m_needFadeIn = false; 0069 KBImage* m_img[2];; 0070 0071 private: 0072 0073 PresentationKB* m_slideWidget = nullptr; 0074 0075 private: 0076 0077 Q_DISABLE_COPY(KBEffect) 0078 }; 0079 0080 // ------------------------------------------------------------------------- 0081 0082 class FadeKBEffect: public KBEffect 0083 { 0084 0085 public: 0086 0087 explicit FadeKBEffect(PresentationKB* const parent, bool m_needFadeIn = true); 0088 ~FadeKBEffect() override; 0089 0090 Type type() override 0091 { 0092 return Fade; 0093 }; 0094 0095 void advanceTime(float step) override; 0096 bool done() override; 0097 0098 private: 0099 0100 Q_DISABLE_COPY(FadeKBEffect) 0101 }; 0102 0103 // ------------------------------------------------------------------------- 0104 0105 class BlendKBEffect: public KBEffect 0106 { 0107 0108 public: 0109 0110 explicit BlendKBEffect(PresentationKB* const parent, bool m_needFadeIn = true); 0111 ~BlendKBEffect() override; 0112 0113 Type type() override 0114 { 0115 return Blend; 0116 }; 0117 0118 void advanceTime(float step) override; 0119 bool done() override; 0120 0121 private: 0122 0123 Q_DISABLE_COPY(BlendKBEffect) 0124 }; 0125 0126 } // namespace DigikamGenericPresentationPlugin 0127 0128 #endif // DIGIKAM°KB_EFFECT_H