1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc.
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
7bf0001d0472d727266762c5967ec0d919a6df083reed@google.com
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SampleCode.h"
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkView.h"
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCanvas.h"
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCornerPathEffect.h"
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGradientShader.h"
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGraphics.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkImageDecoder.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkPath.h"
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRandom.h"
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRegion.h"
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkShader.h"
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkUtils.h"
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorPriv.h"
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorFilter.h"
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTime.h"
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTypeface.h"
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXfermode.h"
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkStream.h"
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXMLParser.h"
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorPriv.h"
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkImageDecoder.h"
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
31961ddb04a0a7aba843032d829ab867518e52559ereed@google.comclass LinesView : public SampleView {
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
33ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com    LinesView() {}
34ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected:
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    // overrides from SkEventSink
37961ddb04a0a7aba843032d829ab867518e52559ereed@google.com    virtual bool onQuery(SkEvent* evt) {
38961ddb04a0a7aba843032d829ab867518e52559ereed@google.com        if (SampleCode::TitleQ(*evt)) {
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            SampleCode::TitleR(evt, "Lines");
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            return true;
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        }
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return this->INHERITED::onQuery(evt);
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    /*
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com     0x1F * x + 0x1F * (32 - x)
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com     */
48961ddb04a0a7aba843032d829ab867518e52559ereed@google.com    void drawRings(SkCanvas* canvas) {
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->scale(SkIntToScalar(1)/2, SkIntToScalar(1)/2);
50ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
51ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com        SkRect  r;
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkScalar x = SkIntToScalar(10);
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkScalar y = SkIntToScalar(10);
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        r.set(x, y, x + SkIntToScalar(100), y + SkIntToScalar(100));
55ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkPaint paint;
57f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com     //   paint.setAntiAlias(true);
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setStyle(SkPaint::kStroke_Style);
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setStrokeWidth(SkScalarHalf(SkIntToScalar(3)));
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setColor(0xFFFF8800);
61f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com     //   paint.setColor(0xFFFFFFFF);
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->drawRect(r, paint);
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
64ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
65961ddb04a0a7aba843032d829ab867518e52559ereed@google.com    virtual void onDrawContent(SkCanvas* canvas) {
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkBitmap bm;
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkImageDecoder::DecodeFile("/kill.gif", &bm);
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->drawBitmap(bm, 0, 0, NULL);
69ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        this->drawRings(canvas);
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return;
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkPaint paint;
74ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com      //  fAlpha = 0x80;
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setColor(SK_ColorWHITE);
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setAlpha(fAlpha & 0xFF);
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkRect r;
79ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkScalar x = SkIntToScalar(10);
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkScalar y = SkIntToScalar(10);
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        r.set(x, y, x + SkIntToScalar(100), y + SkIntToScalar(100));
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->drawRect(r, paint);
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return;
85ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setColor(0xffffff00);            // yellow
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setStyle(SkPaint::kStroke_Style);
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setStrokeWidth(SkIntToScalar(2));
89ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com
908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//        y += SK_Scalar1/2;
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->drawLine(x, y, x + SkIntToScalar(90), y + SkIntToScalar(90), paint);
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        paint.setAntiAlias(true);              // with anti-aliasing
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        y += SkIntToScalar(10);
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        canvas->drawLine(x, y, x + SkIntToScalar(90), y + SkIntToScalar(90), paint);
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
9936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
100e1ca705cac4b946993f6cbf798e2a0ba27e739f3reed@google.com        fAlpha = SkScalarRoundToInt(y);
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        this->inval(NULL);
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return NULL;
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    int fAlpha;
107961ddb04a0a7aba843032d829ab867518e52559ereed@google.com    typedef SampleView INHERITED;
1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//////////////////////////////////////////////////////////////////////////////
1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkView* MyFactory() { return new LinesView; }
1138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkViewRegister reg(MyFactory);
114