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

Unified Diff: samplecode/SampleAnimator.cpp

Issue 23137018: Minimal changes to make SampleAnimator do something useful. Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 4 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 | « resources/news.xml ('k') | src/animator/SkDisplayXMLParser.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samplecode/SampleAnimator.cpp
===================================================================
--- samplecode/SampleAnimator.cpp (revision 10872)
+++ samplecode/SampleAnimator.cpp (working copy)
@@ -12,7 +12,10 @@
#include "SkAnimator.h"
#include "SkStream.h"
#include "SkDOM.h"
+#include "SkXMLParser.h"
+#include "gm.h"
+
///////////////////////////////////////////////////////////////////////////////
class SkAnimatorView : public SkView {
@@ -29,14 +32,16 @@
bool decodeStream(SkStream* stream);
protected:
- // overrides
- virtual void onDraw(SkCanvas*);
- virtual bool onQuery(SkEvent* evt);
+ virtual bool onEvent(const SkEvent&) SK_OVERRIDE;
+ virtual void onDraw(SkCanvas*) SK_OVERRIDE;
+ virtual bool onQuery(SkEvent* evt) SK_OVERRIDE;
+ virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) SK_OVERRIDE;
+ virtual bool onClick(Click* click) SK_OVERRIDE;
+
private:
SkString fBaseURI;
SkAnimator* fAnimator;
-
typedef SkView INHERITED;
};
@@ -62,33 +67,15 @@
return this->decodeStream(is);
}
-static const SkDOMNode* find_nodeID(const SkDOM& dom,
- const SkDOMNode* node, const char name[]) {
- if (NULL == node) {
- node = dom.getRootNode();
- }
- do {
- const char* idval = dom.findAttr(node, "id");
- if (idval && !strcmp(idval, name)) {
- return node;
- }
- const SkDOMNode* child = dom.getFirstChild(node);
- if (child) {
- const SkDOMNode* found = find_nodeID(dom, child, name);
- if (found) {
- return found;
- }
- }
- } while ((node = dom.getNextSibling(node)) != NULL);
- return NULL;
-}
-
bool SkAnimatorView::decodeStream(SkStream* stream) {
delete fAnimator;
fAnimator = new SkAnimator;
fAnimator->setURIBase(fBaseURI.c_str());
-#if 0
+#if 1
if (!fAnimator->decodeStream(stream)) {
+ if (fAnimator->getParserError()->hasError()) {
+ SkDebugf("%s\n", fAnimator->getParserErrorString());
+ }
delete fAnimator;
fAnimator = NULL;
return false;
@@ -103,71 +90,78 @@
return false;
}
if (!fAnimator->decodeDOM(dom, root)) {
+ if (fAnimator->getParserError()->hasError()) {
+ SkDebugf("%s\n", fAnimator->getParserErrorString());
+ }
delete fAnimator;
fAnimator = NULL;
return false;
}
- for (int i = 0; i <= 10; i++) {
- SkString name("glyph");
- name.appendS32(i);
- const SkDOM::Node* node = find_nodeID(dom, NULL, name.c_str());
- SkASSERT(node);
- SkRect r;
- dom.findScalar(node, "left", &r.fLeft);
- dom.findScalar(node, "top", &r.fTop);
- dom.findScalar(node, "width", &r.fRight); r.fRight += r.fLeft;
- dom.findScalar(node, "height", &r.fBottom); r.fBottom += r.fTop;
- SkDebugf("--- %s [%g %g %g %g]\n", name.c_str(),
- r.fLeft, r.fTop, r.fRight, r.fBottom);
- }
#endif
return true;
}
#include "SkTime.h"
+bool SkAnimatorView::onEvent(const SkEvent& event) {
+ if (fAnimator) {
+ if (fAnimator->doEvent(event)) {
+ return true;
+ }
+ }
+ return this->INHERITED::onEvent(event);
+}
+
void SkAnimatorView::onDraw(SkCanvas* canvas) {
canvas->drawColor(SK_ColorWHITE);
if (fAnimator) {
- fAnimator->draw(canvas, 0);
-#if 0
- canvas->save();
- canvas->translate(120, 30);
- canvas->scale(0.5, 0.5);
- fAnimator->draw(canvas, 0);
- canvas->restore();
-
- canvas->save();
- canvas->translate(190, 40);
- canvas->scale(0.25, 0.25);
- fAnimator->draw(canvas, 0);
- canvas->restore();
-
+ fAnimator->draw(canvas, SkTime::GetMSecs());
this->inval(NULL);
-#endif
}
}
-bool SkAnimatorView::onQuery(SkEvent* evt) {
- if (SampleCode::TitleQ(*evt)) {
- SampleCode::TitleR(evt, "Animator");
+bool SkAnimatorView::onQuery(SkEvent* event) {
+ if (SampleCode::TitleQ(*event)) {
+ SampleCode::TitleR(event, "Animator");
return true;
}
- return this->INHERITED::onQuery(evt);
+
+ if (fAnimator) {
+ SkUnichar uni;
+ if (SampleCode::CharQ(*event, &uni)) {
+ if (fAnimator->doCharEvent(uni)) {
+ return true;
+ }
+ }
+
+ SkKey key;
+ if (SampleCode::KeyQ(*event, &key)) {
+ if (fAnimator->doKeyEvent(key)) {
+ return true;
+ }
+ }
+ }
+ return this->INHERITED::onQuery(event);
}
+SkView::Click* SkAnimatorView::onFindClickHandler(SkScalar x, SkScalar y) {
+ return new Click(this);
+}
+
+bool SkAnimatorView::onClick(Click* click) {
+ return fAnimator->doClickEvent(click->fState, click->fCurr.fX, click->fCurr.fY);
+}
+
//////////////////////////////////////////////////////////////////////////////
static SkView* MyFactory() {
SkAnimatorView* av = new SkAnimatorView;
-// av->decodeFile("/skimages/test.xml");
-#if 0
- av->setURIBase("/skia/trunk/animations/");
- av->decodeFile("/skia/trunk/animations/checkbox.xml");
-#else
av->setURIBase("/");
- av->decodeFile("/testanim.txt");
-#endif
+ SkString animation = skiagm::GM::GetResourcePath();
+ animation.append("/news.xml");
+ if (!av->decodeFile(animation.c_str())) {
+ SkDebugf("Could not load: %s", animation.c_str());
+ }
return av;
}
« no previous file with comments | « resources/news.xml ('k') | src/animator/SkDisplayXMLParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698