Fish - FiberLib for VISH 0.3
Fish - The Fiber Bundle API for the Vish Visualization Shell
Wizt::GridAnemone Class Referenceabstract

Base class for objects that render information given on a Grid. More...

#include <GridAnemone.hpp>

Inheritance diagram for Wizt::GridAnemone:
Wizt::Fish< double > Wizt::GridAnemoneRenderObject Wizt::Fish< VObject > Wizt::VRenderObject Wizt::VSkale Wizt::VEnvironmentRenderObject Wizt::VChartDependent Wizt::VTransformable Wizt::StatusIndicator Wizt::VConnectable Wizt::RenderAble Wizt::VSkale Wizt::VSlotContainer Wizt::VObject Wizt::RenderNamespace Wizt::VConnectable Wizt::VSlotContainer Wizt::VTraceRequestID Wizt::VInputClassRecognition Wizt::VScriptable Wizt::VManagedDomainObject< VObject > Wizt::VSaveable Wizt::VStateCreatorBase Wizt::VConnectable Wizt::VManagedObjectBase Wizt::ValueCacheable Wizt::VConnectionValidatorList Wizt::VManagedObjectBase Wizt::FieldAnemoneBase Wizt::SkeletonRenderer Wizt::FieldAnemone Wizt::EdgeRenderer Wizt::FloatingSkeletonRenderer Wizt::TriangleRenderer Wizt::TypedFieldAnemone< double > Wizt::TypedFieldAnemone< float > Wizt::TypedFieldAnemone< LIST< double, float > > Wizt::TypedFieldAnemone< META::IntegerTypeList > Wizt::TypedFieldAnemone< META::NativeTypeList > Wizt::TypedFieldAnemone< Field_Type_t > Wizt::TypedFieldAnemone< DisplayShader::FieldType > Wizt::FieldSlice Wizt::PictureBase Wizt::ShadedFieldAnemone Wizt::TypedFieldAnemone< FieldType > Wizt::FloatingProgrammableEdgeRenderer Wizt::LineSetRenderer Wizt::SurfaceRenderer

Classes

struct  FieldInfo
struct  CoordinateShift
 An optional interface that is stored by the FloatingAnemoneExplorer on each AnemoneCreator to specify the location of the origin relativ to which vertices are uploaded. More...
struct  AnemoneExplorer
 The Anemone Explorer is an object that lives throughout rendering of a set of Anemones. More...

Public Types

enum class  SortMethod { None , BackToFront , FrontToBack , MostVisible }
using AnemoneParameters = ::Wizt::AnemoneParameters
using AnemoneCreationContext = ::Wizt::GridAnemoneCreationContext
using GridAnemoneState = ::Wizt::GridAnemoneState
using SkeletonID = Fiber::SkeletonID
using FieldHierarchy = map<SkeletonID, FieldInfo>
using SkeletonSet = map<SkeletonID, WeakPtr<Fiber::Skeleton>>
using AnemoneRenderStatus = AnemoneRenderFields::AnemoneRenderStatus
using initializeAnemoneParameters
Public Types inherited from Wizt::VSlotContainer
enum  AttachErrorCode
typedef void AcceptableInputTypes
typedef VSlotSet CreationSlots_t
typedef VSlot::Empty< I > Empty
Public Types inherited from MemCore::ReferenceBase< VManagedObjectBase >
typedef Object reference_domain_t
typedef WeakPtr< Object, Object > SelfPtr_t
Public Types inherited from Wizt::VEnvironmentRenderObject
typedef ::Eagle::PhysicalSpace::point point
Public Types inherited from Wizt::VObject
enum  HelpType
typedef void AcceptableInputTypes
typedef VConnectable::Empty< I > Empty
typedef std::function< bool(const RefPtr< VObject > &vobj, const VSlot &ChildConnection)> VObjectIterator_f
Public Types inherited from Wizt::VSaveable
typedef std::function< bool(const string &s, VishSaver &VS)> save_iterator
Public Types inherited from Wizt::VManagedDomainObject< VObject >
typedef What Domain_t
Public Types inherited from Wizt::RenderNamespace
enum  GeometryInputType
enum  GeometryOutputType
enum  Primitive
enum  TextureFormat
enum  VertexAttributeTypes
typedef std::variant< int, float, double, unsigned, Eagle::FixedArray< int, 2 >, Eagle::FixedArray< float, 2 >, Eagle::FixedArray< double, 2 >, Eagle::FixedArray< int, 3 >, crd3f, Eagle::FixedArray< float, 3 >, crd3d, Eagle::FixedArray< double, 3 >, Eagle::FixedArray< int, 4 >, Eagle::FixedArray< float, 4 >, Eagle::FixedArray< double, 4 >, Eagle::Quadratic< 2, float >, Eagle::Quadratic< 3, float >, Eagle::Quadratic< 4, float >, vec3f_vector, crd3f_vector > AnyUniform
typedef std::string glsl

Public Member Functions

virtual GridSelector getGridFieldSelector (const RefPtr< ValuePool > &Context) const =0
Ageable AgeOfRoI (const RefPtr< ValuePool > &Context) const
pRegionOfInterest getRegionOfInterest (const RefPtr< ValuePool > &Context) const
RefPtr< Fiber::ChartgetCartesianChart (const RefPtr< Fiber::Grid > &G, const RefPtr< ValuePool > &Context) const
 Get a chart object for the given Grid given the current selection of a chart from VRenderObject's VChartDependent base class.
