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