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 |