RefPtr< State > newState () const override
 GridAnemone (const string &name, int RenderCategory, const RefPtr< VCreationPreferences > &VP)
 Constructor.
RenderTime getLastRenderTime (VRenderContext &Context) const override
virtual FieldHierarchy getRenderFields (VRenderContext &Context) const
 Get the primary field that will be used for rendering.
virtual RefPtr< AnemoneExplorergetAnemoneExplorer (VRenderContext &Context) const
virtual RefPtr< AnemoneCreatorBasenewAnemoneCreator (const Seagrass &theSeaggrass) const
 If some parameters of a Render Anemone need to be modified upon change of some input, for instance some uniform shader variables, then re-creation of the entire Anemone is overkill.
AnemoneRenderStatus renderAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE, size_t current_fragment, size_t max_fragment_number, const RefPtr< BoundingBox > &theFragmentBoundingBox) const
 Render a RenderAnemone with the given context, checking if it's valid first, and if so update it, otherwise it needs to be initialized.
AnemoneRenderStatus raiseAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const
 Function to pack all kinds of information into a baby Anemone to let it grow into an adult functional one.
virtual AnemoneRenderStatus initializeAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const =0
 Initialize a virgin Render Anemone, i.e.
virtual bool isValidAnemone (const Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const
 Checks if a given Anemone is valid for rendering.
virtual bool disabledFragment (VRenderContext &theContext, const AnemoneExplorer &theAnemoneExplorer, const Fiber::CreativeArrayBase &CAB, const RefPtr< Fiber::FragmentID > &fID, const RefPtr< BoundingBox > &theFragmentBoundingBox, const RefPtr< Fiber::Representation > &R) const
 Virtual function to allow intervening rendering just before a Render Anemone is being created.
virtual bool updateAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const
 Update a certain Anemone with variables and values that do not require re-creation or loading of any data.
RefPtr< BoundingBallgetTouchableBoundingBall (const RefPtr< ValuePool > &VP) const override
 Get the bounding box of the entire object's geometry beyond the visible part such to allow proper camera navigation.
virtual bool validateInput (VRequest &Context, Fiber::Info< Fiber::Grid > &, const RefPtrGridAnemoneState &GAS, const RefPtr< Fiber::Skeleton > &myVertexSkeleton, const RefPtr< Fiber::Chart > &chart, string &ValidateInputInfoString) const
 Virtual call to check if the information retrieved from the inputs is valid, and if further information as required by the child class as been added correctly.
virtual bool addSupplementaryData (VRequest &Context, Fiber::Info< Fiber::Grid > &, RenderFields &RF, const RefPtr< Fiber::Skeleton > &myVertexSkeleton, const RefPtr< Fiber::Chart > &chart, string &InfoString)
 Virtual call to add additional data in child classes.
virtual void requestSupplementaryData (VRenderContext &theContext, const RefPtr< Fiber::FragmentID > &myFragmentID) const
 Asynchroneous mode: Request creation of supplementary data.
virtual bool isCreatingSupplementaryData (VRenderContext &theContext, const RefPtr< Fiber::FragmentID > &myFragmentID) const
 Asynchroneous mode: Check whether supplementary data are currently under creation.
bool update (VRequest &R, double precision) override
 The update function retrieves data from the input Grid and prepares them in the State object for rendering.
bool environment_render (VRenderContext &Context) const override
TouchIndex_t do_feedback_render (VRenderContext &Context, TouchIndex_t StartIndex) const
 Support for feedback rendering, in case a child object is derived from a Touchable.
virtual TouchIndex_t getTouchIndexFragmentIndexMultiplicator (VRenderContext &Context, const Fiber::Field &) const
 For feedback rendering: The emitted start index will be the numerical fragment ID of the render field multiplied by this multiplicator.
Public Member Functions inherited from Wizt::Fish< double >
 Fish ()
 Default constructor.
 ~Fish ()
 Destructor.
virtual double getTime (const RefPtr< ValuePool > &VP, const RefPtr< Fiber::Bundle > &SpaceTime) const =0
 Most virtual time retrieval function.
virtual int getMaxRefinementLevel (const RefPtr< ValuePool > &VP) const
 Get the maximum refinement level that we seek to handle here.
virtual int getMinRefinementLevel (const RefPtr< ValuePool > &VP) const
virtual Fiber::Info< Fiber::SkeletongetRefinementLevel (int Level, const RefPtr< ValuePool > &VP, int IndexDepth=0, const Fiber::BundlePtr &SpaceTime=Fiber::BundlePtr(NullPtr())) const =0
bool IterateLevels (LevelIterator &LI, const Fiber::Info< Fiber::Grid > &G, const RefPtr< ValuePool > &Context) const
 Iterate over the diverse refinement levels of a Grid, which may exist at times different from the given coarsest grid.
Public Member Functions inherited from Wizt::VConnectable
virtual void adjustConnections (const RefPtr< VSlot > &ChangedSlot, const RefPtr< VParameter > &par)
VSlotContainer::AttachErrorCode attach (const ParameterID &whichone, VSlotContainer &sourceObject, const ParameterID &sourceName)
AttachErrorCode attach (const RefPtr< VParameter > &OldParam, const RefPtr< VParameter > &NewParam, const string &Member={})
AttachErrorCode attachUniqueObject (const RefPtr< VParameter > &param, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
AttachErrorCode attachUniqueObject (const RefPtr< VSlot > &slot, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
RefPtr< VSlotConnect (const RefPtr< VParameter > &SourceParam)
RefPtr< VSlotConnectInterface (const RefPtr< VSlotContainer > &Provider, const RefPtr< InterfaceBase > &IB)
virtual bool CreatedFilteredConnection (const RefPtr< VParameter > &SourceParam)
Public Member Functions inherited from Wizt::VSlotContainer
Ageableage (const RefPtr< ValuePool > &VP)
const Ageableage (const RefPtr< ValuePool > &VP) const
const AgeableConnectionAge () const
bool ConnectionsHaveChanged (const RefPtr< ValuePool > &VP) const
bool HasYoungerInput (const RefPtr< ValuePool > &Context, int RecursionLevel=0) const
Ageable YoungestInput (const RefPtr< ValuePool > &Context) const
Ageable YoungestOutput (const RefPtr< ValuePool > &Context) const
Ageable YoungestUncachedInput (const RefPtr< ValuePool > &Context) const
bool CheckIfThereExistNewerOutputs (const VRequest &request, bool AdjustObjectAge) const
RefPtr< VSlotaddParameter (const ParameterID &name, int EL, const RefPtr< VParameter > &param, bool overwriteExistingSlot)
virtual bool allowParameterReplacement (const RefPtr< VParameter > &NewParam, const RefPtr< VParameter > &OldParam, const string &localName, int ExpertLevel)
virtual int connectSlots (const VSlotContainerPtr &vobj)
bool removeParameter (const ParameterID &s)
RefPtr< VParametergetParameter (const ParameterID &s) const
RefPtr< VSlotgetSlot (const ParameterID &s, int &EL) const
bool setSlotValueFromText (const ParameterID &s, const string &ValueText, const RefPtr< ValuePool > &VP, const string &theMember={})
RefPtr< VSlotfindSlot (const RefPtr< VParameter > &param) const
string getSlotName (const RefPtr< VParameter > &param) const
bool AddAction (const ParameterID &s, const RefPtr< ValueActionBase > &VAB)
bool AddAction (const RefPtr< VSlot > &ActionSlot, bool(DerivedObject::*Action)(const RefPtr< VValueBase > &value))
RefPtr< VParametermkUniqueParameterInput (const ParameterID &s, const string &ContainerName)
int getExpertLevel (const ParameterID &s) const
int setExpertLevel (const ParameterID &s, int EL)
int getExpertLevel (const RefPtr< VParameter > &) const
int getExpertLevel (const RefPtr< VSlot > &S) const
int setExpertLevel (const RefPtr< VSlot > &S, int EL)
int setExpertLevel (const RefPtr< VParameter > &s, int EL)
bool hasChanged (const ParameterID &s, const RefPtr< ValuePool > &Context) const
bool hasChanged (const RefPtr< VSlot > &, const RefPtr< ValuePool > &Context) const
bool hasChanged (const RefPtr< ValuePool > &Context, int n,...) const
bool hasChanged (RefPtr< ValuePool > Context,...) const
virtual bool ignoreInput (const RefPtr< VSlot > &theSlot) const
bool getParameterValue (Type &Variable, const ParameterID &s, const RefPtr< ValuePool > &VP) const
bool getParameterValue (Type &Variable, const ParameterID &s, const VContext &C) const
bool getParameterValue (Type &Variable, const ParameterID &s, const VRequest &R) const
bool setParameterValue (const Type &Variable, const ParameterID &s, const RefPtr< ValuePool > &VP, bool autoCreateLocalValue) const
bool setParameterValue (const Type &Variable, const ParameterID &s, VContext &C, bool autoCreateLocalValue) const
bool setParameterValue (const Type &Variable, const ParameterID &s, VRequest &R, bool autoCreateLocalValue=false) const
RefPtr< VSlotaddParam (const ParameterID &name, const Type &init, const RefPtr< VCreationPreferences > &VP=NullPtr(), int expertLevel=0, bool overwriteExistingSlot=true)
bool setParameterProperty (const ParameterID &param, const string &Properties, const RefPtr< VValueBase > &Value=NullPtr())
RefPtr< VSlotaddFloatParam (double init, const ParameterID &param, double min, double max, const RefPtr< VCreationPreferences > &IP=NullPtr(), int expertLevel=0)
AttachErrorCode attach (const RefPtr< VParameter > &OldParam, const RefPtr< VParameter > &NewParam, const string &Member={})
int iterateParameters (int expertLevel, VSlotIterator &VIIt) const
int iterateInputSlots (int expertLevel, VSlotIterator &VIIt) const
int iterateInputs (VSlotIterator &VIIt, int expertLevel=0)
int iterate_inputs (const std::function< bool(VSlot &what, int ExpertLevel)>) const
RefPtr< VSlotgetUniqueInputSlot (const type_info &what)
int getNumberOfParameters (int expertLevel) const
virtual bool implements (const type_info &what) const
virtual RefPtr< VParametergetImplementation (const type_info &what, const string &name={}, const string &member={}) const
RefPtr< VSlotgetImplementationSlot (const type_info &what, const string &Name={}, const string &Member={}) const
VAcceptInfoList_t getAcceptInfoList (const std::type_info &request_type) const
bool provides (const RefPtr< VSlot > &OutputSlot) const
RefPtr< VSlotfindOutputSlot (const RefPtr< VParameter > &Who) const
bool isYounger (const RefPtr< VParameter > &OutputParam, const RefPtr< ValuePool > &VP) const
bool isNewlyConnected (const RefPtr< VParameter > &Who, const RefPtr< ValuePool > &VP) const
bool hasNewlyConnectedOutputs (const RefPtr< ValuePool > &VP) const
void findNewlyConnectedOutputs (const RefPtr< ValuePool > &VP, VSlotSet &WhichOnes) const
RefPtr< VSlotgetOutput (const string &Name) const
RefPtr< MemCore::StringListgetOutputs (const type_info &what=typeid(void)) const
virtual int iterateOutputs (VOutputIterator &VOut, const type_info &just_these=typeid(void)) const
bool registerOutput (const RefPtr< VParameter > &P, const string &AsName={})
bool registerOutput (const RefPtr< VParameter > &P, const string &AsName, const type_info &MemberType, const string &UseMember)
bool registerOutput (const RefPtr< VParameter > &P, const type_info &MemberType, const string &UseMember)
int getNumberOfInputs () const
int getNumberOfOutputs () const
bool hasChangedSlots (const MemCore::Intercube &IC, const RefPtr< ValuePool > &Context) const
auto include_self (const std::tuple< SlotList... > &t) const -> decltype(std::tuple_cat(std::make_tuple(this), t))
Public Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
auto getObjectCountID () const noexcept
bool isIdentical (const WeakPtr< Object, Object > &PossibleSelf) const noexcept
void mkAutoDestructive ()
refcount_t refcount () const noexcept
 ReferenceBase (Object *that) noexcept
const auto & self () const
refcount_t wrefcount () const noexcept
Public Member Functions inherited from Wizt::GridAnemoneRenderObject
 GridAnemoneRenderObject (const string &name, int Cat, const RefPtr< VCreationPreferences > &VP)
virtual RefPtr< BoundingBoxgetModifiedBBox (const RefPtr< ValuePool > &Context, Fiber::CreativeArrayBase &CoordinateFragment, const RefPtr< Fiber::FragmentID > &theFragmentID, const RefPtr< Fiber::Skeleton > &DestVertexSkeleton, const RefPtr< Fiber::Chart > &chart, bool AllowAsynchLoading) const
 Get a bounding box as modified by a certain object's special setup, for instance using another field than the coordinates to obtain some geometry.
Public Member Functions inherited from Wizt::VRenderObject
void closeBBox (const RefPtr< ValuePool > &VP) const
void embrace (const RefPtr< ValuePool > &VP, const point &crd) const
RefPtr< BoundingBallgetBoundingBall (const RefPtr< ValuePool > &VP) const override
bool resetBBox (const RefPtr< ValuePool > &S) const
bool safe_render (VRenderContext &Context, double Z=0, double dZ=-1) const override
void setBoundingBall (const RefPtr< ValuePool > &VP, const RefPtr< BoundingBall > &BS) const
 VRenderObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
Public Member Functions inherited from Wizt::VEnvironmentRenderObject
void announce (const string &name, const VCamera &ViewpointProperties, const RefPtr< ValuePool > &Context) const
void getRenderPrecision (VRenderContext &Context, double &OverallPrecision, double &ThisContribution) const
 VEnvironmentRenderObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
Public Member Functions inherited from Wizt::RenderAble
virtual string getSensorInfo (const RefPtr< ValuePool > &Context, const SensorView &theSensorView)
bool isVisible (const RefPtr< ValuePool > &Context) const
Public Member Functions inherited from Wizt::VObject
string CreatorName () const
const WeakPtrVCreatorBasegetCreator () const
virtual bool request (VRequest &, double precision, const WeakVObjectPtr &ImmediateRequestor, const WeakVObjectPtr &RootRequestor)
bool schedule (double precision, const RefPtr< ValuePool > &Context=nullptr)
void enableRequestProcessing ()
void disableRequestProcessing ()
bool acceptsRequests () const
const MemCore::CounterUpdateCount () const
const MemCore::CounterRequestCount () const
 VObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
virtual const GimpIcongimp_icon () const
virtual const char *const * xpm_icon () const
virtual string qt_icon () const
virtual string help (HelpType=HTMLText) const
bool setObjectAsChild (const VObjectPtr &childVObject, const string &DependencySlotName)
double requestTime () const
void remove ()
const RefPtr< VCreationPreferences > & CreationPreferences () const
virtual std::string type_key () const
void iterateParents (VObjectIterator &VOI, int EL=0) const
int iterateParents (const VObjectIterator_f &VOI, int EL=0) const
virtual string CreateParameterName (const ParameterID &name) const
int iterateChildren (ChildIterator &) const
int findChildren (const Lambda &theLambda) const
std::list< std::vector< std::string > > getProvenance () const
AttachErrorCode attachNewObject (const RefPtr< VSlot > &slot, const string &name, const Intercube &CreationContext, const RefPtr< VCreationPreferences > &VCP=nullptr)
AttachErrorCode attachNewObject (const RefPtr< VSlot > &slot, const string &name, const RefPtr< VCreationPreferences > &VCP=nullptr)
AttachErrorCode attachInputObject (const RefPtr< VSlot > &slot, const string &name={}, const RefPtr< VCreationPreferences > &VCP=nullptr, bool ReallyUnique=true)
CreateConnectionResult_t createChild (const VAcception &VA, const Intercube &CreationContext)
CreateConnectionResult_t connectChild (const VObjectPtr &ChildObject, const RefPtr< VAcceptInfo > &VA)
CreateConnectionResult_t connectAsChild (const VObjectPtr &ChildObject, const VAcception &VA)
virtual void InputCreation (const RefPtr< VParameter > &CurrentObjectsInput, const VObjectPtr &NewlyCreatedObject, const RefPtr< VParameter > &TheNewObjectsOutputParameter)
VObjectPtr createInput (const WeakPtrVCreatorBase &VCrec, const RefPtr< VSlot > &what, const string &name, Intercube &CreationContext)
VObjectPtr extractSlot (const RefPtr< VSlot > &theSlot, const string &theNewName=string()) const
Public Member Functions inherited from Wizt::VStateCreatorBase
RefPtr< State > & getState (const WeakPtr< ValuePool > &VP) const
RefPtr< InterfaceBasehasLocalInterface (const type_info &InterfaceType) const
RefPtr< State > myState (const WeakPtr< ValuePool > &Context) const
void setState (const WeakPtr< ValuePool > &, const RefPtr< State > &st) const
Public Member Functions inherited from Wizt::VSaveable
void addSaver (const string &, const RefPtr< VishSaver > &)
void addSavers (AppClass &A)
bool autosave () const
RefPtr< VishSavergetMostRecentSaver () const
size_t getNumberOfSavers () const
RefPtr< VishSavergetSaver (const string &) const
RefPtr< VishSavergetSaverByExt (const string &ext) const
int iterate_savers (const save_iterator &si) const
Public Member Functions inherited from Wizt::VManagedDomainObject< VObject >
const type_infogetDomainType () const override
void remove ()
 VManagedDomainObject (const string &name, int priority=DEFAULT_PRIORITY)
Public Member Functions inherited from Wizt::VManagedObject
string getLoadModule () const
void insert (const string &s, int priority=DEFAULT_PRIORITY)
void remove ()
void setPriority (int priority)
 VManagedObject (const string &name, int priority=DEFAULT_PRIORITY)
Public Member Functions inherited from MemCore::Intercube
void addInterface (const RefPtr< InterfaceBase > &I) const
void addInterfaceData (const Data &D)
void addInterfaceData (const Data &D)
void clearInterfaces ()
bool const_iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP) const
virtual RefPtr< InterfaceBasecreateInterface (const type_info &) const
RefPtr< InterfaceBasefindInterface (const type_info &t) const
RefPtr< InterfaceBasegetInterface (const type_info &t)
std::string getInterfaceNames (const char delim=';') const
bool gotNewInterfaceData (const Data &D)
bool gotNewInterfaceData (mutex &M, const Data &D)
bool gotNewInterfaceData (mutex &M, const Data &D)
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector &S)
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector *S)
bool hasChangedInterfaceData (const Data &D) const
bool hasChangedInterfaceData (const Data &D) const
bool hasChangedInterfaceData (const Data &D, const Selector &) const
bool hasChangedInterfaceData (const Data &D, const Selector *) const
bool hasInterface (const type_info &t) const
bool iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP)
void printInterfaces () const
void registerInterface (const type_info &t)
void removeInterface ()
void removeInterfaceBase (const type_info &InterfaceBaseID)
Public Member Functions inherited from MemCore::MutableName
void addNameChangeNotifier (const WeakPtr< Notifier > &)
std::string BaseName (const char Separator) const
const std::stringgetName () const
 MutableName (const std::string &theName)
