Lumiera  0.pre.03
»edit your freedom«
Segmentation Class Reference

#include "steam/fixture/segmentation.hpp"

Description

For the purpose of building and rendering, the fixture (for each timeline) is partitioned such that each segment is structurally constant. The Segmentation defines and maintains this partitioning.

Furthermore, it is the general entry point for accessing the correct part of the engine responsible for a given timeline time point.

See also
SegmentationTool actually calculating the Segmentation
Todo:

1/2012 Just a Placeholder. The real thing is not yet implemented.

4/2023 now about to bootstrap into the implementation structure step by step (WIP)

See also
https://lumiera.org/wiki/renderengine.html#Fixture

Definition at line 75 of file segmentation.hpp.

Public Member Functions

virtual ~Segmentation ()
 this is an interface
 
auto eachSeg () const
 < More...
 
Segment const & operator[] (TimeValue time) const
 
size_t size () const
 
Segment const & splitSplice (OptTime start, OptTime after, engine::ExitNodes &&modelLink=ExitNodes{})
 rework the existing Segmentation to include a new Segment as specified More...
 

Protected Member Functions

void adaptSpecification (std::function< NodeGraphAttachment(NodeGraphAttachment const &)> rewrite)
 

Private Attributes

list< Segmentsegments_
 segments of the engine in ordered sequence. More...
 

Additional Inherited Members

- Private Member Functions inherited from NonCopyable
 NonCopyable (NonCopyable const &)=delete
 
NonCopyableoperator= (NonCopyable const &)=delete
 

Member Function Documentation

◆ eachSeg()

auto eachSeg ( ) const
inline

<

Returns
iterator to enumerate each segment in ascending time order

Definition at line 105 of file segmentation.hpp.

References Segmentation::splitSplice().

+ Here is the call graph for this function:

◆ splitSplice()

Segment const & splitSplice ( OptTime  start,
OptTime  after,
engine::ExitNodes &&  modelLink = ExitNodes{} 
)

rework the existing Segmentation to include a new Segment as specified

Parameters
start(optional) definition of the new Segment's start point (inclusive)
after(optional) definition of the end point (exclusive)
jobTicketspecification of provided render functionality for the new Segment
Remarks
missing definitions will be derived or interpolated according to context
  • if start point is omitted, the new Segment will start seamlessly after any preceding Segment's end, in case this preceding Segment ends earlier
  • otherwise the preceding Segment's start point will be used, thereby effectively replacing and expanding or trimming or inserting into the preceding Segment
  • similar for the end point: if the definition is omitted, the new Segment will cover the time range until the next Segmen's start
  • if upper/lower boundaries can not be established, the covered range will be expanded from Time::ANYTIME up to Time::NEVER, taking into account the current context
  • after start and end point have been established by the above rules, the actual splicing operation will be determined; either an existing Segment is replaced altogether, or it is trimmed to fit, or the new Segment is inserted, thereby creating a second (copied) part of the encompassing old Segment.
  • in case the JobTicket is omitted, the new Segment will be marked as passive and any job created from such a Segment will then be a »NOP-job«
See also
SplitSplice_test

Definition at line 68 of file segmentation.cpp.

Referenced by Segmentation::eachSeg().

+ Here is the caller graph for this function:

◆ adaptSpecification()

void adaptSpecification ( std::function< NodeGraphAttachment(NodeGraphAttachment const &)>  rewrite)
inlineprotected

rewrite the NodeGraphAttachment in each Segment

Definition at line 119 of file segmentation.hpp.

Referenced by MockSegmentation::duplicateExitNodeSpec().

+ Here is the caller graph for this function:

Member Data Documentation

◆ segments_

list<Segment> segments_
private

segments of the engine in ordered sequence.

Definition at line 79 of file segmentation.hpp.

+ Inheritance diagram for Segmentation:
+ Collaboration diagram for Segmentation:

The documentation for this class was generated from the following files: