#ifndef SLIDESHOWCONSTUCTOR #define SLIDESHOWCONSTRUCTOR #include #include #include #include #include class SlideShowConstructor { public: SlideShowConstructor(); struct HomePosition : public osg::Referenced { osg::Vec3 eye; osg::Vec3 center; osg::Vec3 up; }; void createPresentation(); void setBackgroundColor(const osg::Vec4& color); void setTextColor(const osg::Vec4& color); void setPresentationName(const std::string& name); void setPresentationAspectRatio(float aspectRatio); void setPresentationAspectRatio(const std::string& str); void addSlide(); void setSlideTitle(const std::string& name) { _slideTitle = name; } void setSlideBackground(const std::string& name) { _slideBackgroundImageFileName = name; } void addLayer(); void addBullet(const std::string& bullet); void addParagraph(const std::string& paragraph); void addImage(const std::string& filename,float height); void addStereoImagePair(const std::string& filenameLeft,const std::string& filenameRight,float height); void addModel(const std::string& filename,float scale,float rotation,float position); osg::ClearNode* takePresentation() { return _root.release(); } osg::ClearNode* getPresentation() { return _root.get(); } osg::Switch* getPresentationSwitch() { return _presentationSwitch.get(); } osg::Switch* getCurrentSlide() { return _slide.get(); } osg::Group* getCurrentLayer() { return _currentLayer.get(); } protected: osg::Vec3 _slideOrigin; float _slideWidth; float _slideHeight; osg::Vec4 _backgroundColor; osg::Vec4 _textColor; std::string _textFont; float _titleHeight; float _titleWidth; float _textHeight; float _textWidth; std::string _presentationName; osg::Vec3 _titleOrigin; osg::Vec3 _textOrigin; osg::Vec3 _imageOrigin; osg::Vec3 _modelLeft; osg::Vec3 _modelRight; osg::Vec3 _textCursor; osg::Vec3 _imageCursor; osg::Vec3 _modelCursor; osg::ref_ptr _root; osg::ref_ptr _presentationSwitch; osg::ref_ptr _slide; std::string _slideTitle; std::string _slideBackgroundImageFileName; osg::ref_ptr _previousLayer; osg::ref_ptr _currentLayer; }; #endif