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
diff --git a/samplecode/OverView.cpp b/samplecode/OverView.cpp
new file mode 100644
index 0000000..e2abec2
--- /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;
+}
+
+