const std::stringName () const
void rename (const std::string &newName)
void setName (const std::string &newName)
Public Member Functions inherited from Wizt::VScriptable
RefPtr< VScriptFunctorfindFunctor (const string &name) const
RefPtr< VScriptFunctorinsertFunctor (const string &name, const RefPtr< VScriptFunctor > &)
bool iterate (iterator &it)
int nFunctors () const
void removeFunctor (const string &name)
Public Member Functions inherited from Wizt::VTraceRequestID
bool addRequest (const VRequest &request)
bool hasRequest (const VRequest &request) const
Public Member Functions inherited from Wizt::VTransformable
RenderBasin::glsl getTransformationShaderFunctions (VRenderContext &Context) const
bool initializeAnemoneTransformation (Anemone &RenderAnemone, VRenderContext &Context) const
RefPtr< BoundingBoxshadedVolume (const RefPtr< ValuePool > &Context, const RefPtr< BoundingBox > &VerticesBBox) const
Public Member Functions inherited from Wizt::StatusIndicator
bool setStatusCritical (const RefPtr< ValuePool > &Context, const string &what) const
bool setStatusError (const RefPtr< ValuePool > &Context, const string &what, bool AnnouncePublic=false) const
bool setStatusInfo (const RefPtr< ValuePool > &Context, const string &what) const
bool setStatusWarning (const RefPtr< ValuePool > &Context, const string &what) const
 StatusIndicator (VObject *what, const string &initialtext="", int EL=0, const string &statusslotname=Slotname)

