| Index: skia/animator/SkDisplayEvent.cpp
|
| ===================================================================
|
| --- skia/animator/SkDisplayEvent.cpp (revision 16859)
|
| +++ skia/animator/SkDisplayEvent.cpp (working copy)
|
| @@ -1,339 +0,0 @@
|
| -/* libs/graphics/animator/SkDisplayEvent.cpp
|
| -**
|
| -** Copyright 2006, The Android Open Source Project
|
| -**
|
| -** Licensed under the Apache License, Version 2.0 (the "License");
|
| -** you may not use this file except in compliance with the License.
|
| -** You may obtain a copy of the License at
|
| -**
|
| -** http://www.apache.org/licenses/LICENSE-2.0
|
| -**
|
| -** Unless required by applicable law or agreed to in writing, software
|
| -** distributed under the License is distributed on an "AS IS" BASIS,
|
| -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -** See the License for the specific language governing permissions and
|
| -** limitations under the License.
|
| -*/
|
| -
|
| -#include "SkDisplayEvent.h"
|
| -#include "SkAnimateMaker.h"
|
| -#include "SkDisplayApply.h"
|
| -#include "SkDisplayInput.h"
|
| -#include "SkDisplayList.h"
|
| -#ifdef SK_DEBUG
|
| -#include "SkDump.h"
|
| -#endif
|
| -#include "SkEvent.h"
|
| -#include "SkDisplayInput.h"
|
| -#include "SkKey.h"
|
| -#include "SkMetaData.h"
|
| -#include "SkScript.h"
|
| -#include "SkUtils.h"
|
| -
|
| -enum SkDisplayEvent_Properties {
|
| - SK_PROPERTY(key),
|
| - SK_PROPERTY(keys)
|
| -};
|
| -
|
| -#if SK_USE_CONDENSED_INFO == 0
|
| -
|
| -const SkMemberInfo SkDisplayEvent::fInfo[] = {
|
| - SK_MEMBER(code, EventCode),
|
| - SK_MEMBER(disable, Boolean),
|
| - SK_MEMBER_PROPERTY(key, String), // a single key (also last key pressed)
|
| - SK_MEMBER_PROPERTY(keys, String), // a single key or dash-delimited range of keys
|
| - SK_MEMBER(kind, EventKind),
|
| - SK_MEMBER(target, String),
|
| - SK_MEMBER(x, Float),
|
| - SK_MEMBER(y, Float)
|
| -};
|
| -
|
| -#endif
|
| -
|
| -DEFINE_GET_MEMBER(SkDisplayEvent);
|
| -
|
| -SkDisplayEvent::SkDisplayEvent() : code((SkKey) -1), disable(false),
|
| - kind(kUser), x(0), y(0), fLastCode((SkKey) -1), fMax((SkKey) -1), fTarget(NULL) {
|
| -}
|
| -
|
| -SkDisplayEvent::~SkDisplayEvent() {
|
| - deleteMembers();
|
| -}
|
| -
|
| -bool SkDisplayEvent::add(SkAnimateMaker& , SkDisplayable* child) {
|
| - *fChildren.append() = child;
|
| - return true;
|
| -}
|
| -
|
| -bool SkDisplayEvent::contains(SkDisplayable* match) {
|
| - for (int index = 0; index < fChildren.count(); index++) {
|
| - if (fChildren[index] == match || fChildren[index]->contains(match))
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -SkDisplayable* SkDisplayEvent::contains(const SkString& match) {
|
| - for (int index = 0; index < fChildren.count(); index++) {
|
| - SkDisplayable* child = fChildren[index];
|
| - if (child->contains(match))
|
| - return child;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -void SkDisplayEvent::deleteMembers() {
|
| - for (int index = 0; index < fChildren.count(); index++) {
|
| - SkDisplayable* evt = fChildren[index];
|
| - delete evt;
|
| - }
|
| -}
|
| -
|
| -#ifdef SK_DUMP_ENABLED
|
| -void SkDisplayEvent::dumpEvent(SkAnimateMaker* maker) {
|
| - dumpBase(maker);
|
| - SkString str;
|
| - SkDump::GetEnumString(SkType_EventKind, kind, &str);
|
| - SkDebugf("kind=\"%s\" ", str.c_str());
|
| - if (kind == SkDisplayEvent::kKeyPress || kind == SkDisplayEvent::kKeyPressUp) {
|
| - if (code >= 0)
|
| - SkDump::GetEnumString(SkType_EventCode, code, &str);
|
| - else
|
| - str.set("none");
|
| - SkDebugf("code=\"%s\" ", str.c_str());
|
| - }
|
| - if (kind == SkDisplayEvent::kKeyChar) {
|
| - if (fMax != (SkKey) -1 && fMax != code)
|
| - SkDebugf("keys=\"%c - %c\" ", code, fMax);
|
| - else
|
| - SkDebugf("key=\"%c\" ", code);
|
| - }
|
| - if (fTarget != NULL) {
|
| - SkDebugf("target=\"%s\" ", fTarget->id);
|
| - }
|
| - if (kind >= SkDisplayEvent::kMouseDown && kind <= SkDisplayEvent::kMouseUp) {
|
| -#ifdef SK_CAN_USE_FLOAT
|
| - SkDebugf("x=\"%g\" y=\"%g\" ", SkScalarToFloat(x), SkScalarToFloat(y));
|
| -#else
|
| - SkDebugf("x=\"%x\" y=\"%x\" ", x, y);
|
| -#endif
|
| - }
|
| - if (disable)
|
| - SkDebugf("disable=\"true\" ");
|
| - SkDebugf("/>\n");
|
| -}
|
| -#endif
|
| -
|
| -bool SkDisplayEvent::enableEvent(SkAnimateMaker& maker)
|
| -{
|
| - maker.fActiveEvent = this;
|
| - if (fChildren.count() == 0)
|
| - return false;
|
| - if (disable)
|
| - return false;
|
| -#ifdef SK_DUMP_ENABLED
|
| - if (maker.fDumpEvents) {
|
| - SkDebugf("enable: ");
|
| - dumpEvent(&maker);
|
| - }
|
| -#endif
|
| - SkDisplayList& displayList = maker.fDisplayList;
|
| - for (int index = 0; index < fChildren.count(); index++) {
|
| - SkDisplayable* displayable = fChildren[index];
|
| - if (displayable->isGroup()) {
|
| - SkTDDrawableArray* parentList = displayList.getDrawList();
|
| - *parentList->append() = (SkDrawable*) displayable; // make it findable before children are enabled
|
| - }
|
| - if (displayable->enable(maker))
|
| - continue;
|
| - if (maker.hasError())
|
| - return true;
|
| - if (displayable->isDrawable() == false)
|
| - return true; // error
|
| - SkDrawable* drawable = (SkDrawable*) displayable;
|
| - SkTDDrawableArray* parentList = displayList.getDrawList();
|
| - *parentList->append() = drawable;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -bool SkDisplayEvent::getProperty(int index, SkScriptValue* value) const {
|
| - switch (index) {
|
| - case SK_PROPERTY(key):
|
| - case SK_PROPERTY(keys): {
|
| - value->fType = SkType_String;
|
| - char scratch[8];
|
| - SkKey convert = index == SK_PROPERTY(keys) ? code : fLastCode;
|
| - size_t size = convert > 0 ? SkUTF8_FromUnichar(convert, scratch) : 0;
|
| - fKeyString.set(scratch, size);
|
| - value->fOperand.fString = &fKeyString;
|
| - if (index != SK_PROPERTY(keys) || fMax == (SkKey) -1 || fMax == code)
|
| - break;
|
| - value->fOperand.fString->append("-");
|
| - size = SkUTF8_FromUnichar(fMax, scratch);
|
| - value->fOperand.fString->append(scratch, size);
|
| - } break;
|
| - default:
|
| - SkASSERT(0);
|
| - return false;
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void SkDisplayEvent::onEndElement(SkAnimateMaker& maker)
|
| -{
|
| - if (kind == kUser)
|
| - return;
|
| - maker.fEvents.addEvent(this);
|
| - if (kind == kOnEnd) {
|
| - bool found = maker.find(target.c_str(), &fTarget);
|
| - SkASSERT(found);
|
| - SkASSERT(fTarget && fTarget->isAnimate());
|
| - SkAnimateBase* animate = (SkAnimateBase*) fTarget;
|
| - animate->setHasEndEvent();
|
| - }
|
| -}
|
| -
|
| -void SkDisplayEvent::populateInput(SkAnimateMaker& maker, const SkEvent& fEvent) {
|
| - const SkMetaData& meta = fEvent.getMetaData();
|
| - SkMetaData::Iter iter(meta);
|
| - SkMetaData::Type type;
|
| - int number;
|
| - const char* name;
|
| - while ((name = iter.next(&type, &number)) != NULL) {
|
| - if (name[0] == '\0')
|
| - continue;
|
| - SkDisplayable* displayable;
|
| - SkInput* input;
|
| - for (int index = 0; index < fChildren.count(); index++) {
|
| - displayable = fChildren[index];
|
| - if (displayable->getType() != SkType_Input)
|
| - continue;
|
| - input = (SkInput*) displayable;
|
| - if (input->name.equals(name))
|
| - goto found;
|
| - }
|
| - if (!maker.find(name, &displayable) || displayable->getType() != SkType_Input)
|
| - continue;
|
| - input = (SkInput*) displayable;
|
| - found:
|
| - switch (type) {
|
| - case SkMetaData::kS32_Type:
|
| - meta.findS32(name, &input->fInt);
|
| - break;
|
| - case SkMetaData::kScalar_Type:
|
| - meta.findScalar(name, &input->fFloat);
|
| - break;
|
| - case SkMetaData::kPtr_Type:
|
| - SkASSERT(0);
|
| - break; // !!! not handled for now
|
| - case SkMetaData::kString_Type:
|
| - input->string.set(meta.findString(name));
|
| - break;
|
| - default:
|
| - SkASSERT(0);
|
| - }
|
| - }
|
| - // re-evaluate all animators that may have built their values from input strings
|
| - for (SkDisplayable** childPtr = fChildren.begin(); childPtr < fChildren.end(); childPtr++) {
|
| - SkDisplayable* displayable = *childPtr;
|
| - if (displayable->isApply() == false)
|
| - continue;
|
| - SkApply* apply = (SkApply*) displayable;
|
| - apply->refresh(maker);
|
| - }
|
| -}
|
| -
|
| -bool SkDisplayEvent::setProperty(int index, SkScriptValue& value) {
|
| - SkASSERT(index == SK_PROPERTY(key) || index == SK_PROPERTY(keys));
|
| - SkASSERT(value.fType == SkType_String);
|
| - SkString* string = value.fOperand.fString;
|
| - const char* chars = string->c_str();
|
| - int count = SkUTF8_CountUnichars(chars);
|
| - SkASSERT(count >= 1);
|
| - code = (SkKey) SkUTF8_NextUnichar(&chars);
|
| - fMax = code;
|
| - SkASSERT(count == 1 || index == SK_PROPERTY(keys));
|
| - if (--count > 0) {
|
| - SkASSERT(*chars == '-');
|
| - chars++;
|
| - fMax = (SkKey) SkUTF8_NextUnichar(&chars);
|
| - SkASSERT(fMax >= code);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -#ifdef ANDROID
|
| -
|
| -#include "SkMetaData.h"
|
| -#include "SkParse.h"
|
| -#include "SkTextBox.h"
|
| -#include "SkXMLWriter.h"
|
| -
|
| -void SkMetaData::setPtr(char const*, void* ) {}
|
| -void SkMetaData::setS32(char const*, int ) {}
|
| -bool SkEventSink::doEvent(SkEvent const& ) { return false; }
|
| -bool SkXMLParser::parse(SkStream& ) { return false; }
|
| -SkXMLParserError::SkXMLParserError( ) {}
|
| -void SkEvent::setType(char const*, unsigned long ) {}
|
| -bool SkEvent::PostTime(SkEvent*, unsigned int, unsigned int ) { return false; }
|
| -SkEvent::SkEvent(char const* ) {}
|
| -SkEvent::SkEvent(SkEvent const& ) {}
|
| -SkEvent::SkEvent( ) {}
|
| -SkEvent::~SkEvent( ) {}
|
| -bool SkEventSink::onQuery(SkEvent* ) { return false; }
|
| -SkEventSink::SkEventSink( ) {}
|
| -SkEventSink::~SkEventSink( ) {}
|
| -bool SkXMLParser::parse(char const*, unsigned long ) { return false; }
|
| -bool SkXMLParser::parse(SkDOM const&, SkDOMNode const* ) { return false; }
|
| -bool SkEvent::Post(SkEvent*, unsigned int, unsigned int ) { return false; }
|
| -void SkParse::UnitTest( ) {}
|
| -const char* SkMetaData::findString(char const*) const {return 0;}
|
| -bool SkMetaData::findPtr(char const*, void**) const {return false;}
|
| -bool SkMetaData::findS32(char const*, int*) const {return false;}
|
| -bool SkEvent::isType(char const*, unsigned long) const { return false; }
|
| -void SkMetaData::setString(char const*, char const* ) {}
|
| -const char* SkParse::FindNamedColor(char const*, unsigned long, unsigned int* ) {return false; }
|
| -const char* SkMetaData::Iter::next(SkMetaData::Type*, int* ) { return false; }
|
| -SkMetaData::Iter::Iter(SkMetaData const& ) {}
|
| -bool SkMetaData::findScalar(char const*, int*) const {return false;}
|
| -void SkMetaData::reset( ) {}
|
| -void SkEvent::setType(SkString const& ) {}
|
| -bool SkMetaData::findBool(char const*, bool*) const {return false;}
|
| -void SkEvent::getType(SkString*) const {}
|
| -bool SkXMLParser::endElement(char const* ) { return false; }
|
| -bool SkXMLParser::addAttribute(char const*, char const* ) { return false;}
|
| -bool SkXMLParser::startElement(char const* ) { return false;}
|
| -bool SkXMLParser::text(char const*, int ) { return false;}
|
| -bool SkXMLParser::onText(char const*, int ) { return false;}
|
| -SkXMLParser::SkXMLParser(SkXMLParserError* ) {}
|
| -SkXMLParser::~SkXMLParser( ) {}
|
| -SkXMLParserError::~SkXMLParserError( ) {}
|
| -void SkXMLParserError::getErrorString(SkString*) const {}
|
| -void SkTextBox::setSpacing(int, int ) {}
|
| -void SkTextBox::setSpacingAlign(SkTextBox::SpacingAlign ) {}
|
| -void SkTextBox::draw(SkCanvas*, char const*, unsigned long, SkPaint const& ) {}
|
| -void SkTextBox::setBox(SkRect const& ) {}
|
| -void SkTextBox::setMode(SkTextBox::Mode ) {}
|
| -SkTextBox::SkTextBox( ) {}
|
| -void SkMetaData::setScalar(char const*, int ) {}
|
| -const char* SkParse::FindScalar(char const*, int* ) {return 0; }
|
| -const char* SkParse::FindScalars(char const*, int*, int ) {return 0; }
|
| -const char* SkParse::FindHex(char const*, unsigned int* ) {return 0; }
|
| -const char* SkParse::FindS32(char const*, int* ) {return 0; }
|
| -void SkXMLWriter::addAttribute(char const*, char const* ) {}
|
| -void SkXMLWriter::startElement(char const* ) {}
|
| -void SkXMLWriter::doEnd(SkXMLWriter::Elem* ) {}
|
| -SkXMLWriter::Elem* SkXMLWriter::getEnd( ) { return 0; }
|
| -bool SkXMLWriter::doStart(char const*, unsigned long ) { return false; }
|
| -SkXMLWriter::SkXMLWriter(bool ) {}
|
| -SkXMLWriter::~SkXMLWriter( ) {}
|
| -SkMetaData::SkMetaData() {}
|
| -SkMetaData::~SkMetaData() {}
|
| -bool SkEventSink::onEvent(SkEvent const&) {return false;}
|
| -bool SkXMLParser::onEndElement(char const*) {return false;}
|
| -bool SkXMLParser::onAddAttribute(char const*, char const*) {return false;}
|
| -bool SkXMLParser::onStartElement(char const*) {return false;}
|
| -void SkXMLWriter::writeHeader() {}
|
| -
|
| -#endif
|
|
|