FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
SeaBed.hpp
1#ifndef __FISH_POND_ANEMONEFISH_Seabed_HPP
2#define __FISH_POND_ANEMONEFISH_Seabed_HPP
3
4#include "GridAnemone.hpp"
5#include <field/Field.hpp>
6#include "Lanternfish.hpp"
7
8
9namespace Wizt
10{
11
12using namespace Fiber;
13using namespace Eagle;
14
16{
17 RefPtr<ValuePool> myContext;
18 RefPtr<Seagrass> mySeagrass;
19 bool AsyncLoading;
20
24 , myContext ( Context )
25 , mySeagrass( Context.getSeagrassPtr() )
26 , AsyncLoading(Context.EnableAsynchronLoading )
27 {}
28};
29
30/*
31 The SeaBed iterates over the given field
32 and takes care of getting an appropriate Anemone
33 that is to be used for rendering.
34 */
36{
37 /* TODO: consider using strong pointer here but
38 check that this does not lead to recursion,
39 only can work if SeaBed is a temporary object.
40 */
42 pGridAnemone_t myGridAnemone;
43
45 SkeletonSet myVertexSkeletons;
46
47 RefPtr<Fiber::Chart> myCurrentChart() const;
48 RefPtr<Fiber::Grid> myCurrentGrid() const;
49
50 // from GridAnemone::inRenderTimeLimit (currently unused)
51 double RenderTimeFactor = 0.5;
52
53 int MinNumberOfElementsPerFragments = 0,
54 MaxNumberOfElementsPerFragments = 0;
55
56// TouchIndex_t&StartIndex;
57
58static double invApparentCellSize2(metric33&theCellTensor,
60 const RefPtr<BoundingBox>&BBox,
61 const VCamera&CurrentCameraSettings,
62 const CellTensorFunctor&myCellTensorFunctor,
63 const SkeletonID&SId,
64 const WeakPtr<Fiber::Grid> & myCurrentGrid,
65 const WeakPtr<Fiber::Chart>& myCurrentChart,
67
68 double invApparentCellSize2(metric33&theCellTensor,
70 const RefPtr<BoundingBox>&BBox,
71 const CellTensorFunctor&myCellTensorFunctor,
72 const SkeletonID&SId,
74
75 bool prepareFragment(const Lanternfish::Fragment&LF);
76
77 bool prepareFragment(const SkeletonID&theSkeletonID,
80 const RefPtr<BoundingBox>&BBox,
83 bool TerminalFragment
84 );
85
86 bool prepareNonTerminalFragment(
91
92 bool prepareTerminalFragment(
97
98mutable bool timeout = false;
99
100 bool considerFragment(const Lanternfish::Fragment&LF) const;
101
102 // reference is fine because this is just an iterator.
103 // but need to ensure its called with an alive field hierarchy
104 const GridAnemone::FieldHierarchy&myRenderFields;
105
106 RefPtr<Lanternfish> myLanternfish;
107
114
122
123 /*
124 Pre-check whether a sufficient number of fragments is renderable.
125
126 @param InvalidAnemones On return specifies how many invalid Anemone s have
127 been found, i.e., data that is complete but not uploaded
128 to the GPU yet.
129 */
130// bool isRenderAble(int &InvalidAnemones, unsigned MaxNumberOfRenderFragments) const;
131
136 const ContextEssence&E,
138
139 ~SeaBed();
140
141 bool isVisible(const RefPtr<BoundingBox>&BBox) const;
142
144};
145
146} // namespace Wizt
147
148#endif // __FISH_POND_ANEMONEFISH_Seabed_HPP
Base class for multidimensional arrays that employ deferred storage, i.e.
Definition CreativeArrayBase.hpp:75
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
Identifier for Skeletons within a Grid.
Definition SkeletonID.hpp:24
Definition CellTensorFunctor.hpp:19
Handling a hierarchy of fields.
Definition RenderFields.hpp:21
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
note: cannot derive from FloatingSkeletonRenderer as long as independent base class TriangleRenderer ...
Definition AnemoneRenderFields.hpp:14
Definition SeaBed.hpp:16
Set of parameters that trigger a new Lanternfish upon change:
Definition Lanternfish.hpp:194
Definition Lanternfish.hpp:23
Definition SeaBed.hpp:36
AnemoneRenderFields myRenderFieldDependencies
Copy of the renderfields from the status during construction of the SeaBed.
Definition SeaBed.hpp:113
string ErrorMessage
A human-readable message that is supposed to provide some idea what went wrong if something goes wron...
Definition SeaBed.hpp:121