180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkDrawTo.h"
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkAnimateMaker.h"
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkCanvas.h"
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkDrawBitmap.h"
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#if SK_USE_CONDENSED_INFO == 0
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruconst SkMemberInfo SkDrawTo::fInfo[] = {
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SK_MEMBER(drawOnce, Boolean),
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SK_MEMBER(use, Bitmap)
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruDEFINE_GET_MEMBER(SkDrawTo);
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkDrawTo::SkDrawTo() : drawOnce(false), use(NULL), fDrawnOnce(false) {
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#if 0
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkDrawTo::~SkDrawTo() {
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkASSERT(0);
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querubool SkDrawTo::draw(SkAnimateMaker& maker) {
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    if (fDrawnOnce)
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        return false;
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkCanvas canvas(use->fBitmap);
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkCanvas* save = maker.fCanvas;
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    maker.fCanvas = &canvas;
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    INHERITED::draw(maker);
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    maker.fCanvas = save;
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    fDrawnOnce = drawOnce;
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    return false;
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DUMP_ENABLED
4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkDrawTo::dump(SkAnimateMaker* maker) {
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    dumpBase(maker);
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    dumpAttrs(maker);
5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    if (use)
5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        SkDebugf("use=\"%s\" ", use->id);
5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    dumpDrawables(maker);
5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}
5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
56