#pragma once
#ifndef FILMSTRIP_INCLUDED
#define FILMSTRIP_INCLUDED
#include "tw/tw.h"
//#include "tw/scrollbar.h"
#include "tlevel_io.h"
#include "tthread.h"
//=========================================================
// forward declaration
class TScrollbar;
//=========================================================
#undef DVAPI
#undef DVVAR
#ifdef TWIN_EXPORTS
#define DVAPI DV_EXPORT_API
#define DVVAR DV_EXPORT_VAR
#else
#define DVAPI DV_IMPORT_API
#define DVVAR DV_IMPORT_VAR
#endif
class DVAPI TFilmStripPanel : public TWidget
{
protected:
TPoint m_lastPos;
int m_offset;
TScrollbar *m_scrollbar;
TLevelP m_level;
TUINT32 m_loaderId;
TLevelReaderP m_levelReader;
bool m_loaded;
TThread::Mutex m_mutex;
friend class FilmStripLoader;
public:
static const int m_xsize;
static const int m_ysize;
static const int m_frameHeight;
public:
TFilmStripPanel(TWidget *parent, string name = "FilmStripPanel");
~TFilmStripPanel();
void repaint();
void draw();
void leftButtonDown(const TMouseEvent &);
void leftButtonDrag(const TMouseEvent &);
void leftButtonUp(const TMouseEvent &);
void onDrop(string s);
void onTimer(int);
void setScrollbar(TScrollbar *sb);
void setLevel(TLevelP level);
TLevelP getLevel() { return m_level; };
void onScrollbarMove(int value);
void updateScrollbar();
};
class DVAPI TFilmStrip : public TWidget
{
TFilmStripPanel *m_panel;
TScrollbar *m_scrollbar;
public:
TFilmStrip(TWidget *parent, string name = "FilmStrip");
void configureNotify(const TDimension &d);
void drop(string s) { m_panel->onDrop(s); };
};
#endif