13 #ifndef SLIDESHOWCONSTRUCTOR
14 #define SLIDESHOWCONSTRUCTOR
18 #include <osg/ImageUtils>
20 #include <osg/ClearNode>
22 #include <osg/AnimationPath>
23 #include <osg/TransferFunction>
24 #include <osg/ImageStream>
25 #include <osg/ImageSequence>
26 #include <osg/ScriptEngine>
27 #include <osgText/Text>
28 #include <osgGA/GUIEventAdapter>
30 #include <osgDB/FileUtils>
32 #include <osgVolume/VolumeTile>
33 #include <osgVolume/VolumeSettings>
35 #include <osgPresentation/AnimationMaterial>
36 #include <osgPresentation/SlideEventHandler>
37 #include <osgPresentation/PropertyManager>
38 #include <osgPresentation/Timeout>
76 getOrCreateLayerAttributes(node)->setDuration(duration);
81 getOrCreateLayerAttributes(node)->addKey(kp);
86 getOrCreateLayerAttributes(node)->addRunString(runString);
91 getOrCreateLayerAttributes(node)->setJump(jumpData);
96 if (!_presentationSwitch) createPresentation();
97 if (_presentationSwitch.valid()) addKey( _presentationSwitch.get(), kp);
102 if (!_presentationSwitch) createPresentation();
103 if (_presentationSwitch.valid()) addRunString( _presentationSwitch.get(),runString);
108 if (!_slide) addSlide();
109 if (_slide.valid()) addKey(_slide.get(),kp);
114 if (!_slide) addSlide();
115 if (_slide.valid()) addRunString(_slide.get(),runString);
120 if (!_slide) addSlide();
121 if (_slide.valid()) setJump(_slide.get(),jumpData);
126 if (!_currentLayer) addLayer();
127 if (_currentLayer.valid()) addKey(_currentLayer.get(),kp);
132 if (!_currentLayer) addLayer();
133 if (_currentLayer.valid()) addRunString(_currentLayer.get(),runString);
139 if (!_currentLayer) addLayer();
140 if (_currentLayer.valid()) setJump(_currentLayer.get(),jumpData);
149 position(0.0f,1.0f,0.0f),
151 scale(1.0f,1.0f,1.0f),
152 rotate(0.0f,0.0f,0.0f,1.0f),
153 rotation(0.0f,0.0f,1.0f,0.0f),
154 absolute_path(false),
156 path_time_offset(0.0),
157 path_time_multiplier(1.0f),
158 path_loop_mode(
osg::AnimationPath::NO_LOOPING),
159 animation_material_time_offset(0.0),
160 animation_material_time_multiplier(1.0),
169 return (position[0]!=0.0f || position[1]!=1.0f || position[2]!=1.0f);
174 return (scale[0]!=1.0f || scale[1]!=1.0f || scale[2]!=1.0f);
179 return rotate[0]!=0.0f;
184 return (rotation[0]!=0.0f || !path.empty());
189 return !animation_material_filename.empty() || !fade.empty();
228 region(0.0f,0.0f,1.0f,1.0f),
229 region_in_pixel_coords(false),
230 texcoord_rotate(0.0f),
231 loopingMode(
osg::ImageStream::NO_LOOPING),
233 backgroundColor(1.0f,1.0f,1.0f,1.0f),
236 imageSequence(false),
237 imageSequencePagingMode(
osg::ImageSequence::PAGE_AND_DISCARD_USED_IMAGES),
238 imageSequenceInteractionMode(PLAY_AUTOMATICALLY_LIKE_MOVIE),
239 blendingHint(USE_IMAGE_ALPHA),
291 shadingModel(
osgVolume::VolumeSettings::Standard),
292 useTabbedDragger(false),
293 useTrackballDragger(false),
294 region_in_pixel_coords(false),
297 exteriorTransparencyFactorValue(),
298 sampleDensityValue(),
301 colorModulate(1.0f,1.0f,1.0f,1.0f),
302 technique(
osgVolume::VolumeSettings::RayTraced)
304 hullPositionData.position =
osg::Vec3(0.0,0.0,0.0);
337 font(
"fonts/arial.ttf"),
338 layout(
osgText::Text::LEFT_TO_RIGHT),
339 alignment(
osgText::Text::LEFT_BASE_LINE),
340 axisAlignment(
osgText::Text::XZ_PLANE),
341 characterSizeMode(
osgText::Text::OBJECT_COORDS),
342 characterSize(0.04f),
345 color(1.0f,1.0f,1.0f,1.0f) {}
364 typedef std::pair<ScriptCallbackType, std::string>
ScriptPair;
378 void createPresentation();
380 void setBackgroundColor(
const osg::Vec4& color,
bool updateClearNode);
383 void setTextColor(
const osg::Vec4& color);
386 void setPresentationName(
const std::string& name);
388 void setPresentationAspectRatio(
float aspectRatio);
390 void setPresentationAspectRatio(
const std::string& str);
392 void setPresentationDuration(
double duration);
394 void addScriptEngine(
const std::string& scriptEngineName);
396 void addScriptFile(
const std::string& name,
const std::string& filename);
398 void addScript(
const std::string& name,
const std::string& language,
const std::string& script);
402 void selectSlide(
int slideNum);
407 _titlePositionData = positionData;
408 _titleFontData = fontData;
415 void setSlideDuration(
double duration);
419 void addLayer(
bool inheritPreviousLayers=
true,
bool defineAsBaseLayer=
false);
421 void selectLayer(
int layerNum);
423 void setLayerDuration(
double duration);
459 void keyToDoOperation(PresentationContext presentationContext,
int key,
Operation operation,
const JumpData& jumpData=
JumpData());
460 void keyToDoOperation(PresentationContext presentationContext,
int key,
const std::string& command,
Operation operation,
const JumpData& jumpData=
JumpData());
461 void keyEventOperation(PresentationContext presentationContext,
int key,
const KeyPosition& keyPos,
const JumpData& jumpData=
JumpData());
467 void addPropertyAnimation(PresentationContext presentationContext,
PropertyAnimation* propertyAnimation);
469 void addScriptCallback(PresentationContext presentationContext, ScriptCallbackType scriptCallbackType,
const std::string& functionName);
471 void addScriptToNode(ScriptCallbackType scriptCallbackType,
const std::string& name,
osg::Node* node);
473 void addScriptsToNode(
const ScriptData& scriptData,
osg::Node* node);
475 void addToCurrentLayer(
osg::Node* subgraph);
477 void addBullet(
const std::string& bullet, PositionData& positionData, FontData& fontData,
const ScriptData& scriptData);
479 void addParagraph(
const std::string& paragraph, PositionData& positionData, FontData& fontData,
const ScriptData& scriptData);
483 void addImage(
const std::string& filename,
const PositionData& positionData,
const ImageData& imageData,
const ScriptData& scriptData);
485 void addStereoImagePair(
const std::string& filenameLeft,
const ImageData& imageDataLeft,
const std::string& filenameRight,
const ImageData& imageDataRight,
const PositionData& positionData,
const ScriptData& scriptData);
487 void addGraph(
const std::string& filename,
const PositionData& positionData,
const ImageData& imageData,
const ScriptData& scriptData);
488 void addVNC(
const std::string& filename,
const PositionData& positionData,
const ImageData& imageData,
const std::string& password,
const ScriptData& scriptData);
489 void addBrowser(
const std::string& filename,
const PositionData& positionData,
const ImageData& imageData,
const ScriptData& scriptData);
490 void addPDF(
const std::string& filename,
const PositionData& positionData,
const ImageData& imageData,
const ScriptData& scriptData);
491 osg::Image* addInteractiveImage(
const std::string& filename,
const PositionData& positionData,
const ImageData& imageData,
const ScriptData& scriptData);
493 void addModel(
osg::Node* subgraph,
const PositionData& positionData,
const ModelData& modelData,
const ScriptData& scriptData);
495 void addModel(
const std::string& filename,
const PositionData& positionData,
const ModelData& modelData,
const ScriptData& scriptData);
499 void addVolume(
const std::string& filename,
const PositionData& positionData,
const VolumeData& volumeData,
const ScriptData& scriptData);
509 void pushCurrentLayer(
osg::Group* newLayerGroup);
510 void popCurrentLayer();
528 void findImageStreamsAndAddCallbacks(
osg::Node* node);
533 osg::Vec3 computePositionInModelCoords(
const PositionData& positionData)
const;
534 void updatePositionFromInModelCoords(
const osg::Vec3& vertex, PositionData& positionData)
const;
541 osg::Node* attachMaterialAnimation(
osg::Node* model,
const PositionData& positionData);
542 bool attachTexMat(
osg::StateSet* stateset,
const ImageData& imageData,
float s,
float t,
bool textureRectangle);
547 #if !defined(OSG_GLES2_AVAILABLE)
554 osg::Node* decorateSubgraphForPositionAndAnimation(
osg::Node* node,
const PositionData& positionData);
606 typedef std::map< std::string, osg::ref_ptr<osg::Script> >
ScriptMap;
628 std::string findFileAndRecordPath(
const std::string& filename);
osg::ref_ptr< osg::Group > _previousLayer
FontData _titleFontDataDefault
std::string sampleRatioWhenMovingValue
PositionData & getModelPositionDataDefault()
osg::ref_ptr< osg::Group > _currentLayer
void setAutoSteppingActive(bool flag=true)
osgText::Text::CharacterSizeMode characterSizeMode
void addPresentationKey(const KeyPosition &kp)
BlendingHint blendingHint
OSG_EXPORT Geometry * createTexturedQuadGeometry(const Vec3 &corner, const Vec3 &widthVec, const Vec3 &heightVec, float l, float b, float r, float t)
void addPresentationRunString(const std::string &runString)
std::string animation_name
PositionData _modelPositionData
void setSlideBackground(const std::string &name)
std::string animation_material_filename
double animation_material_time_offset
#define OSGPRESENTATION_EXPORT
osg::ref_ptr< osgVolume::VolumeSettings > volumeSettings
void setLoopPresentation(bool loop)
osg::Switch * getPresentationSwitch()
double _presentationDuration
PositionData & getModelPositionData()
osg::Group * takePresentation()
FontData & getTextFontDataDefault()
std::string _presentationName
void setJump(osg::Node *node, const JumpData &jumpData)
PositionData & getTextPositionData()
PositionData & getTitlePositionData()
void addLayerKey(const KeyPosition &kp)
PositionData & getTitlePositionDataDefault()
osg::Switch * getCurrentSlide()
bool requiresMaterialAnimation() const
void translateTextCursor(const osg::Vec3 &delta)
osg::ref_ptr< FilePathData > _filePathData
std::map< std::string, osg::ref_ptr< osg::Script > > ScriptMap
EventHandlerList _currentEventCallbacksToApply
std::vector< ScriptPair > Scripts
AnimationMaterial::LoopMode animation_material_loop_mode
PositionData _titlePositionData
osg::ref_ptr< osg::Switch > _presentationSwitch
osg::ref_ptr< osg::TransferFunction1D > transferFunction
void addLayerRunString(const std::string &runString)
std::string sampleDensityWhenMovingValue
osg::StateSet * createTransformStateSet()
Operation
Operations related to click to run/load/key events.
PositionData & getTextPositionDataDefault()
PositionData hullPositionData
const osg::Vec4 & getTextColor() const
osg::ref_ptr< osgPresentation::PropertyEventCallback > _propertyEventCallback
void setMode(StateAttribute::GLMode mode, StateAttribute::GLModeValue value)
void addSlideRunString(const std::string &runString)
PositionData _imagePositionData
void setSlideTitle(const std::string &name, PositionData &positionData, FontData &fontData)
PositionData _modelPositionDataDefault
const HUDSettings * getHUDSettings() const
osgVolume::VolumeSettings::ShadingModel ShadingModel
osgText::Text::AxisAlignment axisAlignment
PositionData _textPositionData
GLint GLenum GLsizei width
ShadingModel shadingModel
osg::ref_ptr< osg::ClearNode > _slideClearNode
HUDSettings * getHUDSettings()
osg::ref_ptr< osgPresentation::PropertyManager > _propertyManager
const osg::Vec4 & getBackgroundColor() const
FontData & getTextFontData()
FontData & getTitleFontDataDefault()
osg::ColorSpaceOperation colorSpaceOperation
double animation_material_time_multiplier
osg::ref_ptr< osg::Switch > _slide
std::vector< osg::ref_ptr< osg::Group > > LayerStack
unsigned int _leftEyeMask
osgVolume::VolumeSettings::Technique Technique
std::list< osg::ref_ptr< osgGA::GUIEventHandler > > EventHandlerList
osg::ImageStream::LoopingMode loopingMode
std::string exteriorTransparencyFactorValue
osgText::Text::AlignmentType alignment
std::pair< ScriptCallbackType, std::string > ScriptPair
ScriptEngineMap _scriptEngines
std::map< std::string, osg::ref_ptr< osg::ScriptEngine > > ScriptEngineMap
PositionData _imagePositionDataDefault
osg::ref_ptr< osgDB::Options > _options
FontData & getTitleFontData()
bool requiresScale() const
GLint GLenum GLsizei GLsizei height
osg::ref_ptr< osg::Group > _layerToApplyEventCallbackTo
PositionData _titlePositionDataDefault
std::string sampleRatioValue
bool getAutoSteppingActive() const
osg::Group * getPresentation()
bool region_in_pixel_coords
unsigned int _rightEyeMask
osgText::Text::Layout layout
bool region_in_pixel_coords
osg::Group * getCurrentLayer()
PositionData & getImagePositionData()
void setSlideJump(const JumpData &jumpData)
void setHUDSettings(HUDSettings *hudSettings)
PositionData & getImagePositionDataDefault()
double path_time_multiplier
void setDuration(osg::Node *node, double duration)
void setSlideBackgrondHUD(bool hud)
void addSlideKey(const KeyPosition &kp)
ImageSequenceInteractionMode imageSequenceInteractionMode
osg::ImageSequence::Mode imageSequencePagingMode
osg::Vec4 _backgroundColor
void addRunString(osg::Node *node, const std::string &runString)
bool requiresRotate() const
FontData _textFontDataDefault
osg::Vec4 backgroundColor
bool _slideBackgroundAsHUD
osg::ref_ptr< HUDSettings > _hudSettings
void addKey(osg::Node *node, const KeyPosition &kp)
bool requiresAnimation() const
osg::ref_ptr< osg::Group > _root
std::string _slideBackgroundImageFileName
void readImage(const osg::Image *image, O &operation)
bool getLoopPresentation() const
osg::AnimationPath::LoopMode path_loop_mode
PositionData _textPositionDataDefault
std::string sampleDensityValue
ImageSequenceInteractionMode
void setLayerJump(const JumpData &jumpData)
bool requiresPosition() const