df320ef7f9dc17b948ea97bf1f7265e650eb394e
[tpg/acess2.git] / Usermode / Libraries / libaxwin4.so_src / window_drawing.cpp
1 /*
2  * AxWin4 Interface Library
3  * - By John Hodge (thePowersGang)
4  *
5  * window_drawing.cpp
6  * - Window drawing code
7  */
8 #include <axwin4/axwin.h>
9 #include "include/common.hpp"
10 #include <ipc_proto.hpp>
11
12 namespace AxWin {
13
14 extern "C" void AxWin4_DrawBitmap(tAxWin4_Window *Window, int X, int Y, unsigned int W, unsigned int H, void *Data)
15 {
16         // TODO: Split message up into blocks such that it can be dispatched
17         if( W > 128 )
18         {
19                 const uint32_t* data32 = static_cast<uint32_t*>(Data);
20                 for( unsigned int row = 0; row < H; row ++ )
21                 {
22                         CSerialiser     message;
23                         message.WriteU8(IPCMSG_PUSHDATA);
24                         message.WriteU16(Window->m_id);
25                         message.WriteU16(X);
26                         message.WriteU16(Y+row);
27                         message.WriteU16(W);
28                         message.WriteU16(1);
29                         message.WriteBuffer(W*4, data32);
30                         ::AxWin::SendMessage(message);
31                         data32 += W;
32                 }
33         }
34         else
35         {
36                 CSerialiser     message;
37                 message.WriteU8(IPCMSG_PUSHDATA);
38                 message.WriteU16(Window->m_id);
39                 message.WriteU16(X);
40                 message.WriteU16(Y);
41                 message.WriteU16(W);
42                 message.WriteU16(H);
43                 message.WriteBuffer(W*H*4, Data);
44                 ::AxWin::SendMessage(message);
45         }
46 }
47
48 };      // namespace AxWin
49

UCC git Repository :: git.ucc.asn.au