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