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 void _push_data(tAxWin4_Window *Window, int X, int Y, unsigned int W, unsigned int H, const void *Data)
18 //_SysDebug("_push_data - (%i,%i), %ix%i %p", X, Y, W, H, Data);
19 message.WriteU8(IPCMSG_PUSHDATA);
20 message.WriteU16(Window->m_id);
25 message.WriteBuffer(H*W*4, Data);
26 ::AxWin::SendMessage(message);
29 extern "C" void AxWin4_DrawBitmap(tAxWin4_Window *Window, int X, int Y, unsigned int W, unsigned int H, void *Data)
31 // TODO: Split message up into blocks such that it can be dispatched
34 const uint32_t* data32 = static_cast<uint32_t*>(Data);
35 const unsigned int rows_per_message = 1; // 2048 / W;
36 for( unsigned int row = 0; row < H; row += rows_per_message )
38 _push_data(Window, X, Y+row, W, ::std::min(rows_per_message,H-row), data32);
39 data32 += W*rows_per_message;
44 _push_data(Window, X, Y, W, H, Data);
48 extern "C" void AxWin4_DrawControl(tAxWin4_Window *Window, int X, int Y, unsigned int W, unsigned int H, uint16_t ID, unsigned int Frame)
51 message.WriteU8(IPCMSG_DRAWCTL);
52 message.WriteU16(Window->m_id);
58 message.WriteU16(Frame);
59 ::AxWin::SendMessage(message);
62 extern "C" void AxWin4_DrawText(tAxWin4_Window *Window, int X, int Y, unsigned int W, unsigned int H, uint16_t FontID, const char *String)
65 message.WriteU8(IPCMSG_DRAWTEXT);
66 message.WriteU16(Window->m_id);
71 message.WriteU16(FontID);
72 message.WriteString(String);
73 ::AxWin::SendMessage(message);