Static Public Member Functions

static RefPtr< RenderBasin::VertexAttributecreateVertexCoordinates (VRenderContext &Context, const RefPtr< Fiber::MemBase > &Coordinates, bool AllowProceduralCoordinates)
static const char * getAnemoneRenderStatusDescription (AnemoneRenderStatus)
static void destroyAnemone (RefPtr< Anemone > &Anemone, const AnemoneCreationContext &ARC)
Static Public Member Functions inherited from Wizt::VConnectable
static bool attachSlot (const WeakPtr< VSlot > &DestSlot, const RefPtr< VParameter > &ProvidedParam, const string &Member={})
static bool attachSlot (const WeakPtr< VSlot > &DestSlot, const RefPtr< VSlot > &SourceSlot, const string &Member={})
static bool detachSlot (const RefPtr< VSlot > &SourceSlot)
Static Public Member Functions inherited from Wizt::VSlotContainer
static const char * AttachErrorCodeMessage (AttachErrorCode)
static bool attachParameter (const RefPtr< VParameter > &theProvidedParam, const WeakPtr< VSlot > &theDestSlot, const string &theMember={})
Static Public Member Functions inherited from Wizt::ValueCacheable
static ValueCacheconsider (MemCore::Intercube &IC, const WeakPtr< VSlot > &VS, const RefPtr< ValuePool > &Context)
static ValueCachegetValueCache (MemCore::Intercube &IC)
static bool hasChangedSlots (const WeakPtrToVSlotContainer &theSlotOwner, const MemCore::Intercube &IC, const RefPtr< ValuePool > &Context)
Static Public Member Functions inherited from Wizt::RenderAble
static const char * VisibilitySlotName ()
Static Public Member Functions inherited from Wizt::VObject
static bool remove (const string &s)
static int findOutputObjects (const type_info &Type, OutputObjectIterator &GOutputs)
static string createChildname (const string &parent_name)
static VAcceptInfoList_t accept (const VObjectPtr &vobj)
static RefPtr< VParameterfindUniqueOutputObject (const type_info &Type, const RefPtr< VCreationPreferences > &VCP, bool ReallyUnique, const VObject *NotThisOne)
Static Public Member Functions inherited from Wizt::VSaveable
static VSaveableGlobalState ()
Static Public Member Functions inherited from Wizt::VManagedDomainObject< VObject >
static RefPtr< VManagedObjectfind (const string &s)
static int iterate (VManagedObjectIterator_t VIt, int p_start=INT_MIN, int p_end=INT_MAX)
static int size ()
static int traverse (VManagedObjectIterator &VIt, int p_start=INT_MIN, int p_end=INT_MAX)
Static Public Member Functions inherited from Wizt::VManagedObject
static int count ()
static VManagedObjectPtr find (const type_info &, const std::string &s)
static bool InitDomain (const type_info &)
static int iterateModules (ModuleIterator &VIM)
static int size (const type_info &)
static int traverse (const type_info &, VManagedObjectIterator &VIt, int p_start, int p_end)
static void UnloadVModule (const string &what, VRemoveItem &RI)
Static Public Member Functions inherited from MemCore::MutableName
static std::string BaseName (const std::string &theName, const char Separator)

