SkPaintPart.cpp revision 8a1c16ff38322f0210116fa7293eb8817c7e477e
18a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/* libs/graphics/animator/SkPaintParts.cpp 28a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** 38a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** Copyright 2006, The Android Open Source Project 48a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** 58a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** Licensed under the Apache License, Version 2.0 (the "License"); 68a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** you may not use this file except in compliance with the License. 78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** You may obtain a copy of the License at 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** http://www.apache.org/licenses/LICENSE-2.0 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** Unless required by applicable law or agreed to in writing, software 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** distributed under the License is distributed on an "AS IS" BASIS, 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** See the License for the specific language governing permissions and 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com** limitations under the License. 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com*/ 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkPaintParts.h" 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawPaint.h" 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDisplayList.h" 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDump.h" 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkPaintPart::SkPaintPart() : fPaint(NULL) { 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkDisplayable* SkPaintPart::getParent() const { 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return fPaint; 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkPaintPart::setParent(SkDisplayable* parent) { 338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkASSERT(parent != NULL); 348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (parent->isPaint() == false) 358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint = (SkDrawPaint*) parent; 378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkDrawMaskFilter 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDrawMaskFilter::add() { 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->maskFilter != (SkDrawMaskFilter*) -1) 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->maskFilter = this; 468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->fOwnsMaskFilter = true; 478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkMaskFilter* SkDrawMaskFilter::getMaskFilter() { 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkDrawPathEffect 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDrawPathEffect::add() { 578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->isPaint()) { 588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->pathEffect != (SkDrawPathEffect*) -1) 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->pathEffect = this; 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->fOwnsPathEffect = true; 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->add(*(SkAnimateMaker*) NULL, this); 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkPathEffect* SkDrawPathEffect::getPathEffect() { 698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// SkDrawShader 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkShader* SkDrawShader::getShader() { 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return NULL; 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com// Typeface 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkDrawTypeface::fInfo[] = { 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SK_MEMBER(fontName, String), 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SK_MEMBER(style, FontStyle) 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkDrawTypeface); 908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkDrawTypeface::SkDrawTypeface() : style (SkTypeface::kNormal){ 928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDrawTypeface::add() { 958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com if (fPaint->typeface != (SkDrawTypeface*) -1) 968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->typeface = this; 988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fPaint->fOwnsTypeface = true; 998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return false; 1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED 1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comvoid SkDrawTypeface::dump(SkAnimateMaker* maker) { 1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDebugf("%*s<typeface fontName=\"%s\" ", SkDisplayList::fIndent, "", fontName.c_str()); 1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkString string; 1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDump::GetEnumString(SkType_FontStyle, style, &string); 1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkDebugf("style=\"%s\" />\n", string.c_str()); 1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 1108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 112