summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/render/drawgdi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/render/drawgdi.cpp')
-rw-r--r--src/osd/modules/render/drawgdi.cpp148
1 files changed, 30 insertions, 118 deletions
diff --git a/src/osd/modules/render/drawgdi.cpp b/src/osd/modules/render/drawgdi.cpp
index 11e61a28407..bd305a6e7e7 100644
--- a/src/osd/modules/render/drawgdi.cpp
+++ b/src/osd/modules/render/drawgdi.cpp
@@ -6,125 +6,41 @@
//
//============================================================
-// standard windows headers
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-// MAME headers
-#include "emu.h"
+#include "drawgdi.h"
#include "rendersw.inc"
-// MAMEOS headers
-#include "window.h"
-
-
-//============================================================
-// TYPE DEFINITIONS
-//============================================================
-
-class renderer_gdi : public osd_renderer
-{
-public:
- renderer_gdi(osd_window *window)
- : osd_renderer(window, FLAG_NONE), bmdata(NULL), bmsize(0) { }
-
- virtual ~renderer_gdi() { }
-
- virtual int create() override;
- virtual render_primitive_list *get_primitives() override;
- virtual int draw(const int update) override;
- virtual void save() override {};
- virtual void record() override {};
- virtual void toggle_fsfx() override {};
- virtual void destroy() override;
-
-private:
- /* gdi_info is the information for the current screen */
- BITMAPINFO bminfo;
- UINT8 * bmdata;
- size_t bmsize;
-};
-
-
-//============================================================
-// PROTOTYPES
-//============================================================
-
-// core functions
-static void drawgdi_exit(void);
-
-//============================================================
-// drawnone_create
-//============================================================
-
-static osd_renderer *drawgdi_create(osd_window *window)
-{
- return global_alloc(renderer_gdi(window));
-}
-
-
-//============================================================
-// drawgdi_init
-//============================================================
-
-int drawgdi_init(running_machine &machine, osd_draw_callbacks *callbacks)
-{
- // fill in the callbacks
- memset(callbacks, 0, sizeof(*callbacks));
- callbacks->exit = drawgdi_exit;
- callbacks->create = drawgdi_create;
- return 0;
-}
-
-
-
//============================================================
-// drawgdi_exit
+// destructor
//============================================================
-static void drawgdi_exit(void)
+renderer_gdi::~renderer_gdi()
{
+ // free the bitmap memory
+ if (m_bmdata != NULL)
+ global_free_array(m_bmdata);
}
-
-
//============================================================
-// drawgdi_window_init
+// renderer_gdi::create
//============================================================
int renderer_gdi::create()
{
// fill in the bitmap info header
- bminfo.bmiHeader.biSize = sizeof(bminfo.bmiHeader);
- bminfo.bmiHeader.biPlanes = 1;
- bminfo.bmiHeader.biBitCount = 32;
- bminfo.bmiHeader.biCompression = BI_RGB;
- bminfo.bmiHeader.biSizeImage = 0;
- bminfo.bmiHeader.biXPelsPerMeter = 0;
- bminfo.bmiHeader.biYPelsPerMeter = 0;
- bminfo.bmiHeader.biClrUsed = 0;
- bminfo.bmiHeader.biClrImportant = 0;
-
+ m_bminfo.bmiHeader.biSize = sizeof(m_bminfo.bmiHeader);
+ m_bminfo.bmiHeader.biPlanes = 1;
+ m_bminfo.bmiHeader.biBitCount = 32;
+ m_bminfo.bmiHeader.biCompression = BI_RGB;
+ m_bminfo.bmiHeader.biSizeImage = 0;
+ m_bminfo.bmiHeader.biXPelsPerMeter = 0;
+ m_bminfo.bmiHeader.biYPelsPerMeter = 0;
+ m_bminfo.bmiHeader.biClrUsed = 0;
+ m_bminfo.bmiHeader.biClrImportant = 0;
return 0;
}
-
-
-//============================================================
-// drawgdi_window_destroy
-//============================================================
-
-void renderer_gdi::destroy()
-{
- // free the bitmap memory
- if (bmdata != NULL)
- global_free_array(bmdata);
-}
-
-
-
//============================================================
-// drawgdi_window_get_primitives
+// renderer_gdi::get_primitives
//============================================================
render_primitive_list *renderer_gdi::get_primitives()
@@ -135,49 +51,45 @@ render_primitive_list *renderer_gdi::get_primitives()
return &window().target()->get_primitives();
}
-
-
//============================================================
-// drawgdi_window_draw
+// renderer_gdi::draw
//============================================================
int renderer_gdi::draw(const int update)
{
- int width, height, pitch;
- RECT bounds;
-
// we don't have any special resize behaviors
if (window().m_resize_state == RESIZE_STATE_PENDING)
window().m_resize_state = RESIZE_STATE_NORMAL;
// get the target bounds
+ RECT bounds;
GetClientRect(window().m_hwnd, &bounds);
// compute width/height/pitch of target
- width = rect_width(&bounds);
- height = rect_height(&bounds);
- pitch = (width + 3) & ~3;
+ int width = rect_width(&bounds);
+ int height = rect_height(&bounds);
+ int pitch = (width + 3) & ~3;
// make sure our temporary bitmap is big enough
- if (pitch * height * 4 > bmsize)
+ if (pitch * height * 4 > m_bmsize)
{
- bmsize = pitch * height * 4 * 2;
- global_free_array(bmdata);
- bmdata = global_alloc_array(UINT8, bmsize);
+ m_bmsize = pitch * height * 4 * 2;
+ global_free_array(m_bmdata);
+ m_bmdata = global_alloc_array(UINT8, m_bmsize);
}
// draw the primitives to the bitmap
window().m_primlist->acquire_lock();
- software_renderer<UINT32, 0,0,0, 16,8,0>::draw_primitives(*window().m_primlist, bmdata, width, height, pitch);
+ software_renderer<UINT32, 0,0,0, 16,8,0>::draw_primitives(*window().m_primlist, m_bmdata, width, height, pitch);
window().m_primlist->release_lock();
// fill in bitmap-specific info
- bminfo.bmiHeader.biWidth = pitch;
- bminfo.bmiHeader.biHeight = -height;
+ m_bminfo.bmiHeader.biWidth = pitch;
+ m_bminfo.bmiHeader.biHeight = -height;
// blit to the screen
StretchDIBits(window().m_dc, 0, 0, width, height,
0, 0, width, height,
- bmdata, &bminfo, DIB_RGB_COLORS, SRCCOPY);
+ m_bmdata, &m_bminfo, DIB_RGB_COLORS, SRCCOPY);
return 0;
}