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