
/*
 * Copyright 2011 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#ifndef SkViewPriv_DEFINED
#define SkViewPriv_DEFINED

#include "SkView.h"
#include "SkTagList.h"

struct Layout_SkTagList : SkTagList {
    SkView::Layout*    fLayout;

    Layout_SkTagList(SkView::Layout* layout)
        : SkTagList(kViewLayout_SkTagList), fLayout(layout)
    {
        SkASSERT(layout);
        layout->ref();
    }
    virtual ~Layout_SkTagList()
    {
        fLayout->unref();
    }
};

struct Artist_SkTagList : SkTagList {
    SkView::Artist*    fArtist;

    Artist_SkTagList(SkView::Artist* artist)
        : SkTagList(kViewArtist_SkTagList), fArtist(artist)
    {
        SkASSERT(artist);
        artist->ref();
    }
    virtual ~Artist_SkTagList()
    {
        fArtist->unref();
    }
};

#endif
