2 * AxWin4 Interface Library
3 * - By John Hodge (thePowersGang)
6 * - Window drawing code
8 #include <axwin4/axwin.h>
9 #include "include/common.hpp"
10 #include <ipc_proto.hpp>
11 #include <algorithm> // min
15 extern "C" void AxWin4_DrawBitmap(tAxWin4_Window *Window, int X, int Y, unsigned int W, unsigned int H, void *Data)
17 // TODO: Split message up into blocks such that it can be dispatched
20 const uint32_t* data32 = static_cast<uint32_t*>(Data);
21 const unsigned int rows_per_message = 2048 / W;
22 for( unsigned int row = 0; row < H; row += rows_per_message )
25 message.WriteU8(IPCMSG_PUSHDATA);
26 message.WriteU16(Window->m_id);
28 message.WriteU16(Y+row);
30 message.WriteU16( ::std::min(rows_per_message,H-row) );
31 message.WriteBuffer(W*4, data32);
32 ::AxWin::SendMessage(message);
33 data32 += W*rows_per_message;
39 message.WriteU8(IPCMSG_PUSHDATA);
40 message.WriteU16(Window->m_id);
45 message.WriteBuffer(W*H*4, Data);
46 ::AxWin::SendMessage(message);