Removed a couple of warnings from Accelerant, Screen, and BitmapDrivers

Beginning style changes to resemble OpenTracker guidelines
Added header to some files
Removed temporary code from ViewDriver and re-enabled cursor movement in Desktopmouse message handler


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6069 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
DarkWyrm
2004-01-14 00:54:45 +00:00
parent 47007fb071
commit 7d09d0620c
19 changed files with 385 additions and 200 deletions
+9 -2
View File
@@ -180,8 +180,9 @@ bool AccelerantDriver::Initialize(void)
accShowCursor = (show_cursor)accelerant_hook(B_SHOW_CURSOR,NULL); accShowCursor = (show_cursor)accelerant_hook(B_SHOW_CURSOR,NULL);
#ifdef DRAW_TEST #ifdef DRAW_TEST
RGBColor red(255,0,0,0); // Commented out to remove a couple warnings
RGBColor green(0,255,0,0); // RGBColor red(255,0,0,0);
// RGBColor green(0,255,0,0);
RGBColor blue(0,0,255,0); RGBColor blue(0,0,255,0);
FillRect(BRect(0,0,1024,768),blue); FillRect(BRect(0,0,1024,768),blue);
#endif #endif
@@ -1055,6 +1056,12 @@ void AccelerantDriver::SetMode(int32 mode)
Unlock(); Unlock();
} }
void AccelerantDriver::SetMode(const display_mode &mode)
{
// TODO: Implement
}
/*! /*!
\brief Dumps the contents of the frame buffer to a file. \brief Dumps the contents of the frame buffer to a file.
\param path Path and leaf of the file to be created without an extension \param path Path and leaf of the file to be created without an extension
@@ -94,6 +94,7 @@ public:
virtual void SetCursor(ServerCursor *csr); virtual void SetCursor(ServerCursor *csr);
virtual void SetMode(int32 mode); virtual void SetMode(int32 mode);
virtual void SetMode(const display_mode &mode);
virtual bool DumpToFile(const char *path); virtual bool DumpToFile(const char *path);
float StringWidth(const char *string, int32 length, LayerData *d); float StringWidth(const char *string, int32 length, LayerData *d);
float StringHeight(const char *string, int32 length, LayerData *d); float StringHeight(const char *string, int32 length, LayerData *d);
+33 -33
View File
@@ -40,7 +40,7 @@ float sintable[360], costable[360], tantable[360];
*/ */
Angle::Angle(float angle) Angle::Angle(float angle)
{ {
angle_value=angle; fAngleValue=angle;
if(tables_initialized==false) if(tables_initialized==false)
{ {
InitTrigTables(); InitTrigTables();
@@ -51,7 +51,7 @@ Angle::Angle(float angle)
//! Constructor //! Constructor
Angle::Angle(void) Angle::Angle(void)
{ {
angle_value=0; fAngleValue=0;
if(tables_initialized==false) if(tables_initialized==false)
{ {
InitTrigTables(); InitTrigTables();
@@ -70,16 +70,16 @@ void Angle::Normalize(void)
// if the value of the angle is >=360 or <0, make it so that it is // if the value of the angle is >=360 or <0, make it so that it is
// within those bounds // within those bounds
if(angle_value>359) if(fAngleValue>359)
{ {
while(angle_value>359) while(fAngleValue>359)
angle_value-=360; fAngleValue-=360;
return; return;
} }
if(angle_value<0) if(fAngleValue<0)
{ {
while(angle_value<0) while(fAngleValue<0)
angle_value+=360; fAngleValue+=360;
} }
} }
@@ -89,7 +89,7 @@ void Angle::Normalize(void)
*/ */
float Angle::Sine(void) float Angle::Sine(void)
{ {
return sintable[(int)angle_value]; return sintable[(int)fAngleValue];
} }
/*! /*!
@@ -128,7 +128,7 @@ Angle Angle::InvSine(float value)
*/ */
float Angle::Cosine(void) float Angle::Cosine(void)
{ {
return costable[(int)angle_value]; return costable[(int)fAngleValue];
} }
/*! /*!
@@ -166,14 +166,14 @@ Angle Angle::InvCosine(float value)
*/ */
float Angle::Tangent(int *status) float Angle::Tangent(int *status)
{ {
if(angle_value==90 || angle_value==270) if(fAngleValue==90 || fAngleValue==270)
{ {
if(status) if(status)
*status=0; *status=0;
return 0.0; return 0.0;
} }
return tantable[(int)angle_value]; return tantable[(int)fAngleValue];
} }
/*! /*!
@@ -213,13 +213,13 @@ uint8 Angle::Quadrant(void)
{ {
// We can get away with not doing extra value checks because of the order in // We can get away with not doing extra value checks because of the order in
// which the checks are done. // which the checks are done.
if(angle_value < 90) if(fAngleValue < 90)
return 1; return 1;
if(angle_value < 180) if(fAngleValue < 180)
return 2; return 2;
if(angle_value < 270) if(fAngleValue < 270)
return 3; return 3;
return 4; return 4;
@@ -232,10 +232,10 @@ uint8 Angle::Quadrant(void)
Angle Angle::Constrain180(void) Angle Angle::Constrain180(void)
{ {
// Constrains angle to 0 <= angle < 180 // Constrains angle to 0 <= angle < 180
float val=angle_value; float val=fAngleValue;
if(angle_value<180) if(fAngleValue<180)
return Angle(angle_value); return Angle(fAngleValue);
while(!(val<180)) while(!(val<180))
val-=90; val-=90;
@@ -249,10 +249,10 @@ Angle Angle::Constrain180(void)
Angle Angle::Constrain90(void) Angle Angle::Constrain90(void)
{ {
// Constrains angle to 0 <= angle < 90 // Constrains angle to 0 <= angle < 90
float val=angle_value; float val=fAngleValue;
if(angle_value<90) if(fAngleValue<90)
return Angle(angle_value); return Angle(fAngleValue);
while(!(val<90)) while(!(val<90))
val-=90; val-=90;
@@ -265,7 +265,7 @@ Angle Angle::Constrain90(void)
*/ */
void Angle::SetValue(float angle) void Angle::SetValue(float angle)
{ {
angle_value=angle; fAngleValue=angle;
Normalize(); Normalize();
} }
@@ -275,7 +275,7 @@ void Angle::SetValue(float angle)
*/ */
float Angle::Value(void) const float Angle::Value(void) const
{ {
return angle_value; return fAngleValue;
} }
//! Initializes the global trig tables //! Initializes the global trig tables
@@ -319,7 +319,7 @@ void Angle::InitTrigTables(void)
*/ */
Angle & Angle::operator=(const Angle &from) Angle & Angle::operator=(const Angle &from)
{ {
angle_value=from.angle_value; fAngleValue=from.fAngleValue;
return *this; return *this;
} }
@@ -330,7 +330,7 @@ Angle & Angle::operator=(const Angle &from)
*/ */
Angle & Angle::operator=(const float &from) Angle & Angle::operator=(const float &from)
{ {
angle_value=from; fAngleValue=from;
return *this; return *this;
} }
@@ -341,7 +341,7 @@ Angle & Angle::operator=(const float &from)
*/ */
Angle & Angle::operator=(const long &from) Angle & Angle::operator=(const long &from)
{ {
angle_value=(float)from; fAngleValue=(float)from;
return *this; return *this;
} }
@@ -352,7 +352,7 @@ Angle & Angle::operator=(const long &from)
*/ */
Angle & Angle::operator=(const int &from) Angle & Angle::operator=(const int &from)
{ {
angle_value=(float)from; fAngleValue=(float)from;
return *this; return *this;
} }
@@ -363,7 +363,7 @@ Angle & Angle::operator=(const int &from)
*/ */
bool Angle::operator==(const Angle &from) bool Angle::operator==(const Angle &from)
{ {
return (angle_value==from.angle_value)?true:false; return (fAngleValue==from.fAngleValue)?true:false;
} }
/*! /*!
@@ -373,7 +373,7 @@ bool Angle::operator==(const Angle &from)
*/ */
bool Angle::operator!=(const Angle &from) bool Angle::operator!=(const Angle &from)
{ {
return (angle_value!=from.angle_value)?true:false; return (fAngleValue!=from.fAngleValue)?true:false;
} }
/*! /*!
@@ -383,7 +383,7 @@ bool Angle::operator!=(const Angle &from)
*/ */
bool Angle::operator>(const Angle &from) bool Angle::operator>(const Angle &from)
{ {
return (angle_value>from.angle_value)?true:false; return (fAngleValue>from.fAngleValue)?true:false;
} }
/*! /*!
@@ -393,7 +393,7 @@ bool Angle::operator>(const Angle &from)
*/ */
bool Angle::operator<(const Angle &from) bool Angle::operator<(const Angle &from)
{ {
return (angle_value<from.angle_value)?true:false; return (fAngleValue<from.fAngleValue)?true:false;
} }
/*! /*!
@@ -403,7 +403,7 @@ bool Angle::operator<(const Angle &from)
*/ */
bool Angle::operator>=(const Angle &from) bool Angle::operator>=(const Angle &from)
{ {
return (angle_value>=from.angle_value)?true:false; return (fAngleValue>=from.fAngleValue)?true:false;
} }
/*! /*!
@@ -413,5 +413,5 @@ bool Angle::operator>=(const Angle &from)
*/ */
bool Angle::operator<=(const Angle &from) bool Angle::operator<=(const Angle &from)
{ {
return (angle_value<=from.angle_value)?true:false; return (fAngleValue<=from.fAngleValue)?true:false;
} }
+1 -1
View File
@@ -69,7 +69,7 @@ public:
bool operator<=(const Angle &from); bool operator<=(const Angle &from);
protected: protected:
float angle_value; float fAngleValue;
void InitTrigTables(void); void InitTrigTables(void);
}; };
+31 -30
View File
@@ -34,52 +34,53 @@ class AppServer : public BApplication
#endif #endif
{ {
public: public:
AppServer(void); AppServer(void);
~AppServer(void); ~AppServer(void);
static int32 PollerThread(void *data); static int32 PollerThread(void *data);
static int32 PicassoThread(void *data); static int32 PicassoThread(void *data);
thread_id Run(void); thread_id Run(void);
void MainLoop(void); void MainLoop(void);
bool LoadDecorator(const char *path); bool LoadDecorator(const char *path);
void InitDecorators(void); void InitDecorators(void);
void DispatchMessage(PortMessage *msg);
void Broadcast(int32 code);
void DispatchMessage(PortMessage *msg);
void Broadcast(int32 code);
// TODO: remove shortly! // TODO: remove shortly!
void HandleKeyMessage(int32 code, int8 *buffer); void HandleKeyMessage(int32 code, int8 *buffer);
ServerApp* FindApp(const char *sig); ServerApp* FindApp(const char *sig);
private: private:
friend Decorator* new_decorator(BRect rect, const char *title, friend Decorator* new_decorator(BRect rect, const char *title,
int32 wlook, int32 wfeel, int32 wlook, int32 wfeel, int32 wflags, DisplayDriver *ddriver);
int32 wflags, DisplayDriver *ddriver);
create_decorator *make_decorator; // global function pointer // global function pointer
create_decorator *make_decorator;
port_id _messageport, port_id _messageport,
_mouseport; _mouseport;
image_id _decorator_id; image_id _decorator_id;
BString decorator_name; BString decorator_name;
bool _quitting_server, bool _quitting_server,
_exit_poller; _exit_poller;
BList *_applist; BList *_applist;
thread_id _poller_id, thread_id _poller_id,
_picasso_id; _picasso_id;
sem_id _active_lock, sem_id _active_lock,
_applist_lock, _applist_lock,
_decor_lock; _decor_lock;
DisplayDriver *_driver; DisplayDriver *_driver;
int32 _ssindex; int32 _ssindex;
}; };
Decorator *new_decorator(BRect rect, const char *title, int32 wlook, int32 wfeel, Decorator *new_decorator(BRect rect, const char *title, int32 wlook, int32 wfeel,
+6
View File
@@ -499,6 +499,12 @@ void BitmapDriver::SetMode(int32 space)
// No need to reset a bitmap's color space // No need to reset a bitmap's color space
} }
//! Empty
void BitmapDriver::SetMode(const display_mode &mode)
{
// No need to reset a bitmap's color space
}
//! Empty //! Empty
void BitmapDriver::HideCursor(void) void BitmapDriver::HideCursor(void)
{ {
+1
View File
@@ -122,6 +122,7 @@ virtual void FillArc(const BRect r, float angle, float span, RGBColor& color);
virtual void SetCursor(ServerCursor *cursor); virtual void SetCursor(ServerCursor *cursor);
virtual void SetMode(int32 mode); virtual void SetMode(int32 mode);
virtual void SetMode(const display_mode &mode);
float StringWidth(const char *string, int32 length, LayerData *d); float StringWidth(const char *string, int32 length, LayerData *d);
float StringHeight(const char *string, int32 length, LayerData *d); float StringHeight(const char *string, int32 length, LayerData *d);
// virtual bool DumpToFile(const char *path); // virtual bool DumpToFile(const char *path);
+11 -20
View File
@@ -29,6 +29,7 @@
#include "CursorManager.h" #include "CursorManager.h"
#include "ServerCursor.h" #include "ServerCursor.h"
#include "CursorData.h" #include "CursorData.h"
#include "ServerScreen.h"
#include "ServerConfig.h" #include "ServerConfig.h"
#include <Errors.h> #include <Errors.h>
#include <Directory.h> #include <Directory.h>
@@ -177,37 +178,31 @@ void CursorManager::RemoveAppCursors(const char *signature)
//! Wrapper around the DisplayDriver ShowCursor call //! Wrapper around the DisplayDriver ShowCursor call
void CursorManager::ShowCursor(void) void CursorManager::ShowCursor(void)
{ {
// TODO: Fix Lock();
/* Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver(); DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->ShowCursor(); driver->ShowCursor();
Unlock(); Unlock();
*/
} }
//! Wrapper around the DisplayDriver HideCursor call //! Wrapper around the DisplayDriver HideCursor call
void CursorManager::HideCursor(void) void CursorManager::HideCursor(void)
{ {
// TODO: Fix Lock();
/* Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver(); DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->HideCursor(); driver->HideCursor();
Unlock(); Unlock();
*/
} }
//! Wrapper around the DisplayDriver ObscureCursor call //! Wrapper around the DisplayDriver ObscureCursor call
void CursorManager::ObscureCursor(void) void CursorManager::ObscureCursor(void)
{ {
// TODO: Fix Lock();
/* Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver(); DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->ObscureCursor(); driver->ObscureCursor();
Unlock(); Unlock();
*/
} }
/*! /*!
@@ -216,25 +211,22 @@ void CursorManager::ObscureCursor(void)
*/ */
void CursorManager::SetCursor(int32 token) void CursorManager::SetCursor(int32 token)
{ {
// TODO: Fix Lock();
/* Lock();
ServerCursor *c=_FindCursor(token); ServerCursor *c=_FindCursor(token);
if(c) if(c)
{ {
DisplayDriver *driver = desktop->CursorScreen()->DDriver(); DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->SetCursor(c); driver->SetCursor(c);
_current_which=B_CURSOR_OTHER; _current_which=B_CURSOR_OTHER;
} }
Unlock(); Unlock();
*/
} }
void CursorManager::SetCursor(cursor_which which) void CursorManager::SetCursor(cursor_which which)
{ {
// TODO: Fix Lock();
/* Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver(); DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
switch(which) switch(which)
{ {
case B_CURSOR_DEFAULT: case B_CURSOR_DEFAULT:
@@ -296,7 +288,6 @@ void CursorManager::SetCursor(cursor_which which)
} }
Unlock(); Unlock();
*/
} }
/*! /*!
+12 -4
View File
@@ -24,7 +24,7 @@ Desktop::Desktop(void){
fActiveRootLayer = NULL; fActiveRootLayer = NULL;
fFrontWinBorder = NULL; fFrontWinBorder = NULL;
fFocusWinBorder = NULL; fFocusWinBorder = NULL;
fCursorScreen = NULL; fActiveScreen = NULL;
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
Desktop::~Desktop(void){ Desktop::~Desktop(void){
@@ -92,7 +92,7 @@ void Desktop::Init(void){
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void Desktop::InitMode(void){ void Desktop::InitMode(void){
// this is init mode for n-SS. // this is init mode for n-SS.
fCursorScreen = fScreenList.ItemAt(0)? (Screen*)fScreenList.ItemAt(0): NULL; fActiveScreen = fScreenList.ItemAt(0)? (Screen*)fScreenList.ItemAt(0): NULL;
for (int32 i=0; i<fScreenList.CountItems(); i++){ for (int32 i=0; i<fScreenList.CountItems(); i++){
char name[32]; char name[32];
sprintf(name, "RootLayer %ld", i+1); sprintf(name, "RootLayer %ld", i+1);
@@ -120,8 +120,8 @@ int32 Desktop::ScreenCount() const{
return fScreenList.CountItems(); return fScreenList.CountItems();
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
Screen* Desktop::CursorScreen() const{ Screen* Desktop::ActiveScreen() const{
return fCursorScreen; return fActiveScreen;
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void Desktop::SetActiveRootLayerByIndex(int32 listIndex){ void Desktop::SetActiveRootLayerByIndex(int32 listIndex){
@@ -344,7 +344,15 @@ void Desktop::MouseEventHandler(PortMessage *msg){
// 2) float - x coordinate of mouse click // 2) float - x coordinate of mouse click
// 3) float - y coordinate of mouse click // 3) float - y coordinate of mouse click
// 4) int32 - buttons down // 4) int32 - buttons down
int64 dummy;
float x,y;
msg->Read<int64>(&dummy);
msg->Read<float>(&x);
msg->Read<float>(&y);
// We need this so that we can see the cursor on the screen
if(fActiveScreen)
fActiveScreen->DDriver()->MoveCursorTo(x,y);
break; break;
} }
case B_MOUSE_WHEEL_CHANGED:{ case B_MOUSE_WHEEL_CHANGED:{
+2 -2
View File
@@ -26,7 +26,7 @@ public:
// Methods for multiple monitors. // Methods for multiple monitors.
Screen* ScreenAt(int32 index) const; Screen* ScreenAt(int32 index) const;
int32 ScreenCount() const; int32 ScreenCount() const;
Screen* CursorScreen() const; Screen* ActiveScreen() const;
void SetActiveRootLayerByIndex(int32 listIndex); void SetActiveRootLayerByIndex(int32 listIndex);
void SetActiveRootLayer(RootLayer* rl); void SetActiveRootLayer(RootLayer* rl);
@@ -91,7 +91,7 @@ private:
BList fScreenList; BList fScreenList;
int32 fScreenMode; // '1' or 'n' Screen(s). Not sure it's needed though. int32 fScreenMode; // '1' or 'n' Screen(s). Not sure it's needed though.
Screen* fCursorScreen; Screen* fActiveScreen;
scroll_bar_info fScrollBarInfo; scroll_bar_info fScrollBarInfo;
menu_info fMenuInfo; menu_info fMenuInfo;
+84 -31
View File
@@ -1,4 +1,29 @@
//------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// File Name: FMWList.cpp
// Author: Adi Oanca <[email protected]>
// Description: List class for something or other (according to DW)
//
//------------------------------------------------------------------------------
#include <stdio.h> #include <stdio.h>
#include <List.h> #include <List.h>
@@ -6,24 +31,29 @@
#include "WinBorder.h" #include "WinBorder.h"
#include "ServerWindow.h" #include "ServerWindow.h"
FMWList::FMWList(){ FMWList::FMWList(void)
{
} }
FMWList::~FMWList(){ FMWList::~FMWList(void)
//printf("~FMWList()\n"); {
// printf("~FMWList()\n");
// if (fList.CountItems() > 0) // if (fList.CountItems() > 0)
// printf("SERVER: WARNING: FMWList NOT empty in destructor!\n"); // printf("SERVER: WARNING: FMWList NOT empty in destructor!\n");
} }
void FMWList::AddItem(void* item){ void FMWList::AddItem(void *item)
int32 feelItem = ((WinBorder*)item)->Window()->Feel();; {
int32 feelTemp = 0; int32 feelItem = ((WinBorder*)item)->Window()->Feel();;
int32 location = 0; int32 feelTemp = 0;
int32 location = 0;
for(int32 i=0; i<fList.CountItems(); i++){ for(int32 i=0; i<fList.CountItems(); i++)
{
location = i + 1; location = i + 1;
feelTemp = ((WinBorder*)fList.ItemAt(i))->Window()->Feel(); feelTemp = ((WinBorder*)fList.ItemAt(i))->Window()->Feel();
// in short: if 'item' is a floating window
// in short: if 'item' is a floating window
if( (feelItem == B_FLOATING_SUBSET_WINDOW_FEEL || if( (feelItem == B_FLOATING_SUBSET_WINDOW_FEEL ||
feelItem == B_FLOATING_APP_WINDOW_FEEL || feelItem == B_FLOATING_APP_WINDOW_FEEL ||
feelItem == B_FLOATING_ALL_WINDOW_FEEL) feelItem == B_FLOATING_ALL_WINDOW_FEEL)
@@ -32,44 +62,56 @@ void FMWList::AddItem(void* item){
feelTemp == B_MODAL_APP_WINDOW_FEEL || feelTemp == B_MODAL_APP_WINDOW_FEEL ||
feelTemp == B_MODAL_ALL_WINDOW_FEEL) feelTemp == B_MODAL_ALL_WINDOW_FEEL)
) )
// means we found the place for our window('wb') // means we found the place for our window('wb')
{ location--; break; } {
location--;
break;
}
} }
fList.AddItem(item, location); fList.AddItem(item, location);
} }
bool FMWList::HasItem(void* item) const{ bool FMWList::HasItem(void *item) const
{
return fList.HasItem(item); return fList.HasItem(item);
} }
bool FMWList::RemoveItem(void* item){ bool FMWList::RemoveItem(void *item)
{
return fList.RemoveItem(item); return fList.RemoveItem(item);
} }
void* FMWList::ItemAt(int32 i) const{ void *FMWList::ItemAt(int32 i) const
{
return fList.ItemAt(i); return fList.ItemAt(i);
} }
int32 FMWList::CountItems() const{ int32 FMWList::CountItems() const
{
return fList.CountItems(); return fList.CountItems();
} }
void* FMWList::LastItem() const{ void *FMWList::LastItem() const
{
return fList.LastItem(); return fList.LastItem();
} }
void* FMWList::FirstItem() const{ void *FMWList::FirstItem() const
{
return fList.FirstItem(); return fList.FirstItem();
} }
int32 FMWList::IndexOf(void *item){ int32 FMWList::IndexOf(void *item)
{
return fList.IndexOf(item); return fList.IndexOf(item);
} }
void FMWList::AddFMWList(FMWList *list){ void FMWList::AddFMWList(FMWList *list)
int32 i = 0; {
for(i=0; i<fList.CountItems(); i++){ int32 i=0;
int32 feel = ((WinBorder*)fList.ItemAt(i))->Window()->Feel(); for(i=0; i<fList.CountItems(); i++)
{
int32 feel = ((WinBorder*)fList.ItemAt(i))->Window()->Feel();
if(feel == B_MODAL_SUBSET_WINDOW_FEEL || if(feel == B_MODAL_SUBSET_WINDOW_FEEL ||
feel == B_MODAL_APP_WINDOW_FEEL || feel == B_MODAL_APP_WINDOW_FEEL ||
feel == B_MODAL_ALL_WINDOW_FEEL) feel == B_MODAL_ALL_WINDOW_FEEL)
@@ -79,42 +121,53 @@ void FMWList::AddFMWList(FMWList *list){
} }
int32 j = 0; int32 j = 0;
for(j=0; j<list->CountItems(); j++){ for(j=0; j<list->CountItems(); j++)
void *item = list->ItemAt(j); {
int32 feel = ((WinBorder*)item)->Window()->Feel(); void *item = list->ItemAt(j);
int32 feel = ((WinBorder*)item)->Window()->Feel();
if(feel == B_MODAL_SUBSET_WINDOW_FEEL || if(feel == B_MODAL_SUBSET_WINDOW_FEEL ||
feel == B_MODAL_APP_WINDOW_FEEL || feel == B_MODAL_APP_WINDOW_FEEL ||
feel == B_MODAL_ALL_WINDOW_FEEL) feel == B_MODAL_ALL_WINDOW_FEEL)
{ {
fList.AddItem(item, fList.CountItems()); fList.AddItem(item, fList.CountItems());
} }
else{ else
{
fList.AddItem(item, i); fList.AddItem(item, i);
i++; i++;
} }
} }
} }
void FMWList::PrintToStream() const{ void FMWList::PrintToStream() const
{
printf("Floating and modal windows list:\n"); printf("Floating and modal windows list:\n");
WinBorder *wb = NULL; WinBorder *wb = NULL;
for (int32 i=0; i<fList.CountItems(); i++){ for (int32 i=0; i<fList.CountItems(); i++)
wb = (WinBorder*)fList.ItemAt(i); {
wb=(WinBorder*)fList.ItemAt(i);
printf("\t%s", wb->GetName()); printf("\t%s", wb->GetName());
if (wb->Window()->Feel() == B_FLOATING_SUBSET_WINDOW_FEEL) if (wb->Window()->Feel() == B_FLOATING_SUBSET_WINDOW_FEEL)
printf("\t%s\n", "B_FLOATING_SUBSET_WINDOW_FEEL"); printf("\t%s\n", "B_FLOATING_SUBSET_WINDOW_FEEL");
if (wb->Window()->Feel() == B_FLOATING_APP_WINDOW_FEEL) if (wb->Window()->Feel() == B_FLOATING_APP_WINDOW_FEEL)
printf("\t%s\n", "B_FLOATING_APP_WINDOW_FEEL"); printf("\t%s\n", "B_FLOATING_APP_WINDOW_FEEL");
if (wb->Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL) if (wb->Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL)
printf("\t%s\n", "B_FLOATING_ALL_WINDOW_FEEL"); printf("\t%s\n", "B_FLOATING_ALL_WINDOW_FEEL");
if (wb->Window()->Feel() == B_MODAL_SUBSET_WINDOW_FEEL) if (wb->Window()->Feel() == B_MODAL_SUBSET_WINDOW_FEEL)
printf("\t%s\n", "B_MODAL_SUBSET_WINDOW_FEEL"); printf("\t%s\n", "B_MODAL_SUBSET_WINDOW_FEEL");
if (wb->Window()->Feel() == B_MODAL_APP_WINDOW_FEEL) if (wb->Window()->Feel() == B_MODAL_APP_WINDOW_FEEL)
printf("\t%s\n", "B_MODAL_APP_WINDOW_FEEL"); printf("\t%s\n", "B_MODAL_APP_WINDOW_FEEL");
if (wb->Window()->Feel() == B_MODAL_ALL_WINDOW_FEEL) if (wb->Window()->Feel() == B_MODAL_ALL_WINDOW_FEEL)
printf("\t%s\n", "B_MODAL_ALL_WINDOW_FEEL"); printf("\t%s\n", "B_MODAL_ALL_WINDOW_FEEL");
// this should NOT happen // this should NOT happen
if (wb->Window()->Feel() == B_NORMAL_WINDOW_FEEL) if (wb->Window()->Feel() == B_NORMAL_WINDOW_FEEL)
printf("\t%s\n", "B_NORMAL_WINDOW_FEEL"); printf("\t%s\n", "B_NORMAL_WINDOW_FEEL");
} }
+43 -15
View File
@@ -1,29 +1,57 @@
//------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// File Name: FMWList.h
// Author: Adi Oanca <[email protected]>
// Description: List class for something or other (according to DW)
//
//------------------------------------------------------------------------------
#ifndef _FMWLIST_H_ #ifndef _FMWLIST_H_
#define _FMWLIST_H_ #define _FMWLIST_H_
#include <List.h> #include <List.h>
#include <Window.h> #include <Window.h>
class FMWList{ class FMWList
{
public: public:
FMWList(); FMWList(void);
virtual ~FMWList(); virtual ~FMWList(void);
void AddItem(void* item); void AddItem(void *item);
bool HasItem(void* item) const; bool HasItem(void *item) const;
bool RemoveItem(void* item); bool RemoveItem(void* item);
void* ItemAt(int32 i) const; void *ItemAt(int32 i) const;
int32 CountItems() const; int32 CountItems(void) const;
void* LastItem() const; void *LastItem(void) const;
void* FirstItem() const; void *FirstItem(void) const;
int32 IndexOf(void *item); int32 IndexOf(void *item);
// special // special
void AddFMWList(FMWList *list); void AddFMWList(FMWList *list);
// debugging methods // debugging methods
void PrintToStream() const; void PrintToStream() const;
private: private:
BList fList;
BList fList;
}; };
#endif #endif
+26
View File
@@ -1,3 +1,29 @@
//------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// File Name: PNGDump.cpp
// Author: DarkWyrm <[email protected]>
// Description: Function for saving a generic framebuffer to a PNG file
//
//------------------------------------------------------------------------------
#include <Rect.h> #include <Rect.h>
#include <Bitmap.h> #include <Bitmap.h>
#include <stdio.h> #include <stdio.h>
+26
View File
@@ -1,3 +1,29 @@
//------------------------------------------------------------------------------
// Copyright (c) 2001-2002, OpenBeOS
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
// File Name: PNGDump.H
// Author: DarkWyrm <[email protected]>
// Description: Function for saving a generic framebuffer to a PNG file
//
//------------------------------------------------------------------------------
#ifndef PNGDUMP_H #ifndef PNGDUMP_H
#define PNGDUMP_H #define PNGDUMP_H
+39
View File
@@ -365,6 +365,45 @@ void ScreenDriver::Shutdown(void)
Unlock(); Unlock();
} }
void ScreenDriver::SetMode(const display_mode &mode)
{
screenwin->Lock();
int16 w=mode.virtual_width,h=mode.virtual_height;
color_space s=(color_space)mode.space;
screenwin->ResizeTo(w-1,h-1);
// Clear the invalid flag so that there is no danger of a crash
while(screenwin->invalidflag>0)
atomic_add(&screenwin->invalidflag,-1);
delete framebuffer;
// don't forget to update the internal vars!
_SetWidth(w);
_SetHeight(h);
_SetMode(s);
screenwin->SetSpace((uint32)s);
screenwin->viewbmp=new BBitmap(screenwin->Bounds(),s,true);
framebuffer=screenwin->viewbmp;
drawview=new BView(framebuffer->Bounds(),"drawview",B_FOLLOW_ALL, B_WILL_DRAW);
framebuffer->AddChild(drawview);
framebuffer->Lock();
drawview->SetHighColor(workspace_default_color.GetColor32());
drawview->FillRect(drawview->Bounds());
drawview->Sync();
framebuffer->Unlock();
screenwin->Invalidate(framebuffer->Bounds());
_SetBytesPerRow(framebuffer->BytesPerRow());
atomic_add(&screenwin->invalidflag,1);
screenwin->Unlock();
}
void ScreenDriver::SetMode(int32 space) void ScreenDriver::SetMode(int32 space)
{ {
screenwin->Lock(); screenwin->Lock();
+1
View File
@@ -177,6 +177,7 @@ public:
// void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat); // void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat); void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
void SetMode(int32 mode); void SetMode(int32 mode);
void SetMode(const display_mode &mode);
float StringWidth(const char *string, int32 length, LayerData *d); float StringWidth(const char *string, int32 length, LayerData *d);
float StringHeight(const char *string, int32 length, LayerData *d); float StringHeight(const char *string, int32 length, LayerData *d);
bool DumpToFile(const char *path); bool DumpToFile(const char *path);
+30 -32
View File
@@ -23,9 +23,7 @@
// Author: DarkWyrm <[email protected]> // Author: DarkWyrm <[email protected]>
// Description: Reader for BSession message streams // Description: Reader for BSession message streams
// //
//
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
#include <stdio.h> #include <stdio.h>
#include "SessionStreamReader.h" #include "SessionStreamReader.h"
@@ -52,26 +50,26 @@ void SessionMessage::SetData(const int32 &code, void *buffer, size_t buffersize)
SessionStreamReader::SessionStreamReader(msg_dispatcher_func *func) SessionStreamReader::SessionStreamReader(msg_dispatcher_func *func)
{ {
_buffer=NULL; fBuffer=NULL;
_dispatcher=func; fDispatcherFunc=func;
_msgsize=0; fMsgSize=0;
_msgcode=0; fMsgCode=0;
_currentbuffersize=0; fCurrentBufferSize=0;
} }
SessionStreamReader::~SessionStreamReader(void) SessionStreamReader::~SessionStreamReader(void)
{ {
if(_buffer) if(fBuffer)
{ {
printf("DEBUG: Deleting non-empty SessionStreamReader!\n"); printf("DEBUG: Deleting non-empty SessionStreamReader!\n");
delete _buffer; delete fBuffer;
} }
} }
void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize) void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
{ {
// This is the main functionality of the stream reader - it takes a BSession message buffer // This is the main functionality of the stream reader - it takes a BSession message buffer
// and reads as much as it can. The entire function centers around _buffer. If _buffer is // and reads as much as it can. The entire function centers around fBuffer. If fBuffer is
// NULL, then the stream reader is not waiting on the completion of a message. // NULL, then the stream reader is not waiting on the completion of a message.
if(!msgbuffer || buffersize==0) if(!msgbuffer || buffersize==0)
@@ -82,34 +80,34 @@ void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
// do we have a message waiting to be completed? // do we have a message waiting to be completed?
while(index<((int8*)msgbuffer+buffersize)) while(index<((int8*)msgbuffer+buffersize))
{ {
if(_buffer) if(fBuffer)
{ {
// We need to see if the data we have received in this call // We need to see if the data we have received in this call
// will complete the message or not // will complete the message or not
if(_currentbuffersize+buffersize>_msgsize) if(fCurrentBufferSize+buffersize>fMsgSize)
{ {
// It will, so copy the data to the current location in the buffer (indicated by // It will, so copy the data to the current location in the buffer (indicated by
// _currentbuffersize), call the Dispatch function, make the SSR empty, and iterate // fCurrentBufferSize), call the Dispatch function, make the SSR empty, and iterate
memcpy(_buffer+_currentbuffersize, msgbuffer, _msgsize-_currentbuffersize); memcpy(fBuffer+fCurrentBufferSize, msgbuffer, fMsgSize-fCurrentBufferSize);
index+=_msgsize-_currentbuffersize; index+=fMsgSize-fCurrentBufferSize;
_msg.SetData(_msgcode,_buffer,_msgsize); fSessionMessage.SetData(fMsgCode,fBuffer,fMsgSize);
(*_dispatcher)(&_msg); (*fDispatcherFunc)(&fSessionMessage);
delete _buffer; delete fBuffer;
_buffer=NULL; fBuffer=NULL;
_currentbuffersize=0; fCurrentBufferSize=0;
_msgsize=0; fMsgSize=0;
_msgcode=0; fMsgCode=0;
continue; continue;
} }
else else
{ {
// We will not be completing the message here, so simply copy the buffer and exit // We will not be completing the message here, so simply copy the buffer and exit
memcpy(_buffer+_currentbuffersize, msgbuffer, buffersize); memcpy(fBuffer+fCurrentBufferSize, msgbuffer, buffersize);
_currentbuffersize+=buffersize; fCurrentBufferSize+=buffersize;
break; break;
} }
@@ -117,16 +115,16 @@ void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
else else
{ {
// Get basic message data // Get basic message data
_msgcode=*((int32*)index); index+=sizeof(int32); fMsgCode=*((int32*)index); index+=sizeof(int32);
_msgsize=*((int32*)index); index+=sizeof(int32); fMsgSize=*((int32*)index); index+=sizeof(int32);
// Now that we have basic stuff for the message, let's see if it is complete // Now that we have basic stuff for the message, let's see if it is complete
if((index+_msgsize)>((int8*)msgbuffer+buffersize)) if((index+fMsgSize)>((int8*)msgbuffer+buffersize))
{ {
// We have an incomplete message. Allocate a buffer to contain all attached // We have an incomplete message. Allocate a buffer to contain all attached
// data, copy it over, and exit // data, copy it over, and exit
_buffer=new int8[_msgsize]; fBuffer=new int8[fMsgSize];
memcpy(_buffer, msgbuffer, ((int8*)msgbuffer+buffersize)-index); memcpy(fBuffer, msgbuffer, ((int8*)msgbuffer+buffersize)-index);
break; break;
} }
else else
@@ -134,9 +132,9 @@ void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
// This message is complete, so set the appropriate SessionMessage data and // This message is complete, so set the appropriate SessionMessage data and
// call the Dispatch function // call the Dispatch function
_msg.SetData(_msgcode,index,_msgsize); fSessionMessage.SetData(fMsgCode,index,fMsgSize);
(*_dispatcher)(&_msg); (*fDispatcherFunc)(&fSessionMessage);
index+=_msgsize; index+=fMsgSize;
} }
} }
} }
+5 -4
View File
@@ -47,11 +47,12 @@ public:
SessionStreamReader(msg_dispatcher_func *func); SessionStreamReader(msg_dispatcher_func *func);
~SessionStreamReader(void); ~SessionStreamReader(void);
void DispatchMessages(void *msgbuffer, size_t buffersize); void DispatchMessages(void *msgbuffer, size_t buffersize);
protected: protected:
int8 *_buffer; int8 *fBuffer;
uint32 _msgsize,_msgcode, _currentbuffersize; uint32 fMsgSize,fMsgCode, fCurrentBufferSize;
msg_dispatcher_func *_dispatcher; msg_dispatcher_func *fDispatcherFunc;
SessionMessage _msg; SessionMessage fSessionMessage;
}; };
#endif #endif
+13 -15
View File
@@ -52,10 +52,6 @@
#include "LayerData.h" #include "LayerData.h"
#include "PNGDump.h" #include "PNGDump.h"
// TODO: remove later!!!!!!!
#include <Cursor.h>
#include "CursorData.h"
#ifdef DEBUG_DRIVER_MODULE #ifdef DEBUG_DRIVER_MODULE
# include <stdio.h> # include <stdio.h>
# define STRACE(x) printf x # define STRACE(x) printf x
@@ -74,8 +70,6 @@ VDWIN_MOVECURSOR,
VDWIN_SETCURSOR, VDWIN_SETCURSOR,
}; };
//ViewDriver *viewdriver_global;
extern RGBColor workspace_default_color; extern RGBColor workspace_default_color;
@@ -86,9 +80,7 @@ VDView::VDView(BRect bounds)
viewbmp=new BBitmap(bounds,B_CMAP8,true); viewbmp=new BBitmap(bounds,B_CMAP8,true);
// This link for sending mouse messages to the OBAppServer. // This link for sending mouse messages to the OBAppServer.
// This is only to take the place of the Input Server. I suppose I could write // This is only to take the place of the Input Server.
// an addon filter to be more like the Input Server, but then I wouldn't be working
// on this thing! :P
serverlink=new PortLink(find_port(SERVER_INPUT_PORT)); serverlink=new PortLink(find_port(SERVER_INPUT_PORT));
// Create a cursor which isn't just a box // Create a cursor which isn't just a box
@@ -512,14 +504,11 @@ bool VDWindow::QuitRequested(void)
void VDWindow::WindowActivated(bool active) void VDWindow::WindowActivated(bool active)
{ {
// This is just to hide the regular system cursor so we can see our own // This is just to hide the regular system cursor so we can see our own
// TODO: REactivate later!!!!
/* if(active) if(active)
be_app->HideCursor(); be_app->HideCursor();
else else
be_app->ShowCursor(); be_app->ShowCursor();
*/
BCursor cursor(default_cursor_data);
view->SetViewCursor(&cursor, true);
} }
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
@@ -534,7 +523,6 @@ void VDWindow::WindowActivated(bool active)
ViewDriver::ViewDriver(void) ViewDriver::ViewDriver(void)
{ {
// viewdriver_global=this;
screenwin=new VDWindow(); screenwin=new VDWindow();
framebuffer=screenwin->view->viewbmp; framebuffer=screenwin->view->viewbmp;
serverlink=screenwin->view->serverlink; serverlink=screenwin->view->serverlink;
@@ -544,6 +532,16 @@ ViewDriver::ViewDriver(void)
_SetDepth(8); _SetDepth(8);
_SetMode(B_8_BIT_640x480); _SetMode(B_8_BIT_640x480);
_SetBytesPerRow(framebuffer->BytesPerRow()); _SetBytesPerRow(framebuffer->BytesPerRow());
// We add this because if we see the default workspace color, then we have at least
// a reasonable idea that everything is kosher.
framebuffer->Lock();
drawview=new BView(framebuffer->Bounds(),"drawview",B_FOLLOW_ALL, B_WILL_DRAW);
framebuffer->AddChild(drawview);
drawview->SetHighColor(workspace_default_color.GetColor32());
drawview->FillRect(drawview->Bounds());
drawview->Sync();
framebuffer->Unlock();
} }
ViewDriver::~ViewDriver(void) ViewDriver::~ViewDriver(void)