made room for a new meaning of BitmapBuffer, it will be used for a RenderingBuffer class that wraps arround a ServerBitmap. BBitmapBuffer on the other side is handy as well and wraps arround a BBitmap, as BitmapBuffer did before.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13297 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus 2005-06-27 22:11:27 +00:00
parent 203661c9d0
commit 063f418c53
5 changed files with 112 additions and 6 deletions

View File

@ -24,6 +24,7 @@ if ( $(TARGET_PLATFORM) = haiku ) {
VIEW_DRIVER_SOURCES =
AccelerantBuffer.cpp
AccelerantHWInterface.cpp
BitmapBuffer.cpp
DisplayDriverPainter.cpp
HWInterface.cpp
MallocBuffer.cpp
@ -32,6 +33,7 @@ if ( $(TARGET_PLATFORM) = haiku ) {
} else {
VIEW_DRIVER_SOURCES =
fake_input_server.cpp
BBitmapBuffer.cpp
BitmapBuffer.cpp
AccelerantBuffer.cpp
AccelerantHWInterface.cpp

View File

@ -0,0 +1,73 @@
// BBitmapBuffer.h
#include <Bitmap.h>
#include "BBitmapBuffer.h"
// constructor
BBitmapBuffer::BBitmapBuffer(BBitmap* bitmap)
: fBitmap(bitmap)
{
}
// destructor
BBitmapBuffer::~BBitmapBuffer()
{
delete fBitmap;
}
// InitCheck
status_t
BBitmapBuffer::InitCheck() const
{
status_t ret = B_NO_INIT;
if (fBitmap)
ret = fBitmap->InitCheck();
return ret;
}
// ColorSpace
color_space
BBitmapBuffer::ColorSpace() const
{
if (InitCheck() >= B_OK)
return fBitmap->ColorSpace();
return B_NO_COLOR_SPACE;
}
// Bits
void*
BBitmapBuffer::Bits() const
{
if (InitCheck() >= B_OK)
return fBitmap->Bits();
return NULL;
}
// BytesPerRow
uint32
BBitmapBuffer::BytesPerRow() const
{
if (InitCheck() >= B_OK)
return fBitmap->BytesPerRow();
return 0;
}
// Width
uint32
BBitmapBuffer::Width() const
{
if (InitCheck() >= B_OK)
return fBitmap->Bounds().IntegerWidth() + 1;
return 0;
}
// Height
uint32
BBitmapBuffer::Height() const
{
if (InitCheck() >= B_OK)
return fBitmap->Bounds().IntegerHeight() + 1;
return 0;
}

View File

@ -0,0 +1,31 @@
// BBitmapBuffer.h
#ifndef B_BITMAP_BUFFER_H
#define B_BITMAP_BUFFER_H
#include "RenderingBuffer.h"
class BBitmap;
class BBitmapBuffer : public RenderingBuffer {
public:
BBitmapBuffer(BBitmap* bitmap);
virtual ~BBitmapBuffer();
virtual status_t InitCheck() const;
virtual color_space ColorSpace() const;
virtual void* Bits() const;
virtual uint32 BytesPerRow() const;
virtual uint32 Width() const;
virtual uint32 Height() const;
// BBitmapBuffer
const BBitmap* Bitmap() const
{ return fBitmap; }
private:
BBitmap* fBitmap;
};
#endif // B_BITMAP_BUFFER_H

View File

@ -26,7 +26,7 @@
#include "fake_input_server.h"
#include "BitmapBuffer.h"
#include "BBitmapBuffer.h"
#include "PortLink.h"
#include "ServerConfig.h"
#include "ServerCursor.h"
@ -472,7 +472,7 @@ ViewHWInterface::SetMode(const display_mode &mode)
doubleBuffered = true;
BBitmap* frontBitmap = new BBitmap(frame, 0, (color_space)fDisplayMode.space);
fFrontBuffer = new BitmapBuffer(frontBitmap);
fFrontBuffer = new BBitmapBuffer(frontBitmap);
status_t err = fFrontBuffer->InitCheck();
if (err < B_OK) {
@ -486,7 +486,7 @@ ViewHWInterface::SetMode(const display_mode &mode)
// since we override IsDoubleBuffered(), the drawing buffer
// is in effect also always B_RGBA32.
BBitmap* backBitmap = new BBitmap(frame, 0, B_RGBA32);
fBackBuffer = new BitmapBuffer(backBitmap);
fBackBuffer = new BBitmapBuffer(backBitmap);
err = fBackBuffer->InitCheck();
if (err < B_OK) {

View File

@ -15,7 +15,7 @@
#include "HWInterface.h"
class BBitmap;
class BitmapBuffer;
class BBitmapBuffer;
class CardWindow;
class UpdateQueue;
@ -57,8 +57,8 @@ class ViewHWInterface : public HWInterface {
virtual status_t Invalidate(const BRect& frame);
private:
BitmapBuffer* fBackBuffer;
BitmapBuffer* fFrontBuffer;
BBitmapBuffer* fBackBuffer;
BBitmapBuffer* fFrontBuffer;
CardWindow* fWindow;