Rev 4091 | Rev 4156 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4036 | GerdtR | 1 | ;иногда неверно определяется ширина менюшки |
2 | |||
4146 | GerdtR | 3 | ICONS_DAT equ '/rd/1/icons.dat' |
4 | ICON_STRIP equ '/rd/1/iconstrp.png' |
||
5 | ICON_SIZE equ 68 |
||
6 | IMG_SIZE equ 32 |
||
7 | TEXT_BOTTOM_Y equ 14 |
||
8 | IMAGE_TOP_Y equ 10 ;>=1 |
||
9 | ALIGN_SIZE equ 68 |
||
10 | NAME_LENGTH equ 11 |
||
11 | MIN_NO_MOVING equ 8 |
||
12 | ;для диалога создания/редактирования |
||
13 | ICONSX equ 20 |
||
14 | ICONSY equ 80 |
||
3853 | GerdtR | 15 | ICONS_DRAW_COUNTW equ 10 ;количество иконок в ширину |
16 | ICONS_DRAW_COUNTH equ 2 ;количество иконок в высоту |
||
4146 | GerdtR | 17 | SPCW equ 3 ;пробел между иконками по горизонтали |
18 | SPCH equ 3 |
||
3853 | GerdtR | 19 | END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW |
20 | END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH |
||
21 | |||
22 | |||
23 | |||
4146 | GerdtR | 24 | SizeData equ bufStdIco+32 |
25 | BegData equ fiStdIco.point |
||
3853 | GerdtR | 26 | ;------------------------------------------------------------------------------ |
4146 | GerdtR | 27 | use32 |
28 | org 0x0 |
||
29 | db 'MENUET01' ; 8 byte id |
||
30 | dd 0x01 ; header version |
||
31 | dd START ; start of code |
||
32 | dd I_END ; size of image |
||
33 | dd ENDMEM ; memory for app |
||
34 | dd stack_main ; esp |
||
35 | dd 0 ; boot parameters |
||
36 | dd 0 ; path |
||
3853 | GerdtR | 37 | ;------------------------------------------------------------------------------ |
38 | include 'lang.inc' |
||
39 | include '../../macros.inc' |
||
40 | include '../../proc32.inc' |
||
41 | include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
||
42 | include '../../dll.inc' |
||
4003 | GerdtR | 43 | ;include '../../debug.inc' |
3853 | GerdtR | 44 | |
45 | ;------------------------------------------------------------------------------ |
||
4146 | GerdtR | 46 | START: ; start of execution |
47 | mcall 68,11 |
||
48 | stdcall dll.Load,IMPORTS |
||
49 | test eax,eax |
||
50 | jnz ErrLoadLibs |
||
3853 | GerdtR | 51 | |
52 | ; unpack deflate |
||
4146 | GerdtR | 53 | mov eax,[unpack_DeflateUnpack2] |
54 | mov [deflate_unpack],eax |
||
3853 | GerdtR | 55 | ;--------------------------------------------------------------------- |
56 | ; get size of file ICONSTRP.PNG |
||
4146 | GerdtR | 57 | mcall 70,fiStdIco |
58 | test eax,eax |
||
59 | jnz ErrorStrp |
||
3853 | GerdtR | 60 | ; get memory for ICONSTRP.PNG |
4146 | GerdtR | 61 | mov ecx,dword[bufStdIco+32] |
62 | mov [fiStdIco.size],ecx |
||
63 | mov [img_size],ecx |
||
64 | mcall 68,12 |
||
65 | mov [fiStdIco.point],eax |
||
66 | mov [image_file],eax |
||
3853 | GerdtR | 67 | ; load ICONSTRP.PNG |
4146 | GerdtR | 68 | mov dword[fiStdIco],0 |
69 | mcall 70,fiStdIco |
||
70 | test eax,eax |
||
71 | jnz close |
||
3853 | GerdtR | 72 | ; convert PNG to RAW |
4146 | GerdtR | 73 | xor eax,eax |
74 | mov [return_code],eax |
||
3853 | GerdtR | 75 | ;int3 |
76 | |||
4146 | GerdtR | 77 | push image_file |
78 | call [cnv_png_import.Start] |
||
3853 | GerdtR | 79 | |
4146 | GerdtR | 80 | mov eax,[raw_pointer] |
81 | mov ebx,[eax+32] |
||
82 | mov [strip_file_size],ebx |
||
83 | mov eax,[eax+28] |
||
84 | add eax,[raw_pointer] |
||
85 | mov [strip_file],eax |
||
3853 | GerdtR | 86 | ; back memory to system |
4146 | GerdtR | 87 | mcall 68,13,[fiStdIco.point] |
3853 | GerdtR | 88 | |
4146 | GerdtR | 89 | mov eax,[raw_pointer] |
90 | mov eax,[eax+8] |
||
91 | shr eax,5 |
||
92 | mov [icon_count],eax |
||
3853 | GerdtR | 93 | |
4146 | GerdtR | 94 | and eax,0x7 |
95 | mov [cur_band_compensation],eax |
||
3853 | GerdtR | 96 | |
97 | ;########## загружаем данные иконок в память ########################## |
||
98 | |||
4146 | GerdtR | 99 | mcall 70,fiIni ;выделяем память, достаточной для хранения ini файла. Её точно хватит для хранения данных об иконках |
100 | test eax,eax |
||
101 | jnz ErrorIni |
||
3853 | GerdtR | 102 | |
4146 | GerdtR | 103 | cmp dword[bufIni+32],0 |
104 | je ErrorIni |
||
105 | mcall 68,12,dword[bufIni+32] |
||
106 | mov dword[BegData],eax |
||
107 | jmp NoErrIni |
||
3853 | GerdtR | 108 | |
109 | ErrorIni: |
||
4146 | GerdtR | 110 | mcall 70,fiRunProg |
111 | mcall -1 |
||
3853 | GerdtR | 112 | |
113 | NoErrIni: |
||
4146 | GerdtR | 114 | m2m [PIcoDB],[BegData] |
3853 | GerdtR | 115 | |
4146 | GerdtR | 116 | stdcall [ini_enum_sections],IconIni,LoadIconsData |
3853 | GerdtR | 117 | ;int3 |
4146 | GerdtR | 118 | mov eax,dword[PIcoDB] |
119 | sub eax,[BegData] |
||
120 | mov dword[SizeData],eax |
||
121 | mov eax,[BegData] |
||
122 | cmp eax,[PIcoDB] |
||
123 | jne @f |
||
124 | mov dword[eax],0 |
||
125 | mov dword[SizeData],0 |
||
3853 | GerdtR | 126 | @@: |
127 | ;###################################################################### |
||
128 | |||
4146 | GerdtR | 129 | call FillIconsOffs ;заполняет MaxNumIcon,IconsOffs |
3853 | GerdtR | 130 | |
4146 | GerdtR | 131 | mcall 40,0100000b ;нужны только события мыши, перерисовка иконок будет в другом потоке |
3853 | GerdtR | 132 | |
4146 | GerdtR | 133 | mov eax,[icon_count] |
134 | mov bl,ICONS_DRAW_COUNTH |
||
135 | div bl |
||
136 | test ah,ah |
||
137 | jz @f |
||
138 | inc al |
||
3853 | GerdtR | 139 | @@: |
4146 | GerdtR | 140 | and eax,0FFh |
141 | mov [sbIcons.max_area],eax |
||
3853 | GerdtR | 142 | |
4146 | GerdtR | 143 | mcall 51,1,BGRedrawThread,stack_bredraw ;запускаем поток перерисовки иконок |
144 | stdcall [OpenDialog_Init],OpenDialog_data |
||
3853 | GerdtR | 145 | |
146 | messages: |
||
4146 | GerdtR | 147 | mcall 10 |
148 | sub eax,6 |
||
149 | jz MSGMouse |
||
3853 | GerdtR | 150 | |
4146 | GerdtR | 151 | jmp messages |
3853 | GerdtR | 152 | |
153 | |||
154 | MSGMouse: |
||
4146 | GerdtR | 155 | mcall 37,0 ;GetMousePos |
156 | xor ebx,ebx |
||
157 | mov bx,ax |
||
158 | shr eax,16 |
||
159 | mov ecx,ebx |
||
160 | mov ebx,eax |
||
3853 | GerdtR | 161 | |
4146 | GerdtR | 162 | mcall 34 |
163 | cmp eax,1 |
||
164 | jne messages |
||
3853 | GerdtR | 165 | |
4146 | GerdtR | 166 | cmp [RButtonActiv],1 |
167 | je messages |
||
3853 | GerdtR | 168 | |
4146 | GerdtR | 169 | mov [MouseY],ecx |
170 | mov [MouseX],ebx |
||
3853 | GerdtR | 171 | |
172 | |||
4146 | GerdtR | 173 | mcall 37,2 |
174 | test al,001b |
||
175 | jnz LButtonPress |
||
176 | test al,010b |
||
177 | jnz RButtonPress |
||
178 | jmp messages |
||
3853 | GerdtR | 179 | |
180 | ErrLoadLibs: |
||
4146 | GerdtR | 181 | ;dps 'Не удалось загрузить необходимые библиотеки' |
182 | ;debug_newline |
||
183 | jmp close |
||
3853 | GerdtR | 184 | ErrorStrp: |
4146 | GerdtR | 185 | ;dps 'Ошибка открытия iconstrp.png' |
186 | ;debug_newline |
||
3853 | GerdtR | 187 | close: |
4146 | GerdtR | 188 | mcall -1 |
3853 | GerdtR | 189 | |
190 | LButtonPress: |
||
4146 | GerdtR | 191 | stdcall GetNumIcon,[MouseX],[MouseY],-1 |
3853 | GerdtR | 192 | ;int3 |
4146 | GerdtR | 193 | cmp eax,-1 |
194 | jnz @f |
||
3853 | GerdtR | 195 | |
196 | WaitLB1: |
||
4146 | GerdtR | 197 | mcall 37,2 |
198 | test al,001b |
||
199 | jz messages |
||
200 | ;Yield |
||
201 | mcall 5,1 |
||
202 | jmp WaitLB1 |
||
3853 | GerdtR | 203 | |
204 | |||
205 | @@: |
||
4146 | GerdtR | 206 | push eax |
207 | stdcall DrawIcon,eax,1 |
||
3853 | GerdtR | 208 | WaitLB: |