Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
play-facade.hpp
Go to the documentation of this file.
1/*
2 PLAYER-FACADE.h - access point to the Lumiera player subsystem
3
4 Copyright (C)
5 2011, 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
25#ifndef STEAM_INTERFACE_PLAY_H
26#define STEAM_INTERFACE_PLAY_H
27
28
29
30#include "lib/depend.hpp"
31#include "lib/handle.hpp"
32#include "lib/iter-source.hpp"
33#include "lib/time/control.hpp"
42
43
44
45namespace steam {
46namespace play {
47
48 class PlayProcess;
49}}
50
51
52namespace lumiera {
53
54 namespace time = lib::time;
55
56 using std::weak_ptr;
57
58
59 /**************************************************************/
73 class Play
74 {
75 protected:
76 virtual ~Play();
77 friend class lib::DependencyFactory<Play>;
78 public:
79
82
83
99 : public lib::Handle<steam::play::PlayProcess>
100 {
101 public:
102 void play(bool);
103 void scrub(bool);
104 void adjustSpeed(double);
105 void go(time::Time);
106
110
111 void useProxyMedia (bool);
112 void setQuality (uint);
113
114 bool is_playing() const;
115 bool is_scrubbing() const;
116 double getSpeed() const;
117 uint getQuality() const;
118 bool usesProxy() const;
119
120 operator weak_ptr<steam::play::PlayProcess>() const;
121 };
122
123
131
132
133 /* ==== convenience shortcuts for common use cases ==== */
140
141 protected:
145 };
146
147
148} // namespace lumiera
149#endif /*STEAM_INTERFACE_PLAY_H*/
Access point to singletons and other kinds of dependencies designated by type.
Definition depend.hpp:281
Helper to abstract creation and lifecycle of a dependency.
Definition depend.hpp:127
Generic opaque reference counting handle, for accessing a service and managing its lifecycle.
Definition handle.hpp:64
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Definition p.hpp:77
Frontend/Interface: controller-element to retrieve and change running time values.
Definition control.hpp:127
Lumiera's internal time value datatype.
Continuous playback process, which has been hooked up and started with a fixed set of output slots.
void controlPlayhead(time::Control< time::Time > &ctrl)
void play(bool)
play/pause toggle
void adjustSpeed(double)
playback speed control
void controlLooping(time::Control< time::TimeSpan > &ctrl)
void scrub(bool)
scrubbing playback
void go(time::Time)
skip to the given point in time
void controlDuration(time::Control< time::Duration > &ctrl)
Interface to the Player subsystem of Lumiera (Steam-Layer).
steam::play::POutputManager Output
Controller perform(Pipes, Output)
static lib::Depend< Play > facade
get an implementation instance of this service
Controller perform(ModelPorts, Output)
Generic point-of-Service for starting playback.
virtual Controller connect(ModelPorts, Output)=0
core operation: create a new playback process outputting to the given viewer/display
virtual ~Play()
Manipulating and monitoring time entities with life changes.
Singleton services and Dependency Injection.
Organisational grouping device within the Session model ("Track" / "Media Bin").
A generic opaque handle to an implementation entity, including lifecycle management.
unsigned int uint
Definition integral.hpp:29
Extension module to build an opaque data source, accessible as Lumiera Forward Iterator.
MObject in the Session to represent a clip on the timeline.
Organising the output data calculation possibilities.
Lumiera public interface.
Definition advice.hpp:102
lib::P< Timeline > PTimeline
Definition timeline.hpp:82
lib::P< Viewer > PViewer
Definition viewer.hpp:69
Placement< session::Fork, session::Meta > PFork
Definition fork.hpp:133
shared_ptr< OutputManager > POutputManager
Steam-Layer implementation namespace root.
Core abstraction: symbolic representation of some output target.
A global service to handle all external output connections.
Top level structural element within the session.
a family of time value like entities and their relationships.
structural element corresponding to a viewer in the GUI.