michael@0: michael@0: /* michael@0: * Copyright 2011 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: #include "SkViewPriv.h" michael@0: michael@0: ////////////////////////////////////////////////////////////////////// michael@0: michael@0: void SkView::Artist::draw(SkView* view, SkCanvas* canvas) michael@0: { michael@0: SkASSERT(view && canvas); michael@0: this->onDraw(view, canvas); michael@0: } michael@0: michael@0: void SkView::Artist::inflate(const SkDOM& dom, const SkDOM::Node* node) michael@0: { michael@0: SkASSERT(&dom && node); michael@0: this->onInflate(dom, node); michael@0: } michael@0: michael@0: void SkView::Artist::onInflate(const SkDOM&, const SkDOM::Node*) michael@0: { michael@0: // subclass should override this as needed michael@0: } michael@0: michael@0: SkView::Artist* SkView::getArtist() const michael@0: { michael@0: Artist_SkTagList* rec = (Artist_SkTagList*)this->findTagList(kViewArtist_SkTagList); michael@0: SkASSERT(rec == NULL || rec->fArtist != NULL); michael@0: michael@0: return rec ? rec->fArtist : NULL; michael@0: } michael@0: michael@0: SkView::Artist* SkView::setArtist(Artist* obj) michael@0: { michael@0: if (obj == NULL) michael@0: { michael@0: this->removeTagList(kViewArtist_SkTagList); michael@0: } michael@0: else // add/replace michael@0: { michael@0: Artist_SkTagList* rec = (Artist_SkTagList*)this->findTagList(kViewArtist_SkTagList); michael@0: michael@0: if (rec) michael@0: SkRefCnt_SafeAssign(rec->fArtist, obj); michael@0: else michael@0: this->addTagList(new Artist_SkTagList(obj)); michael@0: } michael@0: return obj; michael@0: } michael@0: michael@0: //////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: void SkView::Layout::layoutChildren(SkView* parent) michael@0: { michael@0: SkASSERT(parent); michael@0: if (parent->width() > 0 && parent->height() > 0) michael@0: this->onLayoutChildren(parent); michael@0: } michael@0: michael@0: void SkView::Layout::inflate(const SkDOM& dom, const SkDOM::Node* node) michael@0: { michael@0: SkASSERT(&dom && node); michael@0: this->onInflate(dom, node); michael@0: } michael@0: michael@0: void SkView::Layout::onInflate(const SkDOM&, const SkDOM::Node*) michael@0: { michael@0: // subclass should override this as needed michael@0: } michael@0: michael@0: SkView::Layout* SkView::getLayout() const michael@0: { michael@0: Layout_SkTagList* rec = (Layout_SkTagList*)this->findTagList(kViewLayout_SkTagList); michael@0: SkASSERT(rec == NULL || rec->fLayout != NULL); michael@0: michael@0: return rec ? rec->fLayout : NULL; michael@0: } michael@0: michael@0: SkView::Layout* SkView::setLayout(Layout* obj, bool invokeLayoutNow) michael@0: { michael@0: if (obj == NULL) michael@0: { michael@0: this->removeTagList(kViewLayout_SkTagList); michael@0: } michael@0: else // add/replace michael@0: { michael@0: Layout_SkTagList* rec = (Layout_SkTagList*)this->findTagList(kViewLayout_SkTagList); michael@0: michael@0: if (rec) michael@0: SkRefCnt_SafeAssign(rec->fLayout, obj); michael@0: else michael@0: this->addTagList(new Layout_SkTagList(obj)); michael@0: } michael@0: michael@0: if (invokeLayoutNow) michael@0: this->invokeLayout(); michael@0: michael@0: return obj; michael@0: }