diff options
| author | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2009-11-03 04:00:48 +0000 |
|---|---|---|
| committer | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2009-11-03 04:00:48 +0000 |
| commit | 34245c7871f6339de8cc2be8fb1090ca3cba54ef (patch) | |
| tree | 4ba53bc9e263ba52d9e4fed4bf97917b6cd452bd /samplecode/OverView.cpp | |
| parent | e16a9223fd2a09fb7ba72e20c957bef99cbef4fc (diff) | |
add OVerView slide to samplecode
change inline functions in SkColorPriv.h to static inline
git-svn-id: http://skia.googlecode.com/svn/trunk@415 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/OverView.cpp')
| -rw-r--r-- | samplecode/OverView.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/samplecode/OverView.cpp b/samplecode/OverView.cpp new file mode 100644 index 0000000000..e2abec220f --- /dev/null +++ b/samplecode/OverView.cpp @@ -0,0 +1,91 @@ +#include "SampleCode.h" +#include "SkCanvas.h" +#include "SkView.h" + +static const int N = 8; +const SkScalar W = SkIntToScalar(640); +const SkScalar H = SkIntToScalar(480); + +class OverView : public SkView { +public: + OverView(int count, const SkViewFactory factories[]); + virtual ~OverView(); + +protected: + virtual bool onEvent(const SkEvent&); + virtual void onSizeChange(); + + virtual void onDraw(SkCanvas* canvas) { + canvas->drawColor(SK_ColorLTGRAY); + } + + virtual SkCanvas* beforeChildren(SkCanvas*); + + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "Overview"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + int ix = (int)(SkScalarDiv(x * N, W)); + int iy = (int)(SkScalarDiv(y * N, H)); + if (ix >= 0 && iy >= 0) { + SkEvent evt("set-curr-index"); + evt.setFast32(iy * N + ix); + this->sendEventToParents(evt); + } + return NULL; + } + +private: + int fCount; + const SkViewFactory* fFactories; + + typedef SkView INHERITED; +}; + +SkView* create_overview(int count, const SkViewFactory factories[]); +SkView* create_overview(int count, const SkViewFactory factories[]) { + return SkNEW_ARGS(OverView, (count, factories)); +}; + +OverView::OverView(int count, const SkViewFactory factories[]) { + fCount = count; + fFactories = factories; +} + +OverView::~OverView() { +} + +bool OverView::onEvent(const SkEvent& evt) { + return this->INHERITED::onEvent(evt); +} + +void OverView::onSizeChange() { + this->detachAllChildren(); + + SkScalar locX = 0; + SkScalar locY = 0; + for (int i = 0; i < fCount; i++) { + SkView* view = fFactories[i](); + view->setVisibleP(true); + this->attachChildToBack(view)->unref(); + view->setLoc(locX, locY); + view->setSize(W, H); + locX += W; + if ((i % N) == N - 1) { + locY += H; + locX = 0; + } + } +} + +SkCanvas* OverView::beforeChildren(SkCanvas* canvas) { + canvas->scale(SK_Scalar1 / N, SK_Scalar1 / N); + return canvas; +} + + |
