diff --git a/src/prefs/mouse/Jamfile b/src/prefs/mouse/Jamfile index 648d958577..d6fb8ad498 100644 --- a/src/prefs/mouse/Jamfile +++ b/src/prefs/mouse/Jamfile @@ -2,6 +2,10 @@ SubDir OBOS_TOP src prefs mouse ; AddResources Mouse : Mouse.rsrc ; -Preference Mouse : Mouse.cpp MouseSettings.cpp MouseView.cpp MouseWindow.cpp ; +Preference Mouse : + Mouse.cpp + MouseSettings.cpp + MouseView.cpp + MouseWindow.cpp ; LinkSharedOSLibs Mouse : translation be root ; diff --git a/src/prefs/mouse/Mouse.cpp b/src/prefs/mouse/Mouse.cpp index 6bfbb849c4..14318a172b 100644 --- a/src/prefs/mouse/Mouse.cpp +++ b/src/prefs/mouse/Mouse.cpp @@ -1,18 +1,26 @@ -/* - * Mouse.cpp - * Mouse mccall@digitalparadise.co.uk - * - */ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: Mouse.cpp +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : +// Modified : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ #include #include #include "Mouse.h" #include "MouseWindow.h" -#include "MouseSettings.h" -#include "MouseMessages.h" -const char MouseApplication::kMouseApplicationSig[] = "application/x-vnd.OpenBeOS-MOUS"; +const char kMouseApplicationSig[] = "application/x-vnd.OpenBeOS-MOUS"; int main(int, char**) { @@ -24,65 +32,18 @@ int main(int, char**) } MouseApplication::MouseApplication() - :BApplication(kMouseApplicationSig) + :BApplication(kMouseApplicationSig) { + BRect rect(0, 0, 397, 293); + MouseWindow *window = new MouseWindow(rect); + window->MoveTo(window->fSettings.WindowCorner()); - MouseWindow *window; - - fSettings = new MouseSettings(); - - window = new MouseWindow(); - + window->Show(); } -void -MouseApplication::MessageReceived(BMessage *message) -{ - switch(message->what) { - case ERROR_DETECTED: - { - BAlert *errorAlert = new BAlert("Error", "Something has gone wrong!","OK",NULL,NULL,B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT); - errorAlert->Go(); - be_app->PostMessage(B_QUIT_REQUESTED); - } - break; - default: - BApplication::MessageReceived(message); - break; - } -} - -void -MouseApplication::SetWindowCorner(BPoint corner) -{ - fSettings->SetWindowCorner(corner); -} - -void -MouseApplication::SetMouseType(mouse_type type) -{ - fSettings->SetMouseType(type); -} - -void -MouseApplication::SetClickSpeed(bigtime_t click_speed) -{ - fSettings->SetClickSpeed(click_speed); -} - -void -MouseApplication::SetMouseSpeed(int32 speed) -{ - fSettings->SetMouseSpeed(speed); -} void MouseApplication::AboutRequested(void) { (new BAlert("about", "...by Andrew Edward McCall", "Dig Deal"))->Go(); } - -MouseApplication::~MouseApplication() -{ - delete fSettings; -} diff --git a/src/prefs/mouse/Mouse.h b/src/prefs/mouse/Mouse.h index eaa7656202..304fe3250d 100644 --- a/src/prefs/mouse/Mouse.h +++ b/src/prefs/mouse/Mouse.h @@ -1,35 +1,31 @@ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: Mouse.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : +// Modified : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + #ifndef MOUSE_H #define MOUSE_H #include - #include "MouseWindow.h" -#include "MouseSettings.h" class MouseApplication : public BApplication { public: MouseApplication(); - virtual ~MouseApplication(); - void MessageReceived(BMessage *message); - BPoint WindowCorner() const {return fSettings->WindowCorner(); } - void SetWindowCorner(BPoint corner); - int32 MouseType() const {return fSettings->MouseType(); } - void SetMouseType(mouse_type type); - bigtime_t ClickSpeed() const {return fSettings->ClickSpeed(); } - void SetClickSpeed(bigtime_t click_speed); - int32 MouseSpeed() const {return fSettings->MouseSpeed(); } - void SetMouseSpeed(int32 speed); - void AboutRequested(void); - -private: - - static const char kMouseApplicationSig[]; - - MouseSettings *fSettings; - }; #endif diff --git a/src/prefs/mouse/Mouse.rsrc b/src/prefs/mouse/Mouse.rsrc index e611c5f494..eb7fe8120d 100644 Binary files a/src/prefs/mouse/Mouse.rsrc and b/src/prefs/mouse/Mouse.rsrc differ diff --git a/src/prefs/mouse/MouseBitmap.h b/src/prefs/mouse/MouseBitmap.h new file mode 100644 index 0000000000..186ccf2bd5 --- /dev/null +++ b/src/prefs/mouse/MouseBitmap.h @@ -0,0 +1,441 @@ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseBitmap.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + +const int32 kMouseWidth = 57; +const int32 kMouseHeight = 86; +const color_space kMouseColorSpace = B_CMAP8; + +const unsigned char kMouseBits [] = { + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x0f,0x1b,0x1b,0x0b,0x17,0x17,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x0f,0x1b,0x1b,0x0b,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0b,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x0f,0x3f,0x3f,0x3f,0x3f,0x3f, + 0x3f,0x3f,0x0b,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x0f,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x0b, + 0x0b,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x0f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x0b,0x17,0x17, + 0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x0f,0x0f,0x19,0x19,0x19,0x19,0x19, + 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, + 0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19, + 0x19,0x19,0x19,0x19,0x0b,0x0b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f, + 0x1b,0x1b,0x1b,0x0f,0x0f,0x19,0x19,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1c,0x1e, + 0x1c,0x1c,0x0b,0x0b,0x17,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x0f,0x19, + 0x19,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1d,0x1e,0x1e,0x1e,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a, + 0x0b,0x17,0x17,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x0f,0x19,0x1d,0x1e,0x1e,0x3f, + 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, + 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f, + 0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x1b,0x1a,0x19,0x17,0x0b,0x17,0x17, + 0x1b,0x3f,0x3f,0x3f,0x1b,0x0f,0x19,0x1d,0x1e,0x1e,0x3f,0x1e,0x1e,0x1d,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1d, + 0x1e,0x1e,0x1e,0x1d,0x1c,0x1e,0x1e,0x1e,0x1d,0x1c,0x1e,0x1c,0x1c,0x1c,0x1c,0x1b, + 0x1c,0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x17,0x18,0x0b,0x17,0x17,0x1b,0x3f,0x3f,0x3f, + 0x1b,0x0f,0x19,0x1e,0x1d,0x3f,0x1d,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1d,0x1e,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1d,0x1c,0x1e, + 0x1c,0x1e,0x1e,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a, + 0x1a,0x19,0x17,0x17,0x16,0x15,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e, + 0x1e,0x3f,0x1d,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1d,0x1e,0x1e,0x1e,0x1d,0x1e, + 0x1e,0x1e,0x1d,0x1e,0x1e,0x1c,0x1e,0x1d,0x1e,0x1e,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, + 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x17,0x15, + 0x16,0x15,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1e,0x3f,0x1d,0x1c, + 0x1e,0x1e,0x1e,0x1c,0x1d,0x1e,0x1e,0x1e,0x1d,0x1c,0x1e,0x1e,0x1e,0x1d,0x1e,0x1c, + 0x1e,0x1c,0x1e,0x1d,0x1c,0x1c,0x1e,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x15,0x13,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1e,0x1e,0x1d,0x3f,0x1d,0x1e,0x1e,0x1e,0x1c,0x1d, + 0x1e,0x1e,0x1c,0x1c,0x1c,0x1c,0x1e,0x1d,0x1e,0x1c,0x1c,0x1e,0x1e,0x1d,0x1e,0x1c, + 0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1b,0x1a,0x1b,0x1b,0x1a,0x1a, + 0x1a,0x19,0x19,0x19,0x17,0x18,0x15,0x15,0x15,0x13,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1d,0x1e,0x1e,0x3f,0x1c,0x1c,0x1c,0x1c,0x1d,0x1e,0x1e,0x1e,0x1c,0x1c, + 0x1c,0x1c,0x1d,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c, + 0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x18,0x17, + 0x17,0x17,0x17,0x16,0x13,0x12,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1e,0x1d, + 0x1e,0x3f,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1d,0x1c,0x1e,0x1c,0x1c,0x1c,0x1c,0x1e, + 0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a, + 0x1b,0x1a,0x1a,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x17,0x15,0x15, + 0x15,0x13,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1e,0x3f,0x1c,0x1c, + 0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, + 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a, + 0x19,0x1a,0x19,0x19,0x19,0x17,0x17,0x18,0x17,0x15,0x15,0x15,0x13,0x11,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1e,0x1d,0x1e,0x3f,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c, + 0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x19,0x19, + 0x19,0x17,0x17,0x17,0x17,0x16,0x15,0x13,0x15,0x12,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1e,0x1e,0x1d,0x3f,0x1c,0x1c,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c, + 0x1b,0x1c,0x1c,0x1b,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b, + 0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x19,0x19,0x19,0x17,0x17,0x18,0x17, + 0x17,0x15,0x15,0x13,0x12,0x11,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e, + 0x1e,0x3f,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,0x1c, + 0x1c,0x1b,0x1c,0x1b,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a, + 0x19,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x17,0x17,0x18,0x17,0x17,0x15,0x15,0x15,0x13, + 0x13,0x12,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1e,0x3f,0x1c,0x1c, + 0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1c,0x1b,0x1c,0x1c,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19, + 0x19,0x19,0x17,0x17,0x18,0x17,0x17,0x15,0x15,0x15,0x15,0x13,0x12,0x11,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1c,0x3f,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b, + 0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x17,0x17,0x17, + 0x18,0x17,0x17,0x17,0x15,0x15,0x15,0x12,0x13,0x11,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1d,0x1e,0x1e,0x1e,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a, + 0x19,0x1a,0x1a,0x1a,0x19,0x19,0x17,0x17,0x18,0x17,0x17,0x18,0x17,0x17,0x15,0x16, + 0x15,0x15,0x15,0x13,0x12,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e, + 0x1e,0x1c,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x19, + 0x19,0x19,0x19,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x13,0x13,0x13, + 0x12,0x11,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1e,0x1c,0x1c,0x1c, + 0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1b,0x1b,0x1a,0x1b,0x1b,0x1a,0x1b,0x1b,0x1b,0x1a, + 0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x17,0x19,0x19, + 0x18,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x13,0x13,0x13,0x11,0x11,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1e,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a, + 0x1a,0x1a,0x1a,0x1a,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a, + 0x1a,0x1a,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x17,0x17,0x17, + 0x17,0x16,0x15,0x15,0x15,0x13,0x13,0x12,0x12,0x11,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1d,0x1e,0x1e,0x1c,0x1c,0x1c,0x1b,0x1a,0x1b,0x1a,0x1a,0x1a,0x1a,0x1a, + 0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x1a,0x19, + 0x19,0x19,0x19,0x17,0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15, + 0x15,0x13,0x13,0x13,0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1e,0x1d, + 0x1c,0x1c,0x1b,0x1b,0x1c,0x1b,0x1a,0x1b,0x19,0x1a,0x1a,0x19,0x1a,0x19,0x1a,0x19, + 0x1a,0x1a,0x1a,0x19,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x19,0x19,0x19, + 0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x14,0x12,0x12, + 0x11,0x11,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1e,0x1c,0x1c,0x1b, + 0x1b,0x1a,0x1b,0x1a,0x1a,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x1a,0x1a,0x1a, + 0x1a,0x1a,0x1a,0x19,0x19,0x1a,0x19,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x11,0x11,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x15,0x15,0x12,0x11,0x11,0x11,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1d,0x17,0x17,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0b,0x0b,0x10,0x10,0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x17,0x0b, + 0x0b,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x0b,0x0b, + 0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x0b,0x0b,0x1e,0x1e,0x1d,0x1c,0x1b, + 0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x17, + 0x19,0x19,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x16, + 0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x13,0x13,0x18,0x17,0x17,0x0b,0x0b,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x3f,0x1d,0x1c,0x1c,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a, + 0x1a,0x19,0x1a,0x19,0x19,0x18,0x17,0x17,0x19,0x19,0x19,0x18,0x19,0x17,0x19,0x18, + 0x17,0x19,0x17,0x18,0x19,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15, + 0x15,0x15,0x15,0x15,0x14,0x12,0x11,0x12,0x17,0x17,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1d,0x1e,0x1e,0x1c,0x1c,0x1b,0x1b,0x1b,0x1b,0x1a,0x19,0x1a,0x19,0x19, + 0x17,0x18,0x19,0x19,0x17,0x19,0x17,0x18,0x17,0x19,0x19,0x17,0x19,0x19,0x18,0x17, + 0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15,0x15,0x13, + 0x13,0x12,0x12,0x11,0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e, + 0x1e,0x1b,0x1b,0x1c,0x1a,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x17,0x18,0x19, + 0x17,0x17,0x18,0x19,0x17,0x17,0x18,0x17,0x19,0x18,0x19,0x17,0x17,0x18,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x13,0x12,0x12,0x11,0x11, + 0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1c,0x1c,0x1c,0x1b, + 0x1a,0x1a,0x1b,0x1a,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x18,0x17,0x17,0x18,0x17, + 0x17,0x18,0x17,0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x15,0x16, + 0x15,0x15,0x15,0x15,0x15,0x15,0x14,0x12,0x13,0x13,0x12,0x11,0x11,0x10,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a, + 0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x18,0x17, + 0x18,0x17,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x15,0x17,0x15,0x15,0x16,0x15,0x15, + 0x15,0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1c,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x1a,0x19,0x19,0x19, + 0x17,0x17,0x18,0x17,0x17,0x17,0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x18,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x13, + 0x13,0x12,0x12,0x11,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e, + 0x1c,0x1c,0x1b,0x1b,0x1a,0x1b,0x1a,0x19,0x19,0x19,0x19,0x17,0x18,0x17,0x18,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x12,0x12,0x10, + 0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1c,0x1c,0x1c,0x1b,0x1b, + 0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x15,0x15, + 0x16,0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x12,0x12,0x12,0x11,0x10,0x10,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a, + 0x19,0x17,0x19,0x19,0x18,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x17,0x15,0x16,0x15,0x15,0x15,0x15, + 0x13,0x15,0x13,0x12,0x12,0x12,0x11,0x11,0x11,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1d,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x18,0x17, + 0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x17,0x17,0x15,0x17,0x16,0x17,0x17,0x17,0x17, + 0x17,0x15,0x17,0x15,0x15,0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x12,0x12, + 0x12,0x12,0x11,0x11,0x10,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e, + 0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x17,0x18,0x17,0x19,0x18,0x17,0x17,0x17, + 0x17,0x17,0x15,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x17, + 0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x14,0x15,0x13,0x13,0x13,0x12,0x12,0x11,0x10, + 0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1c,0x1c,0x1b,0x1b,0x1b, + 0x1a,0x19,0x19,0x19,0x19,0x19,0x17,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x15, + 0x15,0x17,0x16,0x15,0x15,0x15,0x16,0x15,0x17,0x15,0x15,0x16,0x15,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x14,0x12,0x12,0x12,0x13,0x12,0x12,0x11,0x10,0x0f,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1e,0x1b,0x1b,0x1a,0x1b,0x1a,0x1a,0x19,0x19, + 0x17,0x18,0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x17,0x17,0x15,0x16,0x15,0x15,0x15, + 0x16,0x17,0x15,0x17,0x15,0x15,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x13,0x15, + 0x13,0x13,0x12,0x12,0x12,0x12,0x11,0x11,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1c,0x1d,0x1c,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x19,0x19,0x18,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x16,0x15, + 0x15,0x15,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x12, + 0x12,0x11,0x11,0x10,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1c, + 0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x18,0x17,0x17,0x18,0x17,0x17,0x15,0x17, + 0x17,0x15,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15, + 0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x13,0x13,0x13,0x12,0x12,0x11,0x11,0x11,0x10, + 0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1c,0x1c,0x1b,0x1a,0x1a, + 0x19,0x19,0x19,0x19,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15,0x15, + 0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x16,0x15, + 0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x12,0x12,0x12,0x11,0x11,0x10,0x10,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x19,0x19,0x18, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15, + 0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,0x13,0x13,0x13, + 0x13,0x13,0x13,0x12,0x12,0x11,0x10,0x10,0x10,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1c,0x1c,0x1c,0x1b,0x1b,0x1a,0x19,0x19,0x19,0x17,0x17,0x18,0x17,0x17, + 0x17,0x17,0x17,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, + 0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x13,0x12,0x12, + 0x12,0x11,0x11,0x10,0x10,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1c, + 0x1b,0x1b,0x1a,0x1a,0x19,0x19,0x17,0x17,0x18,0x17,0x17,0x17,0x17,0x15,0x17,0x16, + 0x15,0x15,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x13,0x13,0x13,0x12,0x12,0x11,0x12,0x11,0x10, + 0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1c,0x1b,0x1b,0x1a,0x1a, + 0x19,0x19,0x19,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x15,0x16,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x13,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, + 0x13,0x13,0x13,0x15,0x12,0x12,0x12,0x11,0x12,0x11,0x11,0x10,0x10,0x10,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1c,0x1b,0x1a,0x1a,0x19,0x19,0x19,0x18,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x15, + 0x13,0x15,0x13,0x13,0x15,0x15,0x15,0x13,0x15,0x15,0x15,0x15,0x15,0x14,0x13,0x13, + 0x13,0x12,0x12,0x12,0x11,0x11,0x10,0x10,0x11,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1c,0x1c,0x1b,0x1a,0x1a,0x19,0x19,0x17,0x19,0x17,0x18,0x17,0x17,0x17, + 0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x13,0x15,0x14,0x13,0x13, + 0x15,0x13,0x13,0x13,0x13,0x13,0x14,0x15,0x13,0x15,0x13,0x13,0x13,0x12,0x12,0x11, + 0x11,0x11,0x11,0x10,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1c, + 0x1b,0x1a,0x19,0x1a,0x19,0x18,0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x13,0x15,0x13,0x14,0x13,0x13,0x13,0x13,0x15,0x13,0x13,0x15, + 0x15,0x13,0x14,0x13,0x13,0x13,0x13,0x12,0x13,0x13,0x12,0x11,0x12,0x11,0x11,0x10, + 0x10,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1c,0x1b,0x1a,0x1a,0x19, + 0x19,0x17,0x17,0x17,0x18,0x17,0x17,0x15,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15, + 0x13,0x15,0x15,0x13,0x13,0x13,0x12,0x13,0x13,0x14,0x13,0x13,0x13,0x13,0x13,0x13, + 0x13,0x14,0x13,0x13,0x12,0x12,0x11,0x11,0x12,0x12,0x10,0x10,0x10,0x10,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1d,0x1b,0x1b,0x1a,0x19,0x19,0x18,0x17,0x17,0x17, + 0x17,0x15,0x16,0x17,0x15,0x15,0x15,0x15,0x15,0x13,0x15,0x15,0x14,0x13,0x13,0x13, + 0x13,0x13,0x12,0x13,0x13,0x14,0x13,0x13,0x13,0x12,0x13,0x13,0x13,0x13,0x14,0x13, + 0x13,0x12,0x12,0x12,0x11,0x11,0x11,0x10,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1b,0x1c,0x1b,0x1a,0x19,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x16,0x15, + 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x15,0x14,0x13,0x13,0x13,0x13,0x13,0x12, + 0x12,0x13,0x13,0x14,0x13,0x12,0x12,0x13,0x13,0x12,0x13,0x13,0x12,0x13,0x12,0x11, + 0x11,0x11,0x11,0x10,0x10,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1b, + 0x1a,0x19,0x19,0x19,0x17,0x17,0x17,0x17,0x15,0x15,0x16,0x15,0x15,0x15,0x15,0x15, + 0x15,0x15,0x13,0x13,0x13,0x13,0x13,0x13,0x12,0x14,0x13,0x13,0x13,0x13,0x12,0x12, + 0x13,0x12,0x12,0x13,0x13,0x12,0x12,0x14,0x12,0x12,0x11,0x12,0x11,0x11,0x10,0x10, + 0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1b,0x1c,0x1a,0x19,0x19,0x17, + 0x17,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x15, + 0x12,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x13,0x12,0x12,0x12,0x13,0x12,0x12,0x12,0x11,0x10,0x11,0x10,0x10,0x0f,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1a,0x19,0x19,0x17,0x17,0x17,0x17,0x17,0x17, + 0x16,0x15,0x15,0x15,0x15,0x15,0x13,0x15,0x15,0x15,0x14,0x13,0x13,0x12,0x13,0x12, + 0x12,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x11,0x11,0x10,0x10,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1b,0x1b,0x1a,0x19,0x17,0x17,0x17,0x16,0x17,0x15,0x15,0x15,0x15,0x16, + 0x15,0x13,0x15,0x15,0x13,0x13,0x13,0x13,0x12,0x13,0x12,0x13,0x12,0x12,0x12,0x12, + 0x12,0x12,0x12,0x12,0x11,0x11,0x12,0x12,0x12,0x12,0x11,0x11,0x12,0x12,0x11,0x12, + 0x11,0x11,0x11,0x10,0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1c,0x1a, + 0x19,0x19,0x17,0x17,0x17,0x17,0x16,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x13,0x14, + 0x13,0x13,0x12,0x13,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12, + 0x12,0x11,0x11,0x12,0x11,0x12,0x11,0x11,0x12,0x12,0x12,0x11,0x12,0x11,0x11,0x10, + 0x10,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1b,0x1a,0x19,0x19,0x17,0x17, + 0x15,0x17,0x15,0x16,0x15,0x15,0x15,0x15,0x15,0x13,0x15,0x13,0x13,0x13,0x12,0x14, + 0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x12,0x11,0x12,0x11,0x11,0x12,0x11,0x12,0x12, + 0x11,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10,0x10,0x0f,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1b,0x1a,0x19,0x17,0x17,0x17,0x15,0x15,0x16,0x15, + 0x15,0x15,0x13,0x15,0x13,0x13,0x13,0x12,0x12,0x12,0x14,0x12,0x12,0x12,0x12,0x12, + 0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x0f,0x0f,0x10,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x1a,0x1a,0x19,0x19,0x17,0x15,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x13, + 0x13,0x13,0x14,0x13,0x12,0x12,0x12,0x11,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x12, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x11,0x10, + 0x11,0x11,0x10,0x10,0x0f,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1a,0x19, + 0x17,0x17,0x17,0x15,0x15,0x16,0x15,0x15,0x15,0x13,0x13,0x13,0x13,0x13,0x12,0x12, + 0x12,0x12,0x12,0x12,0x11,0x12,0x11,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x10,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x10,0x11,0x11,0x10,0x10, + 0x0f,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x19,0x1a,0x17,0x17,0x17,0x16, + 0x15,0x15,0x15,0x13,0x15,0x15,0x13,0x13,0x13,0x12,0x13,0x12,0x12,0x11,0x12,0x12, + 0x11,0x12,0x11,0x11,0x11,0x11,0x10,0x11,0x10,0x10,0x11,0x11,0x11,0x10,0x11,0x11, + 0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x0b,0x17, + 0x17,0x3f,0x3f,0x3f,0x0f,0x19,0x1a,0x19,0x17,0x15,0x15,0x15,0x15,0x15,0x15,0x13, + 0x12,0x14,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x10, + 0x11,0x11,0x11,0x10,0x11,0x11,0x10,0x10,0x0f,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f, + 0x0f,0x19,0x19,0x17,0x17,0x16,0x15,0x15,0x15,0x13,0x13,0x12,0x13,0x12,0x12,0x11, + 0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x10, + 0x10,0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x10,0x10, + 0x10,0x10,0x10,0x10,0x10,0x0f,0x0b,0x17,0x17,0x3f,0x3f,0x3f,0x1e,0x0f,0x19,0x17, + 0x17,0x15,0x15,0x15,0x15,0x13,0x13,0x14,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0x11,0x10,0x11,0x10,0x10,0x10, + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f, + 0x10,0x0b,0x17,0x17,0x1b,0x3f,0x3f,0x3f,0x1b,0x0f,0x17,0x17,0x16,0x15,0x15,0x13, + 0x13,0x12,0x13,0x12,0x12,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x10,0x10,0x10,0x11, + 0x10,0x11,0x10,0x11,0x10,0x10,0x10,0x10,0x0f,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x10,0x10,0x10,0x10,0x0f,0x10,0x10,0x0f,0x10,0x10,0x10,0x10,0x10,0x0b,0x17,0x17, + 0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x0f,0x17,0x15,0x13,0x13,0x13,0x12,0x12,0x12,0x12, + 0x11,0x11,0x12,0x11,0x11,0x11,0x10,0x11,0x10,0x11,0x11,0x10,0x10,0x10,0x10,0x10, + 0x10,0x10,0x10,0x10,0x10,0x0f,0x10,0x0f,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,0x0f, + 0x10,0x0f,0x10,0x10,0x0f,0x0f,0x0f,0x10,0x0b,0x17,0x17,0x1b,0x1b,0x3f,0x3f,0x3f, + 0x1b,0x1b,0x0f,0x17,0x15,0x15,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x10,0x10,0x11, + 0x10,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, + 0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x0f,0x0f,0x0f,0x0f,0x10,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x10,0x0f,0x0f,0x0b,0x17,0x17,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x0b, + 0x0b,0x12,0x11,0x12,0x11,0x11,0x10,0x11,0x10,0x10,0x10,0x10,0x10,0x0f,0x10,0x10, + 0x0f,0x0f,0x10,0x10,0x0f,0x0f,0x10,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x10,0x0f,0x0f,0x0f,0x0f,0x0b,0x0b, + 0x17,0x17,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x0b,0x10,0x10, + 0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0f,0x0f,0x10,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x10,0x0f,0x0f,0x0f,0x10,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0b,0x0b,0x17,0x17,0x17,0x1b,0x1b,0x1b, + 0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b, + 0x0b,0x0b,0x0b,0x0b,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17, + 0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x3f,0x3f +}; + + +const int32 kMouseDownWidth = 55; +const int32 kMouseDownHeight = 29; +const color_space kMouseDownColorSpace = B_CMAP8; + +const unsigned char kMouseDownBits [] = { + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08, + 0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08, + 0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0x08, + 0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f,0x1b,0x1b,0x1b,0x1b,0x1b,0x08,0x09,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x06,0x06,0x1b,0x1b,0x1b,0x1b,0x1b,0x3f, + 0x1b,0x1b,0x1b,0x08,0x09,0x11,0x11,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13, + 0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14, + 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x14,0x13,0x13,0x13,0x13,0x11,0x13, + 0x11,0x11,0x06,0x06,0x18,0x1b,0x1b,0x3f,0x1b,0x1b,0x08,0x11,0x11,0x13,0x13,0x15, + 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, + 0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x11,0x11,0x11,0x07,0x17,0x17,0x3f, + 0x1b,0x1b,0x08,0x11,0x13,0x13,0x15,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, + 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, + 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x0f,0x07,0x17,0x3f,0x1b,0x08,0x11,0x13,0x13,0x15,0x13,0x13, + 0x13,0x13,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, + 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x13,0x13,0x13,0x13,0x11,0x13,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x07,0x17,0x3f, + 0x1b,0x08,0x11,0x13,0x15,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, + 0x13,0x14,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x11,0x13, + 0x11,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x0f,0x0f,0x0d,0x0d,0x06,0x3f,0x08,0x11,0x13,0x13,0x15,0x13,0x13,0x13, + 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13, + 0x13,0x11,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0d,0x0d,0x0d,0x06,0x3f, + 0x08,0x11,0x13,0x13,0x15,0x13,0x13,0x11,0x13,0x13,0x13,0x11,0x13,0x13,0x13,0x13, + 0x13,0x11,0x13,0x13,0x13,0x13,0x13,0x11,0x13,0x11,0x13,0x13,0x11,0x11,0x13,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x0f,0x0f,0x0f,0x0d,0x0c,0x06,0x3f,0x08,0x11,0x13,0x13,0x15,0x13,0x13,0x13, + 0x13,0x13,0x11,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x13,0x13,0x13,0x11,0x11,0x13, + 0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0d,0x0d,0x0d,0x0c,0x07,0x3f, + 0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11,0x11,0x11,0x13,0x13,0x13,0x13,0x11,0x11, + 0x11,0x11,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0d,0x0c,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11, + 0x11,0x11,0x11,0x11,0x13,0x11,0x13,0x11,0x11,0x11,0x11,0x13,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0c,0x06,0x3f, + 0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f, + 0x0f,0x0d,0x0d,0x0d,0x0c,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0c,0x0d,0x0b,0x06,0x3f, + 0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0d,0x0d,0x0c,0x0b,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0c,0x0c,0x0b,0x06,0x3f, + 0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d, + 0x0d,0x0d,0x0d,0x0c,0x0b,0x0a,0x07,0x3f,0x08,0x11,0x13,0x13,0x15,0x13,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0b,0x0c,0x0a,0x07,0x3f, + 0x08,0x11,0x13,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0c,0x0b,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x13,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0c,0x0c,0x0c,0x0b,0x0a,0x07,0x3f, + 0x08,0x11,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x0f,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d, + 0x0d,0x0c,0x0c,0x0c,0x0a,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x13,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0d,0x0c,0x0c,0x0b,0x0b,0x0a,0x07,0x3f, + 0x08,0x11,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0c,0x0c,0x0c,0x0a,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0f,0x0f,0x0f,0x0f,0x0d,0x0d,0x0d,0x0d,0x0c,0x0b,0x0b,0x0a,0x0b,0x06,0x3f, + 0x08,0x11,0x13,0x13,0x13,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, + 0x11,0x11,0x11,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0c,0x0c,0x0b,0x0b,0x0b,0x06,0x3f,0x08,0x11,0x13,0x13,0x11,0x0f,0x0f,0x0f, + 0x0f,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f, + 0x0f,0x0e,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0e,0x0f,0x0d,0x0d,0x0d,0x0d,0x0d, + 0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0d,0x0b,0x0b,0x0b,0x0a,0x07,0x3f, + 0x08,0x11,0x13,0x0f,0x0f,0x06,0x07,0x06,0x06,0x07,0x06,0x06,0x07,0x06,0x07,0x06, + 0x06,0x07,0x06,0x06,0x07,0x06,0x07,0x06,0x06,0x07,0x06,0x06,0x07,0x06,0x07,0x06, + 0x06,0x07,0x06,0x06,0x07,0x06,0x07,0x06,0x06,0x07,0x06,0x06,0x07,0x06,0x07,0x06, + 0x06,0x07,0x0a,0x0b,0x0b,0x0a,0x07,0x3f,0x08,0x11,0x0f,0x06,0x07,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e, + 0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x06,0x06,0x0b,0x0b,0x06,0x3f, + 0x08,0x06,0x07,0x1e,0x1e,0x1e,0x1c,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,0x19,0x19,0x19, + 0x17,0x19,0x19,0x19,0x19,0x19,0x19,0x17,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x17, + 0x17,0x18,0x17,0x18,0x17,0x17,0x17,0x15,0x17,0x17,0x17,0x15,0x15,0x15,0x15,0x13, + 0x14,0x17,0x17,0x18,0x06,0x06,0x07,0x3f +}; + + diff --git a/src/prefs/mouse/MouseMessages.h b/src/prefs/mouse/MouseMessages.h index 50ed300b4d..1d46511929 100644 --- a/src/prefs/mouse/MouseMessages.h +++ b/src/prefs/mouse/MouseMessages.h @@ -1,8 +1,17 @@ -/* - - MouseMessages.h - -*/ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseMessages.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ #ifndef MOUSE_MESSAGES_H #define MOUSE_MESSAGES_H @@ -11,11 +20,14 @@ const uint32 BUTTON_DEFAULTS = 'BTde'; const uint32 BUTTON_REVERT = 'BTre'; const uint32 POPUP_MOUSE_TYPE = 'PUmt'; +const uint32 POPUP_MOUSE_FOCUS = 'PUmf'; +const uint32 POPUP_MOUSE_MAP = 'PUmm'; const uint32 DOUBLE_CLICK_TEST_AREA = 'TCte'; const uint32 SLIDER_DOUBLE_CLICK_SPEED = 'SLdc'; const uint32 SLIDER_MOUSE_SPEED = 'SLms'; +const uint32 SLIDER_MOUSE_ACC = 'SLma'; const uint32 ERROR_DETECTED = 'ERor'; diff --git a/src/prefs/mouse/MouseSettings.cpp b/src/prefs/mouse/MouseSettings.cpp index 1b32eaab82..8163d498a7 100644 --- a/src/prefs/mouse/MouseSettings.cpp +++ b/src/prefs/mouse/MouseSettings.cpp @@ -1,9 +1,18 @@ -/* - * MouseSettings.cpp - * Mouse mccall@digitalparadise.co.uk - * - */ - +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseSettings.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + #include #include #include @@ -14,10 +23,11 @@ #include "MouseSettings.h" #include "MouseMessages.h" -const char MouseSettings::kMouseSettingsFile[] = "Mouse_settings"; +const char kMouseSettingsFile[] = "Mouse_settings"; MouseSettings::MouseSettings() { + fInitCheck = B_OK; BPath path; if (find_directory(B_USER_SETTINGS_DIRECTORY,&path) == B_OK) { @@ -25,39 +35,39 @@ MouseSettings::MouseSettings() BFile file(path.Path(), B_READ_ONLY); if (file.InitCheck() == B_OK) { // Now read in the data - if (file.Read(&fSettings, sizeof(mouse_settings)) != sizeof(mouse_settings)) { + // we have to do this because mouse_map counts 16 buttons in OBOS + if ((file.Read(&fSettings.type, sizeof(fSettings.type)) != sizeof(fSettings.type)) + ||(file.Read(&fSettings.map, (3*sizeof(int32))) != (3*sizeof(int32))) + || (file.Read(&fSettings.accel, sizeof(fSettings.accel)) != sizeof(fSettings.accel)) + || (file.Read(&fSettings.click_speed, sizeof(fSettings.click_speed)) != sizeof(fSettings.click_speed))) { if (get_mouse_type((int32*)&fSettings.type) != B_OK) - be_app->PostMessage(ERROR_DETECTED); + fInitCheck = B_ERROR; if (get_mouse_map(&fSettings.map) != B_OK) - be_app->PostMessage(ERROR_DETECTED); - if (get_mouse_speed((int32 *)&fSettings.accel.speed) != B_OK) - be_app->PostMessage(ERROR_DETECTED); + fInitCheck = B_ERROR; + if (get_mouse_speed(&fSettings.accel.speed) != B_OK) + fInitCheck = B_ERROR; if (get_click_speed(&fSettings.click_speed) != B_OK) - be_app->PostMessage(ERROR_DETECTED); + fInitCheck = B_ERROR; } if (file.Read(&fCorner, sizeof(BPoint)) != sizeof(BPoint)) { fCorner.x=50; fCorner.y=50; - } - } - else { + } + } else { if (get_mouse_type((int32*)&fSettings.type) != B_OK) - be_app->PostMessage(ERROR_DETECTED); + fInitCheck = B_ERROR; if (get_mouse_map(&fSettings.map) != B_OK) - be_app->PostMessage(ERROR_DETECTED); - + fInitCheck = B_ERROR; + if (get_mouse_speed(&fSettings.accel.speed) != B_OK) + fInitCheck = B_ERROR; if (get_click_speed(&fSettings.click_speed) != B_OK) - be_app->PostMessage(ERROR_DETECTED); + fInitCheck = B_ERROR; fCorner.x=50; fCorner.y=50; } - } - else - be_app->PostMessage(ERROR_DETECTED); - - printf("Size is : %ld\n",sizeof(mouse_settings)+sizeof(BPoint)); - + } else + fInitCheck = B_ERROR; } MouseSettings::~MouseSettings() @@ -69,31 +79,46 @@ MouseSettings::~MouseSettings() path.Append(kMouseSettingsFile); - BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE); + BFile file(path.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); if (file.InitCheck() == B_OK) { - file.Write(&fSettings, sizeof(mouse_settings)); + // we have to do this because mouse_map counts 16 buttons in OBOS + file.Write(&fSettings.type, sizeof(fSettings.type)); + file.Write(&fSettings.map, 3*sizeof(int32)); + file.Write(&fSettings.accel, sizeof(fSettings.accel)); + file.Write(&fSettings.click_speed, sizeof(fSettings.click_speed)); file.Write(&fCorner, sizeof(BPoint)); } } + +status_t +MouseSettings::InitCheck() +{ + return fInitCheck; +} + + void MouseSettings::SetWindowCorner(BPoint corner) { - fCorner=corner; + fCorner = corner; } + void -MouseSettings::SetMouseType(mouse_type type) +MouseSettings::SetMouseType(int32 type) { - fSettings.type=type; + fSettings.type = type; } + void MouseSettings::SetClickSpeed(bigtime_t click_speed) { - fSettings.click_speed=-(click_speed-1000000); + fSettings.click_speed = -(click_speed-1000000); } + void MouseSettings::SetMouseSpeed(int32 accel) { diff --git a/src/prefs/mouse/MouseSettings.h b/src/prefs/mouse/MouseSettings.h index 4e126ad317..1276c42598 100644 --- a/src/prefs/mouse/MouseSettings.h +++ b/src/prefs/mouse/MouseSettings.h @@ -1,16 +1,24 @@ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseSettings.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + #ifndef MOUSE_SETTINGS_H_ #define MOUSE_SETTINGS_H_ #include #include -typedef enum { - MOUSE_1_BUTTON = 1, - MOUSE_2_BUTTON, - MOUSE_3_BUTTON -} mouse_type; - - typedef struct { bool enabled; // Acceleration on / off int32 accel_factor; // accel factor: 256 = step by 1, 128 = step by 1/2 @@ -18,7 +26,7 @@ typedef struct { } mouse_accel; typedef struct { - mouse_type type; + int32 type; mouse_map map; mouse_accel accel; bigtime_t click_speed; @@ -28,18 +36,19 @@ class MouseSettings{ public : MouseSettings(); ~MouseSettings(); + status_t InitCheck(); BPoint WindowCorner() const { return fCorner; } void SetWindowCorner(BPoint corner); - mouse_type MouseType() const { return fSettings.type; } - void SetMouseType(mouse_type type); + int32 MouseType() const { return fSettings.type; } + void SetMouseType(int32 type); bigtime_t ClickSpeed() const { return -(fSettings.click_speed-1000000); } // -1000000 to correct the Sliders 0-100000 scale void SetClickSpeed(bigtime_t click_speed); int32 MouseSpeed() const { return fSettings.accel.speed; } void SetMouseSpeed(int32 speed); private: - static const char kMouseSettingsFile[]; + status_t fInitCheck; BPoint fCorner; mouse_settings fSettings; }; diff --git a/src/prefs/mouse/MouseView.cpp b/src/prefs/mouse/MouseView.cpp index dcc7dd62de..be1ff8a4d9 100644 --- a/src/prefs/mouse/MouseView.cpp +++ b/src/prefs/mouse/MouseView.cpp @@ -1,8 +1,18 @@ -/* - - MouseView.cpp - -*/ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseView.cpp +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + #include #include #include @@ -13,21 +23,68 @@ #include #include #include +#include +#include #include "MouseView.h" #include "MouseMessages.h" +#include "MouseBitmap.h" + +BoxView::BoxView(BRect rect, MouseView *mouseView) + : BBox(rect, "mouse_box", + B_FOLLOW_LEFT, B_WILL_DRAW,B_FANCY_BORDER), + fMouseView(mouseView) +{ +} + + +void +BoxView::MouseDown(BPoint where) +{ + + int32 index = fMouseView->mouseTypeMenu->IndexOf(fMouseView->mouseTypeMenu->FindMarked()); + + fMouseView->fCurrentButton = -1; + if ((index == 0) && BRect(50,41,105,73).Contains(where)) + fMouseView->fCurrentButton = 0; + else if (index == 1) { + if(BRect(50,41,77,73).Contains(where)) + fMouseView->fCurrentButton = 0; + else if (BRect(77,41,105,73).Contains(where)) + fMouseView->fCurrentButton = 1; + } else { + if(BRect(50,41,68,73).Contains(where)) + fMouseView->fCurrentButton = 0; + else if (BRect(86,41,105,73).Contains(where)) + fMouseView->fCurrentButton = 1; + else if (BRect(68,41,86,73).Contains(where)) + fMouseView->fCurrentButton = 2; + } + + if (fMouseView->fCurrentButton >= 0) { + int32 number = 0; + switch (fMouseView->fCurrentMouseMap.button[fMouseView->fCurrentButton]) { + case B_PRIMARY_MOUSE_BUTTON: number = 0; break; + case B_SECONDARY_MOUSE_BUTTON: number = 1; break; + case B_TERTIARY_MOUSE_BUTTON: number = 2; break; + } + fMouseView->mouseMapMenu->ItemAt(number)->SetMarked(true); + ConvertToScreen(&where); + fMouseView->mouseMapMenu->Go(where, true); + } +} MouseView::MouseView(BRect rect) : BBox(rect, "mouse_view", - B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP, - B_PLAIN_BORDER) + B_FOLLOW_ALL, B_WILL_DRAW | B_FRAME_EVENTS | B_NAVIGABLE_JUMP | B_PULSE_NEEDED, + B_PLAIN_BORDER), + fCurrentButton(-1), + fButtons(0), + fOldButtons(0) { BRect frame; - BButton *button; BTextControl *textcontrol; - BSlider *slider; - BPopUpMenu *popupmenu; BMenuField *menufield; SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); @@ -36,16 +93,25 @@ MouseView::MouseView(BRect rect) fSpeedBitmap = BTranslationUtils::GetBitmap("speed_bmap"); fAccelerationBitmap = BTranslationUtils::GetBitmap("acceleration_bmap"); + // i don't really understand this bitmap SetBits : i have to substract 4 lines and add 15 pixels + BRect mouseRect(0,0,kMouseWidth-1,kMouseHeight-5); + fMouseBitmap = new BBitmap(mouseRect, B_CMAP8); + fMouseBitmap->SetBits(kMouseBits, kMouseWidth*kMouseHeight + 15, 0, kMouseColorSpace); + + BRect mouseDownRect(0,0,kMouseDownWidth-1,kMouseDownHeight-1); + fMouseDownBitmap = new BBitmap(mouseDownRect, B_CMAP8); + fMouseDownBitmap->SetBits(kMouseDownBits, kMouseDownWidth*kMouseDownHeight + 30, 0, kMouseDownColorSpace); + // Add the "Default" button.. frame.Set(10,259,85,279); - button = new BButton(frame,"mouse_defaults","Defaults", new BMessage(BUTTON_DEFAULTS)); - AddChild(button); + defaultButton = new BButton(frame,"mouse_defaults","Defaults", new BMessage(BUTTON_DEFAULTS)); + AddChild(defaultButton); // Add the "Revert" button... frame.Set(92,259,167,279); - button = new BButton(frame,"mouse_revert","Revert", new BMessage(BUTTON_REVERT)); - button->SetEnabled(false); - AddChild(button); + revertButton = new BButton(frame,"mouse_revert","Revert", new BMessage(BUTTON_REVERT)); + revertButton->SetEnabled(false); + AddChild(revertButton); // Create the main box for the controls... frame=Bounds(); @@ -53,58 +119,61 @@ MouseView::MouseView(BRect rect) frame.top=frame.top+11; frame.right=frame.right-11; frame.bottom=frame.bottom-44; - fBox = new BBox(frame,"mouse_box",B_FOLLOW_LEFT,B_WILL_DRAW,B_FANCY_BORDER); + fBox = new BoxView(frame, this); // Add the "Mouse Type" pop up menu - popupmenu = new BPopUpMenu("Mouse Type Menu"); - popupmenu->AddItem(new BMenuItem("1-Button",new BMessage(POPUP_MOUSE_TYPE))); - popupmenu->AddItem(new BMenuItem("2-Button",new BMessage(POPUP_MOUSE_TYPE))); - popupmenu->AddItem(new BMenuItem("3-Button",new BMessage(POPUP_MOUSE_TYPE))); + mouseTypeMenu = new BPopUpMenu("Mouse Type Menu"); + mouseTypeMenu->AddItem(new BMenuItem("1-Button",new BMessage(POPUP_MOUSE_TYPE))); + mouseTypeMenu->AddItem(new BMenuItem("2-Button",new BMessage(POPUP_MOUSE_TYPE))); + mouseTypeMenu->AddItem(new BMenuItem("3-Button",new BMessage(POPUP_MOUSE_TYPE))); - frame.Set(18,10,208,20); - menufield = new BMenuField(frame, "mouse_type", "Mouse Type", popupmenu); - menufield->SetDivider(menufield->Divider() - 30); + frame.Set(17,8,208,20); + menufield = new BMenuField(frame, "mouse_type", "Mouse type", mouseTypeMenu); + menufield->SetDivider(menufield->Divider() - 34); fBox->AddChild(menufield); - // Add the "Mouse Type" pop up menu - popupmenu = new BPopUpMenu("Focus Follows Mouse Menu"); - popupmenu->AddItem(new BMenuItem("Disabled",new BMessage(BUTTON_REVERT))); - popupmenu->AddItem(new BMenuItem("Enabled",new BMessage(BUTTON_REVERT))); - popupmenu->AddItem(new BMenuItem("Warping",new BMessage(BUTTON_REVERT))); - popupmenu->AddItem(new BMenuItem("Instant-Warping",new BMessage(BUTTON_REVERT))); + // Add the "Focus follows mouse" pop up menu + focusMenu = new BPopUpMenu("Focus Follows Mouse Menu"); + focusMenu->AddItem(new BMenuItem("Disabled",new BMessage(POPUP_MOUSE_FOCUS))); + focusMenu->AddItem(new BMenuItem("Enabled",new BMessage(POPUP_MOUSE_FOCUS))); + focusMenu->AddItem(new BMenuItem("Warping",new BMessage(POPUP_MOUSE_FOCUS))); + focusMenu->AddItem(new BMenuItem("Instant-Warping",new BMessage(POPUP_MOUSE_FOCUS))); - frame.Set(168,207,440,200); - menufield = new BMenuField(frame, "Focus follows mouse", "Focus follows mouse:", popupmenu); - menufield->SetDivider(menufield->Divider() - 30); + frame.Set(165,208,440,200); + menufield = new BMenuField(frame, "Focus follows mouse", "Focus follows mouse:", focusMenu); + menufield->SetDivider(menufield->Divider() - 32); fBox->AddChild(menufield); // Create the "Double-click speed slider... - frame.Set(168,10,328,50); - slider = new BSlider(frame,"double_click_speed","Double-click speed", new BMessage(SLIDER_DOUBLE_CLICK_SPEED),0,1000000,B_BLOCK_THUMB,B_FOLLOW_LEFT,B_WILL_DRAW); - slider->SetHashMarks(B_HASH_MARKS_BOTTOM); - slider->SetHashMarkCount(5); - slider->SetLimitLabels("Slow","Fast"); - fBox->AddChild(slider); + frame.Set(166,11,328,50); + dcSpeedSlider = new BSlider(frame,"double_click_speed","Double-click speed", + new BMessage(SLIDER_DOUBLE_CLICK_SPEED),0,1000,B_BLOCK_THUMB,B_FOLLOW_LEFT,B_WILL_DRAW); + dcSpeedSlider->SetHashMarks(B_HASH_MARKS_BOTTOM); + dcSpeedSlider->SetHashMarkCount(5); + dcSpeedSlider->SetLimitLabels("Slow","Fast"); + fBox->AddChild(dcSpeedSlider); // Create the "Mouse Speed" slider... - frame.Set(168,75,328,125); - slider = new BSlider(frame,"mouse_speed","Mouse Speed", new BMessage(SLIDER_MOUSE_SPEED),8192,524287,B_BLOCK_THUMB,B_FOLLOW_LEFT,B_WILL_DRAW); - slider->SetHashMarks(B_HASH_MARKS_BOTTOM); - slider->SetHashMarkCount(7); - slider->SetLimitLabels("Slow","Fast"); - fBox->AddChild(slider); + frame.Set(166,76,328,125); + mouseSpeedSlider = new BSlider(frame,"mouse_speed","Mouse Speed", + new BMessage(SLIDER_MOUSE_SPEED),0,1000,B_BLOCK_THUMB,B_FOLLOW_LEFT,B_WILL_DRAW); + mouseSpeedSlider->SetHashMarks(B_HASH_MARKS_BOTTOM); + mouseSpeedSlider->SetHashMarkCount(7); + mouseSpeedSlider->SetLimitLabels("Slow","Fast"); + fBox->AddChild(mouseSpeedSlider); // Create the "Mouse Acceleration" slider... - frame.Set(168,140,328,190); - slider = new BSlider(frame,"mouse_acceleration","Mouse Acceleration", new BMessage(SLIDER_MOUSE_SPEED),250000,1000000,B_BLOCK_THUMB,B_FOLLOW_LEFT,B_WILL_DRAW); - slider->SetHashMarks(B_HASH_MARKS_BOTTOM); - slider->SetHashMarkCount(5); - slider->SetLimitLabels("Slow","Fast"); - fBox->AddChild(slider); + frame.Set(166,141,328,190); + mouseAccSlider = new BSlider(frame,"mouse_acceleration","Mouse Acceleration", + new BMessage(SLIDER_MOUSE_ACC),0,1000,B_BLOCK_THUMB,B_FOLLOW_LEFT,B_WILL_DRAW); + mouseAccSlider->SetHashMarks(B_HASH_MARKS_BOTTOM); + mouseAccSlider->SetHashMarkCount(5); + mouseAccSlider->SetLimitLabels("Slow","Fast"); + fBox->AddChild(mouseAccSlider); // Create the "Double-click test area" text box... frame=fBox->Bounds(); - frame.left=frame.left+10; + frame.left=frame.left+9; frame.right=frame.right-230; frame.top=frame.bottom-30; textcontrol = new BTextControl(frame,"double_click_test_area",NULL,"Double-click test area", new BMessage(DOUBLE_CLICK_TEST_AREA),B_FOLLOW_LEFT,B_WILL_DRAW); @@ -113,25 +182,198 @@ MouseView::MouseView(BRect rect) AddChild(fBox); + mouseMapMenu = new BPopUpMenu("Mouse Map Menu", true, true); + mouseMapMenu->AddItem(new BMenuItem("1",new BMessage(POPUP_MOUSE_MAP))); + mouseMapMenu->AddItem(new BMenuItem("2",new BMessage(POPUP_MOUSE_MAP))); + mouseMapMenu->AddItem(new BMenuItem("3",new BMessage(POPUP_MOUSE_MAP))); + } -void MouseView::Draw(BRect updateFrame) + +void +MouseView::AttachedToWindow() +{ + get_click_speed(&fClickSpeed); + get_mouse_speed(&fMouseSpeed); + get_mouse_acceleration(&fMouseAcc); + get_mouse_type(&fMouseType); + fMouseMode = mouse_mode(); + get_mouse_map(&fMouseMap); + get_mouse_map(&fCurrentMouseMap); + Init(); + + mouseMapMenu->SetTargetForItems( this->Window() ); +} + + +void +MouseView::Pulse() +{ + BPoint point; + GetMouse(&point, &fButtons, true); + + if (fOldButtons != fButtons) { + Invalidate(); + fOldButtons = fButtons; + } +} + + +void +MouseView::Draw(BRect updateFrame) { inherited::Draw(updateFrame); fBox->SetHighColor(120,120,120); fBox->SetLowColor(255,255,255); // Line above the test area - fBox->StrokeLine(BPoint(10,199),BPoint(150,199),B_SOLID_HIGH); - fBox->StrokeLine(BPoint(11,200),BPoint(150,200),B_SOLID_LOW); + fBox->StrokeLine(BPoint(8,198),BPoint(149,198),B_SOLID_HIGH); + fBox->StrokeLine(BPoint(8,199),BPoint(149,199),B_SOLID_LOW); // Line above focus follows mouse - fBox->StrokeLine(BPoint(170,199),BPoint(362,199),B_SOLID_HIGH); - fBox->StrokeLine(BPoint(171,200),BPoint(362,200),B_SOLID_LOW); + fBox->StrokeLine(BPoint(164,198),BPoint(367,198),B_SOLID_HIGH); + fBox->StrokeLine(BPoint(164,199),BPoint(367,199),B_SOLID_LOW); // Line in the middle - fBox->StrokeLine(BPoint(160,10),BPoint(160,230),B_SOLID_HIGH); - fBox->StrokeLine(BPoint(161,11),BPoint(161,230),B_SOLID_LOW); - //Draw the icons - fBox->DrawBitmap(fDoubleClickBitmap,BPoint(341,20)); - fBox->DrawBitmap(fSpeedBitmap,BPoint(331,90)); - fBox->DrawBitmap(fAccelerationBitmap,BPoint(331,155)); + fBox->StrokeLine(BPoint(156,10),BPoint(156,230),B_SOLID_HIGH); + fBox->StrokeLine(BPoint(157,11),BPoint(157,230),B_SOLID_LOW); + // Draw the icons + fBox->DrawBitmap(fDoubleClickBitmap,BPoint(344,16)); + fBox->DrawBitmap(fSpeedBitmap,BPoint(333,90)); + fBox->DrawBitmap(fAccelerationBitmap,BPoint(333,155)); + fBox->SetDrawingMode(B_OP_OVER); + + // Draw the mouse top + fBox->DrawBitmap(fMouseBitmap,BPoint(50, 41)); + int32 index = mouseTypeMenu->IndexOf(mouseTypeMenu->FindMarked()); + if (index == 0) { // 1 button + if (fButtons & fCurrentMouseMap.button[0]) { + fBox->DrawBitmap(fMouseDownBitmap,BPoint(50, 47)); + fBox->SetHighColor(64,64,64); + } + } else if (index == 1) { // 2 button + if ( fButtons & fCurrentMouseMap.button[0]) { + fBox->DrawBitmap(fMouseDownBitmap, BRect(0,0,27,28), BRect(50,47,77,75)); + fBox->SetHighColor(120,120,120); + } else + fBox->SetHighColor(184,184,184); + fBox->StrokeLine(BPoint(76,49),BPoint(76,71),B_SOLID_HIGH); + + if (fButtons & fCurrentMouseMap.button[1]) { + fBox->SetHighColor(120,120,120); + fBox->DrawBitmap(fMouseDownBitmap, BRect(27,0,54,28), BRect(77,47,104,75)); + } else + fBox->SetHighColor(255,255,255); + fBox->StrokeLine(BPoint(78,49),BPoint(78,71),B_SOLID_HIGH); + + if ((fButtons & fCurrentMouseMap.button[0]) || (fButtons & fCurrentMouseMap.button[1])) + fBox->SetHighColor(48,48,48); + else + fBox->SetHighColor(88,88,88); + fBox->StrokeLine(BPoint(77,48),BPoint(77,72),B_SOLID_HIGH); + + } else { // 3 button + if ( fButtons & fCurrentMouseMap.button[0]) { + fBox->DrawBitmap(fMouseDownBitmap, BRect(0,0,18,28), BRect(50,47,68,75)); + fBox->SetHighColor(120,120,120); + } else + fBox->SetHighColor(184,184,184); + fBox->StrokeLine(BPoint(67,49),BPoint(67,71),B_SOLID_HIGH); + + if (fButtons & fCurrentMouseMap.button[2]) { + fBox->DrawBitmap(fMouseDownBitmap, BRect(18,0,36,28), BRect(68,47,86,75)); + fBox->SetHighColor(120,120,120); + } else + fBox->SetHighColor(184,184,184); + fBox->StrokeLine(BPoint(85,49),BPoint(85,71),B_SOLID_HIGH); + + if (fButtons & fCurrentMouseMap.button[2]) + fBox->SetHighColor(120,120,120); + else + fBox->SetHighColor(255,255,255); + fBox->StrokeLine(BPoint(69,49),BPoint(69,71),B_SOLID_HIGH); + + if (fButtons & fCurrentMouseMap.button[1]) { + fBox->DrawBitmap(fMouseDownBitmap, BRect(36,0,54,28), BRect(86,47,104,75)); + fBox->SetHighColor(120,120,120); + } else + fBox->SetHighColor(255,255,255); + fBox->StrokeLine(BPoint(87,49),BPoint(87,71),B_SOLID_HIGH); + + if ((fButtons & fCurrentMouseMap.button[0]) || (fButtons & fCurrentMouseMap.button[2])) + fBox->SetHighColor(48,48,48); + else + fBox->SetHighColor(88,88,88); + fBox->StrokeLine(BPoint(68,48),BPoint(68,72),B_SOLID_HIGH); + + if ((fButtons & fCurrentMouseMap.button[2]) || (fButtons & fCurrentMouseMap.button[1])) + fBox->SetHighColor(48,48,48); + else + fBox->SetHighColor(88,88,88); + fBox->StrokeLine(BPoint(86,48),BPoint(86,72),B_SOLID_HIGH); + + } + + fBox->SetHighColor(32,32,32); + fBox->SetFont(be_plain_font); + for(int32 i=0; iMovePenTo(offsets[index][i], 65); + fBox->DrawString(number); + } + + fBox->SetDrawingMode(B_OP_COPY); } + + +void +MouseView::Init() +{ + int32 value; + // slow = 1000000, fast = 0 + value = (int32) ((1000000 - fClickSpeed) / 1000); + if (value > 1000) value = 1000; + if (value < 0) value = 0; + dcSpeedSlider->SetValue(value); + + // slow = 8192, fast = 524287 + value = (int32) (( log(fMouseSpeed / 8192) / log(2)) * 1000 / 6); + if (value > 1000) value = 1000; + if (value < 0) value = 0; + mouseSpeedSlider->SetValue(value); + + // slow = 0, fast = 262144 + value = (int32) (sqrt(fMouseAcc / 16384) * 1000 / 4); + if (value > 1000) value = 1000; + if (value < 0) value = 0; + mouseAccSlider->SetValue(value); + + if (fMouseType < 1) + fMouseType = 1; + if (fMouseType > 3) + fMouseType = 3; + BMenuItem *item = mouseTypeMenu->ItemAt(fMouseType - 1); + if (item) + item->SetMarked(true); + + int32 mode; + switch(fMouseMode) { + case B_NORMAL_MOUSE: mode = 0; break; + case B_FOCUS_FOLLOWS_MOUSE: mode = 1; break; + case B_WARP_MOUSE: mode = 2; break; + case B_INSTANT_WARP_MOUSE: mode = 3; break; + default : mode = 0; break; + } + item = focusMenu->ItemAt(mode); + if (item) + item->SetMarked(true); + + printf("click_speed : %lli, mouse_speed : %li, mouse_acc : %li, mouse_type : %li\n", + fClickSpeed, fMouseSpeed, fMouseAcc, fMouseType); +} \ No newline at end of file diff --git a/src/prefs/mouse/MouseView.h b/src/prefs/mouse/MouseView.h index 5da3d008b6..eb1a0b3285 100644 --- a/src/prefs/mouse/MouseView.h +++ b/src/prefs/mouse/MouseView.h @@ -1,14 +1,25 @@ -/* - - MouseView.h - -*/ - +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseView.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ #ifndef MOUSE_VIEW_H #define MOUSE_VIEW_H #include #include +#include +#include +#include class MouseView : public BBox { @@ -16,14 +27,41 @@ public: typedef BBox inherited; MouseView(BRect frame); + void AttachedToWindow(); virtual void Draw(BRect frame); - -private: - BBox *fBox; + virtual void Pulse(); + void Init(); + + BButton *defaultButton, *revertButton; + BSlider *dcSpeedSlider, *mouseSpeedSlider, *mouseAccSlider; + BPopUpMenu *mouseTypeMenu, *focusMenu, *mouseMapMenu; + + bigtime_t fClickSpeed; + int32 fMouseSpeed; + int32 fMouseAcc; + int32 fMouseType; + mode_mouse fMouseMode; + mouse_map fMouseMap, fCurrentMouseMap; + int32 fCurrentButton; + uint32 fButtons; + uint32 fOldButtons; + +private: + BBox *fBox; + + BBitmap *fDoubleClickBitmap, *fSpeedBitmap, *fAccelerationBitmap; + BBitmap *fMouseBitmap, *fMouseDownBitmap; - BBitmap *fDoubleClickBitmap; - BBitmap *fSpeedBitmap; - BBitmap *fAccelerationBitmap; }; +class BoxView : public BBox +{ +public: + BoxView(BRect frame, MouseView *mouseView); + void MouseDown(BPoint where); +private: + MouseView *fMouseView; +}; + + #endif diff --git a/src/prefs/mouse/MouseWindow.cpp b/src/prefs/mouse/MouseWindow.cpp index 65ad2429d7..e2395bf3cc 100644 --- a/src/prefs/mouse/MouseWindow.cpp +++ b/src/prefs/mouse/MouseWindow.cpp @@ -1,9 +1,18 @@ -/* - * MouseWindow.cpp - * Mouse mccall@digitalparadise.co.uk - * - */ - +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseWindow.cpp +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +#include #include #include #include @@ -12,74 +21,28 @@ #include #include #include -#include +#include +#include #include "MouseMessages.h" #include "MouseWindow.h" #include "MouseView.h" -#include "Mouse.h" -#define MOUSE_WINDOW_RIGHT 397 -#define MOUSE_WINDOW_BOTTTOM 293 - -MouseWindow::MouseWindow() - : BWindow(BRect(0,0,MOUSE_WINDOW_RIGHT,MOUSE_WINDOW_BOTTTOM), "Mouse", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) +MouseWindow::MouseWindow(BRect rect) + : BWindow(rect, "Mouse", B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE ) { - BScreen screen; - BSlider *slider=NULL; - BMenuField *menufield=NULL; - - MoveTo(dynamic_cast(be_app)->WindowCorner()); - - // Code to make sure that the window doesn't get drawn off screen... - if (!(screen.Frame().right >= Frame().right && screen.Frame().bottom >= Frame().bottom)) - MoveTo((screen.Frame().right-Bounds().right)*.5,(screen.Frame().bottom-Bounds().bottom)*.5); - - BuildView(); - AddChild(fView); - - - menufield = (BMenuField *)FindView("mouse_type"); - if (menufield !=NULL) - menufield->Menu()->ItemAt((dynamic_cast(be_app)->MouseType())-1)->SetMarked(true); - - slider = (BSlider *)FindView("double_click_speed"); - if (slider !=NULL) slider->SetValue((dynamic_cast(be_app)->ClickSpeed())); - - slider = (BSlider *)FindView("mouse_speed"); - if (slider !=NULL) slider->SetValue((dynamic_cast(be_app)->MouseSpeed())); - Show(); - + AddChild(fView = new MouseView(Bounds())); + if(fSettings.InitCheck() != B_OK) + PostMessage(ERROR_DETECTED); + SetPulseRate(100000); } -void -MouseWindow::BuildView() -{ - fView = new MouseView(Bounds()); -} bool MouseWindow::QuitRequested() { - - BSlider *slider=NULL; - BMenuField *menufield=NULL; - - dynamic_cast(be_app)->SetWindowCorner(BPoint(Frame().left,Frame().top)); - - slider = (BSlider *)FindView("double_click_speed"); - if (slider !=NULL) - dynamic_cast(be_app)->SetClickSpeed(slider->Value()); - - - - menufield = (BMenuField *)FindView("mouse_type"); - if (menufield !=NULL) { - BMenu *menu; - menu = menufield->Menu(); - dynamic_cast(be_app)->SetMouseType((mouse_type)(menu->IndexOf(menu->FindMarked())+1)); - } - + fSettings.SetWindowCorner(Frame().LeftTop()); + be_app->PostMessage(B_QUIT_REQUESTED); return(true); } @@ -87,30 +50,109 @@ MouseWindow::QuitRequested() void MouseWindow::MessageReceived(BMessage *message) { - BSlider *slider=NULL; - BButton *button=NULL; - BMenuField *menufield=NULL; - + switch(message->what) { case BUTTON_DEFAULTS: { - if (set_click_speed(500000)!=B_OK) - be_app->PostMessage(ERROR_DETECTED); - slider = (BSlider *)FindView("double_click_speed"); - if (slider !=NULL) slider->SetValue(500000); + fView->dcSpeedSlider->SetValue(500); + fView->dcSpeedSlider->Invoke(); + fView->mouseSpeedSlider->SetValue(500); + fView->mouseSpeedSlider->Invoke(); + fView->mouseAccSlider->SetValue(500); + fView->mouseAccSlider->Invoke(); + fView->focusMenu->ItemAt(0)->SetMarked(true); + set_mouse_type(3); + fView->mouseTypeMenu->ItemAt(2)->SetMarked(true); + set_mouse_mode(B_NORMAL_MOUSE); + fView->fCurrentMouseMap.button[0] = B_PRIMARY_MOUSE_BUTTON; + fView->fCurrentMouseMap.button[1] = B_SECONDARY_MOUSE_BUTTON; + fView->fCurrentMouseMap.button[2] = B_TERTIARY_MOUSE_BUTTON; + set_mouse_map(&fView->fCurrentMouseMap); - button = (BButton *)FindView("mouse_revert"); - if (button !=NULL) button->SetEnabled(true); + fView->revertButton->SetEnabled(true); + } + break; + case BUTTON_REVERT: { + fView->Init(); + set_mouse_type(fView->fMouseType); + set_mouse_mode(fView->fMouseMode); + set_click_speed(fView->fClickSpeed); + set_mouse_speed(fView->fMouseSpeed); + set_mouse_acceleration(fView->fMouseAcc); + set_mouse_map(&fView->fMouseMap); + get_mouse_map(&fView->fCurrentMouseMap); + + fView->revertButton->SetEnabled(false); } break; case POPUP_MOUSE_TYPE: { - beep(); - menufield = (BMenuField *)FindView("mouse_type"); - if (menufield !=NULL) { - BMenu *menu; - menu = menufield->Menu(); - if (set_mouse_type(menu->IndexOf(menu->FindMarked())+1) !=B_OK) - be_app->PostMessage(ERROR_DETECTED); + status_t err = set_mouse_type(fView->mouseTypeMenu->IndexOf(fView->mouseTypeMenu->FindMarked())+1); + if(err < B_OK) + printf("error while setting mouse type : %s\n", strerror(err)); + fView->revertButton->SetEnabled(true); + } + break; + case POPUP_MOUSE_FOCUS: { + mode_mouse mouse_mode = B_NORMAL_MOUSE; + switch (fView->focusMenu->IndexOf(fView->focusMenu->FindMarked())) { + case 0: mouse_mode = B_NORMAL_MOUSE; break; + case 1: mouse_mode = B_FOCUS_FOLLOWS_MOUSE; break; + case 2: mouse_mode = B_WARP_MOUSE; break; + case 3: mouse_mode = B_INSTANT_WARP_MOUSE; break; } + set_mouse_mode(mouse_mode); + fView->revertButton->SetEnabled(true); + } + break; + case SLIDER_DOUBLE_CLICK_SPEED: { + int32 value = fView->dcSpeedSlider->Value(); + int32 click_speed; // slow = 1000000, fast = 0 + click_speed = (int32) (1000000 - value * 1000); + status_t err = set_click_speed(click_speed); + if(err < B_OK) + printf("error while setting click speed : %s\n", strerror(err)); + fView->revertButton->SetEnabled(true); + } + break; + case SLIDER_MOUSE_SPEED: { + int32 value = fView->mouseSpeedSlider->Value(); + int32 mouse_speed; // slow = 8192, fast = 524287 + mouse_speed = (int32) pow(2, value * 6 / 1000) * 8192; + status_t err = set_mouse_speed(mouse_speed); + if(err < B_OK) + printf("error while setting mouse speed : %s\n", strerror(err)); + fView->revertButton->SetEnabled(true); + } + break; + case SLIDER_MOUSE_ACC: { + int32 value = fView->mouseAccSlider->Value(); + int32 mouse_acc; // slow = 0, fast = 262144 + mouse_acc = (int32) pow(value * 4 / 1000, 2) * 16384; + status_t err = set_mouse_acceleration(mouse_acc); + if(err < B_OK) + printf("error while setting mouse acceleration : %s\n", strerror(err)); + fView->revertButton->SetEnabled(true); + } + break; + case POPUP_MOUSE_MAP: { + int32 index = fView->mouseMapMenu->IndexOf(fView->mouseMapMenu->FindMarked()); + int32 number = B_PRIMARY_MOUSE_BUTTON; + switch (index) { + case 0: number = B_PRIMARY_MOUSE_BUTTON; break; + case 1: number = B_SECONDARY_MOUSE_BUTTON; break; + case 2: number = B_TERTIARY_MOUSE_BUTTON; break; + } + fView->fCurrentMouseMap.button[fView->fCurrentButton] = number; + status_t err = set_mouse_map(&fView->fCurrentMouseMap); + fView->fCurrentButton = -1; + if(err < B_OK) + printf("error while setting mouse map : %s\n", strerror(err)); + fView->revertButton->SetEnabled(true); + } + break; + case ERROR_DETECTED: { + (new BAlert("Error", "Something has gone wrong!","OK",NULL,NULL, + B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT))->Go(); + be_app->PostMessage(B_QUIT_REQUESTED); } break; default: @@ -119,8 +161,3 @@ MouseWindow::MessageReceived(BMessage *message) } } - -MouseWindow::~MouseWindow() -{ - -} diff --git a/src/prefs/mouse/MouseWindow.h b/src/prefs/mouse/MouseWindow.h index 228726a16e..5b21be154c 100644 --- a/src/prefs/mouse/MouseWindow.h +++ b/src/prefs/mouse/MouseWindow.h @@ -1,3 +1,17 @@ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: MouseWindow.h +// Author: Jérôme Duval, Andrew McCall (mccall@digitalparadise.co.uk) +// Description: Media Preferences +// Created : December 10, 2003 +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ #ifndef MOUSE_WINDOW_H #define MOUSE_WINDOW_H @@ -9,16 +23,14 @@ class MouseWindow : public BWindow { public: - MouseWindow(); - ~MouseWindow(); + MouseWindow(BRect rect); bool QuitRequested(); void MessageReceived(BMessage *message); - void BuildView(); - + + MouseSettings fSettings; private: MouseView *fView; - }; #endif