• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #include "SkViewPriv.h"
9 
10 //////////////////////////////////////////////////////////////////////
11 
draw(SkView * view,SkCanvas * canvas)12 void SkView::Artist::draw(SkView* view, SkCanvas* canvas)
13 {
14 	SkASSERT(view && canvas);
15 	this->onDraw(view, canvas);
16 }
17 
inflate(const SkDOM & dom,const SkDOM::Node * node)18 void SkView::Artist::inflate(const SkDOM& dom, const SkDOM::Node* node)
19 {
20 	SkASSERT(&dom && node);
21 	this->onInflate(dom, node);
22 }
23 
onInflate(const SkDOM & dom,const SkDOM::Node * node)24 void SkView::Artist::onInflate(const SkDOM& dom, const SkDOM::Node* node)
25 {
26 	// subclass should override this as needed
27 }
28 
getArtist() const29 SkView::Artist* SkView::getArtist() const
30 {
31 	Artist_SkTagList* rec = (Artist_SkTagList*)this->findTagList(kViewArtist_SkTagList);
32 	SkASSERT(rec == NULL || rec->fArtist != NULL);
33 
34 	return rec ? rec->fArtist : NULL;
35 }
36 
setArtist(Artist * obj)37 SkView::Artist* SkView::setArtist(Artist* obj)
38 {
39 	if (obj == NULL)
40 	{
41 		this->removeTagList(kViewArtist_SkTagList);
42 	}
43 	else	// add/replace
44 	{
45 		Artist_SkTagList* rec = (Artist_SkTagList*)this->findTagList(kViewArtist_SkTagList);
46 
47 		if (rec)
48 			SkRefCnt_SafeAssign(rec->fArtist, obj);
49 		else
50 			this->addTagList(new Artist_SkTagList(obj));
51 	}
52 	return obj;
53 }
54 
55 ////////////////////////////////////////////////////////////////////////////////
56 
layoutChildren(SkView * parent)57 void SkView::Layout::layoutChildren(SkView* parent)
58 {
59 	SkASSERT(parent);
60 	if (parent->width() > 0 && parent->height() > 0)
61 		this->onLayoutChildren(parent);
62 }
63 
inflate(const SkDOM & dom,const SkDOM::Node * node)64 void SkView::Layout::inflate(const SkDOM& dom, const SkDOM::Node* node)
65 {
66 	SkASSERT(&dom && node);
67 	this->onInflate(dom, node);
68 }
69 
onInflate(const SkDOM & dom,const SkDOM::Node * node)70 void SkView::Layout::onInflate(const SkDOM& dom, const SkDOM::Node* node)
71 {
72 	// subclass should override this as needed
73 }
74 
getLayout() const75 SkView::Layout* SkView::getLayout() const
76 {
77 	Layout_SkTagList* rec = (Layout_SkTagList*)this->findTagList(kViewLayout_SkTagList);
78 	SkASSERT(rec == NULL || rec->fLayout != NULL);
79 
80 	return rec ? rec->fLayout : NULL;
81 }
82 
setLayout(Layout * obj,bool invokeLayoutNow)83 SkView::Layout* SkView::setLayout(Layout* obj, bool invokeLayoutNow)
84 {
85 	if (obj == NULL)
86 	{
87 		this->removeTagList(kViewLayout_SkTagList);
88 	}
89 	else	// add/replace
90 	{
91 		Layout_SkTagList* rec = (Layout_SkTagList*)this->findTagList(kViewLayout_SkTagList);
92 
93 		if (rec)
94 			SkRefCnt_SafeAssign(rec->fLayout, obj);
95 		else
96 			this->addTagList(new Layout_SkTagList(obj));
97 	}
98 
99 	if (invokeLayoutNow)
100 		this->invokeLayout();
101 
102 	return obj;
103 }
104 
105