diff --git a/src/servers/app/Jamfile b/src/servers/app/Jamfile index d38c33bede..3aee492ca6 100644 --- a/src/servers/app/Jamfile +++ b/src/servers/app/Jamfile @@ -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 diff --git a/src/servers/app/drawing/BBitmapBuffer.cpp b/src/servers/app/drawing/BBitmapBuffer.cpp new file mode 100644 index 0000000000..acb0000540 --- /dev/null +++ b/src/servers/app/drawing/BBitmapBuffer.cpp @@ -0,0 +1,73 @@ +// BBitmapBuffer.h + +#include + +#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; +} + diff --git a/src/servers/app/drawing/BBitmapBuffer.h b/src/servers/app/drawing/BBitmapBuffer.h new file mode 100644 index 0000000000..99ee053f75 --- /dev/null +++ b/src/servers/app/drawing/BBitmapBuffer.h @@ -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 diff --git a/src/servers/app/drawing/ViewHWInterface.cpp b/src/servers/app/drawing/ViewHWInterface.cpp index 89ca1d8516..0dfcda3a4a 100644 --- a/src/servers/app/drawing/ViewHWInterface.cpp +++ b/src/servers/app/drawing/ViewHWInterface.cpp @@ -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) { diff --git a/src/servers/app/drawing/ViewHWInterface.h b/src/servers/app/drawing/ViewHWInterface.h index d88ace4daf..2c41fdacdd 100644 --- a/src/servers/app/drawing/ViewHWInterface.h +++ b/src/servers/app/drawing/ViewHWInterface.h @@ -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;