|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TCACHEDLEVEL_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define TCACHEDLEVEL_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*
|
|
Toshihiro Shimizu |
890ddd |
PER ORA SI PUO' USARE LA CACHE SOLO CON WINDOWS
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifdef WIN32
|
|
Toshihiro Shimizu |
890ddd |
#include <windows.h></windows.h>
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tfilepath.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "traster.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tthread.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TRASTERIMAGE_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// forward declaration
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TRawDataCodec;
|
|
Toshihiro Shimizu |
890ddd |
class TRasterCodec;
|
|
Toshihiro Shimizu |
890ddd |
class TCachePersist;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*
|
|
Toshihiro Shimizu |
890ddd |
class TCache {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TCache();
|
|
Toshihiro Shimizu |
890ddd |
virtual ~TCache();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool isCached(int frame) const = 0;
|
|
Toshihiro Shimizu |
890ddd |
bool isCached(int starFrame, int endFrame) const = 0; // estremi compresi
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual void putRaster(int frame, const TRasterP &ras) = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual void getRaster(int frame, TRaster32P &ras) const
|
|
Toshihiro Shimizu |
890ddd |
{ getRaster(frame, TRasterP(ras)); }
|
|
Toshihiro Shimizu |
890ddd |
virtual void getRaster(int frame, TRaster64P &ras) const
|
|
Toshihiro Shimizu |
890ddd |
{ getRaster(frame, TRasterP(ras)); }
|
|
Toshihiro Shimizu |
890ddd |
virtual void getRaster(int frame, TRasterYUV422P &ras) const
|
|
Toshihiro Shimizu |
890ddd |
{ getRaster(frame, TRasterP(ras)); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void invalidateAll() = 0;
|
|
Toshihiro Shimizu |
890ddd |
void invalidate(int starFrame, int endFrame) = 0; // estremi compresi
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Toshihiro Shimizu |
890ddd |
virtual void getRaster(int frame, TRasterP &ras) const = 0;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TRamCache : public TCache {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TRamCache();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TDiskCache : public TCache {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TDiskCache();
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void TDiskCache::putRaster(int frame, const TRsterP &ras)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void TDiskCache::getRaster(
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TRAMUncompressedCache : public TRamCache {
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TRAMLzoCache : public TRamCache {
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TDiskUncompressedCache : public TDiskCache {
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TDiskYUV422Cache : public TDiskCache {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TDiskYUV422Cache();
|
|
Toshihiro Shimizu |
890ddd |
~TDiskYUV422Cache();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void putRaster(int frame, const TRasterP &ras);
|
|
Toshihiro Shimizu |
890ddd |
void getRaster(int frame, TRasterYUV422P &ras) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void TRAMUncompressedCache::getRaster(int frame, TRasterP &ras)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TRaster32P ras32(ras.getSize());
|
|
Toshihiro Shimizu |
890ddd |
getRaster(frame, ras32);
|
|
Toshihiro Shimizu |
890ddd |
convert(ras, ras32);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void TRAMUncompressedCache::getRaster(int frame, TRaster32P &ras) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
//....
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TRasterCache
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TRasterCache(TCachePersist *cp);
|
|
Toshihiro Shimizu |
890ddd |
virtual ~TRasterCache();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setMode(const TDimension &size, int bpp);
|
|
Toshihiro Shimizu |
890ddd |
void getMode(TDimension &size, int &bpp) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TRasterP getRaster(int frame) const;
|
|
Toshihiro Shimizu |
890ddd |
bool getBuffer(int frame, UCHAR *&buffer, int &wrap, int &bpp, TDimension &rasDim) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool getRaster(int frame, TRaster32P &ras) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void putRaster(int frame, const TRasterP &ras);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
UCHAR *getRawData(int frame, TINT32 &size, int &lx, int &ly) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool isFrameCached(int frame) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void invalidate();
|
|
Toshihiro Shimizu |
890ddd |
void invalidate(int startFrame, int endFrame);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void enablePrefetch(bool newState);
|
|
Toshihiro Shimizu |
890ddd |
bool isPrefetchEnabled() const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUINT64 getUsedSpace();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Toshihiro Shimizu |
890ddd |
// virtual TRasterP doGetRaster(int frame) = 0;
|
|
Toshihiro Shimizu |
890ddd |
// virtual void doPutRaster(int frame, const TRasterP &ras) = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
class Data;
|
|
Toshihiro Shimizu |
890ddd |
Data *m_data;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TCachePersist
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TCachePersist(TRasterCodec *codec) : m_codec(codec) {}
|
|
Toshihiro Shimizu |
890ddd |
virtual ~TCachePersist() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual void setFrameSize(int lx, int ly, int bpp) = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual TRasterP doGetRaster(int frame) = 0;
|
|
Toshihiro Shimizu |
890ddd |
virtual bool doGetRaster(int frame, TRaster32P &ras) const = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual bool doPutRaster(int frame, const TRasterP &ras) = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual void onInvalidate() = 0;
|
|
Toshihiro Shimizu |
890ddd |
virtual void onInvalidate(int startFrame, int endFrame) = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual UCHAR *getRawData(int frame, TINT32 &size, int &lx, int &ly) = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual TUINT64 getUsedSpace() = 0;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//private:
|
|
Toshihiro Shimizu |
890ddd |
TRasterCodec *m_codec;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TRamCachePersist : public TCachePersist
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TRamCachePersist(TRasterCodec *codec);
|
|
Toshihiro Shimizu |
890ddd |
~TRamCachePersist();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setFrameSize(int lx, int ly, int bpp) {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void onInvalidate();
|
|
Toshihiro Shimizu |
890ddd |
void onInvalidate(int startFrame, int endFrame);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
UCHAR *getRawData(int frame, TINT32 &size, int &lx, int &ly);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUINT64 getUsedSpace();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
TRasterP doGetRaster(int frame);
|
|
Toshihiro Shimizu |
890ddd |
bool doGetRaster(int frame, TRaster32P &ras) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool doPutRaster(int frame, const TRasterP &ras);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
class Imp;
|
|
Toshihiro Shimizu |
890ddd |
Imp *m_imp;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TDiskCachePersist : public TCachePersist
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TDiskCachePersist(TRasterCodec *codec, const TFilePath &fullpath);
|
|
Toshihiro Shimizu |
890ddd |
~TDiskCachePersist();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setFrameSize(int lx, int ly, int bpp);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void onInvalidate();
|
|
Toshihiro Shimizu |
890ddd |
void onInvalidate(int startFrame, int endFrame);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
UCHAR *getRawData(int frame, TINT32 &size, int &lx, int &ly);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUINT64 getUsedSpace();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
TRasterP doGetRaster(int frame);
|
|
Toshihiro Shimizu |
890ddd |
bool doGetRaster(int frame, TRaster32P &ras) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool doPutRaster(int frame, const TRasterP &ras);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
class Imp;
|
|
Toshihiro Shimizu |
890ddd |
Imp *m_imp;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// TDiskCachePersist2 usa il Direct File I/O (acceso al disco non bufferizzato)
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TDiskCachePersist2 : public TCachePersist
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TDiskCachePersist2(TRasterCodec *codec, const TFilePath &fullpath);
|
|
Toshihiro Shimizu |
890ddd |
~TDiskCachePersist2();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setFrameSize(int lx, int ly, int bpp);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void onInvalidate();
|
|
Toshihiro Shimizu |
890ddd |
void onInvalidate(int startFrame, int endFrame);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
UCHAR *getRawData(int frame, TINT32 &size, int &lx, int &ly);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TUINT64 getUsedSpace();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
TRasterP doGetRaster(int frame);
|
|
Toshihiro Shimizu |
890ddd |
bool doGetRaster(int frame, TRaster32P &ras) const;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool doPutRaster(int frame, const TRasterP &ras);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
class Imp;
|
|
Toshihiro Shimizu |
890ddd |
Imp *m_imp;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TCompressedLevel
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TCompressedLevel(const TFilePath &fullpath);
|
|
Toshihiro Shimizu |
890ddd |
~TCompressedLevel();
|
|
Toshihiro Shimizu |
890ddd |
void setSize(TDimension d);
|
|
Toshihiro Shimizu |
890ddd |
void putImage(int frame, const TRaster32P &ras);
|
|
Toshihiro Shimizu |
890ddd |
TRaster32P getImage(int frame);
|
|
Toshihiro Shimizu |
890ddd |
void invalidate(int frame);
|
|
Toshihiro Shimizu |
890ddd |
void invalidateAll();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
TCompressedLevel(); //not implemented
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath m_fullpath;
|
|
Toshihiro Shimizu |
890ddd |
TRawDataCodec *m_codec;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int m_viewFrameMin,
|
|
Toshihiro Shimizu |
890ddd |
m_viewFrameMax;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifdef WIN32
|
|
Toshihiro Shimizu |
890ddd |
HANDLE m_hFile, m_hMap;
|
|
Toshihiro Shimizu |
890ddd |
LPVOID m_fileMapAddress;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int m_xSize, m_ySize;
|
|
Toshihiro Shimizu |
890ddd |
int m_frameSize;
|
|
Toshihiro Shimizu |
890ddd |
SYSTEM_INFO m_systemInfo;
|
|
Toshihiro Shimizu |
890ddd |
__int64 m_mapOffset;
|
|
Toshihiro Shimizu |
890ddd |
static DWORD m_maxViewSize;
|
|
Toshihiro Shimizu |
890ddd |
static DWORD m_maxFileSize;
|
|
Toshihiro Shimizu |
890ddd |
static DWORD m_reallocFileSize;
|
|
Toshihiro Shimizu |
890ddd |
//-------
|
|
Toshihiro Shimizu |
890ddd |
HANDLE initFile(const TFilePath &fname);
|
|
Toshihiro Shimizu |
890ddd |
HANDLE mapFile(HANDLE hFile, ULONGLONG size);
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
static TThread::Mutex m_mutex;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setCurrentView(int frame, bool force = false);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|