1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/views/SkViewPriv.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,103 @@ 1.4 + 1.5 +/* 1.6 + * Copyright 2011 Google Inc. 1.7 + * 1.8 + * Use of this source code is governed by a BSD-style license that can be 1.9 + * found in the LICENSE file. 1.10 + */ 1.11 +#include "SkViewPriv.h" 1.12 + 1.13 +////////////////////////////////////////////////////////////////////// 1.14 + 1.15 +void SkView::Artist::draw(SkView* view, SkCanvas* canvas) 1.16 +{ 1.17 + SkASSERT(view && canvas); 1.18 + this->onDraw(view, canvas); 1.19 +} 1.20 + 1.21 +void SkView::Artist::inflate(const SkDOM& dom, const SkDOM::Node* node) 1.22 +{ 1.23 + SkASSERT(&dom && node); 1.24 + this->onInflate(dom, node); 1.25 +} 1.26 + 1.27 +void SkView::Artist::onInflate(const SkDOM&, const SkDOM::Node*) 1.28 +{ 1.29 + // subclass should override this as needed 1.30 +} 1.31 + 1.32 +SkView::Artist* SkView::getArtist() const 1.33 +{ 1.34 + Artist_SkTagList* rec = (Artist_SkTagList*)this->findTagList(kViewArtist_SkTagList); 1.35 + SkASSERT(rec == NULL || rec->fArtist != NULL); 1.36 + 1.37 + return rec ? rec->fArtist : NULL; 1.38 +} 1.39 + 1.40 +SkView::Artist* SkView::setArtist(Artist* obj) 1.41 +{ 1.42 + if (obj == NULL) 1.43 + { 1.44 + this->removeTagList(kViewArtist_SkTagList); 1.45 + } 1.46 + else // add/replace 1.47 + { 1.48 + Artist_SkTagList* rec = (Artist_SkTagList*)this->findTagList(kViewArtist_SkTagList); 1.49 + 1.50 + if (rec) 1.51 + SkRefCnt_SafeAssign(rec->fArtist, obj); 1.52 + else 1.53 + this->addTagList(new Artist_SkTagList(obj)); 1.54 + } 1.55 + return obj; 1.56 +} 1.57 + 1.58 +//////////////////////////////////////////////////////////////////////////////// 1.59 + 1.60 +void SkView::Layout::layoutChildren(SkView* parent) 1.61 +{ 1.62 + SkASSERT(parent); 1.63 + if (parent->width() > 0 && parent->height() > 0) 1.64 + this->onLayoutChildren(parent); 1.65 +} 1.66 + 1.67 +void SkView::Layout::inflate(const SkDOM& dom, const SkDOM::Node* node) 1.68 +{ 1.69 + SkASSERT(&dom && node); 1.70 + this->onInflate(dom, node); 1.71 +} 1.72 + 1.73 +void SkView::Layout::onInflate(const SkDOM&, const SkDOM::Node*) 1.74 +{ 1.75 + // subclass should override this as needed 1.76 +} 1.77 + 1.78 +SkView::Layout* SkView::getLayout() const 1.79 +{ 1.80 + Layout_SkTagList* rec = (Layout_SkTagList*)this->findTagList(kViewLayout_SkTagList); 1.81 + SkASSERT(rec == NULL || rec->fLayout != NULL); 1.82 + 1.83 + return rec ? rec->fLayout : NULL; 1.84 +} 1.85 + 1.86 +SkView::Layout* SkView::setLayout(Layout* obj, bool invokeLayoutNow) 1.87 +{ 1.88 + if (obj == NULL) 1.89 + { 1.90 + this->removeTagList(kViewLayout_SkTagList); 1.91 + } 1.92 + else // add/replace 1.93 + { 1.94 + Layout_SkTagList* rec = (Layout_SkTagList*)this->findTagList(kViewLayout_SkTagList); 1.95 + 1.96 + if (rec) 1.97 + SkRefCnt_SafeAssign(rec->fLayout, obj); 1.98 + else 1.99 + this->addTagList(new Layout_SkTagList(obj)); 1.100 + } 1.101 + 1.102 + if (invokeLayoutNow) 1.103 + this->invokeLayout(); 1.104 + 1.105 + return obj; 1.106 +}