Public Attributes

inout< double > inLevelThreshold
in< double > inRenderTimeFactor
inout< RefPtr< CellTensorFunctor > > inCellTensorFunctor
in< bool > inFreeze
in< bool > inShowTerminalOnly
inout< int > inMinLevel
inout< int > inNumberOfLevels
inout< int > inMaxNumberOfRenderFragments
inout< int > inMinNumberOfElementsPerFragments
inout< int > inMaxNumberOfElementsPerFragments
out< VBoundingBoxoutVisibleBBox
out< Fiber::GridoutVisibleGrid
SortMethod CurrentSortMethod = SortMethod::None
Public Attributes inherited from Wizt::VSlotContainer
 AllLevels
 DestParameterNotFound
 InvalidDestParameter
Public Attributes inherited from Wizt::VEnvironmentRenderObject
VOutput< VCameraSetPtr > myCameraSet
Public Attributes inherited from Wizt::RenderAble
out< double > outRenderTimeContribution
in< bool > Visibility
Public Attributes inherited from Wizt::VObject
 HelpURL
 HTMLText
 PlainText
 ShortHTMLText
 ShortText
std::string whyupdate
string UserInfo
Public Attributes inherited from Wizt::RenderNamespace
 COLORS
 COORDINATES
 LINE_LOOP
 LINE_STRIP
 LINES
 NORMALS
 POINTS
 POLYGON
 TRIANGLE_STRIP
 TRIANGLE_FAN
 TRIANGLES
 QUAD_STRIP
 QUADS
 SECONDARY_COLORS
 TEXTURE0
 TEXTURE1
 USER_DEFINED
