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);
#ifdef DRAW_TEST
RGBColor red(255,0,0,0);
RGBColor green(0,255,0,0);
// Commented out to remove a couple warnings
// RGBColor red(255,0,0,0);
// RGBColor green(0,255,0,0);
RGBColor blue(0,0,255,0);
FillRect(BRect(0,0,1024,768),blue);
#endif
@@ -1055,6 +1056,12 @@ void AccelerantDriver::SetMode(int32 mode)
Unlock();
}
void AccelerantDriver::SetMode(const display_mode &mode)
{
// TODO: Implement
}
/*!
\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
@@ -94,6 +94,7 @@ public:
virtual void SetCursor(ServerCursor *csr);
virtual void SetMode(int32 mode);
virtual void SetMode(const display_mode &mode);
virtual bool DumpToFile(const char *path);
float StringWidth(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_value=angle;
fAngleValue=angle;
if(tables_initialized==false)
{
InitTrigTables();
@@ -51,7 +51,7 @@ Angle::Angle(float angle)
//! Constructor
Angle::Angle(void)
{
angle_value=0;
fAngleValue=0;
if(tables_initialized==false)
{
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
// within those bounds
if(angle_value>359)
if(fAngleValue>359)
{
while(angle_value>359)
angle_value-=360;
while(fAngleValue>359)
fAngleValue-=360;
return;
}
if(angle_value<0)
if(fAngleValue<0)
{
while(angle_value<0)
angle_value+=360;
while(fAngleValue<0)
fAngleValue+=360;
}
}
@@ -89,7 +89,7 @@ void Angle::Normalize(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)
{
return costable[(int)angle_value];
return costable[(int)fAngleValue];
}
/*!
@@ -166,14 +166,14 @@ Angle Angle::InvCosine(float value)
*/
float Angle::Tangent(int *status)
{
if(angle_value==90 || angle_value==270)
if(fAngleValue==90 || fAngleValue==270)
{
if(status)
*status=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
// which the checks are done.
if(angle_value < 90)
if(fAngleValue < 90)
return 1;
if(angle_value < 180)
if(fAngleValue < 180)
return 2;
if(angle_value < 270)
if(fAngleValue < 270)
return 3;
return 4;
@@ -232,10 +232,10 @@ uint8 Angle::Quadrant(void)
Angle Angle::Constrain180(void)
{
// Constrains angle to 0 <= angle < 180
float val=angle_value;
float val=fAngleValue;
if(angle_value<180)
return Angle(angle_value);
if(fAngleValue<180)
return Angle(fAngleValue);
while(!(val<180))
val-=90;
@@ -249,10 +249,10 @@ Angle Angle::Constrain180(void)
Angle Angle::Constrain90(void)
{
// Constrains angle to 0 <= angle < 90
float val=angle_value;
float val=fAngleValue;
if(angle_value<90)
return Angle(angle_value);
if(fAngleValue<90)
return Angle(fAngleValue);
while(!(val<90))
val-=90;
@@ -265,7 +265,7 @@ Angle Angle::Constrain90(void)
*/
void Angle::SetValue(float angle)
{
angle_value=angle;
fAngleValue=angle;
Normalize();
}
@@ -275,7 +275,7 @@ void Angle::SetValue(float angle)
*/
float Angle::Value(void) const
{
return angle_value;
return fAngleValue;
}
//! Initializes the global trig tables
@@ -319,7 +319,7 @@ void Angle::InitTrigTables(void)
*/
Angle & Angle::operator=(const Angle &from)
{
angle_value=from.angle_value;
fAngleValue=from.fAngleValue;
return *this;
}
@@ -330,7 +330,7 @@ Angle & Angle::operator=(const Angle &from)
*/
Angle & Angle::operator=(const float &from)
{
angle_value=from;
fAngleValue=from;
return *this;
}
@@ -341,7 +341,7 @@ Angle & Angle::operator=(const float &from)
*/
Angle & Angle::operator=(const long &from)
{
angle_value=(float)from;
fAngleValue=(float)from;
return *this;
}
@@ -352,7 +352,7 @@ Angle & Angle::operator=(const long &from)
*/
Angle & Angle::operator=(const int &from)
{
angle_value=(float)from;
fAngleValue=(float)from;
return *this;
}
@@ -363,7 +363,7 @@ Angle & Angle::operator=(const int &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)
{
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)
{
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)
{
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)
{
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)
{
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);
protected:
float angle_value;
float fAngleValue;
void InitTrigTables(void);
};
+41 -40
View File
@@ -34,52 +34,53 @@ class AppServer : public BApplication
#endif
{
public:
AppServer(void);
~AppServer(void);
AppServer(void);
~AppServer(void);
static int32 PollerThread(void *data);
static int32 PicassoThread(void *data);
thread_id Run(void);
void MainLoop(void);
static int32 PollerThread(void *data);
static int32 PicassoThread(void *data);
thread_id Run(void);
void MainLoop(void);
bool LoadDecorator(const char *path);
void InitDecorators(void);
void DispatchMessage(PortMessage *msg);
void Broadcast(int32 code);
bool LoadDecorator(const char *path);
void InitDecorators(void);
void DispatchMessage(PortMessage *msg);
void Broadcast(int32 code);
// TODO: remove shortly!
void HandleKeyMessage(int32 code, int8 *buffer);
ServerApp* FindApp(const char *sig);
void HandleKeyMessage(int32 code, int8 *buffer);
ServerApp* FindApp(const char *sig);
private:
friend Decorator* new_decorator(BRect rect, const char *title,
int32 wlook, int32 wfeel,
int32 wflags, DisplayDriver *ddriver);
friend Decorator* new_decorator(BRect rect, const char *title,
int32 wlook, int32 wfeel, int32 wflags, DisplayDriver *ddriver);
create_decorator *make_decorator; // global function pointer
port_id _messageport,
_mouseport;
image_id _decorator_id;
BString decorator_name;
bool _quitting_server,
_exit_poller;
BList *_applist;
thread_id _poller_id,
_picasso_id;
sem_id _active_lock,
_applist_lock,
_decor_lock;
DisplayDriver *_driver;
int32 _ssindex;
// global function pointer
create_decorator *make_decorator;
port_id _messageport,
_mouseport;
image_id _decorator_id;
BString decorator_name;
bool _quitting_server,
_exit_poller;
BList *_applist;
thread_id _poller_id,
_picasso_id;
sem_id _active_lock,
_applist_lock,
_decor_lock;
DisplayDriver *_driver;
int32 _ssindex;
};
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
}
//! Empty
void BitmapDriver::SetMode(const display_mode &mode)
{
// No need to reset a bitmap's color space
}
//! Empty
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 SetMode(int32 mode);
virtual void SetMode(const display_mode &mode);
float StringWidth(const char *string, int32 length, LayerData *d);
float StringHeight(const char *string, int32 length, LayerData *d);
// virtual bool DumpToFile(const char *path);
+11 -20
View File
@@ -29,6 +29,7 @@
#include "CursorManager.h"
#include "ServerCursor.h"
#include "CursorData.h"
#include "ServerScreen.h"
#include "ServerConfig.h"
#include <Errors.h>
#include <Directory.h>
@@ -177,37 +178,31 @@ void CursorManager::RemoveAppCursors(const char *signature)
//! Wrapper around the DisplayDriver ShowCursor call
void CursorManager::ShowCursor(void)
{
// TODO: Fix
/* Lock();
Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver();
DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->ShowCursor();
Unlock();
*/
}
//! Wrapper around the DisplayDriver HideCursor call
void CursorManager::HideCursor(void)
{
// TODO: Fix
/* Lock();
Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver();
DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->HideCursor();
Unlock();
*/
}
//! Wrapper around the DisplayDriver ObscureCursor call
void CursorManager::ObscureCursor(void)
{
// TODO: Fix
/* Lock();
Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver();
DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->ObscureCursor();
Unlock();
*/
}
/*!
@@ -216,25 +211,22 @@ void CursorManager::ObscureCursor(void)
*/
void CursorManager::SetCursor(int32 token)
{
// TODO: Fix
/* Lock();
Lock();
ServerCursor *c=_FindCursor(token);
if(c)
{
DisplayDriver *driver = desktop->CursorScreen()->DDriver();
DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
driver->SetCursor(c);
_current_which=B_CURSOR_OTHER;
}
Unlock();
*/
}
void CursorManager::SetCursor(cursor_which which)
{
// TODO: Fix
/* Lock();
Lock();
DisplayDriver *driver = desktop->CursorScreen()->DDriver();
DisplayDriver *driver = desktop->ActiveScreen()->DDriver();
switch(which)
{
case B_CURSOR_DEFAULT:
@@ -296,7 +288,6 @@ void CursorManager::SetCursor(cursor_which which)
}
Unlock();
*/
}
/*!
+13 -5
View File
@@ -24,7 +24,7 @@ Desktop::Desktop(void){
fActiveRootLayer = NULL;
fFrontWinBorder = NULL;
fFocusWinBorder = NULL;
fCursorScreen = NULL;
fActiveScreen = NULL;
}
//---------------------------------------------------------------------------
Desktop::~Desktop(void){
@@ -92,7 +92,7 @@ void Desktop::Init(void){
//---------------------------------------------------------------------------
void Desktop::InitMode(void){
// 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++){
char name[32];
sprintf(name, "RootLayer %ld", i+1);
@@ -120,8 +120,8 @@ int32 Desktop::ScreenCount() const{
return fScreenList.CountItems();
}
//---------------------------------------------------------------------------
Screen* Desktop::CursorScreen() const{
return fCursorScreen;
Screen* Desktop::ActiveScreen() const{
return fActiveScreen;
}
//---------------------------------------------------------------------------
void Desktop::SetActiveRootLayerByIndex(int32 listIndex){
@@ -344,7 +344,15 @@ void Desktop::MouseEventHandler(PortMessage *msg){
// 2) float - x coordinate of mouse click
// 3) float - y coordinate of mouse click
// 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;
}
case B_MOUSE_WHEEL_CHANGED:{
+2 -2
View File
@@ -26,7 +26,7 @@ public:
// Methods for multiple monitors.
Screen* ScreenAt(int32 index) const;
int32 ScreenCount() const;
Screen* CursorScreen() const;
Screen* ActiveScreen() const;
void SetActiveRootLayerByIndex(int32 listIndex);
void SetActiveRootLayer(RootLayer* rl);
@@ -91,7 +91,7 @@ private:
BList fScreenList;
int32 fScreenMode; // '1' or 'n' Screen(s). Not sure it's needed though.
Screen* fCursorScreen;
Screen* fActiveScreen;
scroll_bar_info fScrollBarInfo;
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 <List.h>
@@ -6,24 +31,29 @@
#include "WinBorder.h"
#include "ServerWindow.h"
FMWList::FMWList(){
FMWList::FMWList(void)
{
}
FMWList::~FMWList(){
//printf("~FMWList()\n");
FMWList::~FMWList(void)
{
// printf("~FMWList()\n");
// if (fList.CountItems() > 0)
// printf("SERVER: WARNING: FMWList NOT empty in destructor!\n");
}
void FMWList::AddItem(void* item){
int32 feelItem = ((WinBorder*)item)->Window()->Feel();;
int32 feelTemp = 0;
int32 location = 0;
void FMWList::AddItem(void *item)
{
int32 feelItem = ((WinBorder*)item)->Window()->Feel();;
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;
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 ||
feelItem == B_FLOATING_APP_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_ALL_WINDOW_FEEL)
)
// means we found the place for our window('wb')
{ location--; break; }
// means we found the place for our window('wb')
{
location--;
break;
}
}
fList.AddItem(item, location);
}
bool FMWList::HasItem(void* item) const{
bool FMWList::HasItem(void *item) const
{
return fList.HasItem(item);
}
bool FMWList::RemoveItem(void* item){
bool FMWList::RemoveItem(void *item)
{
return fList.RemoveItem(item);
}
void* FMWList::ItemAt(int32 i) const{
void *FMWList::ItemAt(int32 i) const
{
return fList.ItemAt(i);
}
int32 FMWList::CountItems() const{
int32 FMWList::CountItems() const
{
return fList.CountItems();
}
void* FMWList::LastItem() const{
void *FMWList::LastItem() const
{
return fList.LastItem();
}
void* FMWList::FirstItem() const{
void *FMWList::FirstItem() const
{
return fList.FirstItem();
}
int32 FMWList::IndexOf(void *item){
int32 FMWList::IndexOf(void *item)
{
return fList.IndexOf(item);
}
void FMWList::AddFMWList(FMWList *list){
int32 i = 0;
for(i=0; i<fList.CountItems(); i++){
int32 feel = ((WinBorder*)fList.ItemAt(i))->Window()->Feel();
void FMWList::AddFMWList(FMWList *list)
{
int32 i=0;
for(i=0; i<fList.CountItems(); i++)
{
int32 feel = ((WinBorder*)fList.ItemAt(i))->Window()->Feel();
if(feel == B_MODAL_SUBSET_WINDOW_FEEL ||
feel == B_MODAL_APP_WINDOW_FEEL ||
feel == B_MODAL_ALL_WINDOW_FEEL)
@@ -79,42 +121,53 @@ void FMWList::AddFMWList(FMWList *list){
}
int32 j = 0;
for(j=0; j<list->CountItems(); j++){
void *item = list->ItemAt(j);
int32 feel = ((WinBorder*)item)->Window()->Feel();
for(j=0; j<list->CountItems(); j++)
{
void *item = list->ItemAt(j);
int32 feel = ((WinBorder*)item)->Window()->Feel();
if(feel == B_MODAL_SUBSET_WINDOW_FEEL ||
feel == B_MODAL_APP_WINDOW_FEEL ||
feel == B_MODAL_ALL_WINDOW_FEEL)
{
fList.AddItem(item, fList.CountItems());
}
else{
else
{
fList.AddItem(item, i);
i++;
}
}
}
void FMWList::PrintToStream() const{
void FMWList::PrintToStream() const
{
printf("Floating and modal windows list:\n");
WinBorder *wb = NULL;
for (int32 i=0; i<fList.CountItems(); i++){
wb = (WinBorder*)fList.ItemAt(i);
for (int32 i=0; i<fList.CountItems(); i++)
{
wb=(WinBorder*)fList.ItemAt(i);
printf("\t%s", wb->GetName());
if (wb->Window()->Feel() == B_FLOATING_SUBSET_WINDOW_FEEL)
printf("\t%s\n", "B_FLOATING_SUBSET_WINDOW_FEEL");
if (wb->Window()->Feel() == B_FLOATING_APP_WINDOW_FEEL)
printf("\t%s\n", "B_FLOATING_APP_WINDOW_FEEL");
if (wb->Window()->Feel() == B_FLOATING_ALL_WINDOW_FEEL)
printf("\t%s\n", "B_FLOATING_ALL_WINDOW_FEEL");
if (wb->Window()->Feel() == B_MODAL_SUBSET_WINDOW_FEEL)
printf("\t%s\n", "B_MODAL_SUBSET_WINDOW_FEEL");
if (wb->Window()->Feel() == B_MODAL_APP_WINDOW_FEEL)
printf("\t%s\n", "B_MODAL_APP_WINDOW_FEEL");
if (wb->Window()->Feel() == 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)
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_
#define _FMWLIST_H_
#include <List.h>
#include <Window.h>
class FMWList{
class FMWList
{
public:
FMWList();
virtual ~FMWList();
void AddItem(void* item);
bool HasItem(void* item) const;
bool RemoveItem(void* item);
void* ItemAt(int32 i) const;
int32 CountItems() const;
void* LastItem() const;
void* FirstItem() const;
int32 IndexOf(void *item);
FMWList(void);
virtual ~FMWList(void);
void AddItem(void *item);
bool HasItem(void *item) const;
bool RemoveItem(void* item);
void *ItemAt(int32 i) const;
int32 CountItems(void) const;
void *LastItem(void) const;
void *FirstItem(void) const;
int32 IndexOf(void *item);
// special
void AddFMWList(FMWList *list);
void AddFMWList(FMWList *list);
// debugging methods
void PrintToStream() const;
void PrintToStream() const;
private:
BList fList;
BList fList;
};
#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 <Bitmap.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
#define PNGDUMP_H
+39
View File
@@ -365,6 +365,45 @@ void ScreenDriver::Shutdown(void)
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)
{
screenwin->Lock();
+1
View File
@@ -177,6 +177,7 @@ public:
// void StrokeShape(SShape *sh, LayerData *d, const Pattern &pat);
void StrokeTriangle(BPoint *pts, BRect r, LayerData *d, const Pattern &pat);
void SetMode(int32 mode);
void SetMode(const display_mode &mode);
float StringWidth(const char *string, int32 length, LayerData *d);
float StringHeight(const char *string, int32 length, LayerData *d);
bool DumpToFile(const char *path);
+30 -32
View File
@@ -23,9 +23,7 @@
// Author: DarkWyrm <[email protected]>
// Description: Reader for BSession message streams
//
//
//------------------------------------------------------------------------------
#include <stdio.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)
{
_buffer=NULL;
_dispatcher=func;
_msgsize=0;
_msgcode=0;
_currentbuffersize=0;
fBuffer=NULL;
fDispatcherFunc=func;
fMsgSize=0;
fMsgCode=0;
fCurrentBufferSize=0;
}
SessionStreamReader::~SessionStreamReader(void)
{
if(_buffer)
if(fBuffer)
{
printf("DEBUG: Deleting non-empty SessionStreamReader!\n");
delete _buffer;
delete fBuffer;
}
}
void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
{
// 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.
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?
while(index<((int8*)msgbuffer+buffersize))
{
if(_buffer)
if(fBuffer)
{
// We need to see if the data we have received in this call
// 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
// _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);
index+=_msgsize-_currentbuffersize;
memcpy(fBuffer+fCurrentBufferSize, msgbuffer, fMsgSize-fCurrentBufferSize);
index+=fMsgSize-fCurrentBufferSize;
_msg.SetData(_msgcode,_buffer,_msgsize);
(*_dispatcher)(&_msg);
fSessionMessage.SetData(fMsgCode,fBuffer,fMsgSize);
(*fDispatcherFunc)(&fSessionMessage);
delete _buffer;
_buffer=NULL;
_currentbuffersize=0;
_msgsize=0;
_msgcode=0;
delete fBuffer;
fBuffer=NULL;
fCurrentBufferSize=0;
fMsgSize=0;
fMsgCode=0;
continue;
}
else
{
// We will not be completing the message here, so simply copy the buffer and exit
memcpy(_buffer+_currentbuffersize, msgbuffer, buffersize);
_currentbuffersize+=buffersize;
memcpy(fBuffer+fCurrentBufferSize, msgbuffer, buffersize);
fCurrentBufferSize+=buffersize;
break;
}
@@ -117,16 +115,16 @@ void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
else
{
// Get basic message data
_msgcode=*((int32*)index); index+=sizeof(int32);
_msgsize=*((int32*)index); index+=sizeof(int32);
fMsgCode=*((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
if((index+_msgsize)>((int8*)msgbuffer+buffersize))
if((index+fMsgSize)>((int8*)msgbuffer+buffersize))
{
// We have an incomplete message. Allocate a buffer to contain all attached
// data, copy it over, and exit
_buffer=new int8[_msgsize];
memcpy(_buffer, msgbuffer, ((int8*)msgbuffer+buffersize)-index);
fBuffer=new int8[fMsgSize];
memcpy(fBuffer, msgbuffer, ((int8*)msgbuffer+buffersize)-index);
break;
}
else
@@ -134,9 +132,9 @@ void SessionStreamReader::DispatchMessages(void *msgbuffer, size_t buffersize)
// This message is complete, so set the appropriate SessionMessage data and
// call the Dispatch function
_msg.SetData(_msgcode,index,_msgsize);
(*_dispatcher)(&_msg);
index+=_msgsize;
fSessionMessage.SetData(fMsgCode,index,fMsgSize);
(*fDispatcherFunc)(&fSessionMessage);
index+=fMsgSize;
}
}
}
+5 -4
View File
@@ -47,11 +47,12 @@ public:
SessionStreamReader(msg_dispatcher_func *func);
~SessionStreamReader(void);
void DispatchMessages(void *msgbuffer, size_t buffersize);
protected:
int8 *_buffer;
uint32 _msgsize,_msgcode, _currentbuffersize;
msg_dispatcher_func *_dispatcher;
SessionMessage _msg;
int8 *fBuffer;
uint32 fMsgSize,fMsgCode, fCurrentBufferSize;
msg_dispatcher_func *fDispatcherFunc;
SessionMessage fSessionMessage;
};
#endif
+13 -15
View File
@@ -52,10 +52,6 @@
#include "LayerData.h"
#include "PNGDump.h"
// TODO: remove later!!!!!!!
#include <Cursor.h>
#include "CursorData.h"
#ifdef DEBUG_DRIVER_MODULE
# include <stdio.h>
# define STRACE(x) printf x
@@ -74,8 +70,6 @@ VDWIN_MOVECURSOR,
VDWIN_SETCURSOR,
};
//ViewDriver *viewdriver_global;
extern RGBColor workspace_default_color;
@@ -86,9 +80,7 @@ VDView::VDView(BRect bounds)
viewbmp=new BBitmap(bounds,B_CMAP8,true);
// 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
// an addon filter to be more like the Input Server, but then I wouldn't be working
// on this thing! :P
// This is only to take the place of the Input Server.
serverlink=new PortLink(find_port(SERVER_INPUT_PORT));
// Create a cursor which isn't just a box
@@ -512,14 +504,11 @@ bool VDWindow::QuitRequested(void)
void VDWindow::WindowActivated(bool active)
{
// 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();
else
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_global=this;
screenwin=new VDWindow();
framebuffer=screenwin->view->viewbmp;
serverlink=screenwin->view->serverlink;
@@ -544,6 +532,16 @@ ViewDriver::ViewDriver(void)
_SetDepth(8);
_SetMode(B_8_BIT_640x480);
_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)