/*
 * thread.h: The thread for the Atmolight-plugin
 *
 * See the README file for copyright information and how to reach the author.
 *
 * $Id$
 */

#ifndef _ATMO_THREAD__H
#define _ATMO_THREAD__H

// --- cAtmoThread ------------------------------------------------------------

class cAtmoThread : public cThread {
private:
  tColorPacket ColorPacket;
  cAtmoInput  *Input;  // input device
  cAtmoFilter *Filter; // filter
  cAtmoOutput *Output; // output device

  tColorPacket ApplyGamma(tColorPacket ColorPacket);       // apply gamma-correction
  tColorPacket WhiteCalibration(tColorPacket ColorPacket); // apply white-calibration
  void OutputColors(const tColorPacket ColorPacket);       // send filter-output to output-device

  void GetStartMode(void);
protected:
  virtual void Action(void);
public:
  cAtmoThread();
  ~cAtmoThread();
  void SwitchOn(void);  // switch on Atmolight
  void SwitchOff(void); // switch off Atmolight
};

extern cAtmoThread *AtmoThread;

#endif // _ATMO_THREAD__H
