Free Electron
Public Member Functions | Protected Attributes | List of all members
fe::ext::ViewerSystem Class Referenceabstract

Base class for Viewer Systems. More...

#include <ViewerSystem.h>

Inheritance diagram for fe::ext::ViewerSystem:
Inheritance graph
[legend]

Public Member Functions

virtual void draw (Record viewportRecord)=0
 Draw stuff into the viewport. More...
 
void updateViewports (const t_note_id &note_id)
 Updates the Viewer records. More...
 
void perform (const t_note_id &a_note_id) override
 Perform processing due to having been signaled. More...
 
void connectOrchestrator (sp< OrchestratorI > orchestrator) override
 Callback for the System to register itself to the orchestrator. More...
 
- Public Member Functions inherited from fe::Component
const Stringname (void) const
 Return the components chosen name. More...
 
const String verboseName (void) const
 Return the annotated chosen name. More...
 
void setName (const String &name)
 Rename the component to anything you want. More...
 
hp< Registryregistry (void) const
 Get the Registry that created this component. More...
 
void adjoin (sp< Component > spComponent)
 Tie this component's lifetime to another. More...
 
sp< Componentcreate (const String &implementation, BWORD quiet=FALSE) const
 Convienience function to registry()->create() More...
 
void disjoin (void)
 Untie component from Hub, if connected. More...
 
String factoryName (void)
 
void setLibrary (sp< Library > spLibrary)
 Store a reference to the library used to instantiate this component. More...
 
sp< Librarylibrary (void)
 Get the library that created the component. More...
 
void setFactoryIndex (I32 a_factoryIndex)
 Set the library's factory index. More...
 
I32 factoryIndex (void)
 Get the library's factory index. More...
 
void setSingleton (BWORD set)
 Specify whether component is a singleton. More...
 
BWORD isSingleton (void)
 Return whether component is a singleton. More...
 
virtual void acquire (void)
 Specialized reference increment. More...
 
virtual void release (void)
 Specialized reference decrement. More...
 
- Public Member Functions inherited from fe::Handled< Component >
const hp< Component > & getHandle (void) const
 Get a safe handle to this object. More...
 
- Public Member Functions inherited from fe::Protectable
virtual I32 protection (void) const
 
virtual void protect (void)
 
virtual void unprotect (void)
 
virtual Protectableclone (Protectable *pInstance=NULL)
 
- Public Member Functions inherited from fe::Counted
virtual void acquire (int &rCount)
 Increment the reference count (and get the count) More...
 
virtual void abandon (void)
 Decrement the reference count. More...
 
int count (void) const
 Return the count of references. More...
 
void setName (const String &)
 
void trackReference (void *pReference, String what)
 
void untrackReference (void *pReference)
 
void registerRegion (void *pT, U32 bytes)
 
- Public Member Functions inherited from fe::Initialized
void initializeAll (void)
 
void setActive (bool a_active)
 

Protected Attributes

sp< RecordGroupm_dataset
 
t_note_id m_drawNote
 ID of the draw note. More...
 
AsViewport m_viewportAccessorSet
 Accessors for viewport data. More...
 
std::map< std::thread::id, Recordm_viewportRecords
 Available viewports. More...
 
Mutex m_viewportRecordsMutex
 Mutex for viewportRecords. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from fe::Counted
static String reportTracker (void)
 
static U32 trackerCount (void)
 
- Protected Types inherited from fe::Initialized
typedef void(* InitializeFunction) (Initialized *)
 
- Protected Member Functions inherited from fe::Handled< Component >
void abandonHandle (void)
 
- Protected Member Functions inherited from fe::Counted
int releaseInternal (void)
 Decrement the reference count. More...
 
void suppressReport (void)
 
- Protected Member Functions inherited from fe::Initialized
void addInitializer (InitializeFunction function)
 

Detailed Description

Base class for Viewer Systems.

A Viewer System is a System that reacts to draw notes. It is unique in that it is aware of the thread it is being performed on. It delegates draw calls to different viewports based on the current thread id.

Member Function Documentation

◆ connectOrchestrator()

void fe::ext::ViewerSystem::connectOrchestrator ( sp< OrchestratorI a_spOrchestrator)
inlineoverridevirtual

Callback for the System to register itself to the orchestrator.

This allows you to specify which ticks you'd like to react to.

Parameters
a_spOrchestratorOrchestrator for you to connect to.

Implements fe::ext::SystemI.

Referenced by fe::ext::BoxViewerSystem::connectOrchestrator().

◆ draw()

virtual void fe::ext::ViewerSystem::draw ( Record  viewportRecord)
pure virtual

Draw stuff into the viewport.

Should be overriden by final classes.

Parameters
viewportRecordThe viewport on this thread.

Implemented in fe::ext::BoxViewerSystem, and fe::ext::OriginViewerSystem.

Referenced by perform().

◆ perform()

void fe::ext::ViewerSystem::perform ( const t_note_id &  a_note_id)
overridevirtual

Perform processing due to having been signaled.

This will delegate drawing to different viewports based on the current thread id.

Reimplemented from fe::ext::SystemI.

References draw(), m_drawNote, m_viewportRecords, and m_viewportRecordsMutex.

◆ updateViewports()

void fe::ext::ViewerSystem::updateViewports ( const t_note_id &  note_id)

Member Data Documentation

◆ m_drawNote

t_note_id fe::ext::ViewerSystem::m_drawNote
protected

ID of the draw note.

Referenced by perform().

◆ m_viewportAccessorSet

AsViewport fe::ext::ViewerSystem::m_viewportAccessorSet
protected

◆ m_viewportRecords

std::map<std::thread::id, Record> fe::ext::ViewerSystem::m_viewportRecords
protected

Available viewports.

Referenced by perform(), and updateViewports().

◆ m_viewportRecordsMutex

Mutex fe::ext::ViewerSystem::m_viewportRecordsMutex
protected

Mutex for viewportRecords.

It is needed since this system has multiple threads performing different notes.

Referenced by perform(), and updateViewports().


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