diff --git a/example/src/magSlide.cpp b/example/src/magSlide.cpp index 7e38228..95e94c9 100644 --- a/example/src/magSlide.cpp +++ b/example/src/magSlide.cpp @@ -25,13 +25,13 @@ void magSlide::update(u_int64_t deltaTime) switch (slideState) { - case SlideState::BuildIn: - if (runningTime >= buildInDuration) - { - setState(Normal); - activeTransition = nullptr; - } - break; +// case SlideState::BuildIn: +// if (runningTime >= buildInDuration) +// { +// setState(Normal); +// activeTransition = nullptr; +// } +// break; case SlideState::Normal: if (runningTime >= buildOutStartTime) @@ -95,15 +95,15 @@ void magSlide::setState(SlideState state) void magSlide::setTransitionDuration(u_int64_t tDuration) { - buildInDuration = buildOutDuration = tDuration; + buildOutDuration = tDuration; } const std::string magSlide::getSlideStateName() { switch (slideState) { - case SlideState::BuildIn: - return "BuildIn"; +// case SlideState::BuildIn: +// return "BuildIn"; case SlideState::BuildOut: return "BuildOut"; case Normal: @@ -121,17 +121,24 @@ void magSlide::start(u_int64_t startTime) { this->startTime = startTime; runningTime = 0; - endTime = duration + buildInDuration + buildOutDuration; + endTime = duration + buildOutDuration; buildOutStartTime = endTime - buildOutDuration; - slideState = magSlide::SlideState::BuildIn; - if (buildIn != nullptr) - { - activeTransition = buildIn; - activeTransition->start(); - } + slideState = magSlide::SlideState::Normal; +// if (buildIn != nullptr) +// { +// activeTransition = buildIn; +// activeTransition->start(); +// } + position.set(0, 0); + opacity = 255; isComplete = false; } +void magSlide::draw() +{ + ofSetColor(255, opacity); +} + //////////////////////////////////////////////////////// #pragma mark MAG_IMAGE_SLIDE @@ -152,6 +159,7 @@ void magImageSlide::setup(ofImage &image) void magImageSlide::draw() { + magSlide::draw(); image.draw(position, width, height); } @@ -191,11 +199,12 @@ void magVideoSlide::update() void magVideoSlide::draw() { + magSlide::draw(); videoPlayer.draw(position.x, position.y, width, height); } void magVideoSlide::useVideoForDuration() { - duration = u_int64_t((videoPlayer.getDuration()*1000)) - buildInDuration - buildOutDuration; + duration = u_int64_t((videoPlayer.getDuration()*1000)) - buildOutDuration; } diff --git a/example/src/magSlide.h b/example/src/magSlide.h index 1320fe0..c0aafb5 100644 --- a/example/src/magSlide.h +++ b/example/src/magSlide.h @@ -15,7 +15,7 @@ public: magSlide(std::string type); // ~magSlide(); virtual void update(u_int64_t deltaTime); - virtual void draw() = 0; + virtual void draw(); /** * Sets the slide up for playback. This method must be @@ -62,7 +62,7 @@ public: enum SlideState : short { Off = 0, - BuildIn, +// BuildIn, Normal, BuildOut, Complete @@ -145,12 +145,12 @@ protected: float width; float height; ofPoint position; - float opacity = 1.0; + float opacity = 255; ResizeOptions resizeOption = NoResize; SlideState slideState = Off; bool isComplete = false; - std::shared_ptr buildIn = nullptr; +// std::shared_ptr buildIn = nullptr; std::shared_ptr buildOut = nullptr; std::shared_ptr activeTransition = nullptr; /** @@ -173,7 +173,7 @@ protected: /** * The duration of the build in transition or effect, in milliseconds. */ - u_int64_t buildInDuration; +// u_int64_t buildInDuration; /** * The duration of the build out transition or effect, in milliseconds. diff --git a/example/src/magSlideShowSource.cpp b/example/src/magSlideShowSource.cpp index 20d3bbc..6d1bd52 100644 --- a/example/src/magSlideShowSource.cpp +++ b/example/src/magSlideShowSource.cpp @@ -271,8 +271,8 @@ bool magSlideShowSource::loadFromXml() settings.resizeOption = magSlide::FillProportionally; } - settings.transitionName = "FadeIn"; - settings.transitionDuration = 1.0; + settings.transitionName = "Dissolve"; + settings.transitionDuration = 0.5; initialize(settings); return true; @@ -282,7 +282,7 @@ bool magSlideShowSource::loadFromXml() void magSlideShowSource::addSlide(std::shared_ptr slide) { // ofLogVerbose("addSlide") << slide->getId(); - slides.push_back(slide); + slides.insert(slides.begin(), slide); auto rOption = slide->getResizeOption(); // If the slide does not have a resize option assign @@ -341,10 +341,10 @@ void magSlideShowSource::addSlide(std::shared_ptr slide) static ofParameterGroup bogusParamGroup; // This is temporary so that things compile auto tf = magSlideTransitionFactory::instance(); - slide->buildIn = tf->createTransition(settings.transitionName, - slide, - bogusParamGroup, - slide->buildInDuration); +// slide->buildIn = tf->createTransition(settings.transitionName, +// slide, +// bogusParamGroup, +// slide->buildInDuration); slide->buildOut = tf->createTransition(settings.transitionName, slide, bogusParamGroup, @@ -475,7 +475,10 @@ void magSlideShowSource::enqueueSlide(std::shared_ptr slide, u_int64_t { // ofLogVerbose() << "Enqueuing slide " << currentSlideIndex << " slide id: " << slide->getId(); slide->start(startTime); - activeSlides.push_back(slide); + if (activeSlides.size() > 1) + { + } + activeSlides.insert(activeSlides.begin(), slide); } void magSlideShowSource::slideStateChanged(const void *sender, ofEventArgs &args) diff --git a/example/src/magSlideTransition.cpp b/example/src/magSlideTransition.cpp index efa8bba..1a2d992 100644 --- a/example/src/magSlideTransition.cpp +++ b/example/src/magSlideTransition.cpp @@ -40,4 +40,16 @@ void magFadeInTransition::draw() { ofLogVerbose() << "fade in draw"; ofSetColor(255, getNormalizedTime() * 255); -} \ No newline at end of file +} + +void magFadeOutTransition::draw() +{ + magSlideTransition::draw(); + +} + +void magDissolveTransition::draw() +{ + slide->setOpacity(255 - (getNormalizedTime() * 255)); + ofLogVerbose("opacity") << slide->getId() << " " << slide->getOpacity(); +} diff --git a/example/src/magSlideTransition.h b/example/src/magSlideTransition.h index fa7960d..896b267 100644 --- a/example/src/magSlideTransition.h +++ b/example/src/magSlideTransition.h @@ -49,6 +49,7 @@ public: protected: std::string name = "Void"; std::shared_ptr slide; + std::shared_ptr nextSlide; u_int64_t runningTime; u_int64_t duration; u_int64_t endTime; @@ -68,6 +69,26 @@ public: void draw() override ; }; +class magFadeOutTransition : public magSlideTransition +{ +public: + magFadeOutTransition() + { + name = "FadeOut"; + } + + void draw() override ; +}; +class magDissolveTransition : public magSlideTransition +{ +public: + magDissolveTransition() + { + name = "Dissolve"; + } + + void draw() override; +}; #endif diff --git a/example/src/magSlideTransitionFactory.cpp b/example/src/magSlideTransitionFactory.cpp index c3e82ea..1c03a57 100644 --- a/example/src/magSlideTransitionFactory.cpp +++ b/example/src/magSlideTransitionFactory.cpp @@ -38,10 +38,10 @@ magSlideTransitionFactory* magSlideTransitionFactory::_instance = 0; magSlideTransitionFactory::magSlideTransitionFactory() { magSlideTransition voidTransition; - magFadeInTransition fadeIn; + magDissolveTransition dissolve; registerTransition(voidTransition); - registerTransition(fadeIn); + registerTransition(dissolve); } magSlideTransitionFactory* magSlideTransitionFactory::instance()