skia2/include/images/SkMovie.h
mtklein 2766c00fc0 remove SkInstCnt
It's been outclassed by Valgrind and leak sanitizer,
and it seems to be causing problems for external folks building Skia.

I'm not sure why our own builds seem unaffected.

Latest thread:
https://groups.google.com/forum/#!topic/skia-discuss/oj9FsQwwSF0

BUG=skia:

Review URL: https://codereview.chromium.org/1217573002
2015-06-26 11:45:03 -07:00

81 lines
2.0 KiB
C++

/*
* Copyright 2008 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkMovie_DEFINED
#define SkMovie_DEFINED
#include "SkRefCnt.h"
#include "SkCanvas.h"
class SkStreamRewindable;
class SkMovie : public SkRefCnt {
public:
/** Try to create a movie from the stream. If the stream format is not
supported, return NULL.
*/
static SkMovie* DecodeStream(SkStreamRewindable*);
/** Try to create a movie from the specified file path. If the file is not
found, or the format is not supported, return NULL. If a movie is
returned, the stream may be retained by the movie (via ref()) until
the movie is finished with it (by calling unref()).
*/
static SkMovie* DecodeFile(const char path[]);
/** Try to create a movie from the specified memory.
If the format is not supported, return NULL. If a movie is returned,
the data will have been read or copied, and so the caller may free
it.
*/
static SkMovie* DecodeMemory(const void* data, size_t length);
SkMSec duration();
int width();
int height();
int isOpaque();
/** Specify the time code (between 0...duration) to sample a bitmap
from the movie. Returns true if this time code generated a different
bitmap/frame from the previous state (i.e. true means you need to
redraw).
*/
bool setTime(SkMSec);
// return the right bitmap for the current time code
const SkBitmap& bitmap();
protected:
struct Info {
SkMSec fDuration;
int fWidth;
int fHeight;
bool fIsOpaque;
};
virtual bool onGetInfo(Info*) = 0;
virtual bool onSetTime(SkMSec) = 0;
virtual bool onGetBitmap(SkBitmap*) = 0;
// visible for subclasses
SkMovie();
private:
Info fInfo;
SkMSec fCurrTime;
SkBitmap fBitmap;
bool fNeedBitmap;
void ensureInfo();
typedef SkRefCnt INHERITED;
};
#endif