#ifndef IFS_SAVER_H
#define IFS_SAVER_H
#include <Locker.h>
#include <add-ons/screen_saver/ScreenSaver.h>
#include <View.h>
#include "IFS.h"
class BCheckBox;
class BSlider;
class IFSSaver : public BScreenSaver, public BHandler {
public:
IFSSaver(BMessage *message,
image_id image);
virtual ~IFSSaver();
virtual void StartConfig(BView *view);
virtual status_t StartSaver(BView *view, bool preview);
virtual void StopSaver();
virtual void DirectConnected(direct_buffer_info* info);
virtual void Draw(BView* view, int32 frame);
virtual void DirectDraw(int32 frame);
virtual status_t SaveState(BMessage* into) const;
virtual void MessageReceived(BMessage* message);
private:
void _Init(BRect bounds);
void _Cleanup();
IFS* fIFS;
bool fIsPreview;
BLocker fLocker;
BCheckBox* fAdditiveCB;
BSlider* fSpeedS;
buffer_info fDirectInfo;
int32 fLastDrawnFrame;
bool fAdditive;
int32 fSpeed;
};
#endif