//------------------------------------------------------------------------------
// emCursor.h
//
// Copyright (C) 2005-2012 Oliver Hamann.
//
// Homepage: http://eaglemode.sourceforge.net/
//
// This program is free software: you can redistribute it and/or modify it under
// the terms of the GNU General Public License version 3 as published by the
// Free Software Foundation.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License version 3 for
// more details.
//
// You should have received a copy of the GNU General Public License version 3
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//------------------------------------------------------------------------------

#ifndef emCursor_h
#define emCursor_h

#ifndef emStd2_h
#include <emCore/emStd2.h>
#endif


//==============================================================================
//================================== emCursor ==================================
//==============================================================================

class emCursor {

public:

        // Class for a mouse cursor.

        //??? Allow custom cursors (e.g. construct from an image and
        //??? hot spot coordinates, or from a file).

        enum {
                // Possible values for the cursor id.
                NORMAL                   = 0,
                INVISIBLE                = 1,
                WAIT                     = 2,
                CROSSHAIR                = 3,
                TEXT                     = 4,
                HAND                     = 5,
                LEFT_RIGHT_ARROW         = 6,
                UP_DOWN_ARROW            = 7,
                LEFT_RIGHT_UP_DOWN_ARROW = 8
        };

        emCursor();
                // Construct a normal cursor.

        emCursor(int cursorId);
                // Construct from a cursor id.

        emCursor(const emCursor & cursor);
                // Copy constructor.

        emCursor & operator = (const emCursor & cursor);
        emCursor & operator = (int cursorId);
                // Copy operators.

        operator int () const;
        int Get() const;
                // Get the cursor id.

        const char * ToString() const;
                // Convert to string representation.

private:

        int CursorId;
};

inline emCursor::emCursor()
{
        CursorId=NORMAL;
}

inline emCursor::emCursor(int cursorId)
{
        CursorId=cursorId;
}

inline emCursor::emCursor(const emCursor & cursor)
{
        CursorId=cursor.CursorId;
}

inline emCursor & emCursor::operator = (const emCursor & cursor)
{
        CursorId=cursor.CursorId;
        return *this;
}

inline emCursor & emCursor::operator = (int cursorId)
{
        CursorId=cursorId;
        return *this;
}

inline emCursor::operator int () const
{
        return CursorId;
}

inline int emCursor::Get() const
{
        return CursorId;
}


#endif