Lumiera  0.pre.03
»edit your freedom«
relativelocation.hpp
Go to the documentation of this file.
1 /*
2  RELATIVELOCATION.hpp - Placement implementation attaching MObjects relative to another one
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 
21 #ifndef MOBJECT_SESSION_RELATIVELOCATION_H
22 #define MOBJECT_SESSION_RELATIVELOCATION_H
23 
26 
27 
28 
29 
30 namespace steam {
31 namespace mobject {
32 namespace session {
33 
34  using lib::time::Offset;
35 
36 
43  {
44 // const PMO & anchor_; ////////////TODO: ooooops, this is a nasty design problem!!!
45 
46  const PlaRef anchor_;
47 
48  public:
49 
53  enum RelType
55  , ATTACH
56  };
57 
58  protected:
59  RelativeLocation (PlaRef const& a, Offset const& ofs) : anchor_(a), offset_(ofs) { }
60  friend class LocatingPin;
61 
64 
67  //TODO: suitable representation?
68 
69 
70  virtual void intersect (LocatingSolution&) const;
71 
72 
73  public:
74  virtual RelativeLocation* clone () const;
75 
76  };
77 
78 
79 
80 }}} // namespace steam::mobject::session
81 #endif
RelType
the possible kinds of RelativePlacements
Offset offset_
Offset the actual position by this (time) value relative to the anchor point.
Positioning specification, possibly chained to further specifications.
Definition: locatingpin.hpp:88
Steam-Layer implementation namespace root.
Implementing the Placement mechanics.
place subject at the same time as the anchor
Namespace of Session and user visible high-level objects.
Definition: sequence.hpp:65
A generic reference mechanism for Placements, as added to the current session.
Offset measures a distance in time.
Definition: timevalue.hpp:358
RelType relType
the kind of relation denoted by this Placement