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