Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(694)

Unified Diff: samplecode/TransitionView.cpp

Issue 850843002: delete the dreaded TransitionView (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « samplecode/TransitionView.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
-}
« no previous file with comments | « samplecode/TransitionView.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698