Subversion Repositories Kolibri OS

Rev

Rev 8877 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8877 Rev 8878
1
#ifndef INCLUDE_CLIPBOARD_H
1
#ifndef INCLUDE_CLIPBOARD_H
2
#define INCLUDE_CLIPBOARD_H
2
#define INCLUDE_CLIPBOARD_H
3
#print "[include ]\n"
3
#print "[include ]\n"
4
 
4
 
5
#ifndef INCLUDE_KOLIBRI_H
5
#ifndef INCLUDE_KOLIBRI_H
6
#include "../lib/kolibri.h"
6
#include "../lib/kolibri.h"
7
#endif
7
#endif
8
 
8
 
9
//===================================================//
9
//===================================================//
10
//                                                   //
10
//                                                   //
11
//       Kolibri Clipboard System Functions          //
11
//       Kolibri Clipboard System Functions          //
12
//                                                   //
12
//                                                   //
13
//===================================================//
13
//===================================================//
14
 
14
 
15
#define SLOT_DATA_TYPE_TEXT 0
15
#define SLOT_DATA_TYPE_TEXT 0
16
#define SLOT_DATA_TYPE_TEXT_BLOCK 1
16
#define SLOT_DATA_TYPE_TEXT_BLOCK 1
17
#define SLOT_DATA_TYPE_IMAGE 2
17
#define SLOT_DATA_TYPE_IMAGE 2
18
#define SLOT_DATA_TYPE_RAW 3
18
#define SLOT_DATA_TYPE_RAW 3
19
 
19
 
20
inline fastcall dword Clipboard__GetSlotCount()
20
inline fastcall dword Clipboard__GetSlotCount()
21
{
21
{
22
	$mov eax, 54 
22
	$mov eax, 54 
23
	$mov ebx, 0
23
	$mov ebx, 0
24
	$int 0x40
24
	$int 0x40
25
}
25
}
26
 
26
 
27
inline fastcall dword Clipboard__GetSlotData( ECX) //ECX = slot number
27
inline fastcall dword Clipboard__GetSlotData( ECX) //ECX = slot number
28
{
28
{
29
	$mov eax, 54 
29
	$mov eax, 54 
30
	$mov ebx, 1
30
	$mov ebx, 1
31
	$int 0x40
31
	$int 0x40
32
}
32
}
33
 
33
 
34
inline fastcall dword Clipboard__SetSlotData( ECX, EDX) //ECX = data size, EDX - pointer to data
34
inline fastcall dword Clipboard__SetSlotData( ECX, EDX) //ECX = data size, EDX - pointer to data
35
{
35
{
36
	$mov eax, 54 
36
	$mov eax, 54 
37
	$mov ebx, 2
37
	$mov ebx, 2
38
	$int 0x40
38
	$int 0x40
39
}
39
}
40
 
40
 
41
inline fastcall dword Clipboard__DeleteLastSlot()
41
inline fastcall dword Clipboard__DeleteLastSlot()
42
{
42
{
43
	$mov eax, 54 
43
	$mov eax, 54 
44
	$mov ebx, 3
44
	$mov ebx, 3
45
	$int 0x40
45
	$int 0x40
46
}
46
}
47
 
47
 
48
inline fastcall dword Clipboard__ResetBlockingBuffer()
48
inline fastcall dword Clipboard__ResetBlockingBuffer()
49
{
49
{
50
	$mov eax, 54 
50
	$mov eax, 54 
51
	$mov ebx, 4
51
	$mov ebx, 4
52
	$int 0x40
52
	$int 0x40
53
}
53
}
54
 
54
 
55
//===================================================//
55
//===================================================//
56
//                                                   //
56
//                                                   //
57
//               Some useful patterns                //
57
//               Some useful patterns                //
58
//                                                   //
58
//                                                   //
59
//===================================================//
59
//===================================================//
60
 
60
 
61
:void Clipboard__CopyText(dword _text)
61
:void Clipboard__CopyText(dword _text)
62
{
62
{
63
dword size_buf;
63
dword size_buf;
64
dword buff_data;
64
dword buff_data;
65
 
65
 
66
	size_buf = strlen(_text) + 12;
66
	size_buf = strlen(_text) + 12;
67
	buff_data = malloc(size_buf);
67
	buff_data = malloc(size_buf);
68
	ESDWORD[buff_data] = size_buf;
68
	ESDWORD[buff_data] = size_buf;
69
	ESDWORD[buff_data+4] = SLOT_DATA_TYPE_TEXT;
69
	ESDWORD[buff_data+4] = SLOT_DATA_TYPE_TEXT;
70
	ESDWORD[buff_data+8] = 1; //encoding 0=UTF, 1=866, 2=1251
70
	ESDWORD[buff_data+8] = 1; //encoding 0=UTF, 1=866, 2=1251
71
	strcpy(buff_data+12, _text);
71
	strcpy(buff_data+12, _text);
72
 
72
 
73
	Clipboard__SetSlotData(size_buf, buff_data);
73
	Clipboard__SetSlotData(size_buf, buff_data);
74
	if (EAX!=0) notify("'Error while copying to clipboard!'E");
74
	//if (EAX!=0) notify("'Error while copying to clipboard!'E");
75
 
75
 
76
	buff_data = free(buff_data);
76
	buff_data = free(buff_data);
77
}
77
}
78
 
78
 
79
 
79
 
80
#endif
80
#endif