haiku/headers/os/app/Cursor.h
Stephan Aßmus e59dc33e21 * Added BCursorID enumeration in App Kit's Cursor.h and new constructor which
takes such an id.
 * Reused the existing mechanism to to have hardcoded tokens for the system
   cursors, i.e. removed cursor_which enumeration from ServerProtocol.h and
   used BCursorID where cursor_which was previously used.
 * Reworked CursorManager.h and CursorSet.h accordingly and removed some methods
   that where intended to replace system cursors with client cursors, since
   those would break the reference counting and forget to maintain the cursor
   list.
 * Replaced the cursors in CursorData.h/cpp with the new ones I just designed.
 * Removed HaikuSystemCursor.h and HaikuLogo.h from the source, as those are/were
   no longer used.

I hope I will not get too much beating for this one... :-) I know the new
default cursor is slightly larger, but I believe the old one was just too small.
Also I noticed that the cursor may be slightly too dark, at least the old one
seems noticeably brighter when compared side by side (the new one has a slight
gradient). That is something I may correct at least. Otherwise I hope nothing
is broken, I've tested in QEMU and so far everything works as intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35782 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-07 23:12:34 +00:00

85 lines
2.2 KiB
C++

/*
* Copyright 2006-2009, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CURSOR_H
#define _CURSOR_H
#include <Archivable.h>
#include <InterfaceDefs.h>
enum BCursorID {
B_CURSOR_ID_SYSTEM_DEFAULT = 1,
B_CURSOR_ID_CONTEXT_MENU = 3,
B_CURSOR_ID_COPY = 4,
B_CURSOR_ID_CROSS_HAIR = 5,
B_CURSOR_ID_FOLLOW_LINK = 6,
B_CURSOR_ID_GRAB = 7,
B_CURSOR_ID_GRABBING = 8,
B_CURSOR_ID_HELP = 9,
B_CURSOR_ID_I_BEAM = 2,
B_CURSOR_ID_I_BEAM_HORIZONTAL = 10,
B_CURSOR_ID_MOVE = 11,
B_CURSOR_ID_NO_CURSOR = 12,
B_CURSOR_ID_NOT_ALLOWED = 13,
B_CURSOR_ID_PROGRESS = 14,
B_CURSOR_ID_RESIZE_NORTH = 15,
B_CURSOR_ID_RESIZE_EAST = 16,
B_CURSOR_ID_RESIZE_SOUTH = 17,
B_CURSOR_ID_RESIZE_WEST = 18,
B_CURSOR_ID_RESIZE_NORTH_EAST = 19,
B_CURSOR_ID_RESIZE_NORTH_WEST = 20,
B_CURSOR_ID_RESIZE_SOUTH_EAST = 21,
B_CURSOR_ID_RESIZE_SOUTH_WEST = 22,
B_CURSOR_ID_RESIZE_NORTH_SOUTH = 23,
B_CURSOR_ID_RESIZE_EAST_WEST = 24,
B_CURSOR_ID_RESIZE_NORTH_EAST_SOUTH_WEST = 25,
B_CURSOR_ID_RESIZE_NORTH_WEST_SOUTH_EAST = 26,
B_CURSOR_ID_ZOOM_IN = 27,
B_CURSOR_ID_ZOOM_OUT = 28
};
class BCursor : BArchivable {
public:
BCursor(const void* cursorData);
BCursor(const BCursor& other);
BCursor(BCursorID id);
BCursor(BMessage* data);
virtual ~BCursor();
virtual status_t Archive(BMessage* archive,
bool deep = true) const;
static BArchivable* Instantiate(BMessage* archive);
BCursor& operator=(const BCursor& other);
bool operator==(const BCursor& other) const;
bool operator!=(const BCursor& other) const;
private:
virtual status_t Perform(perform_code d, void* arg);
virtual void _ReservedCursor1();
virtual void _ReservedCursor2();
virtual void _ReservedCursor3();
virtual void _ReservedCursor4();
void _FreeCursorData();
private:
friend class BApplication;
friend class BView;
int32 fServerToken;
bool fNeedToFree;
bool _reservedWasPendingViewCursor;
// Probably bogus because of padding.
uint32 _reserved[6];
};
#endif // _CURSOR_H