Lumiera  0.pre.03
»edit your freedom«
mobject/session/clip.hpp
Go to the documentation of this file.
1 /*
2  CLIP.hpp - a Media Clip
3 
4  Copyright (C)
5  2008, Hermann Vosseler <Ichthyostega@web.de>
6 
7   **Lumiera** is free software; you can redistribute it and/or modify it
8   under the terms of the GNU General Public License as published by the
9   Free Software Foundation; either version 2 of the License, or (at your
10   option) any later version. See the file COPYING for further details.
11 
12 */
13 
14 
22 #ifndef STEAM_MOBJECT_SESSION_CLIP_H
23 #define STEAM_MOBJECT_SESSION_CLIP_H
24 
26 #include "lib/time/timevalue.hpp"
27 #include "lib/p.hpp"
28 
29 
30 namespace steam {
31 namespace asset {
32  class Media;
33  class Clip;
34 }
35 
36 namespace mobject {
37 namespace session {
38 
39  using asset::Media;
40  using lib::time::TimeVar;
41 
42  class Clip;
43 
44  using PMedia = lib::P<Media>;
45  using PClipAsset = lib::P<asset::Clip>;
46 
47  using PClip = Placement<Clip>;
48 
49 
62  class Clip
63  : public AbstractMO
64  {
65  string
66  initShortID() const
67  {
68  return buildShortID("Clip");
69  }
70 
71  void setupLength();
72 
73 
74 
75  protected:
78 
86  const Media & mediaDef_;
87  const asset::Clip & clipDef_;
88 
89  Clip (const asset::Clip&, const Media&);
90  friend class MObjectFactory;
91 
92 
93  public:
94  bool isValid() const;
95 
97  PMedia getMedia () const;
98 
103  PClipAsset findClipAsset () const;
104 
106 
107  };
108 
109 
110 
111 
112 }}} // namespace steam::mobject::session
113 #endif
a mutable time value, behaving like a plain number, allowing copy and re-accessing ...
Definition: timevalue.hpp:232
key abstraction: media-like assets
Definition: media.hpp:63
Customised refcounting smart pointer.
Base class of all BuilderTools, used according to the visitor pattern: each Tool contains the concret...
Definition: buildertool.hpp:97
A user visible/editable Clip is a reference to a contiguous sequence of media data loaded as Asset in...
Steam-Layer implementation namespace root.
Namespace of Session and user visible high-level objects.
Definition: sequence.hpp:65
abstract base class of all MObjects for providing common services.
Definition: abstractmo.hpp:39
TimeVar start_
start position in source
bookkeeping (Asset) view of a media clip.
Definition: asset/clip.hpp:35
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Definition: trait.hpp:71
#define DEFINE_PROCESSABLE_BY(TOOL)
mark a Visitable subclass as actually treat-able by some "visiting tool" base interface.
Definition: visitor.hpp:222
a family of time value like entities and their relationships.
The asset subsystem of the Steam-Layer.
Definition: wrapperptr.hpp:35