1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project 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 */ 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 88d4dc714da9fc598d48ad3e360870aee622094c4reed@google.com#include "SkPaintPart.h" 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawPaint.h" 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDisplayList.h" 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDump.h" 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkPaintPart::SkPaintPart() : fPaint(NULL) { 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkDisplayable* SkPaintPart::getParent() const { 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return fPaint; 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkPaintPart::setParent(SkDisplayable* parent) { 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkASSERT(parent != NULL); 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (parent->isPaint() == false) 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint = (SkDrawPaint*) parent; 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkDrawMaskFilter 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDrawMaskFilter::add() { 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->maskFilter != (SkDrawMaskFilter*) -1) 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->maskFilter = this; 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->fOwnsMaskFilter = true; 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkMaskFilter* SkDrawMaskFilter::getMaskFilter() { 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkDrawPathEffect 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDrawPathEffect::add() { 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->isPaint()) { 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->pathEffect != (SkDrawPathEffect*) -1) 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->pathEffect = this; 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->fOwnsPathEffect = true; 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 54d6caf2eefd0dc05d0855bf8419bb8d4aca903f6ctomhudson@google.com fPaint->add(NULL, this); 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkPathEffect* SkDrawPathEffect::getPathEffect() { 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkDrawShader 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkShader* SkDrawShader::getShader() { 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// Typeface 708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkDrawTypeface::fInfo[] = { 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SK_MEMBER(fontName, String), 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SK_MEMBER(style, FontStyle) 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkDrawTypeface); 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkDrawTypeface::SkDrawTypeface() : style (SkTypeface::kNormal){ 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDrawTypeface::add() { 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->typeface != (SkDrawTypeface*) -1) 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->typeface = this; 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->fOwnsTypeface = true; 898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 9393c7ee34dc5c8f6bfad65809f4b39f8d00d7f0d4sugoi@google.comvoid SkDrawTypeface::dump(SkAnimateMaker*) { 948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDebugf("%*s<typeface fontName=\"%s\" ", SkDisplayList::fIndent, "", fontName.c_str()); 958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString string; 968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDump::GetEnumString(SkType_FontStyle, style, &string); 978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDebugf("style=\"%s\" />\n", string.c_str()); 988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 100