bool SkGridView::onEvent(const SkEvent& evt) { if (evt.isType(SK_EventType_Key)) { switch (evt.getFast32()) { case kUp_SkKey: this->moveSelectionUp(); return true; case kDown_SkKey: this->moveSelectionDown(); return true; case kRight_SkKey: case kOK_SkKey: if (fSource && fCurrIndex >= 0) { SkEvent* evt = fSource->getEvent(fCurrIndex); if (evt) { // augment the event with our local rect (void)this->getCellRect(fCurrIndex, (SkRect*)evt->setScalars("local-rect", 4, NULL)); SkView* view = this->sendEventToParents(*evt); delete evt; return view != NULL; } } break; } } return this->INHERITED::onEvent(evt); }
bool GMSampleView::onEvent(const SkEvent& evt) { if (evt.isType("GMSampleView::showSize")) { fShowSize = SkToBool(evt.getFast32()); return true; } return this->INHERITED::onEvent(evt); }
bool SkListView::onEvent(const SkEvent& evt) { if (evt.isType(SK_EventType_Key)) { switch (evt.getFast32()) { case kUp_SkKey: this->moveSelectionUp(); return true; case kDown_SkKey: this->moveSelectionDown(); return true; case kRight_SkKey: case kOK_SkKey: if (fSource && fCurrIndex >= 0) { SkEvent* evt = fSource->getEvent(fCurrIndex); if (evt) { SkView* view = this->sendEventToParents(*evt); delete evt; return view != NULL; } else // hack to make toggle work { this->dirtyStrCache(); this->inval(NULL); } } break; } } return this->INHERITED::onEvent(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); }
bool SampleCode::KeyQ(const SkEvent& evt, SkKey* outKey) { if (evt.isType(gKeyEvtName, sizeof(gKeyEvtName) - 1)) { if (outKey) { *outKey = (SkKey)evt.getFast32(); } return true; } return false; }
bool SampleCode::CharQ(const SkEvent& evt, SkUnichar* outUni) { if (evt.isType(gCharEvtName, sizeof(gCharEvtName) - 1)) { if (outUni) { *outUni = evt.getFast32(); } return true; } return false; }
bool SampleWindow::onEvent(const SkEvent& evt) { if (evt.isType(ANIMATING_EVENTTYPE)) { if (fAnimating) { this->nextSample(); this->postAnimatingEvent(); } return true; } if (evt.isType("set-curr-index")) { fCurrIndex = evt.getFast32() % fSamples.count(); this->loadView(fSamples[fCurrIndex]()); return true; } return this->INHERITED::onEvent(evt); }
bool SkListView::onEvent(const SkEvent& evt) { if (evt.isType(SK_EventType_Key)) { switch (evt.getFast32()) { case kUp_SkKey: return this->moveSelectionUp(); case kDown_SkKey: return this->moveSelectionDown(); case kRight_SkKey: case kOK_SkKey: this->postWidgetEvent(); return true; default: break; } } return this->INHERITED::onEvent(evt); }
// Callback function for SkEvents used to implement timeouts. bool Global::TimeOutProc(const SkEvent& evt) { // Create a handle scope to keep the temporary object references. HandleScope handleScope(gGlobal->getIsolate()); // Create a local context from our global context. Local<Context> context = gGlobal->getContext(); // Enter the context so all the remaining operations take place there. Context::Scope contextScope(context); // Set up an exception handler before calling the Process function. TryCatch tryCatch; int32_t id = evt.getFast32(); if (gGlobal->fTimeouts.find(gGlobal->fLastTimerID) == gGlobal->fTimeouts.end()) { printf("Not a valid timer ID.\n"); return true; } const int argc = 0; Local<Function> onTimeout = Local<Function>::New(gGlobal->getIsolate(), gGlobal->fTimeouts[id]); Handle<Value> result = onTimeout->Call(context->Global(), argc, NULL); gGlobal->fTimeouts.erase(id); // Handle any exceptions or output. if (result.IsEmpty()) { SkASSERT(tryCatch.HasCaught()); // Print errors that happened during execution. gGlobal->reportException(&tryCatch); } else { SkASSERT(!tryCatch.HasCaught()); if (!result->IsUndefined()) { // If all went well and the result wasn't undefined then print the // returned value. String::Utf8Value str(result); const char* cstr = to_cstring(str); printf("%s\n", cstr); } } return true; }
bool SkAnimator::onEvent(const SkEvent& evt) { #ifdef SK_DEBUG SkAnimator* root = fMaker->getRoot(); if (root == NULL) root = this; if (root->isTrackingEvents()) root->eventDone(evt); #endif if (evt.isType(SK_EventType_OnEnd)) { SkEventState eventState; bool success = evt.findPtr("anim", (void**) &eventState.fDisplayable); SkASSERT(success); success = evt.findS32("time", (int32_t*) &fMaker->fEnableTime); SkASSERT(success); fMaker->fAdjustedStart = fMaker->getAppTime() - fMaker->fEnableTime; fMaker->fEvents.doEvent(*fMaker, SkDisplayEvent::kOnEnd, &eventState); fMaker->fAdjustedStart = 0; goto inval; } if (evt.isType(SK_EventType_Delay)) { fMaker->doDelayedEvent(); goto inval; } { const char* id = evt.findString("id"); if (id == NULL) return false; SkDisplayable** firstMovie = fMaker->fMovies.begin(); SkDisplayable** endMovie = fMaker->fMovies.end(); for (SkDisplayable** ptr = firstMovie; ptr < endMovie; ptr++) { SkDisplayMovie* movie = (SkDisplayMovie*) *ptr; movie->doEvent(evt); } { SkDisplayable* event; if (fMaker->find(id, &event) == false) return false; #if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING SkString debugOut; SkMSec realTime = fMaker->getAppTime(); debugOut.appendS32(realTime - fMaker->fDebugTimeBase); debugOut.append(" onEvent id="); debugOut.append(id); #endif SkMSec time = evt.getFast32(); if (time != 0) { SkMSec app = fMaker->getAppTime(); fMaker->setEnableTime(app, time); #if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING debugOut.append(" time="); debugOut.appendS32(time - fMaker->fDebugTimeBase); debugOut.append(" adjust="); debugOut.appendS32(fMaker->fAdjustedStart); #endif } #if defined SK_DEBUG && defined SK_DEBUG_ANIMATION_TIMING SkDebugf("%s\n", debugOut.c_str()); #endif SkASSERT(event->isEvent()); SkDisplayEvent* displayEvent = (SkDisplayEvent*) event; displayEvent->populateInput(*fMaker, evt); displayEvent->enableEvent(*fMaker); } } inval: fMaker->notifyInval(); return true; }