| Index: samplecode/TransitionView.cpp
|
| diff --git a/samplecode/TransitionView.cpp b/samplecode/TransitionView.cpp
|
| deleted file mode 100644
|
| index 3a3717251637e23c66f28baac6cfc574bb1de1e3..0000000000000000000000000000000000000000
|
| --- 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
|
| -}
|
|
|