Subversion Repositories Kolibri OS

Rev

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);