#ifndef Mouse_H
#define Mouse_H

#include "OperatingSystem.h"
#include "ReferenceCounter.h"

namespace Framework
{
    class Image; //! from Image.h
    class Mouse; //! from this file

    namespace MouseId
    {
        const int nichts = 0;
        const int normal = 1;
        const int hand = 2;
        const int warten = 3;
        const int verschieben = 4;
        const int text = 5;
        const int wahgerecht = 6;
        const int senkrecht = 7;
        const int diagonal1 = 8;
        const int diagonal2 = 9;
        const int verboten = 10;
    } // namespace MouseId

    //! This class manages the mouse cursor image.
    //! It is used internally by the framework.
    //! See Globals.h mousePointer
    class Mouse : public virtual ReferenceCounter
    {
    private:
        HCURSOR hMouse;

    public:
        //! Constructor
        DLLEXPORT Mouse();
        //! Loads a mouse cursor from Windows
        //! \param mouseId Values from the MouseId namespace
        //! Example: loadMouse( MouseId::hand );
        DLLEXPORT void loadMouse(int mouseId);
        //! Copies an image and uses it as mouse cursor.
        //! \param mouse The image to use as mouse cursor
        DLLEXPORT void loadMouse(Image* mouse);
        //! Updates the mouse. Called by the framework itself
        DLLEXPORT void update();
        //! returns a handle to the mouse cursor.
        DLLEXPORT HCURSOR getMouseHandle();
    };
} // namespace Framework

#endif