Rev 6791 | Rev 7219 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6791 | Rev 7037 | ||
---|---|---|---|
Line 4... | Line 4... | ||
4 | 4 | ||
5 | #ifndef INCLUDE_KOLIBRI_H |
5 | #ifndef INCLUDE_KOLIBRI_H |
6 | #include "../lib/kolibri.h" |
6 | #include "../lib/kolibri.h" |
Line 7... | Line -... | ||
7 | #endif |
- | |
8 | - | ||
9 | struct buffer_data |
- | |
10 | { |
- | |
11 | dword size; |
- | |
12 | dword type; |
- | |
13 | dword encoding; |
- | |
14 | dword content; |
- | |
15 | }; |
- | |
16 | - | ||
17 | - | ||
18 | struct Clipboard { |
- | |
19 | buffer_data slot_data; |
- | |
20 | dword GetSlotCount(); |
- | |
21 | dword GetSlotData( ECX); |
- | |
22 | dword SetSlotData( EDX, ESI); |
- | |
23 | dword DelLastSlot(); |
- | |
Line -... | Line 7... | ||
- | 7 | #endif |
|
- | 8 | ||
- | 9 | ||
- | 10 | #ifndef INCLUDE_FILESYSTEM_H |
|
- | 11 | #include "../lib/file_system.h" |
|
- | 12 | #endif |
|
- | 13 | ||
- | 14 | //===================================================// |
|
- | 15 | // // |
|
- | 16 | // Kolibri Clipboard System Functions // |
|
- | 17 | // // |
|
- | 18 | //===================================================// |
|
- | 19 | ||
- | 20 | #define SLOT_DATA_TYPE_TEXT 0 |
|
- | 21 | #define SLOT_DATA_TYPE_TEXT_BLOCK 1 |
|
24 | dword ResetBlockingBuffer(); |
22 | #define SLOT_DATA_TYPE_IMAGE 2 |
25 | }; |
23 | #define SLOT_DATA_TYPE_RAW 3 |
26 | 24 | ||
27 | dword Clipboard::GetSlotCount() |
25 | inline fastcall dword Clipboard__GetSlotCount() |
28 | { |
26 | { |
29 | $mov eax, 54 |
27 | $mov eax, 54 |
Line 30... | Line -... | ||
30 | $mov ebx, 0 |
- | |
31 | $int 0x40 |
- | |
32 | } |
- | |
33 | - | ||
34 | #define SLOT_DATA_TYPE_TEXT 0 |
28 | $mov ebx, 0 |
35 | #define SLOT_DATA_TYPE_TEXT_WITH_BLOCK_SELECTION 1 |
29 | $int 0x40 |
36 | #define SLOT_DATA_TYPE_IMAGE 2 |
- | |
37 | #define SLOT_DATA_TYPE_RAW 3 |
30 | } |
38 | dword Clipboard::GetSlotData( ECX) //ECX = slot number |
31 | |
39 | { |
32 | inline fastcall dword Clipboard__GetSlotData( ECX) //ECX = slot number |
40 | dword result; |
- | |
41 | $mov eax, 54 |
- | |
42 | $mov ebx, 1 |
- | |
43 | $int 0x40 |
- | |
44 | result = EAX; |
- | |
45 | slot_data.size = DSDWORD[result]; |
- | |
46 | slot_data.type = DSDWORD[result+4]; |
- | |
47 | slot_data.encoding = DSDWORD[result+8]; |
33 | { |
Line 48... | Line 34... | ||
48 | if (slot_data.type == SLOT_DATA_TYPE_TEXT) slot_data.content = result+12; |
34 | $mov eax, 54 |
49 | else slot_data.content = result+8; |
35 | $mov ebx, 1 |
50 | return result; |
36 | $int 0x40 |
51 | } |
37 | } |
52 | 38 | ||
53 | dword Clipboard::SetSlotData( ECX, EDX) //ECX = data size, EDX - pointer to data |
39 | inline fastcall dword Clipboard__SetSlotData( ECX, EDX) //ECX = data size, EDX - pointer to data |
Line 54... | Line 40... | ||
54 | { |
40 | { |
55 | $mov eax, 54 |
41 | $mov eax, 54 |
56 | $mov ebx, 2 |
42 | $mov ebx, 2 |
57 | $int 0x40 |
43 | $int 0x40 |
58 | } |
44 | } |
59 | 45 | ||
Line 60... | Line 46... | ||
60 | dword Clipboard::DelLastSlot() |
46 | inline fastcall dword Clipboard__DeleteLastSlot() |
61 | { |
47 | { |
62 | $mov eax, 54 |
48 | $mov eax, 54 |
63 | $mov ebx, 3 |
49 | $mov ebx, 3 |
64 | $int 0x40 |
50 | $int 0x40 |
65 | } |
51 | } |
Line -... | Line 52... | ||
- | 52 | ||
- | 53 | inline fastcall dword Clipboard__ResetBlockingBuffer() |
|
- | 54 | { |
|
- | 55 | $mov eax, 54 |
|
- | 56 | $mov ebx, 4 |
|
- | 57 | $int 0x40 |
|
- | 58 | } |
|
- | 59 | ||
- | 60 | //===================================================// |
|
- | 61 | // // |
|
- | 62 | // Some useful patterns // |
|
- | 63 | // // |
|
- | 64 | //===================================================// |
|
- | 65 | ||
- | 66 | :void Clipboard__CopyText(dword _text) |
|
- | 67 | { |
|
- | 68 | int size_buf; |
|
- | 69 | dword buff_data; |
|
- | 70 | ||
- | 71 | size_buf = strlen(_text) + 12; |
|
- | 72 | buff_data = malloc(size_buf); |
|
- | 73 | ESDWORD[buff_data] = size_buf; |
|
- | 74 | ESDWORD[buff_data+4] = SLOT_DATA_TYPE_TEXT; |
|
- | 75 | ESDWORD[buff_data+8] = 1; //encoding 0=UTF, 1=866, 2=1251 |
|
- | 76 | strcpy(buff_data+12, _text); |
|
66 | 77 | ||
67 | dword Clipboard::ResetBlockingBuffer() |
78 | Clipboard__SetSlotData(size_buf, buff_data); |