Pencil2D  ff90c0872e88be3bf81c548cd60f01983012ec49
Pencil2D is an animation software for both bitmap and vector graphics. It is free, multi-platform, and open source.
 All Classes Functions
soundclip.h
1 /*
2 
3 Pencil - Traditional Animation Software
4 Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5 Copyright (C) 2012-2017 Matthew Chiawen Chang
6 
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; version 2 of the License.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15 
16 */
17 
18 #ifndef SOUNDCLIP_H
19 #define SOUNDCLIP_H
20 
21 #include <memory>
22 #include "keyframe.h"
23 
24 class SoundPlayer;
25 
26 
27 class SoundClip : public KeyFrame
28 {
29 public:
30  SoundClip();
31  ~SoundClip();
32 
33  Status init( const QString& strSoundFile );
34  bool isValid();
35 
36  void setSoundClipName( const QString& sName ) { mOriginalSoundClipName = sName; }
37  QString soundClipName() { return mOriginalSoundClipName; }
38 
39  void attachPlayer( SoundPlayer* player );
40  void detachPlayer();
41  SoundPlayer* player() { return mPlayer.get(); }
42 
43  void play();
44  void playFromPosition(int frameNumber, int fps);
45  void stop();
46 
47  int64_t duration() const;
48  void setDuration(const int64_t &duration);
49 
50  void updateLength(int fps);
51 
52 private:
53  std::shared_ptr< SoundPlayer > mPlayer;
54 
55  QString mOriginalSoundClipName;
56 
57  // Duration in seconds. This is stored to update the length of the
58  // frame when the FPS changes.
59  int64_t mDuration = 0;
60 };
61 
62 #endif // SOUNDCLIP_H