From da74436aa4d1c25f5120caa75197c2c4d9e0d1bc Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Fri, 16 Sep 2011 19:06:22 -0400 Subject: PEGASUS: Implement fader support --- engines/pegasus/fader.h | 130 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100755 engines/pegasus/fader.h (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h new file mode 100755 index 0000000000..5ca1a5c3e9 --- /dev/null +++ b/engines/pegasus/fader.h @@ -0,0 +1,130 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * Additional copyright for this file: + * Copyright (C) 1995-1997 Presto Studios, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef PEGASUS_FADER_H +#define PEGASUS_FADER_H + +#include "pegasus/elements.h" +#include "pegasus/timers.h" + +namespace Pegasus { + +class Fader; + +class FaderMoveSpec { +friend class Fader; +public: + FaderMoveSpec() { + _faderScale = kDefaultTimeScale; + _numKnots = 0; + } + + FaderMoveSpec(const TimeScale scale) { + _faderScale = scale; + _numKnots = 0; + } + + void setFaderScale(const TimeScale scale) { _faderScale = scale; } + TimeScale getFaderScale() const { return _faderScale; } + + void makeOneKnotFaderSpec(const uint32); + void makeTwoKnotFaderSpec(const TimeScale, const TimeValue, const uint32, const TimeValue, const uint32); + + void insertFaderKnot(const TimeValue, const uint32); + + uint32 getNumKnots() const { return _numKnots; } + uint32 getNthKnotTime(const uint32 index) const { return _knots[index].knotTime; } + uint32 getNthKnotValue(const uint32 index) const { return _knots[index].knotValue; } + +protected: + struct FaderKnot { + TimeValue knotTime; + uint32 knotValue; + }; + + TimeScale _faderScale; + uint32 _numKnots; + + static const uint32 kMaxFaderKnots = 20; + FaderKnot _knots[kMaxFaderKnots]; +}; + +class Fader : private IdlerTimeBase { +public: + Fader(); + virtual ~Fader() {} + + virtual void setFaderValue(const uint32); + uint32 getFaderValue() const { return _currentValue; } + virtual void startFader(const FaderMoveSpec &); + virtual void startFaderSync(const FaderMoveSpec &); + virtual void loopFader(const FaderMoveSpec &); + virtual void stopFader(); + virtual bool isFading() { return isRunning(); } + + void pauseFader(); + void continueFader(); + + void getCurrentFaderMove(FaderMoveSpec &spec) { spec = _currentFaderMove; } + +protected: + bool initFaderMove(const FaderMoveSpec &); + virtual void timeChanged(const TimeValue); + + uint32 _currentValue; + FaderMoveSpec _currentFaderMove; +}; + +class FaderAnimation : public DisplayElement, public Fader { +public: + FaderAnimation(const tDisplayElementID id) : DisplayElement(id) {} + virtual ~FaderAnimation() {} + + void setFaderValue(const uint32); +}; + +class Sound; + +class SoundFader : public Fader { +friend class Sound; +public: + SoundFader(); + virtual ~SoundFader() {} + + void setFaderValue(const uint32); + + void setMasterVolume(const uint16); + uint16 getMasterVolume() const { return _masterVolume; } + +protected: + void attachSound(Sound *); + + Sound *_sound; + uint16 _masterVolume; +}; + +} // End of namespace Pegasus + +#endif -- cgit v1.2.3 From 647c83b514f1c942eaf71f838c0afd848c547b91 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sun, 25 Sep 2011 00:38:50 -0400 Subject: PEGASUS: Add the interface class --- engines/pegasus/fader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index 5ca1a5c3e9..fe5b1ae1ba 100755 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -71,7 +71,7 @@ protected: FaderKnot _knots[kMaxFaderKnots]; }; -class Fader : private IdlerTimeBase { +class Fader : public IdlerTimeBase { public: Fader(); virtual ~Fader() {} -- cgit v1.2.3 From 4aed723368b9a4e82205bc3ed950a4e04ba3d8dc Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Sun, 25 Sep 2011 12:23:19 -0400 Subject: PEGASUS: Fix startFaderSync Since we're not running in multiple threads anymore, we cannot have the fader hold the main thread to itself. --- engines/pegasus/fader.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index fe5b1ae1ba..83f5a819c2 100755 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -89,12 +89,15 @@ public: void getCurrentFaderMove(FaderMoveSpec &spec) { spec = _currentFaderMove; } + virtual void checkCallBacks(); + protected: bool initFaderMove(const FaderMoveSpec &); virtual void timeChanged(const TimeValue); uint32 _currentValue; FaderMoveSpec _currentFaderMove; + bool _syncMode; }; class FaderAnimation : public DisplayElement, public Fader { -- cgit v1.2.3 From fe03cd1bfabeab154573b55216c581bb0af41e9a Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 27 Sep 2011 12:24:45 -0400 Subject: PEGASUS: Partially revert 4aed723368b9a4e82205bc3ed950a4e04ba3d8dc startFaderSync does indeed to hold the main thread. --- engines/pegasus/fader.h | 3 --- 1 file changed, 3 deletions(-) (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index 83f5a819c2..fe5b1ae1ba 100755 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -89,15 +89,12 @@ public: void getCurrentFaderMove(FaderMoveSpec &spec) { spec = _currentFaderMove; } - virtual void checkCallBacks(); - protected: bool initFaderMove(const FaderMoveSpec &); virtual void timeChanged(const TimeValue); uint32 _currentValue; FaderMoveSpec _currentFaderMove; - bool _syncMode; }; class FaderAnimation : public DisplayElement, public Fader { -- cgit v1.2.3 From 59d6b036dc66b6988ee189ba8e55a0b858a81449 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 27 Sep 2011 19:39:43 -0400 Subject: PEGASUS: Fader values should be signed --- engines/pegasus/fader.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index fe5b1ae1ba..8c4fb0ba81 100755 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -49,19 +49,19 @@ public: void setFaderScale(const TimeScale scale) { _faderScale = scale; } TimeScale getFaderScale() const { return _faderScale; } - void makeOneKnotFaderSpec(const uint32); - void makeTwoKnotFaderSpec(const TimeScale, const TimeValue, const uint32, const TimeValue, const uint32); + void makeOneKnotFaderSpec(const int32); + void makeTwoKnotFaderSpec(const TimeScale, const TimeValue, const int32, const TimeValue, const int32); - void insertFaderKnot(const TimeValue, const uint32); + void insertFaderKnot(const TimeValue, const int32); uint32 getNumKnots() const { return _numKnots; } - uint32 getNthKnotTime(const uint32 index) const { return _knots[index].knotTime; } - uint32 getNthKnotValue(const uint32 index) const { return _knots[index].knotValue; } + TimeValue getNthKnotTime(const uint32 index) const { return _knots[index].knotTime; } + int32 getNthKnotValue(const uint32 index) const { return _knots[index].knotValue; } protected: struct FaderKnot { TimeValue knotTime; - uint32 knotValue; + int32 knotValue; }; TimeScale _faderScale; @@ -76,8 +76,8 @@ public: Fader(); virtual ~Fader() {} - virtual void setFaderValue(const uint32); - uint32 getFaderValue() const { return _currentValue; } + virtual void setFaderValue(const int32); + int32 getFaderValue() const { return _currentValue; } virtual void startFader(const FaderMoveSpec &); virtual void startFaderSync(const FaderMoveSpec &); virtual void loopFader(const FaderMoveSpec &); @@ -93,7 +93,7 @@ protected: bool initFaderMove(const FaderMoveSpec &); virtual void timeChanged(const TimeValue); - uint32 _currentValue; + int32 _currentValue; FaderMoveSpec _currentFaderMove; }; @@ -102,7 +102,7 @@ public: FaderAnimation(const tDisplayElementID id) : DisplayElement(id) {} virtual ~FaderAnimation() {} - void setFaderValue(const uint32); + void setFaderValue(const int32); }; class Sound; @@ -113,7 +113,7 @@ public: SoundFader(); virtual ~SoundFader() {} - void setFaderValue(const uint32); + void setFaderValue(const int32); void setMasterVolume(const uint16); uint16 getMasterVolume() const { return _masterVolume; } -- cgit v1.2.3 From 12efb47b536d2f663c9cde2739a1fd40599da669 Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Fri, 16 Dec 2011 14:17:50 -0500 Subject: PEGASUS: Remove t prefix from typedefs Some other minor cleanup too --- engines/pegasus/fader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index 8c4fb0ba81..24ecae021b 100755 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -99,7 +99,7 @@ protected: class FaderAnimation : public DisplayElement, public Fader { public: - FaderAnimation(const tDisplayElementID id) : DisplayElement(id) {} + FaderAnimation(const DisplayElementID id) : DisplayElement(id) {} virtual ~FaderAnimation() {} void setFaderValue(const int32); -- cgit v1.2.3 From 983bd16bb78b1a6aa8872f2086dbcbca6954f2fb Mon Sep 17 00:00:00 2001 From: Matthew Hoops Date: Tue, 3 Apr 2012 15:23:08 -0400 Subject: PEGASUS: Fix file permissions --- engines/pegasus/fader.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 engines/pegasus/fader.h (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h old mode 100755 new mode 100644 -- cgit v1.2.3 From a6c6c74350bb673c178d9756a1625ca128d24f21 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 26 Sep 2012 04:10:32 +0200 Subject: PEGASUS: Remove trailing whitespaces. Powered by: git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//' --- engines/pegasus/fader.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'engines/pegasus/fader.h') diff --git a/engines/pegasus/fader.h b/engines/pegasus/fader.h index 24ecae021b..0a8cd549e6 100644 --- a/engines/pegasus/fader.h +++ b/engines/pegasus/fader.h @@ -63,7 +63,7 @@ protected: TimeValue knotTime; int32 knotValue; }; - + TimeScale _faderScale; uint32 _numKnots; @@ -92,7 +92,7 @@ public: protected: bool initFaderMove(const FaderMoveSpec &); virtual void timeChanged(const TimeValue); - + int32 _currentValue; FaderMoveSpec _currentFaderMove; }; -- cgit v1.2.3