#ifndef CMOUSEOBSERVER_HPP
#define CMOUSEOBSERVER_HPP

/**
 * @file CMouseObserver.hpp
 * @brief file of the CMouseObserver class, abstract class to extend, alloy the daugther class to handle mouse event.
 */

/**
 * @brief Abstract class to extend, alloy the daugther class to handle mouse event.
 */
class CMouseObserver {
private:

public:
	/**
     * @brief Handle key down event.
     * @param[in] which The code of the button.
     */
	virtual void onMButtonDown(unsigned int which) = 0;

    /**
     * @brief Handle key up event.
     * @param[in] which The code of the button.
     */
	virtual void onMButtonUp(unsigned int which) = 0;

    /**
     * @brief Handle wheel event.
     * @param[in] x The relative x value.
     * @param[in] y The relative y value.
     */
	virtual void onMWheel(int x, int y) = 0;

    /**
     * @brief Handle move event.
     * @param[in] x The new x value.
     * @param[in] y The new y value.
     * @param[in] xRel The relative x value.
     * @param[in] yRel The relative y value.
     */
	virtual void onMMove(int x, int y, int xRel, int yRel) = 0;
};

#endif