Subversion Repositories Kolibri OS

Rev

Rev 6357 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6342 IgorA 1
 
2
mem_panel_but equ 50*(20*20*3) ;память для панели инструментов
6371 IgorA 3
mem_panel_zoom equ 6*(18*21*3) ;память для панели с кнопками масштабов
4
mem_panel_all equ mem_panel_but+mem_panel_zoom ;размер памяти для
5
	;всех панелей инструментов
6
mem_flood_f equ 500000 ;размер буфера для заливки, а также для палитры
6342 IgorA 7
mem_offs_shape equ 4807*4 ;смещение для разделения массива ReserveArray
6371 IgorA 8
6342 IgorA 9
 
6371 IgorA 10
;
11
; mem_flood_f примерно равно 4*((1200^2+1000^2)^0.5)*3*(1+5*5)
12
;   Т.е. 4 диагонали экрана 1200 на 1000 умноженных на 26.
13
;   На каждый пиксель рисуемой фигуры приходится также область
14
;   памяти для запоминания фонового изображения, с учетом того
15
;   что максимальный размер кисти 5*5 получаем 26 = 1 + 5*5.
16
;
17
; Память ReserveArray делится на 2 области: 1-я для точек
18
;   рисуемой фигуры, 2-я для запоминания участков фона 5*5
19
;   прикрепленных к каждой точке рисуемой фигуры.
20
;   Разделение этой памяти происходит в пропорции 1 к 26,
21
;   что примерно равно: mem_flood_f / (1+5*5) или 4807*4.
22
23
 
255 heavyiron 24
;--------change size of memory which use program-----------
25
;----------------------------------------------------------
26
GetMemory:
27
	pusha
1643 mario79 28
	mov	ecx,[Picture_SizeX]
1632 mario79 29
	mov	edx,[Picture_SizeY]
30
	imul ecx,edx
6371 IgorA 31
	lea	ecx,[ecx+ecx*2]
1632 mario79 32
	lea	ecx,[ecx+ecx*4] ;(Picture_SizeX*Picture_SizeY*3)*5
6342 IgorA 33
	add	ecx,mem_screen+mem_panel_all+mem_flood_f
6371 IgorA 34
	mcall SF_SYS_MISC,SSF_MEM_REALLOC,,[ScreenPointer]
6342 IgorA 35
	test eax,eax
36
	jnz	.have_new_memory
6371 IgorA 37
	;mov esi,sound_havent_memory
38
	;call sound
39
	notify_window_run txt_not_memory
40
	popa
1643 mario79 41
	add	esp,4
42
	jmp	still
1632 mario79 43
255 heavyiron 44
 
6371 IgorA 45
	mov	[ScreenPointer],eax
1632 mario79 46
	call prepare_data_pointers
6371 IgorA 47
	popa
1643 mario79 48
	ret
1632 mario79 49
;---------------------------------------------------------
50
prepare_data_pointers:
51
	mov	eax,[Picture_SizeX]
52
	mov	ebx,[Picture_SizeY]
53
	imul	eax,ebx
54
	lea	eax,[eax+eax*2]
55
	mov	ebx,[ScreenPointer]
56
	add	ebx,mem_screen+mem_panel_all+mem_flood_f
6371 IgorA 57
255 heavyiron 58
 
1632 mario79 59
	mov	[PointerToCopyPicture],ebx
60
	mov	[PointerToCopyPicture2],ebx
61
	mov	[PointerToEditBufer],ebx
62
	mov	[PointerToSpriteBufer],ebx
63
255 heavyiron 64
 
1632 mario79 65
255 heavyiron 66
 
1632 mario79 67
	add	[PointerToCopyPicture2],eax
68
69
 
70
	add	[PointerToEditBufer],eax
71
	add	[PointerToEditBufer],eax
72
73
 
6327 IgorA 74
	add	[PointerToSpriteBufer],eax
1632 mario79 75
1643 mario79 76
 
77
	add	eax,mem_screen+mem_panel_all
6371 IgorA 78
	mov	[PointerToPalette],eax
1643 mario79 79
	mov	[ReserveArray],eax
80
6352 IgorA 81
 
6357 IgorA 82
	ret
1632 mario79 83
;---------------------------------------------------------
84