diff options
| author | reed <reed@chromium.org> | 2015-01-13 19:43:04 -0800 |
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2015-01-13 19:43:04 -0800 |
| commit | 63121f0db6ebbefb17f47ec4ec108d77d619fad5 (patch) | |
| tree | d44be87071d015c3b9d079707a4d80904e64c88d /samplecode/TransitionView.cpp | |
| parent | 812c0283b9f9f1b795557f1ee76ae46ce0585d5d (diff) | |
delete the dreaded TransitionView
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/850843002
Diffstat (limited to 'samplecode/TransitionView.cpp')
| -rw-r--r-- | samplecode/TransitionView.cpp | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/samplecode/TransitionView.cpp b/samplecode/TransitionView.cpp deleted file mode 100644 index 3a37172516..0000000000 --- a/samplecode/TransitionView.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ -#include "TransitionView.h" - -#include "OverView.h" -#include "SampleCode.h" -#include "SkView.h" -#include "SkCanvas.h" -#include "SkTime.h" -#include "SkInterpolator.h" - -static const char gIsTransitionQuery[] = "is-transition"; -static const char gReplaceTransitionEvt[] = "replace-transition-view"; - -bool is_transition(SkView* view) { - SkEvent isTransition(gIsTransitionQuery); - return view->doQuery(&isTransition); -} - -class TransitionView : public SampleView { - enum { - // kDurationMS = 500 - kDurationMS = 1 - }; - -public: - TransitionView(SkView* prev, SkView* next, int direction) : fInterp(4, 2){ - fAnimationDirection = (Direction)(1 << (direction % 8)); - - fPrev = prev; - fPrev->setClipToBounds(false); - fPrev->setVisibleP(true); - (void)SampleView::SetUsePipe(fPrev, SkOSMenu::kOffState); - //Not calling unref because fPrev is assumed to have been created, so - //this will result in a transfer of ownership - this->attachChildToBack(fPrev); - - fNext = next; - fNext->setClipToBounds(true); - fNext->setVisibleP(true); - (void)SampleView::SetUsePipe(fNext, SkOSMenu::kOffState); - //Calling unref because next is a newly created view and TransitionView - //is now the sole owner of fNext - this->attachChildToFront(fNext)->unref(); - - fDone = false; - //SkDebugf("--created transition\n"); - } - - ~TransitionView(){ - //SkDebugf("--deleted transition\n"); - } - - virtual void requestMenu(SkOSMenu* menu) { - if (SampleView::IsSampleView(fNext)) - ((SampleView*)fNext)->requestMenu(menu); - } - -protected: - virtual bool onQuery(SkEvent* evt) { - if (SampleCode::TitleQ(*evt)) { - SkString title; - if (SampleCode::RequestTitle(fNext, &title)) { - SampleCode::TitleR(evt, title.c_str()); - return true; - } - return false; - } - if (evt->isType(gIsTransitionQuery)) { - return true; - } - return this->INHERITED::onQuery(evt); - } - virtual bool onEvent(const SkEvent& evt) { - if (evt.isType(gReplaceTransitionEvt)) { - SkView* prev = fPrev; - prev->ref(); - - fPrev->detachFromParent(); - fPrev = (SkView*)SkEventSink::FindSink(evt.getFast32()); - (void)SampleView::SetUsePipe(fPrev, SkOSMenu::kOffState); - //attach the new fPrev and call unref to balance the ref in onDraw - this->attachChildToBack(fPrev)->unref(); - this->inval(NULL); - - SkASSERT(1 == prev->getRefCnt()); - prev->unref(); - return true; - } - if (evt.isType("transition-done")) { - fNext->setLoc(0, 0); - fNext->setClipToBounds(false); - SkEvent* evt = new SkEvent(gReplaceTransitionEvt, - this->getParent()->getSinkID()); - evt->setFast32(fNext->getSinkID()); - //increate ref count of fNext so it survives detachAllChildren - fNext->ref(); - this->detachAllChildren(); - evt->post(); - return true; - } - return this->INHERITED::onEvent(evt); - } - virtual void onDrawBackground(SkCanvas* canvas) {} - virtual void onDrawContent(SkCanvas* canvas) { - if (fDone) - return; - - if (is_overview(fNext) || is_overview(fPrev)) { - fPipeState = SkOSMenu::kOffState; - } - - SkScalar values[4]; - SkInterpolator::Result result = fInterp.timeToValues(SkTime::GetMSecs(), values); - //SkDebugf("transition %x %d pipe:%d\n", this, result, fUsePipe); - //SkDebugf("%f %f %f %f %d\n", values[0], values[1], values[2], values[3], result); - if (SkInterpolator::kNormal_Result == result) { - fPrev->setLocX(values[kPrevX]); - fPrev->setLocY(values[kPrevY]); - fNext->setLocX(values[kNextX]); - fNext->setLocY(values[kNextY]); - this->inval(NULL); - } - else { - (new SkEvent("transition-done", this->getSinkID()))->post(); - fDone = true; - } - } - - virtual void onSizeChange() { - this->INHERITED::onSizeChange(); - - fNext->setSize(this->width(), this->height()); - fPrev->setSize(this->width(), this->height()); - - SkScalar lr = 0, ud = 0; - if (fAnimationDirection & (kLeftDirection|kULDirection|kDLDirection)) - lr = this->width(); - if (fAnimationDirection & (kRightDirection|kURDirection|kDRDirection)) - lr = -this->width(); - if (fAnimationDirection & (kUpDirection|kULDirection|kURDirection)) - ud = this->height(); - if (fAnimationDirection & (kDownDirection|kDLDirection|kDRDirection)) - ud = -this->height(); - - fBegin[kPrevX] = fBegin[kPrevY] = 0; - fBegin[kNextX] = lr; - fBegin[kNextY] = ud; - fNext->setLocX(lr); - fNext->setLocY(ud); - - if (is_transition(fPrev)) - lr = ud = 0; - fEnd[kPrevX] = -lr; - fEnd[kPrevY] = -ud; - fEnd[kNextX] = fEnd[kNextY] = 0; - SkScalar blend[] = { 0.8f, 0.0f, - 0.0f, SK_Scalar1 }; - fInterp.setKeyFrame(0, SkTime::GetMSecs(), fBegin, blend); - fInterp.setKeyFrame(1, SkTime::GetMSecs()+kDurationMS, fEnd, blend); - } - -private: - enum { - kPrevX = 0, - kPrevY = 1, - kNextX = 2, - kNextY = 3 - }; - SkView* fPrev; - SkView* fNext; - bool fDone; - SkInterpolator fInterp; - - enum Direction{ - kUpDirection = 1, - kURDirection = 1 << 1, - kRightDirection = 1 << 2, - kDRDirection = 1 << 3, - kDownDirection = 1 << 4, - kDLDirection = 1 << 5, - kLeftDirection = 1 << 6, - kULDirection = 1 << 7 - }; - - Direction fAnimationDirection; - SkScalar fBegin[4]; - SkScalar fEnd[4]; - - typedef SampleView INHERITED; -}; - -SkView* create_transition(SkView* prev, SkView* next, int direction) { -#ifdef SK_BUILD_FOR_ANDROID - // Disable transitions for Android - return next; -#else - return SkNEW_ARGS(TransitionView, (prev, next, direction)); -#endif -} |
