Minor tweaks and fixes

This commit is contained in:
Birunthan Mohanathas
2013-03-27 18:14:27 +02:00
parent f16224793e
commit c6374f7c12
6 changed files with 30 additions and 34 deletions

View File

@ -69,7 +69,7 @@ CanvasD2D::CanvasD2D() : Canvas(),
CanvasD2D::~CanvasD2D()
{
DiscardDeviceResources();
Dispose();
Finalize();
}
@ -118,7 +118,7 @@ void CanvasD2D::Finalize()
}
}
void CanvasD2D::DiscardDeviceResources()
void CanvasD2D::Dispose()
{
SafeRelease(&m_Target);
@ -133,7 +133,7 @@ void CanvasD2D::Resize(int w, int h)
{
__super::Resize(w, h);
DiscardDeviceResources();
Dispose();
m_Bitmap.Resize(w, h);

View File

@ -74,7 +74,7 @@ private:
static bool Initialize();
static void Finalize();
void DiscardDeviceResources();
void Dispose();
bool BeginTargetDraw();
void EndTargetDraw();

View File

@ -22,7 +22,7 @@ namespace Gfx {
CanvasGDIP::CanvasGDIP() : Canvas(),
m_Graphics(),
m_DoubleBuffer(),
m_Bitmap(),
m_DIBSectionBuffer(),
m_DIBSectionBufferPixels()
{
@ -30,22 +30,30 @@ CanvasGDIP::CanvasGDIP() : Canvas(),
CanvasGDIP::~CanvasGDIP()
{
delete m_DoubleBuffer;
if (m_DIBSectionBuffer) DeleteObject(m_DIBSectionBuffer);
Dispose();
}
void CanvasGDIP::Dispose()
{
delete m_Graphics;
m_Graphics = nullptr;
delete m_Bitmap;
m_Bitmap = nullptr;
if (m_DIBSectionBuffer)
{
DeleteObject(m_DIBSectionBuffer);
m_DIBSectionBuffer = nullptr;
m_DIBSectionBufferPixels = nullptr;
}
}
void CanvasGDIP::Resize(int w, int h)
{
__super::Resize(w, h);
delete m_Graphics;
if (m_DIBSectionBuffer)
{
delete m_DoubleBuffer;
DeleteObject(m_DIBSectionBuffer);
m_DIBSectionBufferPixels = nullptr;
}
Dispose();
BITMAPV4HEADER bh = {sizeof(BITMAPV4HEADER)};
bh.bV4Width = w;
@ -67,14 +75,14 @@ void CanvasGDIP::Resize(int w, int h)
0);
// Create GDI+ bitmap from the DIBSection pixels
m_DoubleBuffer = new Gdiplus::Bitmap(
m_Bitmap = new Gdiplus::Bitmap(
w,
h,
w * 4,
PixelFormat32bppPARGB,
(BYTE*)m_DIBSectionBufferPixels);
m_Graphics = new Gdiplus::Graphics(m_DoubleBuffer);
m_Graphics = new Gdiplus::Graphics(m_Bitmap);
}
bool CanvasGDIP::BeginDraw()

View File

@ -64,8 +64,10 @@ public:
private:
CanvasGDIP(const CanvasGDIP& other) {}
void Dispose();
Gdiplus::Graphics* m_Graphics;
Gdiplus::Bitmap* m_DoubleBuffer;
Gdiplus::Bitmap* m_Bitmap;
HBITMAP m_DIBSectionBuffer;
LPDWORD m_DIBSectionBufferPixels;