Blob Blame Raw


#ifndef FRAMEHEAD_GADGET_INCLUDED
#define FRAMEHEAD_GADGET_INCLUDED

#include <QEvent>
#include <QObject>

class QPainter;
class FilmstripFrames;
class QEvent;
class QColor;
class QWidget;

class FrameHeadGadget : public QObject
{
	Q_OBJECT

public:
	enum Action { None,
				  MoveHead,
				  ActivateFos,
				  DeactivateFos,
				  ActivateMos,
				  DeactivateMos };

protected:
	bool m_dragging;
	int m_action;
	int m_highlightedFosFrame;
	int m_buttonPressCellIndex;

	int m_highlightedMosFrame;

public:
	FrameHeadGadget();
	virtual ~FrameHeadGadget();

	void draw(QPainter &p, const QColor &lightColor, const QColor &darkColor);

	void drawPlayingHead(QPainter &p, const QColor &lightColor, const QColor &darkColor);
	//reimpremented in FilmstripFrameHeadGadget
	virtual void drawOnionSkinSelection(QPainter &p, const QColor &lightColor, const QColor &darkColor);

	virtual int getY() const = 0;

	virtual int index2y(int index) const = 0;
	virtual int y2index(int y) const = 0;

	virtual void setCurrentFrame(int index) const = 0;
	virtual int getCurrentFrame() const = 0;

	bool isFos(int frame) const;
	bool isMos(int frame) const;
	void setFos(int frame, bool on);
	void setMos(int frame, bool on);

	//reimpremented in FilmstripFrameHeadGadget
	virtual bool eventFilter(QObject *obj, QEvent *event);
};

class XsheetFrameHeadGadget : public FrameHeadGadget
{
public:
};

class FilmstripFrameHeadGadget : public FrameHeadGadget
{
	FilmstripFrames *m_filmstrip;
	int m_dy;

public:
	FilmstripFrameHeadGadget(FilmstripFrames *filmstrip);

	int getY() const;
	int index2y(int index) const;
	int y2index(int y) const;

	void drawOnionSkinSelection(QPainter &p, const QColor &lightColor, const QColor &darkColor);

	void setCurrentFrame(int index) const;
	int getCurrentFrame() const;

	bool eventFilter(QObject *obj, QEvent *event);
};

#endif