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