Public Attributes inherited from Wizt::StatusIndicator
VOutput< VObjectStatusStatusInfo

Additional Inherited Members

Static Public Attributes inherited from Wizt::VObject
static constexpr char NameSeparator
static constexpr char SlotNameSeparator
Static Public Attributes inherited from Wizt::VManagedObject
static string CurrentLoadModule
Static Public Attributes inherited from Wizt::StatusIndicator
static const char Slotname []
Protected Types inherited from Wizt::VObject
typedef bool(* UpdateFunction) (VObject *, VRequest &, double precision)
Protected Member Functions inherited from Wizt::VSlotContainer
virtual void setup (const CreationSlots_t &CreationSlots)
Protected Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
virtual void extremeUnction ()
ReferenceBaseoperator= (const ReferenceBase &R)
void suicide ()
Protected Member Functions inherited from Wizt::RenderAble
 RenderAble (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
Protected Member Functions inherited from Wizt::VObject
virtual bool unsychronized_update (VRequest &VR, double precision)
Protected Attributes inherited from Wizt::VObject
MemCore::Counter UpdateCounter
MemCore::Counter RequestCounter

Detailed Description

Base class for objects that render information given on a Grid.

The grid that is used for rendering might stem from a Field selection or a Grid selection.

Child classes need to implement the virtual function

virtual GridSelector getGridSelector(const RefPtr<ValuePool>&Context);
Context information to select a grid from within a bundle.
Definition GridSelector.hpp:26
StrongPtr< Object, ObjectBase > RefPtr

to specify the source of the grid.

Recipe for implementing child classes:

  1. Implement validateInput() to check for additional constraints on the input parameters, and possibly extract some more information.
  2. Anything computationally intensive needs to be done in the update() function, from which validateInput() is called as well. It has to provide its results and pass it to the render() function via the local state object. Child classes need to derive from GridAnemoneState to extent it by additional information and implement the newState() function to return such derived state objects.
  3. Let isValidAnemone() return false for the development stage such that no caching occurs and full concentration can be given on creating an appropriate rendering object.
  4. Implement updateAnemone() such to read the required data ONLY from the state object and to appropriately extend the provided Anemone object for rendering. This includes in particular inserting a Painter Tentacle. At this point, the coordinates of the Grid object for a given fragment will already be available.
  5. Deal with caching issues by properly implementing the updateAnemone() and isValidAnemone() functions.
Author
werner

Member Typedef Documentation

◆ initializeAnemoneParameters

using Wizt::GridAnemone::initializeAnemoneParameters

Member Function Documentation

◆ addSupplementaryData()

bool Wizt::GridAnemone::addSupplementaryData ( VRequest & Context,
Fiber::Info< Fiber::Grid > & ,
RenderFields & RF,
const RefPtr< Fiber::Skeleton > & myVertexSkeleton,
const RefPtr< Fiber::Chart > & chart,
string & InfoString )
virtual

Virtual call to add additional data in child classes.

Note that the vertex skeleton and the chart are contained in the GridAnemoneState at this point.

Parameters
InfoStringThe status info string that can optionally be modified.

Reimplemented in Wizt::FieldAnemone.

Referenced by initializeAnemone(), and update().

◆ do_feedback_render()

TouchIndex_t Wizt::GridAnemone::do_feedback_render ( VRenderContext & Context,
TouchIndex_t StartIndex ) const

Support for feedback rendering, in case a child object is derived from a Touchable.

The child object still needs to implement VTouchable::feedback_render(), which will trivially call this function.

References do_feedback_render(), getRenderFields(), Wizt::VStateCreatorBase::getState(), and MemCore::ReferenceBase< VManagedObjectBase >::self().

Referenced by do_feedback_render().

◆ environment_render()

bool Wizt::GridAnemone::environment_render ( VRenderContext & Context) const
overridevirtual

Implements Wizt::RenderAble.

◆ getAnemoneExplorer()

RefPtr< GridAnemone::AnemoneExplorer > Wizt::GridAnemone::getAnemoneExplorer ( VRenderContext & Context) const
virtual

Reimplemented in Wizt::SurfaceRenderer.

◆ getLastRenderTime()

RenderAble::RenderTime Wizt::GridAnemone::getLastRenderTime ( VRenderContext & Context) const
overridevirtual

Reimplemented from Wizt::RenderAble.

◆ getRenderFields()

GridAnemone::FieldHierarchy Wizt::GridAnemone::getRenderFields ( VRenderContext & Context) const
virtual

Get the primary field that will be used for rendering.

This field will in general be a Positions field, in many cases of the vertices of a grid in cartesian coordinates. It may also stem from a higher order topology of a grid, for instance the triangle cells of a mesh.

The render Anemones will be cached at each fragment of this field relative to this object and relative to the given Context.

Reimplemented in Wizt::SkeletonRenderer.

References Wizt::VStateCreatorBase::getState().

Referenced by do_feedback_render().

◆ getTouchableBoundingBall()

RefPtr< BoundingBall > Wizt::GridAnemone::getTouchableBoundingBall ( const RefPtr< ValuePool > & VP) const
overridevirtual

Get the bounding box of the entire object's geometry beyond the visible part such to allow proper camera navigation.

Reimplemented from Wizt::RenderAble.

Reimplemented in Wizt::PictureBase.

References Fiber::GridSelector::findMostRecentGrid(), Wizt::VRenderObject::getBoundingBall(), Fiber::GridSelector::getBundle(), getCartesianChart(), and Wizt::Fish< double >::getTime().

Referenced by initializeAnemone().

◆ initializeAnemone()

virtual AnemoneRenderStatus Wizt::GridAnemone::initializeAnemone ( Anemone & RenderAnemone,
const AnemoneCreationContext & ARC,
const RefPtr< AnemoneExplorer > & AE ) const
pure virtual

Initialize a virgin Render Anemone, i.e.

equip it with all its properties as required for rendering (aka waving).

Note: Must always clear the anemone before calling initialize() since all operations here will APPEND.

Render parameters (uniform shader variables) can be connected to be updated automatically from an input slot. Given the name of an uniform variable and the input slot

then the this slot can be bound to the shader's uniform variable via

RenderAnemone << ARC << "MonochromeColor" << inColor;

Implemented in Wizt::FieldAnemone, and Wizt::SkeletonRenderer.

References addSupplementaryData(), disabledFragment(), getTouchableBoundingBall(), isCreatingSupplementaryData(), isValidAnemone(), requestSupplementaryData(), update(), updateAnemone(), and validateInput().

Referenced by raiseAnemone().

◆ isCreatingSupplementaryData()

bool Wizt::GridAnemone::isCreatingSupplementaryData ( VRenderContext & theContext,
const RefPtr< Fiber::FragmentID > & myFragmentID ) const
virtual

Asynchroneous mode: Check whether supplementary data are currently under creation.

Asynchrone mode: Check whether supplementary data are currently under creation.

Reimplemented in Wizt::FieldAnemone.

Referenced by initializeAnemone().

◆ isValidAnemone()

bool Wizt::GridAnemone::isValidAnemone ( const Anemone & RenderAnemone,
const AnemoneCreationContext & ARC,
const RefPtr< AnemoneExplorer > & AE ) const
virtual

Checks if a given Anemone is valid for rendering.

Consider the case that some anemone may be reused, but unfortunately is invalid for whatever reason. This may happen if it was created incomplete previously, but nothing has changed since then, so it's still invalid, even though it could be reused...

Any code derive from Programmable may just call

return hasValidShaderPrograms(RenderAnemone, ARC.myContext);

to check for validity of the attached shader programs.

Reimplemented in Wizt::EdgeShader, Wizt::FieldAnemone, Wizt::FloatingSkeletonRenderer, Wizt::PictureBase, and Wizt::SurfaceRenderer.

Referenced by initializeAnemone(), and renderAnemone().

◆ newAnemoneCreator()

RefPtr< AnemoneCreatorBase > Wizt::GridAnemone::newAnemoneCreator ( const Seagrass & theSeaggrass) const
virtual

If some parameters of a Render Anemone need to be modified upon change of some input, for instance some uniform shader variables, then re-creation of the entire Anemone is overkill.

References to those parameters can then be stored at its AnemoneCreator, which will be destroyed as soon as the data generating the Render Anemone are destroyed as well.

struct MyAnenomeCreator : AnemoneCreator<>
{
MyAnenomeCreator(const Seagrass&theSeagrass)
: AnemoneCreator<>(theSeagrass)
{}
};
RefPtr<AnemoneCreatorBase> newAnemoneCreator(const Seagrass&theSeagrass) const
{
return new MyAnenomeCreator(theSeagrass);
}
virtual RefPtr< AnemoneCreatorBase > newAnemoneCreator(const Seagrass &theSeaggrass) const
If some parameters of a Render Anemone need to be modified upon change of some input,...
Definition GridAnemone.cpp:627

A derived class may then implement modifying the rendering parameters:

bool updateAnemone (const Anemone&RenderAnemone,
const AnemoneCreationContext&ARC,
const RefPtr<AnemoneExplorer>&AE) const override
{
if (!S)
return false;
rgba_float_t color(0.6, 0.7, 0.9, 1.0);
if (S->ColorParameter)
S->ColorParameter->modify(color);
return true;
}
virtual bool updateAnemone(Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const
Update a certain Anemone with variables and values that do not require re-creation or loading of any ...
Definition GridAnemone.cpp:738
RefPtr< AnemoneCreatorBase > myAnemoneCreator

Note that this code example examplifies "manual" updating of a render parameter (i.e., a uniform shader variable). The more convenient way, if possible, is to set a connection from an input slot to a render parameter, see initializeAnemone().

◆ newState()

RefPtr< GridAnemone::State > Wizt::GridAnemone::newState ( ) const
overridevirtual

Reimplemented from Wizt::VStateCreatorBase.

◆ raiseAnemone()

GridAnemone::AnemoneRenderStatus Wizt::GridAnemone::raiseAnemone ( Anemone & RenderAnemone,
const AnemoneCreationContext & ARC,
const RefPtr< AnemoneExplorer > & AE ) const

◆ requestSupplementaryData()

void Wizt::GridAnemone::requestSupplementaryData ( VRenderContext & theContext,
const RefPtr< Fiber::FragmentID > & myFragmentID ) const
virtual

Asynchroneous mode: Request creation of supplementary data.

Reimplemented in Wizt::FieldAnemone.

Referenced by initializeAnemone().

◆ update()

◆ updateAnemone()

bool Wizt::GridAnemone::updateAnemone ( Anemone & RenderAnemone,
const AnemoneCreationContext & ARC,
const RefPtr< AnemoneExplorer > & AE ) const
virtual

Update a certain Anemone with variables and values that do not require re-creation or loading of any data.

If this function returns false, then this Anemone will not be rendered but destroyed. If this function returns true, but the Anemone is empty(), then it will be re-initialized.

Reimplemented in Wizt::FloatingProgrammableEdgeRenderer, Wizt::PictureBase, and Wizt::SurfaceRenderer.

Referenced by initializeAnemone(), and renderAnemone().

◆ validateInput()

bool Wizt::GridAnemone::validateInput ( VRequest & Context,
Fiber::Info< Fiber::Grid > & ,
const RefPtrGridAnemoneState & GAS,
const RefPtr< Fiber::Skeleton > & myVertexSkeleton,
const RefPtr< Fiber::Chart > & chart,
string & ValidateInputInfoString ) const
virtual

Virtual call to check if the information retrieved from the inputs is valid, and if further information as required by the child class as been added correctly.

This function needs to set the object status message if returning false, for instance:

if (bad_condition)
{
setStatusError(Context, "Something bad happened");
return false;
}
bool setStatusError(const RefPtr< ValuePool > &Context, const string &what, bool AnnouncePublic=false) const

Reimplemented in Wizt::SkeletonRenderer.

Referenced by initializeAnemone(), and update().