Subversion Repositories Kolibri OS

Rev

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

Rev 3853 Rev 3897
1
;  ¯®â®¬: ¤®¡ ¢¨â § £à㧪ã ico ¨ ¢®§¬®¦­®áâì ¢ë¡®à  ¨ª®­ª¨ ­¥ ¨§ iconstrp
1
;  ¯®â®¬: ¤®¡ ¢¨â § £à㧪ã ico ¨ ¢®§¬®¦­®áâì ¢ë¡®à  ¨ª®­ª¨ ­¥ ¨§ iconstrp
2
 
2
 
3
ICONS_DAT       equ '/rd/1/icons.dat'
3
ICONS_DAT       equ '/rd/1/icons.dat'
4
ICON_STRIP      equ '/rd/1/iconstrp.png'
4
ICON_STRIP      equ '/rd/1/iconstrp.png'
5
ICON_SIZE       equ 68
5
ICON_SIZE       equ 68
6
IMG_SIZE        equ 32
6
IMG_SIZE        equ 32
7
TEXT_BOTTOM_Y   equ 14
7
TEXT_BOTTOM_Y   equ 14
8
IMAGE_TOP_Y     equ 10    ;>=1
8
IMAGE_TOP_Y     equ 10    ;>=1
9
ALIGN_SIZE      equ 68
9
ALIGN_SIZE      equ 68
10
NAME_LENGTH     equ 11
10
NAME_LENGTH     equ 11
11
MIN_NO_MOVING   equ 8
11
MIN_NO_MOVING   equ 8
12
                           ;¤«ï ¤¨ «®£  ᮧ¤ ­¨ï/। ªâ¨à®¢ ­¨ï
12
                           ;¤«ï ¤¨ «®£  ᮧ¤ ­¨ï/। ªâ¨à®¢ ­¨ï
13
ICONSX          equ 20
13
ICONSX          equ 20
14
ICONSY          equ 100
14
ICONSY          equ 100
15
ICONS_DRAW_COUNTW equ 10  ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ è¨à¨­ã
15
ICONS_DRAW_COUNTW equ 10  ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ è¨à¨­ã
16
ICONS_DRAW_COUNTH equ 2   ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ ¢ëá®âã
16
ICONS_DRAW_COUNTH equ 2   ;ª®«¨ç¥á⢮ ¨ª®­®ª ¢ ¢ëá®âã
17
SPCW            equ 3     ;¯à®¡¥« ¬¥¦¤ã ¨ª®­ª ¬¨ ¯® £®à¨§®­â «¨
17
SPCW            equ 3     ;¯à®¡¥« ¬¥¦¤ã ¨ª®­ª ¬¨ ¯® £®à¨§®­â «¨
18
SPCH            equ 3
18
SPCH            equ 3
19
END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW
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
20
END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH
21
 
21
 
22
 
22
 
23
 
23
 
24
SizeData        equ bufStdIco+32
24
SizeData        equ bufStdIco+32
25
BegData         equ fiStdIco.point
25
BegData         equ fiStdIco.point
26
;------------------------------------------------------------------------------
26
;------------------------------------------------------------------------------
27
        use32
27
        use32
28
        org 0x0
28
        org 0x0
29
        db 'MENUET01'   ; 8 byte id
29
        db 'MENUET01'   ; 8 byte id
30
        dd 0x01         ; header version
30
        dd 0x01         ; header version
31
        dd START        ; start of code
31
        dd START        ; start of code
32
        dd I_END       ; size of image
32
        dd I_END       ; size of image
33
        dd ENDMEM        ; memory for app
33
        dd ENDMEM        ; memory for app
34
        dd stack_area   ; esp
34
        dd stack_area   ; esp
35
        dd 0            ; boot parameters
35
        dd 0            ; boot parameters
36
        dd 0            ; path
36
        dd 0            ; path
37
;------------------------------------------------------------------------------
37
;------------------------------------------------------------------------------
38
include 'lang.inc'
38
include 'lang.inc'
39
include '../../macros.inc'
39
include '../../macros.inc'
40
include '../../proc32.inc'
40
include '../../proc32.inc'
41
;include '../../API.inc'
41
;include '../../API.inc'
42
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
42
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
43
include '../../dll.inc'
43
include '../../dll.inc'
44
;include '../../debug.inc'
44
;include '../../debug.inc'
45
 
45
 
46
;------------------------------------------------------------------------------
46
;------------------------------------------------------------------------------
47
START:          ; start of execution
47
START:          ; start of execution
48
        mcall   68,11
48
        mcall   68,11
49
        stdcall dll.Load,IMPORTS
49
        stdcall dll.Load,IMPORTS
50
        test    eax,eax
50
        test    eax,eax
51
        jnz     ErrLoadLibs
51
        jnz     ErrLoadLibs
52
 
52
 
53
; unpack deflate
53
; unpack deflate
54
        mov     eax,[unpack_DeflateUnpack2]
54
        mov     eax,[unpack_DeflateUnpack2]
55
        mov     [deflate_unpack],eax
55
        mov     [deflate_unpack],eax
56
;---------------------------------------------------------------------
56
;---------------------------------------------------------------------
57
; get size of file ICONSTRP.PNG
57
; get size of file ICONSTRP.PNG
58
        mcall   70,fiStdIco
58
        mcall   70,fiStdIco
59
        test    eax,eax
59
        test    eax,eax
60
        jnz     ErrorStrp
60
        jnz     ErrorStrp
61
; get memory for ICONSTRP.PNG
61
; get memory for ICONSTRP.PNG
62
        mov     ecx,dword[bufStdIco+32]
62
        mov     ecx,dword[bufStdIco+32]
63
        mov     [fiStdIco.size],ecx
63
        mov     [fiStdIco.size],ecx
64
        mov     [img_size],ecx
64
        mov     [img_size],ecx
65
        mcall   68,12
65
        mcall   68,12
66
        mov     [fiStdIco.point],eax
66
        mov     [fiStdIco.point],eax
67
        mov     [image_file],eax
67
        mov     [image_file],eax
68
; load ICONSTRP.PNG
68
; load ICONSTRP.PNG
69
        mov     dword[fiStdIco],0
69
        mov     dword[fiStdIco],0
70
        mcall   70,fiStdIco
70
        mcall   70,fiStdIco
71
        test    eax,eax
71
        test    eax,eax
72
        jnz     close
72
        jnz     close
73
; convert PNG to RAW
73
; convert PNG to RAW
74
        xor     eax,eax
74
        xor     eax,eax
75
        mov     [return_code],eax
75
        mov     [return_code],eax
76
;int3
76
;int3
77
 
77
 
78
        push    image_file
78
        push    image_file
79
        call    [cnv_png_import.Start]
79
        call    [cnv_png_import.Start]
80
 
80
 
81
        mov     eax,[raw_pointer]
81
        mov     eax,[raw_pointer]
82
        mov     ebx,[eax+32]
82
        mov     ebx,[eax+32]
83
        mov     [strip_file_size],ebx
83
        mov     [strip_file_size],ebx
84
        mov     eax,[eax+28]
84
        mov     eax,[eax+28]
85
        add     eax,[raw_pointer]
85
        add     eax,[raw_pointer]
86
        mov     [strip_file],eax
86
        mov     [strip_file],eax
87
; back memory to system
87
; back memory to system
88
        mcall   68,13,[fiStdIco.point]
88
        mcall   68,13,[fiStdIco.point]
89
 
89
 
90
        mov     eax,[raw_pointer]
90
        mov     eax,[raw_pointer]
91
        mov     eax,[eax+8]
91
        mov     eax,[eax+8]
92
        shr     eax,5
92
        shr     eax,5
93
        mov     [icon_count],eax
93
        mov     [icon_count],eax
94
 
94
 
95
        and     eax,0x7
95
        and     eax,0x7
96
        mov     [cur_band_compensation],eax
96
        mov     [cur_band_compensation],eax
97
 
97
 
98
;########## § £à㦠¥¬ ¤ ­­ë¥ ¨ª®­®ª ¢ ¯ ¬ïâì ##########################
98
;########## § £à㦠¥¬ ¤ ­­ë¥ ¨ª®­®ª ¢ ¯ ¬ïâì ##########################
99
 
99
 
100
        mcall   70,fiIni                     ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç­®© ¤«ï åà ­¥­¨ï ini ä ©« . …ñ â®ç­® 墠â¨â ¤«ï åà ­¥­¨ï ¤ ­­ëå ®¡ ¨ª®­ª å
100
        mcall   70,fiIni                     ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç­®© ¤«ï åà ­¥­¨ï ini ä ©« . …ñ â®ç­® 墠â¨â ¤«ï åà ­¥­¨ï ¤ ­­ëå ®¡ ¨ª®­ª å
101
        test    eax,eax
101
        test    eax,eax
102
        jnz     ErrorIni
102
        jnz     ErrorIni
103
 
103
 
104
        cmp     dword[bufIni+32],0
104
        cmp     dword[bufIni+32],0
105
        je      ErrorIni
105
        je      ErrorIni
106
        mcall   68,12,dword[bufIni+32]
106
        mcall   68,12,dword[bufIni+32]
107
        mov     dword[BegData],eax
107
        mov     dword[BegData],eax
108
        jmp     NoErrIni
108
        jmp     NoErrIni
109
 
109
 
110
  ErrorIni:
110
  ErrorIni:
111
        mcall   70,fiRunProg
111
        mcall   70,fiRunProg
112
        mcall   -1
112
        mcall   -1
113
 
113
 
114
  NoErrIni:
114
  NoErrIni:
115
        m2m     [PIcoDB],[BegData]
115
        m2m     [PIcoDB],[BegData]
116
 
116
 
117
        stdcall [ini_enum_sections],IconIni,LoadIconsData
117
        stdcall [ini_enum_sections],IconIni,LoadIconsData
118
;int3
118
;int3
119
        mov     eax,dword[PIcoDB]
119
        mov     eax,dword[PIcoDB]
120
        sub     eax,[BegData]
120
        sub     eax,[BegData]
121
        mov     dword[SizeData],eax
121
        mov     dword[SizeData],eax
122
        mov     eax,[BegData]
122
        mov     eax,[BegData]
123
        cmp     eax,[PIcoDB]
123
        cmp     eax,[PIcoDB]
124
        jne     @f
124
        jne     @f
125
        mov     dword[eax],0
125
        mov     dword[eax],0
126
        mov     dword[SizeData],0
126
        mov     dword[SizeData],0
127
   @@:
127
   @@:
128
;######################################################################
128
;######################################################################
129
 
129
 
130
        call    FillIconsOffs
130
        call    FillIconsOffs
131
 
131
 
132
        mcall   40,0110000b
132
        mcall   40,0110000b
133
 
133
 
134
        mov     eax,[icon_count]
134
        mov     eax,[icon_count]
135
        mov     bl,ICONS_DRAW_COUNTH
135
        mov     bl,ICONS_DRAW_COUNTH
136
        div     bl
136
        div     bl
137
        test    ah,ah
137
        test    ah,ah
138
        jz      @f
138
        jz      @f
139
        inc     al
139
        inc     al
140
     @@:
140
     @@:
141
        and     eax,0FFh
141
        and     eax,0FFh
142
        mov     [sbIcons.max_area],eax
142
        mov     [sbIcons.max_area],eax
143
 
143
 
144
  ;    int3
144
  ;    int3
145
;        mov     eax,1
145
;        mov     eax,1
146
;        mov     eax,[IconsOffs+eax*4]
146
;        mov     eax,[IconsOffs+eax*4]
147
;        stdcall [ini_del_section],IconIni,eax
147
;        stdcall [ini_del_section],IconIni,eax
148
;    ret
148
;    ret
149
        jmp     MSGRedrawIcons
149
        jmp     MSGRedrawIcons
150
 
150
 
151
messages:
151
messages:
152
        mcall   10
152
        mcall   10
153
        sub     eax,5
153
        sub     eax,5
154
        jz      MSGRedrawIcons
154
        jz      MSGRedrawIcons
155
        dec     eax
155
        dec     eax
156
        jz      MSGMouse
156
        jz      MSGMouse
157
 
157
 
158
        jmp     messages
158
        jmp     messages
159
 
159
 
160
MSGRedrawIcons:
160
MSGRedrawIcons:
161
 
161
 
162
        mcall   48,5
162
        mcall   48,5
163
        mov     dx,ax
163
        mov     dx,ax
164
        shr     eax,16
164
        shr     eax,16
165
        sub     dx,ax
165
        sub     dx,ax
166
        mov     [ScreenX],dx
166
        mov     [ScreenX],dx
167
        mov     ax,bx
167
        mov     ax,bx
168
        shr     ebx,16
168
        shr     ebx,16
169
        sub     ax,bx
169
        sub     ax,bx
170
        mov     [ScreenY],ax
170
        mov     [ScreenY],ax
171
 
171
 
172
        mov     ecx,[MaxNumIcon]
172
        mov     ecx,[MaxNumIcon]
173
        test    ecx,ecx
173
        test    ecx,ecx
174
        jz      .NoDraw
174
        jz      .NoDraw
175
        xor     ebx,ebx
175
        xor     ebx,ebx
176
    @@: push    ecx
176
    @@: push    ecx
177
        stdcall DrawIcon,ebx,0
177
        stdcall DrawIcon,ebx,0
178
        inc     ebx
178
        inc     ebx
179
        pop     ecx
179
        pop     ecx
180
        loop    @b
180
        loop    @b
181
   .NoDraw:
181
   .NoDraw:
182
        jmp     messages
182
        jmp     messages
183
 
183
 
184
MSGMouse:
184
MSGMouse:
185
        mcall   37,0    ;GetMousePos
185
        mcall   37,0    ;GetMousePos
186
        xor     ebx,ebx
186
        xor     ebx,ebx
187
        mov     bx,ax
187
        mov     bx,ax
188
        shr     eax,16
188
        shr     eax,16
189
        mov     ecx,ebx
189
        mov     ecx,ebx
190
        mov     ebx,eax
190
        mov     ebx,eax
191
 
191
 
192
        mcall   34
192
        mcall   34
193
        cmp     eax,1
193
        cmp     eax,1
194
        jne     messages
194
        jne     messages
195
 
195
 
196
        cmp     [RButtonActiv],1
196
        cmp     [RButtonActiv],1
197
        je      messages
197
        je      messages
198
 
198
 
199
        mov     [MouseY],ecx
199
        mov     [MouseY],ecx
200
        mov     [MouseX],ebx
200
        mov     [MouseX],ebx
201
 
201
 
202
 
202
 
203
        mcall   37,2
203
        mcall   37,2
204
        test    al,001b
204
        test    al,001b
205
        jnz     LButtonPress
205
        jnz     LButtonPress
206
        test    al,010b
206
        test    al,010b
207
        jnz     RButtonPress
207
        jnz     RButtonPress
208
        jmp     messages
208
        jmp     messages
209
 
209
 
210
ErrLoadLibs:
210
ErrLoadLibs:
211
        ;dps     '¥ 㤠«®áì § £à㧨âì ­¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨'
211
        ;dps     '¥ 㤠«®áì § £à㧨âì ­¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨'
212
        ;debug_newline
212
        ;debug_newline
213
        jmp     close
213
        jmp     close
214
ErrorStrp:
214
ErrorStrp:
215
        ;dps     'Žè¨¡ª  ®âªàëâ¨ï iconstrp.png'
215
        ;dps     'Žè¨¡ª  ®âªàëâ¨ï iconstrp.png'
216
        ;debug_newline
216
        ;debug_newline
217
close:
217
close:
218
        mcall   -1
218
        mcall   -1
219
 
219
 
220
LButtonPress:
220
LButtonPress:
221
        stdcall GetNumIcon,[MouseX],[MouseY],-1
221
        stdcall GetNumIcon,[MouseX],[MouseY],-1
222
;int3
222
;int3
223
        cmp     eax,-1
223
        cmp     eax,-1
224
        jnz     @f
224
        jnz     @f
225
 
225
 
226
    WaitLB1:
226
    WaitLB1:
227
        mcall   37,2
227
        mcall   37,2
228
        test    al,001b
228
        test    al,001b
229
        jz      messages
229
        jz      messages
230
        ;Yield
230
        ;Yield
231
        mcall   5,1
231
        mcall   5,1
232
        jmp     WaitLB1
232
        jmp     WaitLB1
233
 
233
 
234
 
234
 
235
     @@:
235
     @@:
236
        push    eax
236
        push    eax
237
        stdcall DrawIcon,eax,1
237
        stdcall DrawIcon,eax,1
238
   WaitLB:
238
   WaitLB:
239
        mcall   37,2
239
        mcall   37,2
240
        test    al,001b
240
        test    al,001b
241
        jz      endWaitLB
241
        jz      endWaitLB
242
 
242
 
243
        mcall   37,0
243
        mcall   37,0
244
        xor     ebx,ebx
244
        xor     ebx,ebx
245
        mov     bx,ax
245
        mov     bx,ax
246
        shr     eax,16
246
        shr     eax,16
247
        sub     eax,[MouseX]
247
        sub     eax,[MouseX]
248
        jns     @f
248
        jns     @f
249
        neg     eax
249
        neg     eax
250
      @@:
250
      @@:
251
        sub     ebx,[MouseY]
251
        sub     ebx,[MouseY]
252
        jns     @f
252
        jns     @f
253
        neg     ebx
253
        neg     ebx
254
      @@:
254
      @@:
255
        cmp     [bFixIcons],0
255
        cmp     [bFixIcons],0
256
        jne     @f
256
        jne     @f
257
        cmp     eax,MIN_NO_MOVING
257
        cmp     eax,MIN_NO_MOVING
258
        ja      MovingIcon
258
        ja      MovingIcon
259
        cmp     ebx,MIN_NO_MOVING
259
        cmp     ebx,MIN_NO_MOVING
260
        ja      MovingIcon
260
        ja      MovingIcon
261
      @@:
261
      @@:
262
        ;Yield
262
        ;Yield
263
        mcall   5,1     ;Sleep   1
263
        mcall   5,1     ;Sleep   1
264
        jmp     WaitLB
264
        jmp     WaitLB
265
   endWaitLB:
265
   endWaitLB:
266
 
266
 
267
        mcall   37,0
267
        mcall   37,0
268
        xor     ebx,ebx
268
        xor     ebx,ebx
269
        mov     bx,ax
269
        mov     bx,ax
270
        shr     eax,16
270
        shr     eax,16
271
        mov     ecx,ebx
271
        mov     ecx,ebx
272
        mov     ebx,eax
272
        mov     ebx,eax
273
        mov     [MouseX],ebx
273
        mov     [MouseX],ebx
274
        mov     [MouseY],ecx
274
        mov     [MouseY],ecx
275
 
275
 
276
        stdcall GetNumIcon,[MouseX],[MouseY],-1
276
        stdcall GetNumIcon,[MouseX],[MouseY],-1
277
        cmp     eax,[esp]       ;[esp] = ­®¬¥à ¨ª®­ª¨
277
        cmp     eax,[esp]       ;[esp] = ­®¬¥à ¨ª®­ª¨
278
        jne     @f
278
        jne     @f
279
 
279
 
280
        mov     edi,[IconsOffs+eax*4]
280
        mov     edi,[IconsOffs+eax*4]
281
        or      ecx,-1
281
        or      ecx,-1
282
        xor     al,al
282
        xor     al,al
283
        repne   scasb
283
        repne   scasb
284
        mov     ebx,edi
284
        mov     ebx,edi
285
        repne   scasb
285
        repne   scasb
286
                             ;run program
286
                             ;run program
287
        mov     dword[fiRunProg+8],edi
287
        mov     dword[fiRunProg+8],edi
288
        mov     dword[fiRunProg+21],ebx
288
        mov     dword[fiRunProg+21],ebx
289
        mcall   70,fiRunProg
289
        mcall   70,fiRunProg
290
        test    eax,80000000h
290
        test    eax,80000000h
291
        jz      @f
291
        jz      @f
292
 
292
 
293
        mov     dword[fiRunProg+8],ErrRunProg
293
        mov     dword[fiRunProg+8],ErrRunProg
294
        mov     dword[fiRunProg+21],pthNotify
294
        mov     dword[fiRunProg+21],pthNotify
295
        mcall   70,fiRunProg
295
        mcall   70,fiRunProg
296
 
296
 
297
     @@:
297
     @@:
298
        pop     eax
298
        pop     eax
299
        stdcall RestoreBackgrnd,eax
299
        stdcall RestoreBackgrnd,eax
300
        jmp     messages
300
        jmp     messages
301
 
301
 
302
;-------------------------------------------------------------------------------
302
;-------------------------------------------------------------------------------
303
MovingIcon:
303
MovingIcon:
304
        stdcall GetNumIcon,[MouseX],[MouseY],-1
304
        stdcall GetNumIcon,[MouseX],[MouseY],-1
305
        mov     [SelIcon],eax
305
        mov     [SelIcon],eax
306
        stdcall RestoreBackgrnd,[SelIcon]
306
        stdcall RestoreBackgrnd,[SelIcon]
307
 
307
 
308
;        mov     ecx,[MaxNumIcon]
308
;        mov     ecx,[MaxNumIcon]
309
;        xor     ebx,ebx
309
;        xor     ebx,ebx
310
;   .MI: push    ecx
310
;   .MI: push    ecx
311
;        cmp     ebx,[SelIcon]
311
;        cmp     ebx,[SelIcon]
312
;        je      @f
312
;        je      @f
313
;        stdcall DrawIcon,ebx,0
313
;        stdcall DrawIcon,ebx,0
314
;      @@:
314
;      @@:
315
;        inc     ebx
315
;        inc     ebx
316
;        pop     ecx
316
;        pop     ecx
317
;        loop    .MI
317
;        loop    .MI
318
 
318
 
319
 
319
 
320
 
320
 
321
;dps 'Moving'
321
;dps 'Moving'
322
;debug_newline
322
;debug_newline
323
;        mov     edi,[SelIcon]
323
;        mov     edi,[SelIcon]
324
;        mov     edi,[IconsOffs+edi*4]
324
;        mov     edi,[IconsOffs+edi*4]
325
;        or      ecx,-1
325
;        or      ecx,-1
326
;        xor     al,al
326
;        xor     al,al
327
;        repne scasb
327
;        repne scasb
328
;        repne scasb
328
;        repne scasb
329
;        repne scasb
329
;        repne scasb
330
;        repne scasb
330
;        repne scasb
331
;        xor     ebx,ebx
331
;        xor     ebx,ebx
332
;        xor     esi,esi
332
;        xor     esi,esi
333
;        mov     bx,word[edi+2]
333
;        mov     bx,word[edi+2]
334
;        mov     si,word[edi]
334
;        mov     si,word[edi]
335
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
335
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
336
;        cmp     eax,-1
336
;        cmp     eax,-1
337
;        je      @f
337
;        je      @f
338
;  dps 'Q'
338
;  dps 'Q'
339
;        stdcall DrawIcon,eax,0
339
;        stdcall DrawIcon,eax,0
340
;     @@:
340
;     @@:
341
;
341
;
342
;        add     ebx,ICON_SIZE-1
342
;        add     ebx,ICON_SIZE-1
343
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
343
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
344
;        cmp     eax,-1
344
;        cmp     eax,-1
345
;        je      @f
345
;        je      @f
346
;  dps 'Q'
346
;  dps 'Q'
347
;        stdcall DrawIcon,eax,0
347
;        stdcall DrawIcon,eax,0
348
;
348
;
349
;     @@:
349
;     @@:
350
;        add     esi,ICON_SIZE-1
350
;        add     esi,ICON_SIZE-1
351
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
351
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
352
;        cmp     eax,-1
352
;        cmp     eax,-1
353
;        je      @f
353
;        je      @f
354
;  dps 'Q'
354
;  dps 'Q'
355
;        stdcall DrawIcon,eax,0
355
;        stdcall DrawIcon,eax,0
356
;
356
;
357
;     @@:
357
;     @@:
358
;        sub     ebx,ICON_SIZE-1
358
;        sub     ebx,ICON_SIZE-1
359
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
359
;        stdcall GetNumIcon,ebx,esi,[SelIcon]
360
;        cmp     eax,-1
360
;        cmp     eax,-1
361
;        je      @f
361
;        je      @f
362
;   dps 'Q'
362
;   dps 'Q'
363
;        stdcall DrawIcon,eax,0
363
;        stdcall DrawIcon,eax,0
364
;     @@:
364
;     @@:
365
 
365
 
366
 
366
 
367
; Sleep 40
367
; Sleep 40
368
 
368
 
369
;qweqwe:
369
;qweqwe:
370
 
370
 
371
        mov    [MovingActiv],1
371
        mov    [MovingActiv],1
372
        mcall   51,1,MovingWnd,stack_dlg        ;CreateThread MovingWnd,stack_dlg
372
        mcall   51,1,MovingWnd,stack_dlg        ;CreateThread MovingWnd,stack_dlg
373
   .WaitLB:
373
   .WaitLB:
374
        mcall   37,2    ;GetMouseKey
374
        mcall   37,2    ;GetMouseKey
375
        test    al,001b
375
        test    al,001b
376
        jz      .endWaitLB
376
        jz      .endWaitLB
377
 
377
 
378
        ;Yield
378
        ;Yield
379
        mcall   5,1     ;Sleep 1
379
        mcall   5,1     ;Sleep 1
380
        jmp     .WaitLB
380
        jmp     .WaitLB
381
   .endWaitLB:
381
   .endWaitLB:
382
        mov    [MovingActiv],0
382
        mov    [MovingActiv],0
383
 
383
 
384
        mcall   37,0            ;GetMousePos
384
        mcall   37,0            ;GetMousePos
385
        xor     ebx,ebx
385
        xor     ebx,ebx
386
        mov     bx,ax
386
        mov     bx,ax
387
        shr     eax,16
387
        shr     eax,16
388
 
388
 
389
        add     ebx,7
389
        add     ebx,7
390
        dec     eax
390
        dec     eax
391
 
391
 
392
        sub     eax,ICON_SIZE/2
392
        sub     eax,ICON_SIZE/2
393
        jns     @f
393
        jns     @f
394
        xor     eax,eax
394
        xor     eax,eax
395
      @@:
395
      @@:
396
        sub     ebx,ICON_SIZE/2
396
        sub     ebx,ICON_SIZE/2
397
        jns     @f
397
        jns     @f
398
        xor     ebx,ebx
398
        xor     ebx,ebx
399
      @@:
399
      @@:
400
 
400
 
401
        movzx   edx,[ScreenX]
401
        movzx   edx,[ScreenX]
402
        sub     edx,ICON_SIZE
402
        sub     edx,ICON_SIZE
403
        cmp     eax,edx
403
        cmp     eax,edx
404
        jbe     @f
404
        jbe     @f
405
        mov     eax,edx
405
        mov     eax,edx
406
      @@:
406
      @@:
407
 
407
 
408
        movzx   edx,[ScreenY]
408
        movzx   edx,[ScreenY]
409
        sub     edx,ICON_SIZE
409
        sub     edx,ICON_SIZE
410
        cmp     ebx,edx
410
        cmp     ebx,edx
411
        jbe     @f
411
        jbe     @f
412
        mov     ebx,edx
412
        mov     ebx,edx
413
      @@:
413
      @@:
414
 
414
 
415
        xor     edx,edx
415
        xor     edx,edx
416
        mov     dx,[ScreenX]
416
        mov     dx,[ScreenX]
417
        shr     edx,1
417
        shr     edx,1
418
        cmp     eax,edx
418
        cmp     eax,edx
419
        jbe     @f
419
        jbe     @f
420
        sub     ax,[ScreenX]
420
        sub     ax,[ScreenX]
421
        inc     ax
421
        inc     ax
422
      @@:
422
      @@:
423
 
423
 
424
        xor     edx,edx
424
        xor     edx,edx
425
        mov     dx,[ScreenY]
425
        mov     dx,[ScreenY]
426
        shr     edx,1
426
        shr     edx,1
427
        cmp     ebx,edx
427
        cmp     ebx,edx
428
        jbe     @f
428
        jbe     @f
429
        sub     bx,[ScreenY]
429
        sub     bx,[ScreenY]
430
        inc     bx
430
        inc     bx
431
      @@:
431
      @@:
432
 
432
 
433
        stdcall SetPosition,[SelIcon],eax,ebx
433
        stdcall SetPosition,[SelIcon],eax,ebx
434
        mcall   15,3
434
        mcall   15,3
435
 
435
 
436
        m2m     [PIcoDB],[BegData]
436
        m2m     [PIcoDB],[BegData]
437
        stdcall [ini_enum_sections],IconIni,Ini_SavePos  ;in RButton.inc
437
        stdcall [ini_enum_sections],IconIni,Ini_SavePos  ;in RButton.inc
438
 
438
 
439
;        mov     dword[fInfo],2
439
;        mov     dword[fInfo],2
440
;        mcall   70,fInfo
440
;        mcall   70,fInfo
441
 
441
 
442
        mov     [bNotSave],1
442
        mov     [bNotSave],1
443
 
443
 
444
        jmp     messages
444
        jmp     messages
445
 
445
 
446
;-------------------------------------------------------------------------------
446
;-------------------------------------------------------------------------------
447
 
447
 
448
RButtonPress:
448
RButtonPress:
449
        cmp     [RButtonActiv],1
449
        cmp     [RButtonActiv],1
450
        je      messages
450
        je      messages
451
        mov     [RButtonActiv],1
451
        mov     [RButtonActiv],1
452
 
452
 
453
     @@:
453
     @@:
454
        mcall   37,2    ;GetMouseKey
454
        mcall   37,2    ;GetMouseKey
455
        test    al,010b
455
        test    al,010b
456
        jz      @f
456
        jz      @f
457
        mcall   5,1     ;Yield
457
        mcall   5,1     ;Yield
458
        jmp     @b
458
        jmp     @b
459
     @@:
459
     @@:
460
 
460
 
461
        mcall   51,1,RButtonWin,stack_dlg       ;CreateThread RButtonWin,stack_dlg
461
        mcall   51,1,RButtonWin,stack_dlg       ;CreateThread RButtonWin,stack_dlg
462
 
462
 
463
        jmp     messages
463
        jmp     messages
464
 
464
 
465
 
465
 
466
;###############################################################################
466
;###############################################################################
467
;ret eax = 1/0 = 㤠ç /®è¨¡ª 
467
;ret eax = 1/0 = 㤠ç /®è¨¡ª 
468
proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n
468
proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n
469
local   IconData:DWORD
469
local   IconData:DWORD
470
   ; int3
470
   ; int3
471
        push    ebx edi esi
471
        push    ebx edi esi
472
 
472
 
473
        mov     ecx,ICON_SIZE*ICON_SIZE
473
        mov     ecx,ICON_SIZE*ICON_SIZE
474
        xor     eax,eax
474
        xor     eax,eax
475
        ;mov     eax,0FFFFFFFh
475
        ;mov     eax,0FFFFFFFh
476
        mov     edi,IconArea
476
        mov     edi,IconArea
477
        rep     stosd
477
        rep     stosd
478
 
478
 
479
        mov     eax,[NumIcon]
479
        mov     eax,[NumIcon]
480
        cmp     eax,[MaxNumIcon]
480
        cmp     eax,[MaxNumIcon]
481
        jb      @f
481
        jb      @f
482
        xor     eax,eax
482
        xor     eax,eax
483
        pop     esi edi ebx
483
        pop     esi edi ebx
484
        ret
484
        ret
485
      @@:
485
      @@:
486
 
486
 
487
        mov     esi,[IconsOffs+eax*4]
487
        mov     esi,[IconsOffs+eax*4]
488
        mov     [IconData],esi
488
        mov     [IconData],esi
489
 
489
 
490
                              ;à¨á㥬 ⥪áâ
490
                              ;à¨á㥬 ⥪áâ
491
        mov     edi,esi
491
        mov     edi,esi
492
        xor     al,al
492
        xor     al,al
493
        or      ecx,-1
493
        or      ecx,-1
494
        repne scasb
494
        repne scasb
495
        mov     edx,esi
495
        mov     edx,esi
496
        mov     eax,edi
496
        mov     eax,edi
497
        sub     eax,esi
497
        sub     eax,esi
498
        dec     eax
498
        dec     eax
499
        shl     eax,1            ;*6
499
        shl     eax,1            ;*6
500
        lea     eax,[eax*2+eax]
500
        lea     eax,[eax*2+eax]
501
        mov     ebx,ICON_SIZE
501
        mov     ebx,ICON_SIZE
502
        sub     ebx,eax
502
        sub     ebx,eax
503
        shr     ebx,1        ;ebx = x ⥪áâ 
503
        shr     ebx,1        ;ebx = x ⥪áâ 
504
        shl     ebx,16
504
        shl     ebx,16
505
        mov     bx,ICON_SIZE
505
        mov     bx,ICON_SIZE
506
        sub     bx,TEXT_BOTTOM_Y
506
        sub     bx,TEXT_BOTTOM_Y
507
        mov     ecx,88000000h
507
        mov     ecx,88000000h
508
        mov     edi,IconAreaH
508
        mov     edi,IconAreaH
509
        add     ebx,-1*10000h+0
509
        add     ebx,-1*10000h+0
510
        mcall   4
510
        mcall   4
511
        add     ebx,2*10000h+0
511
        add     ebx,2*10000h+0
512
        mcall   4
512
        mcall   4
513
        add     ebx,-1*10000h-1
513
        add     ebx,-1*10000h-1
514
        mcall   4
514
        mcall   4
515
        add     ebx,0*10000h+2
515
        add     ebx,0*10000h+2
516
        mcall   4
516
        mcall   4
517
        add     ebx,1*10000h+0
517
        add     ebx,1*10000h+0
518
        mcall   4
518
        mcall   4
519
        add     ebx,0*10000h+1
519
        add     ebx,0*10000h+1
520
        mcall   4
520
        mcall   4
521
        add     ebx,-1*10000h+0
521
        add     ebx,-1*10000h+0
522
        mcall   4
522
        mcall   4
523
        add     ebx,0*10000h-2
523
        add     ebx,0*10000h-2
524
        mov     ecx,88FFFFFFh
524
        mov     ecx,88FFFFFFh
525
        mcall   4
525
        mcall   4
526
                                    ;à¨á㥬 ª à⨭ªã
526
                                    ;à¨á㥬 ª à⨭ªã
527
 
527
 
528
        mov     edi,esi
528
        mov     edi,esi
529
        xor     al,al
529
        xor     al,al
530
        or      ecx,-1
530
        or      ecx,-1
531
        repne   scasb
531
        repne   scasb
532
        repne   scasb
532
        repne   scasb
533
        repne   scasb
533
        repne   scasb
534
        mov     al,[edi]
534
        mov     al,[edi]
535
        cmp     al,'9'
535
        cmp     al,'9'
536
        ja      PathToIcon
536
        ja      PathToIcon
537
        cmp     al,'/'
537
        cmp     al,'/'
538
        jne     GetIconInd
538
        jne     GetIconInd
539
 
539
 
540
   PathToIcon:
540
   PathToIcon:
541
        ;stdcall LoadIcon,edi
541
        ;stdcall LoadIcon,edi
542
        ;mov     esi,eax
542
        ;mov     esi,eax
543
        mov     al,30h           ;§ £«ã誠!!!!!!!!!!!!!
543
        mov     al,30h           ;§ £«ã誠!!!!!!!!!!!!!
544
        mov     byte[edi+1],0
544
        mov     byte[edi+1],0
545
 
545
 
546
        jmp     CopyToMem
546
        jmp     CopyToMem
547
   GetIconInd:
547
   GetIconInd:
548
 
548
 
549
        sub     al,30h
549
        sub     al,30h
550
        cmp     byte[edi+1],0
550
        cmp     byte[edi+1],0
551
        je      @f
551
        je      @f
552
        shl     eax,1
552
        shl     eax,1
553
        lea     eax,[eax*4+eax]
553
        lea     eax,[eax*4+eax]
554
        xor     edx,edx
554
        xor     edx,edx
555
        mov     dl,[edi+1]
555
        mov     dl,[edi+1]
556
        sub     dl,30h
556
        sub     dl,30h
557
        add     eax,edx
557
        add     eax,edx
558
     @@:             ;eax=num icon
558
     @@:             ;eax=num icon
559
        cmp     eax,[icon_count]
559
        cmp     eax,[icon_count]
560
        jb      @f
560
        jb      @f
561
        xor     eax,eax
561
        xor     eax,eax
562
     @@:
562
     @@:
563
        test    eax,eax
563
        test    eax,eax
564
        je      DI1
564
        je      DI1
565
        mov     ecx,eax
565
        mov     ecx,eax
566
        xor     eax,eax
566
        xor     eax,eax
567
      @@:
567
      @@:
568
        add     eax,IMG_SIZE*IMG_SIZE*4
568
        add     eax,IMG_SIZE*IMG_SIZE*4
569
        loop    @b
569
        loop    @b
570
     DI1:
570
     DI1:
571
        mov     esi,eax
571
        mov     esi,eax
572
        add     esi,[raw_pointer]
572
        add     esi,[raw_pointer]
573
        add     esi,0+4*11
573
        add     esi,0+4*11
574
 
574
 
575
  CopyToMem:
575
  CopyToMem:
576
        mov     edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4
576
        mov     edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4
577
 
577
 
578
        mov     eax,IMG_SIZE
578
        mov     eax,IMG_SIZE
579
        mov     edx,eax
579
        mov     edx,eax
580
      @@:
580
      @@:
581
        mov     ecx,eax
581
        mov     ecx,eax
582
        rep     movsd
582
        rep     movsd
583
        add     edi,(ICON_SIZE-IMG_SIZE)*4
583
        add     edi,(ICON_SIZE-IMG_SIZE)*4
584
        dec     edx
584
        dec     edx
585
        jnz     @b
585
        jnz     @b
586
 
586
 
587
;-----------------
587
;-----------------
588
                                ;¥á«¨ ­ ¤®, â® à¨á㥬 ®¡¢®¤ªã
588
                                ;¥á«¨ ­ ¤®, â® à¨á㥬 ®¡¢®¤ªã
589
        cmp     [Activ],0
589
        cmp     [Activ],0
590
        je      .NoSelect
590
        je      .NoSelect
591
 
591
 
592
        mov     edi,IconArea
592
        mov     edi,IconArea
593
        mov     eax,0FF000000h
593
        mov     eax,0FF000000h
594
        mov     ecx,ICON_SIZE
594
        mov     ecx,ICON_SIZE
595
        rep     stosd
595
        rep     stosd
596
        ;mov     edi,IconArea+ICON_SIZE*1
596
        ;mov     edi,IconArea+ICON_SIZE*1
597
 
597
 
598
        mov     ecx,ICON_SIZE-1
598
        mov     ecx,ICON_SIZE-1
599
    @@: mov     dword[edi],eax
599
    @@: mov     dword[edi],eax
600
        add     edi,(ICON_SIZE)*4
600
        add     edi,(ICON_SIZE)*4
601
        loop    @b
601
        loop    @b
602
 
602
 
603
        mov     edi,IconArea+ICON_SIZE*2*4-4
603
        mov     edi,IconArea+ICON_SIZE*2*4-4
604
        mov     ecx,ICON_SIZE-1
604
        mov     ecx,ICON_SIZE-1
605
    @@: mov     dword[edi],eax
605
    @@: mov     dword[edi],eax
606
        add     edi,(ICON_SIZE)*4
606
        add     edi,(ICON_SIZE)*4
607
        loop    @b
607
        loop    @b
608
 
608
 
609
        mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4
609
        mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4
610
        mov     ecx,ICON_SIZE-2
610
        mov     ecx,ICON_SIZE-2
611
        rep     stosd
611
        rep     stosd
612
 
612
 
613
 
613
 
614
        mov     edi,IconArea+ICON_SIZE*4+4
614
        mov     edi,IconArea+ICON_SIZE*4+4
615
        mov     eax,0FFFFFFFFh
615
        mov     eax,0FFFFFFFFh
616
        mov     ecx,ICON_SIZE-2
616
        mov     ecx,ICON_SIZE-2
617
        rep     stosd
617
        rep     stosd
618
 
618
 
619
        mov     edi,IconArea+ICON_SIZE*4+4
619
        mov     edi,IconArea+ICON_SIZE*4+4
620
        mov     ecx,ICON_SIZE-2
620
        mov     ecx,ICON_SIZE-2
621
    @@: mov     dword[edi],eax
621
    @@: mov     dword[edi],eax
622
        add     edi,(ICON_SIZE)*4
622
        add     edi,(ICON_SIZE)*4
623
        loop    @b
623
        loop    @b
624
 
624
 
625
        mov     edi,IconArea+ICON_SIZE*2*4-4*2
625
        mov     edi,IconArea+ICON_SIZE*2*4-4*2
626
        mov     ecx,ICON_SIZE-3
626
        mov     ecx,ICON_SIZE-3
627
    @@: mov     dword[edi],eax
627
    @@: mov     dword[edi],eax
628
        add     edi,(ICON_SIZE)*4
628
        add     edi,(ICON_SIZE)*4
629
        loop    @b
629
        loop    @b
630
 
630
 
631
        mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2
631
        mov     edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2
632
        mov     ecx,ICON_SIZE-3
632
        mov     ecx,ICON_SIZE-3
633
        rep     stosd
633
        rep     stosd
634
;--------------
634
;--------------
635
 
635
 
636
   .NoSelect:
636
   .NoSelect:
637
        mov     edi,[IconData]
637
        mov     edi,[IconData]
638
        xor     al,al
638
        xor     al,al
639
        or      ecx,-1
639
        or      ecx,-1
640
        repne   scasb
640
        repne   scasb
641
        repne   scasb
641
        repne   scasb
642
        repne   scasb
642
        repne   scasb
643
        repne   scasb
643
        repne   scasb
644
        mov     edx,[edi]
644
        mov     edx,[edi]
645
 
645
 
646
        test    edx,00008000h
646
        test    edx,00008000h
647
        jz      @f
647
        jz      @f
648
        add     dx,[ScreenY]
648
        add     dx,[ScreenY]
649
    @@:
649
    @@:
650
        test    edx,80000000h
650
        test    edx,80000000h
651
        jz      @f
651
        jz      @f
652
        rol     edx,16
652
        rol     edx,16
653
        add     dx,[ScreenX]
653
        add     dx,[ScreenX]
654
        rol     edx,16
654
        rol     edx,16
655
    @@:
655
    @@:
656
 
656
 
657
        mov     ebx,IconArea
657
        mov     ebx,IconArea
658
        mov     ecx,ICON_SIZE*10000h+ICON_SIZE
658
        mov     ecx,ICON_SIZE*10000h+ICON_SIZE
659
        mcall   25
659
        mcall   25
660
 
660
 
661
;        mov     eax,1
661
;        mov     eax,1
662
        pop     esi edi ebx
662
        pop     esi edi ebx
663
        ret
663
        ret
664
endp
664
endp
665
 
665
 
666
 
666
 
667
 
667
 
668
proc RestoreBackgrnd,NumIcon:DWORD
668
proc RestoreBackgrnd,NumIcon:DWORD
669
        push    ebx edi
669
        push    ebx edi
670
        mov     eax,[NumIcon]
670
        mov     eax,[NumIcon]
671
        cmp     eax,[MaxNumIcon]
671
        cmp     eax,[MaxNumIcon]
672
        jb      @f
672
        jb      @f
673
        xor     eax,eax
673
        xor     eax,eax
674
        pop     edi ebx
674
        pop     edi ebx
675
        ret
675
        ret
676
      @@:
676
      @@:
677
 
677
 
678
        mov     edi,[IconsOffs+eax*4]
678
        mov     edi,[IconsOffs+eax*4]
679
        xor     al,al
679
        xor     al,al
680
        or      ecx,-1
680
        or      ecx,-1
681
        repne   scasb
681
        repne   scasb
682
        repne   scasb
682
        repne   scasb
683
        repne   scasb
683
        repne   scasb
684
        repne   scasb
684
        repne   scasb
685
 
685
 
686
        mov     ax,[edi+2]
686
        mov     ax,[edi+2]
687
        test    ax,8000h
687
        test    ax,8000h
688
        jz      @f
688
        jz      @f
689
        add     ax,[ScreenX]
689
        add     ax,[ScreenX]
690
      @@:
690
      @@:
691
 
691
 
692
        mov     bx,[edi]
692
        mov     bx,[edi]
693
        test    bx,8000h
693
        test    bx,8000h
694
        jz      @f
694
        jz      @f
695
        add     bx,[ScreenY]
695
        add     bx,[ScreenY]
696
      @@:
696
      @@:
697
 
697
 
698
        mov     cx,ax
698
        mov     cx,ax
699
        shl     ecx,16
699
        shl     ecx,16
700
        add     ax,ICON_SIZE
700
        add     ax,ICON_SIZE
701
        mov     cx,ax
701
        mov     cx,ax
702
        mov     dx,bx
702
        mov     dx,bx
703
        shl     edx,16
703
        shl     edx,16
704
        add     bx,ICON_SIZE
704
        add     bx,ICON_SIZE
705
        mov     dx,bx
705
        mov     dx,bx
706
        dec     ecx
706
        dec     ecx
707
        dec     edx
707
        dec     edx
708
        mcall   15,9
708
        mcall   15,9
709
        pop     edi ebx
709
        pop     edi ebx
710
        ret
710
        ret
711
endp
711
endp
712
 
712
 
713
;ret eax=numIcon
713
;ret eax=numIcon
714
proc AddIcon stdcall,x,y,lpIcon,lpName,lpExeFile,lpParams
714
proc AddIcon stdcall,x,y,lpIcon,lpName,lpExeFile,lpParams
715
        push    ebx edi esi
715
        push    ebx edi esi
716
 
716
 
717
        mov     eax,[x]
717
        mov     eax,[x]
718
        mov     ebx,[y]
718
        mov     ebx,[y]
719
 
719
 
720
        xor     edx,edx
720
        xor     edx,edx
721
        test    eax,8000h
721
        test    eax,8000h
722
        jnz     @f
722
        jnz     @f
723
        mov     dx,[ScreenX]    ;¥á«¨ ­ ¤®, â® ¯à¥®¡à §®¢ë¢ ¥¬ ¢
723
        mov     dx,[ScreenX]    ;¥á«¨ ­ ¤®, â® ¯à¥®¡à §®¢ë¢ ¥¬ ¢
724
        shr     edx,1           ;®âà¨æ â¥«ì­ë¥ ª®®à¤¨­ âë
724
        shr     edx,1           ;®âà¨æ â¥«ì­ë¥ ª®®à¤¨­ âë
725
        cmp     eax,edx
725
        cmp     eax,edx
726
        jbe     @f
726
        jbe     @f
727
        sub     ax,[ScreenX]
727
        sub     ax,[ScreenX]
728
        inc     eax
728
        inc     eax
729
      @@:
729
      @@:
730
 
730
 
731
        test    ebx,8000h
731
        test    ebx,8000h
732
        jnz     @f
732
        jnz     @f
733
        mov     dx,[ScreenY]
733
        mov     dx,[ScreenY]
734
        shr     edx,1
734
        shr     edx,1
735
        cmp     ebx,edx
735
        cmp     ebx,edx
736
        jbe     @f
736
        jbe     @f
737
        sub     bx,[ScreenY]
737
        sub     bx,[ScreenY]
738
        inc     ebx
738
        inc     ebx
739
      @@:
739
      @@:
740
                                ;¯®¯à ¢ª  ­  á«ãç © ¢ë室  §  ªà © íªà ­ 
740
                                ;¯®¯à ¢ª  ­  á«ãç © ¢ë室  §  ªà © íªà ­ 
741
 
741
 
742
        test    eax,8000h
742
        test    eax,8000h
743
        jnz     @f
743
        jnz     @f
744
        mov     dx,[ScreenX]
744
        mov     dx,[ScreenX]
745
        sub     edx,ICON_SIZE
745
        sub     edx,ICON_SIZE
746
        cmp     eax,edx
746
        cmp     eax,edx
747
        jbe     @f
747
        jbe     @f
748
        mov     eax,edx
748
        mov     eax,edx
749
     @@:
749
     @@:
750
 
750
 
751
        test    ebx,8000h
751
        test    ebx,8000h
752
        jnz     @f
752
        jnz     @f
753
        mov     dx,[ScreenY]
753
        mov     dx,[ScreenY]
754
        sub     edx,ICON_SIZE
754
        sub     edx,ICON_SIZE
755
        cmp     ebx,edx
755
        cmp     ebx,edx
756
        jbe     @f
756
        jbe     @f
757
        mov     ebx,edx
757
        mov     ebx,edx
758
     @@:
758
     @@:
759
 
759
 
760
        mov     [x],eax
760
        mov     [x],eax
761
        mov     [y],ebx
761
        mov     [y],ebx
762
 
762
 
763
        xor     al,al
763
        xor     al,al
764
        or      ecx,-1
764
        or      ecx,-1
765
        mov     edi,[lpName]
765
        mov     edi,[lpName]
766
        repne   scasb
766
        repne   scasb
767
        sub     edi,[lpName]
767
        sub     edi,[lpName]
768
        mov     ebx,edi
768
        mov     ebx,edi
769
        mov     edi,[lpExeFile]
769
        mov     edi,[lpExeFile]
770
        repne   scasb
770
        repne   scasb
771
        sub     edi,[lpExeFile]
771
        sub     edi,[lpExeFile]
772
        add     ebx,edi
772
        add     ebx,edi
773
        mov     edi,[lpParams]
773
        mov     edi,[lpParams]
774
        repne   scasb
774
        repne   scasb
775
        sub     edi,[lpParams]
775
        sub     edi,[lpParams]
776
        add     ebx,edi
776
        add     ebx,edi
777
        mov     edi,[lpIcon]
777
        mov     edi,[lpIcon]
778
        repne   scasb
778
        repne   scasb
779
        sub     edi,[lpIcon]
779
        sub     edi,[lpIcon]
780
        add     ebx,edi
780
        add     ebx,edi
781
        add     ebx,4
781
        add     ebx,4
782
        mov     ecx,dword[SizeData]
782
        mov     ecx,dword[SizeData]
783
        add     ecx,ebx
783
        add     ecx,ebx
784
        mov     edx,[IconsOffs]
784
        mov     edx,[IconsOffs]
785
        mcall   68,20
785
        mcall   68,20
786
 
786
 
787
        mov     edx,dword[SizeData]
787
        mov     edx,dword[SizeData]
788
        mov     dword[SizeData],ecx
788
        mov     dword[SizeData],ecx
789
        mov     dword[BegData],eax
789
        mov     dword[BegData],eax
790
        mov     edi,eax
790
        mov     edi,eax
791
        add     edi,edx
791
        add     edi,edx
792
        mov     esi,[lpName]
792
        mov     esi,[lpName]
793
    @@: lodsb
793
    @@: lodsb
794
        stosb
794
        stosb
795
        test    al,al
795
        test    al,al
796
        jnz     @b
796
        jnz     @b
797
 
797
 
798
        mov     esi,[lpExeFile]
798
        mov     esi,[lpExeFile]
799
    @@: lodsb
799
    @@: lodsb
800
        stosb
800
        stosb
801
        test    al,al
801
        test    al,al
802
        jnz     @b
802
        jnz     @b
803
 
803
 
804
        mov     esi,[lpParams]
804
        mov     esi,[lpParams]
805
    @@: lodsb
805
    @@: lodsb
806
        stosb
806
        stosb
807
        test    al,al
807
        test    al,al
808
        jnz     @b
808
        jnz     @b
809
 
809
 
810
        mov     esi,[lpIcon]
810
        mov     esi,[lpIcon]
811
    @@: lodsb
811
    @@: lodsb
812
        stosb
812
        stosb
813
        test    al,al
813
        test    al,al
814
        jnz     @b
814
        jnz     @b
815
 
815
 
816
        mov     eax,[x]
816
        mov     eax,[x]
817
        mov     ebx,[y]
817
        mov     ebx,[y]
818
        shl     eax,16
818
        shl     eax,16
819
        mov     ax,bx
819
        mov     ax,bx
820
        mov     dword[edi],eax
820
        mov     dword[edi],eax
821
 
821
 
822
        stdcall FillIconsOffs
822
        stdcall FillIconsOffs
823
 
823
 
824
        pop     esi edi ebx
824
        pop     esi edi ebx
825
        ret
825
        ret
826
endp
826
endp
827
 
827
 
828
 
828
 
829
proc EditIcon stdcall,NumIcon,lpIcon,lpName,lpExeFile,lpParams
829
proc EditIcon stdcall,NumIcon,lpIcon,lpName,lpExeFile,lpParams
830
        push    edi
830
        push    edi
831
        mov     eax,[NumIcon]
831
        mov     eax,[NumIcon]
832
        mov     edi,[IconsOffs+eax*4]
832
        mov     edi,[IconsOffs+eax*4]
833
        xor     al,al
833
        xor     al,al
834
        or      ecx,-1
834
        or      ecx,-1
835
        repne   scasb
835
        repne   scasb
836
        repne   scasb
836
        repne   scasb
837
        repne   scasb
837
        repne   scasb
838
        repne   scasb
838
        repne   scasb
839
        push    dword[edi]
839
        push    dword[edi]
840
        stdcall DelIcon,[NumIcon]
840
        stdcall DelIcon,[NumIcon]
841
        pop     edx
841
        pop     edx
842
        xor     eax,eax
842
        xor     eax,eax
843
        mov     ax,dx
843
        mov     ax,dx
844
        shr     edx,16
844
        shr     edx,16
845
        stdcall AddIcon,edx,eax,DAreaIcon,DAreaName,DAreaPath,DAreaParams
845
        stdcall AddIcon,edx,eax,DAreaIcon,DAreaName,DAreaPath,DAreaParams
846
        pop     edi
846
        pop     edi
847
        ret
847
        ret
848
endp
848
endp
849
 
849
 
850
proc SetPosition stdcall,NumIcon,x,y
850
proc SetPosition stdcall,NumIcon,x,y
851
        push    edi
851
        push    edi
852
        mov     eax,[NumIcon]
852
        mov     eax,[NumIcon]
853
        mov     edi,[IconsOffs+eax*4]
853
        mov     edi,[IconsOffs+eax*4]
854
        xor     al,al
854
        xor     al,al
855
        or      ecx,-1
855
        or      ecx,-1
856
        repne   scasb
856
        repne   scasb
857
        repne   scasb
857
        repne   scasb
858
        repne   scasb
858
        repne   scasb
859
        repne   scasb
859
        repne   scasb
860
        mov     eax,[x]
860
        mov     eax,[x]
861
        shl     eax,16
861
        shl     eax,16
862
        mov     ax,word[y]
862
        mov     ax,word[y]
863
        mov     dword[edi],eax
863
        mov     dword[edi],eax
864
        pop     edi
864
        pop     edi
865
        ret
865
        ret
866
endp
866
endp
867
 
867
 
868
proc GetNumIcon stdcall,x,y,NumIconI  ;­®¬¥à ¨ª®­ª¨, ª®â®àë© ¯à®¢¥àïâì ­¥ ­ ¤® ¨«¨ -1
868
proc GetNumIcon stdcall,x,y,NumIconI  ;­®¬¥à ¨ª®­ª¨, ª®â®àë© ¯à®¢¥àïâì ­¥ ­ ¤® ¨«¨ -1
869
local posX:WORD,\
869
local posX:WORD,\
870
      posY:WORD
870
      posY:WORD
871
        push    ebx edi
871
        push    ebx edi
872
        mov     ecx,[MaxNumIcon]
872
        mov     ecx,[MaxNumIcon]
873
        test    ecx,ecx
873
        test    ecx,ecx
874
        jnz     @f
874
        jnz     @f
875
        or      eax,-1
875
        or      eax,-1
876
        pop     edi ebx
876
        pop     edi ebx
877
        ret
877
        ret
878
     @@:
878
     @@:
879
 
879
 
880
        xor     ebx,ebx
880
        xor     ebx,ebx
881
   .TestIcon:
881
   .TestIcon:
882
        cmp     dword[NumIconI],-1
882
        cmp     dword[NumIconI],-1
883
        je      @f
883
        je      @f
884
 
884
 
885
        cmp     ebx,[NumIconI]
885
        cmp     ebx,[NumIconI]
886
        jne     @f
886
        jne     @f
887
        inc     ebx
887
        inc     ebx
888
        dec     ecx
888
        dec     ecx
889
        test    ecx,ecx
889
        test    ecx,ecx
890
        jz      .NoIcon
890
        jz      .NoIcon
891
     @@:
891
     @@:
892
 
892
 
893
        push    ecx
893
        push    ecx
894
 
894
 
895
        or      ecx,-1
895
        or      ecx,-1
896
        xor     al,al
896
        xor     al,al
897
        mov     edi,[IconsOffs+ebx*4]
897
        mov     edi,[IconsOffs+ebx*4]
898
        repne   scasb
898
        repne   scasb
899
        repne   scasb
899
        repne   scasb
900
        repne   scasb
900
        repne   scasb
901
        repne   scasb
901
        repne   scasb
902
 
902
 
903
        mov     ax,[edi+2]
903
        mov     ax,[edi+2]
904
        test    ax,8000h
904
        test    ax,8000h
905
        jz      @f
905
        jz      @f
906
        add     ax,[ScreenX]
906
        add     ax,[ScreenX]
907
      @@:
907
      @@:
908
        mov     [posX],ax
908
        mov     [posX],ax
909
 
909
 
910
        mov     ax,[edi]
910
        mov     ax,[edi]
911
        test    ax,8000h
911
        test    ax,8000h
912
        jz      @f
912
        jz      @f
913
        add     ax,[ScreenY]
913
        add     ax,[ScreenY]
914
      @@:
914
      @@:
915
        mov     [posY],ax
915
        mov     [posY],ax
916
 
916
 
917
        mov     eax,[x]
917
        mov     eax,[x]
918
        mov     edx,[y]
918
        mov     edx,[y]
919
 
919
 
920
        cmp     ax,[posX]
920
        cmp     ax,[posX]
921
        jb      @f
921
        jb      @f
922
        add     word[posX],ICON_SIZE
922
        add     word[posX],ICON_SIZE
923
        cmp     ax,[posX]
923
        cmp     ax,[posX]
924
        ja      @f
924
        ja      @f
925
 
925
 
926
        cmp     dx,[posY]
926
        cmp     dx,[posY]
927
        jb      @f
927
        jb      @f
928
        add     word[posY],ICON_SIZE
928
        add     word[posY],ICON_SIZE
929
        cmp     dx,[posY]
929
        cmp     dx,[posY]
930
        ja      @f
930
        ja      @f
931
 
931
 
932
        jmp     .OkIcon
932
        jmp     .OkIcon
933
     @@:
933
     @@:
934
 
934
 
935
        inc     ebx
935
        inc     ebx
936
        pop     ecx
936
        pop     ecx
937
 
937
 
938
        ;loop    .TestIcon
938
        ;loop    .TestIcon
939
        dec     ecx
939
        dec     ecx
940
        jnz     .TestIcon
940
        jnz     .TestIcon
941
        jmp     .NoIcon
941
        jmp     .NoIcon
942
   .OkIcon:
942
   .OkIcon:
943
        mov     eax,ebx
943
        mov     eax,ebx
944
        pop     edi ebx
944
        pop     edi ebx
945
        ret
945
        ret
946
   .NoIcon:
946
   .NoIcon:
947
        or      eax,-1
947
        or      eax,-1
948
        pop     edi ebx
948
        pop     edi ebx
949
        ret
949
        ret
950
endp
950
endp
951
 
951
 
952
proc DelIcon stdcall,NumIcon
952
proc DelIcon stdcall,NumIcon
953
        push    ebx edi esi
953
        push    ebx edi esi
954
 
954
 
955
        cmp     [MaxNumIcon],0
955
        cmp     [MaxNumIcon],0
956
        je      .end
956
        je      .end
957
 
957
 
958
        cmp     [MaxNumIcon],1
958
        cmp     [MaxNumIcon],1
959
        je      .OhneIco
959
        je      .OhneIco
960
 
960
 
961
        mov     ebx,[NumIcon]
961
        mov     ebx,[NumIcon]
962
 
962
 
963
        mov     eax,[MaxNumIcon]
963
        mov     eax,[MaxNumIcon]
964
        dec     eax
964
        dec     eax
965
        mov     [MaxNumIcon],eax
965
        mov     [MaxNumIcon],eax
966
        cmp     ebx,eax
966
        cmp     ebx,eax
967
        je      @f
967
        je      @f
968
 
968
 
969
        shl     ebx,2
969
        shl     ebx,2
970
 
970
 
971
        mov     ecx,dword[BegData]
971
        mov     ecx,dword[BegData]
972
        add     ecx,dword[SizeData]
972
        add     ecx,dword[SizeData]
973
        sub     ecx,[IconsOffs+4+ebx]
973
        sub     ecx,[IconsOffs+4+ebx]
974
 
974
 
975
        mov     edx,[IconsOffs+4+ebx]
975
        mov     edx,[IconsOffs+4+ebx]
976
        sub     edx,[IconsOffs+ebx]
976
        sub     edx,[IconsOffs+ebx]
977
        sub     dword[SizeData],edx
977
        sub     dword[SizeData],edx
978
 
978
 
979
        mov     esi,[IconsOffs+4+ebx]
979
        mov     esi,[IconsOffs+4+ebx]
980
        mov     edi,[IconsOffs+ebx]
980
        mov     edi,[IconsOffs+ebx]
981
        rep     movsb
981
        rep     movsb
982
        jmp     .endDel
982
        jmp     .endDel
983
 
983
 
984
     @@:
984
     @@:
985
        mov     ecx,dword[BegData]
985
        mov     ecx,dword[BegData]
986
        add     ecx,dword[SizeData]
986
        add     ecx,dword[SizeData]
987
        sub     ecx,[IconsOffs+ebx*4]
987
        sub     ecx,[IconsOffs+ebx*4]
988
        sub     dword[SizeData],ecx
988
        sub     dword[SizeData],ecx
989
 
989
 
990
  .endDel:
990
  .endDel:
991
        stdcall FillIconsOffs
991
        stdcall FillIconsOffs
992
        jmp     .end
992
        jmp     .end
993
 
993
 
994
.OhneIco:
994
.OhneIco:
995
        mov     edi,[BegData]
995
        mov     edi,[BegData]
996
        mov     [SizeData],0
996
        mov     [SizeData],0
997
        mov     dword[edi],0
997
        mov     dword[edi],0
998
        mov     [MaxNumIcon],0
998
        mov     [MaxNumIcon],0
999
        mov     dword[IconsOffs],0
999
        mov     dword[IconsOffs],0
1000
   .end:
1000
   .end:
1001
        mcall   15,3
1001
        mcall   15,3
1002
        pop     esi edi ebx
1002
        pop     esi edi ebx
1003
        ret
1003
        ret
1004
endp
1004
endp
1005
                                 ;§ ¯®«­ï¥â MaxNumIcon,IconsOffs
1005
                                 ;§ ¯®«­ï¥â MaxNumIcon,IconsOffs
1006
proc FillIconsOffs
1006
proc FillIconsOffs
1007
        push    ebx edi
1007
        push    ebx edi
1008
        mov     edi,[BegData]
1008
        mov     edi,[BegData]
1009
        mov     dword[MaxNumIcon],0
1009
        mov     dword[MaxNumIcon],0
1010
        cmp     dword[edi],0
1010
        cmp     dword[edi],0
1011
        jne     @f
1011
        jne     @f
1012
        mov     dword[IconsOffs],0
1012
        mov     dword[IconsOffs],0
1013
        pop     edi ebx
1013
        pop     edi ebx
1014
        ret
1014
        ret
1015
    @@:
1015
    @@:
1016
 
1016
 
1017
        mov     [IconsOffs],edi
1017
        mov     [IconsOffs],edi
1018
        xor     al,al
1018
        xor     al,al
1019
        xor     edx,edx
1019
        xor     edx,edx
1020
        mov     ebx,dword[SizeData]
1020
        mov     ebx,dword[SizeData]
1021
        add     ebx,dword[BegData]
1021
        add     ebx,dword[BegData]
1022
        or      ecx,-1
1022
        or      ecx,-1
1023
 .CalcNumIc:
1023
 .CalcNumIc:
1024
        repne   scasb
1024
        repne   scasb
1025
        repne   scasb
1025
        repne   scasb
1026
        repne   scasb
1026
        repne   scasb
1027
        repne   scasb
1027
        repne   scasb
1028
        add     edi,4
1028
        add     edi,4
1029
        mov     dword[IconsOffs+edx+4],edi
1029
        mov     dword[IconsOffs+edx+4],edi
1030
        inc     dword[MaxNumIcon]
1030
        inc     dword[MaxNumIcon]
1031
        add     edx,4
1031
        add     edx,4
1032
 
1032
 
1033
        cmp     edi,ebx
1033
        cmp     edi,ebx
1034
        jae     @f
1034
        jae     @f
1035
        jmp     .CalcNumIc
1035
        jmp     .CalcNumIc
1036
   @@:
1036
   @@:
1037
 
1037
 
1038
        mov     dword[IconsOffs+edx],0
1038
        mov     dword[IconsOffs+edx],0
1039
        pop     edi ebx
1039
        pop     edi ebx
1040
        ret
1040
        ret
1041
endp
1041
endp
1042
 
1042
 
1043
proc LoadIconsData stdcall,f_name,sec_name
1043
proc LoadIconsData stdcall,f_name,sec_name
1044
        push    ebx esi edi
1044
        push    ebx esi edi
1045
 
1045
 
1046
        mov     edi,secRButt
1046
        mov     edi,secRButt
1047
        mov     esi,[sec_name]
1047
        mov     esi,[sec_name]
1048
    @@: lodsb
1048
    @@: lodsb
1049
        scasb
1049
        scasb
1050
        jnz     .lid1
1050
        jnz     .lid1
1051
        test    al,al
1051
        test    al,al
1052
        jnz     @b
1052
        jnz     @b
1053
 
1053
 
1054
        mov     eax,1
1054
        mov     eax,1
1055
        pop     edi esi ebx
1055
        pop     edi esi ebx
1056
        ret
1056
        ret
1057
     .lid1:
1057
     .lid1:
1058
 
1058
 
1059
        mov     edi,[PIcoDB]
1059
        mov     edi,[PIcoDB]
1060
        mov     esi,[sec_name]
1060
        mov     esi,[sec_name]
1061
    @@: lodsb
1061
    @@: lodsb
1062
        stosb
1062
        stosb
1063
        test    al,al
1063
        test    al,al
1064
        jnz     @b
1064
        jnz     @b
1065
 
1065
 
1066
        stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0
1066
        stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0
1067
        test    eax,eax
1067
        test    eax,eax
1068
        jz      @f
1068
        jz      @f
1069
        xor     eax,eax
1069
        xor     eax,eax
1070
        pop     edi esi ebx
1070
        pop     edi esi ebx
1071
        ret
1071
        ret
1072
     @@:
1072
     @@:
1073
        xor     al,al
1073
        xor     al,al
1074
        or      ecx,-1
1074
        or      ecx,-1
1075
        repne   scasb
1075
        repne   scasb
1076
 
1076
 
1077
        stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0
1077
        stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0
1078
        test    eax,eax
1078
        test    eax,eax
1079
        jz      @f
1079
        jz      @f
1080
        xor     eax,eax
1080
        xor     eax,eax
1081
        pop     edi esi ebx
1081
        pop     edi esi ebx
1082
        ret
1082
        ret
1083
     @@:
1083
     @@:
1084
        xor     al,al
1084
        xor     al,al
1085
        or      ecx,-1
1085
        or      ecx,-1
1086
        repne   scasb
1086
        repne   scasb
1087
 
1087
 
1088
        stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0
1088
        stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0
1089
        test    eax,eax
1089
        test    eax,eax
1090
        jz      @f
1090
        jz      @f
1091
        xor     eax,eax
1091
        xor     eax,eax
1092
        pop     edi esi ebx
1092
        pop     edi esi ebx
1093
        ret
1093
        ret
1094
     @@:
1094
     @@:
1095
        xor     al,al
1095
        xor     al,al
1096
        or      ecx,-1
1096
        or      ecx,-1
1097
        repne   scasb
1097
        repne   scasb
1098
 
1098
 
1099
        stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h
1099
        stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h
1100
        cmp     eax,80000000h
1100
        cmp     eax,80000000h
1101
        jne     @f
1101
        jne     @f
1102
        xor     eax,eax
1102
        xor     eax,eax
1103
        pop     edi esi ebx
1103
        pop     edi esi ebx
1104
        ret
1104
        ret
1105
     @@:
1105
     @@:
1106
        mov     word[edi+2],ax
1106
        mov     word[edi+2],ax
1107
 
1107
 
1108
        stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h
1108
        stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h
1109
        cmp     eax,80000000h
1109
        cmp     eax,80000000h
1110
        jne     @f
1110
        jne     @f
1111
        xor     eax,eax
1111
        xor     eax,eax
1112
        pop     edi esi ebx
1112
        pop     edi esi ebx
1113
        ret
1113
        ret
1114
     @@:
1114
     @@:
1115
        mov     word[edi],ax
1115
        mov     word[edi],ax
1116
        add     edi,4
1116
        add     edi,4
1117
        mov     [PIcoDB],edi
1117
        mov     [PIcoDB],edi
1118
 
1118
 
1119
        mov     eax,1
1119
        mov     eax,1
1120
        pop     edi esi ebx
1120
        pop     edi esi ebx
1121
        ret
1121
        ret
1122
endp
1122
endp
1123
 
1123
 
1124
include 'RButton.inc'
1124
include 'RButton.inc'
1125
include 'DlgAdd.inc'
1125
include 'DlgAdd.inc'
1126
include 'Moving.inc'
1126
include 'Moving.inc'
1127
;include 'Ico.inc'
1127
;include 'Ico.inc'
1128
 
1128
 
1129
;'Eolite',0,'/sys/File managers/eolite',0,'/hd0/3/Muzik',0,'1',0,00010001h
1129
;'Eolite',0,'/sys/File managers/eolite',0,'/hd0/3/Muzik',0,'1',0,00010001h
1130
;-------------------------------------------------------------------------------
1130
;-------------------------------------------------------------------------------
1131
;##### DATA ####################################################################
1131
;##### DATA ####################################################################
1132
;-------------------------------------------------------------------------------
1132
;-------------------------------------------------------------------------------
1133
; not change this section!!!
1133
; not change this section!!!
1134
; start section
1134
; start section
1135
;------------------------------------------------------------------------------
1135
;------------------------------------------------------------------------------
1136
align 4
1136
align 4
1137
image_file     dd 0 ;+0
1137
image_file     dd 0 ;+0
1138
raw_pointer    dd 0 ;+4
1138
raw_pointer    dd 0 ;+4
1139
return_code    dd 0 ;+8
1139
return_code    dd 0 ;+8
1140
img_size       dd 0 ;+12
1140
img_size       dd 0 ;+12
1141
deflate_unpack dd 0 ;+16        ; not use for scaling
1141
deflate_unpack dd 0 ;+16        ; not use for scaling
1142
raw_pointer_2  dd 0 ;+20        ; not use for scaling
1142
raw_pointer_2  dd 0 ;+20        ; not use for scaling
1143
;------------------------------------------------------------------------------
1143
;------------------------------------------------------------------------------
1144
; end section
1144
; end section
1145
;------------------------------------------------------------------------------
1145
;------------------------------------------------------------------------------
1146
 
1146
 
1147
 
1147
 
1148
align 4
1148
align 4
1149
fiStdIco:
1149
fiStdIco:
1150
        dd 5
1150
        dd 5
1151
        dd 0
1151
        dd 0
1152
        dd 0
1152
        dd 0
1153
.size   dd 0
1153
.size   dd 0
1154
.point  dd bufStdIco
1154
.point  dd bufStdIco
1155
        db ICON_STRIP,0
1155
        db ICON_STRIP,0
1156
 
1156
 
1157
 
1157
 
1158
align 4
1158
align 4
1159
fiRunProg:            ;¤«ï § ¯ã᪠ ¯à®£à ¬¬
1159
fiRunProg:            ;¤«ï § ¯ã᪠ ¯à®£à ¬¬
1160
        dd 7
1160
        dd 7
1161
        dd 0
1161
        dd 0
1162
        dd 0
1162
        dd 0
1163
        dd 0
1163
        dd 0
1164
        dd ErrNotFoundIni
1164
        dd ErrNotFoundIni
1165
        db 0
1165
        db 0
1166
        dd pthNotify
1166
        dd pthNotify
1167
 
1167
 
1168
fiIni   dd 5           ;¤«ï ini ä ©« 
1168
fiIni   dd 5           ;¤«ï ini ä ©« 
1169
        dd 0
1169
        dd 0
1170
        dd 0
1170
        dd 0
1171
        dd 0
1171
        dd 0
1172
        dd bufIni
1172
        dd bufIni
1173
        db '/rd/1/icon.ini',0
1173
        db '/rd/1/icon.ini',0
1174
 
1174
 
1175
 
1175
 
1176
IconsFile       db ICON_STRIP,0
1176
IconsFile       db ICON_STRIP,0
1177
NameIconsDat    db ICONS_DAT,0
1177
NameIconsDat    db ICONS_DAT,0
1178
align 4
1178
align 4
1179
MaxNumIcon      dd 0           ;ª®«¨ç¥á⢮ ¨ª®­®ª
1179
MaxNumIcon      dd 0           ;ª®«¨ç¥á⢮ ¨ª®­®ª
1180
 
1180
 
1181
bFixIcons       dd 1
1181
bFixIcons       dd 0
1182
bNotSave        dd 0
1182
bNotSave        dd 0
1183
 
1183
 
1184
LButtonActiv    dd 0
1184
LButtonActiv    dd 0
1185
RButtonActiv    dd 0
1185
RButtonActiv    dd 0
1186
MovingActiv     dd 0
1186
MovingActiv     dd 0
1187
 
1187
 
1188
IconIni         db '/rd/1/icon.ini',0
1188
IconIni         db '/rd/1/icon.ini',0
1189
 
1189
 
1190
 
1190
 
1191
;keyName         db 'name',0
1191
;keyName         db 'name',0
1192
keyPath         db 'path',0
1192
keyPath         db 'path',0
1193
keyParams       db 'param',0
1193
keyParams       db 'param',0
1194
keyIco          db 'ico',0
1194
keyIco          db 'ico',0
1195
keyX            db 'x',0
1195
keyX            db 'x',0
1196
keyY            db 'y',0
1196
keyY            db 'y',0
1197
 
1197
 
1198
;-------------------------------------------------------------------------------
1198
;-------------------------------------------------------------------------------
1199
IMPORTS:
1199
IMPORTS:
1200
library cnv_png,'cnv_png.obj',\
1200
library cnv_png,'cnv_png.obj',\
1201
        archiver,'archiver.obj',\
1201
        archiver,'archiver.obj',\
1202
        box_lib,'box_lib.obj',\
1202
        box_lib,'box_lib.obj',\
1203
        proc_lib,'proc_lib.obj',\
1203
        proc_lib,'proc_lib.obj',\
1204
        libini,'libini.obj'
1204
        libini,'libini.obj'
1205
 
1205
 
1206
import  cnv_png,\
1206
import  cnv_png,\
1207
        cnv_png_import.Start,'START',\
1207
        cnv_png_import.Start,'START',\
1208
        cnv_png_import.Version,'version',\
1208
        cnv_png_import.Version,'version',\
1209
        cnv_png_import.Check,'Check_Header',\
1209
        cnv_png_import.Check,'Check_Header',\
1210
        cnv_png_import.Assoc,'Associations'
1210
        cnv_png_import.Assoc,'Associations'
1211
 
1211
 
1212
import  archiver,\
1212
import  archiver,\
1213
        unpack_DeflateUnpack2,'deflate_unpack2'
1213
        unpack_DeflateUnpack2,'deflate_unpack2'
1214
 
1214
 
1215
import  box_lib,\
1215
import  box_lib,\
1216
        edit_box_draw,'edit_box',\
1216
        edit_box_draw,'edit_box',\
1217
        edit_box_key,'edit_box_key',\
1217
        edit_box_key,'edit_box_key',\
1218
        edit_box_mouse,'edit_box_mouse',\
1218
        edit_box_mouse,'edit_box_mouse',\
1219
        scrollbar_h_draw,'scrollbar_h_draw',\
1219
        scrollbar_h_draw,'scrollbar_h_draw',\
1220
        scrollbar_h_mouse,'scrollbar_h_mouse'
1220
        scrollbar_h_mouse,'scrollbar_h_mouse'
1221
 
1221
 
1222
import  proc_lib,\
1222
import  proc_lib,\
1223
        OpenDialog_Init,'OpenDialog_init',\
1223
        OpenDialog_Init,'OpenDialog_init',\
1224
        OpenDialog_Start,'OpenDialog_start'
1224
        OpenDialog_Start,'OpenDialog_start'
1225
 
1225
 
1226
import  libini,\
1226
import  libini,\
1227
        ini_enum_sections,'ini_enum_sections',\
1227
        ini_enum_sections,'ini_enum_sections',\
1228
        ini_enum_keys,'ini_enum_keys',\
1228
        ini_enum_keys,'ini_enum_keys',\
1229
        ini_get_str,'ini_get_str',\
1229
        ini_get_str,'ini_get_str',\
1230
        ini_set_str,'ini_set_str',\
1230
        ini_set_str,'ini_set_str',\
1231
        ini_get_color,'ini_get_color',\
1231
        ini_get_color,'ini_get_color',\
1232
        ini_get_int,'ini_get_int',\
1232
        ini_get_int,'ini_get_int',\
1233
        ini_set_int,'ini_set_int',\
1233
        ini_set_int,'ini_set_int',\
1234
        ini_del_section,'ini_del_section'
1234
        ini_del_section,'ini_del_section'
1235
 
1235
 
1236
 
1236
 
1237
;ini.get_str (f_name, sec_name, key_name, buffer, buf_len, def_val)
1237
;ini.get_str (f_name, sec_name, key_name, buffer, buf_len, def_val)
1238
;ini.set_str (f_name, sec_name, key_name, buffer, buf_len)
1238
;ini.set_str (f_name, sec_name, key_name, buffer, buf_len)
1239
 
1239
 
1240
 
1240
 
1241
;-------------------------------------------------------------------------------
1241
;-------------------------------------------------------------------------------
1242
;----- RButton.inc -------------------------------------------------------------
1242
;----- RButton.inc -------------------------------------------------------------
1243
;-------------------------------------------------------------------------------
1243
;-------------------------------------------------------------------------------
1244
secRButt        db 'rbmenu',0
1244
secRButt        db 'rbmenu',0
1245
 
1245
 
1246
if lang eq ru
1246
if lang eq ru
1247
 RMenuRedrawFon db '¥à¥à¨á®¢ âì',0
1247
 RMenuRedrawFon db '¥à¥à¨á®¢ âì',0
1248
 RMenuAlign     db '‚ë஢­ïâì ¯® á¥âª¥',0
1248
 RMenuAlign     db '‚ë஢­ïâì ¯® á¥âª¥',0
1249
 RMenuAdd       db '„®¡ ¢¨âì',0
1249
 RMenuAdd       db '„®¡ ¢¨âì',0
1250
 RMenuDel       db '“¤ «¨âì',0
1250
 RMenuDel       db '“¤ «¨âì',0
1251
 RMenuProp      db '‘¢®©á⢠',0
1251
 RMenuProp      db '‘¢®©á⢠',0
1252
 RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
1252
 RMenuOffMoving db '‡ ªà¥¯¨âì ¨ª®­ª¨',0
1253
 RMenuOnMoving  db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
1253
 RMenuOnMoving  db 'Žâªà¥¯¨âì ¨ª®­ª¨',0
1254
 
1254
 
1255
else
1255
else
1256
 
1256
 
1257
 RMenuRedrawFon db 'Redraw',0
1257
 RMenuRedrawFon db 'Redraw',0
1258
 RMenuAlign     db 'Snap to Grid',0
1258
 RMenuAlign     db 'Snap to Grid',0
1259
 RMenuAdd       db 'Add',0
1259
 RMenuAdd       db 'Add',0
1260
 RMenuDel       db 'Delete',0
1260
 RMenuDel       db 'Delete',0
1261
 RMenuProp      db 'Properties',0
1261
 RMenuProp      db 'Properties',0
1262
 RMenuOffMoving db 'Fix the icons',0
1262
 RMenuOffMoving db 'Fix the icons',0
1263
 RMenuOnMoving  db 'Unfix the icons',0
1263
 RMenuOnMoving  db 'Unfix the icons',0
1264
 
1264
 
1265
end if
1265
end if
1266
 
1266
 
1267
if lang eq ru
1267
if lang eq ru
1268
 
1268
 
1269
 ErrRunProg     db 'Žè¨¡ª  § ¯ã᪠ ¯à®£à ¬¬ë',0
1269
 ErrRunProg     db 'Žè¨¡ª  § ¯ã᪠ ¯à®£à ¬¬ë',0
1270
 WarningSave    db '¥ § ¡ã¤ì⥠á®åà ­¨âì ¨§¬¥­¥­¨ï, § ¯ãáâ¨âì RDSave',0
1270
 WarningSave    db '¥ § ¡ã¤ì⥠á®åà ­¨âì ¨§¬¥­¥­¨ï, § ¯ãáâ¨âì RDSave',0
1271
 ErrNotFoundIni db '¥ ­ ©¤¥­ icon.ini',0
1271
 ErrNotFoundIni db '¥ ­ ©¤¥­ icon.ini',0
1272
 
1272
 
1273
else
1273
else
1274
 
1274
 
1275
 ErrRunProg     db 'Error runing program',0
1275
 ErrRunProg     db 'Error runing program',0
1276
 WarningSave    db 'Do not forget to save the changes, run the RDSave',0
1276
 WarningSave    db 'Do not forget to save the changes, run the RDSave',0
1277
 ErrNotFoundIni db 'icon.ini not found',0
1277
 ErrNotFoundIni db 'icon.ini not found',0
1278
 
1278
 
1279
end if
1279
end if
1280
 
1280
 
1281
 
1281
 
1282
pthNotify       db '/rd/1/@notify',0
1282
pthNotify       db '/rd/1/@notify',0
1283
 
1283
 
1284
;-------------------------------------------------------------------------------
1284
;-------------------------------------------------------------------------------
1285
;------- AddDlg.inc ---------------------------------------------------------------
1285
;------- AddDlg.inc ---------------------------------------------------------------
1286
;-------------------------------------------------------------------------------
1286
;-------------------------------------------------------------------------------
1287
if lang eq ru
1287
if lang eq ru
1288
DTitle          db '„®¡ ¢¨âì ¨ª®­ªã',0
1288
DTitle          db '„®¡ ¢¨âì ¨ª®­ªã',0
1289
 
1289
 
1290
DCaptName       db 'ˆ¬ï',0
1290
DCaptName       db 'ˆ¬ï',0
1291
DCaptPath       db 'ãâì',0
1291
DCaptPath       db 'ãâì',0
1292
DCaptParams     db ' à ¬¥âàë',0
1292
DCaptParams     db ' à ¬¥âàë',0
1293
DCaptIcon       db 'ˆª®­ª ',0
1293
DCaptIcon       db 'ˆª®­ª ',0
1294
;DCaptChange     db '.',0
1294
;DCaptChange     db '.',0
1295
DCaptCreate     db '‘®§¤ âì',0
1295
DCaptCreate     db '‘®§¤ âì',0
1296
DCaptProperties db 'ˆ§¬¥­¨âì',0
1296
DCaptProperties db 'ˆ§¬¥­¨âì',0
1297
DCaptCancel     db 'Žâ¬¥­¨âì',0
1297
DCaptCancel     db 'Žâ¬¥­¨âì',0
1298
 
1298
 
1299
else
1299
else
1300
DTitle          db 'Add icon',0
1300
DTitle          db 'Add icon',0
1301
 
1301
 
1302
DCaptName       db 'Name',0
1302
DCaptName       db 'Name',0
1303
DCaptPath       db 'Path',0
1303
DCaptPath       db 'Path',0
1304
DCaptParams     db 'Parameters',0
1304
DCaptParams     db 'Parameters',0
1305
DCaptIcon       db 'Icon',0
1305
DCaptIcon       db 'Icon',0
1306
;DCaptChange     db '.',0
1306
;DCaptChange     db '.',0
1307
DCaptCreate     db 'Create',0
1307
DCaptCreate     db 'Create',0
1308
DCaptProperties db 'Change',0
1308
DCaptProperties db 'Change',0
1309
DCaptCancel     db 'Cancel',0
1309
DCaptCancel     db 'Cancel',0
1310
end if
1310
end if
1311
 
1311
 
1312
;/­¥ ¬¥­ïâì ¯®«®¦¥­¨¥
1312
;/­¥ ¬¥­ïâì ¯®«®¦¥­¨¥
1313
edtName    edit_box NAME_LENGTH*6+4,70+20+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0,NAME_LENGTH,\
1313
edtName    edit_box NAME_LENGTH*6+4,70+20+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0,NAME_LENGTH,\
1314
                DAreaName,mouse_dd,0,0,0
1314
                DAreaName,mouse_dd,0,0,0
1315
edtExePath edit_box 281-3-20-IMG_SIZE,70+20+IMG_SIZE,26,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
1315
edtExePath edit_box 281-3-20-IMG_SIZE,70+20+IMG_SIZE,26,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
1316
                DAreaPath,mouse_dd,0,0,0
1316
                DAreaPath,mouse_dd,0,0,0
1317
edtParams  edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,46,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
1317
edtParams  edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,46,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
1318
                DAreaParams,mouse_dd,0,0,0
1318
                DAreaParams,mouse_dd,0,0,0
1319
edtIcon    edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,66,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
1319
edtIcon    edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,66,0FFFFFFh,06F9480h,0FFh,0h,0,256,\
1320
                DAreaIcon,mouse_dd,0,0,0
1320
                DAreaIcon,mouse_dd,0,0,0
1321
endEdits:
1321
endEdits:
1322
;\
1322
;\
1323
 
1323
 
1324
sbIcons:
1324
sbIcons:
1325
             dw END_ICONS_AREAW-ICONSX
1325
             dw END_ICONS_AREAW-ICONSX
1326
             dw ICONSX
1326
             dw ICONSX
1327
             dw 15
1327
             dw 15
1328
             dw END_ICONS_AREAH+3
1328
             dw END_ICONS_AREAH+3
1329
             dd 0
1329
             dd 0
1330
             dd 1
1330
             dd 1
1331
 .max_area   dd 0
1331
 .max_area   dd 0
1332
 .cur_area   dd ICONS_DRAW_COUNTW
1332
 .cur_area   dd ICONS_DRAW_COUNTW
1333
 .position   dd 0
1333
 .position   dd 0
1334
 .bckg_col   dd 0
1334
 .bckg_col   dd 0
1335
 .frnt_col   dd 0
1335
 .frnt_col   dd 0
1336
 .line_col   dd 0
1336
 .line_col   dd 0
1337
 .redraw     dd 0
1337
 .redraw     dd 0
1338
 .delta      dd 0
1338
 .delta      dd 0
1339
 .delta2     dd 0
1339
 .delta2     dd 0
1340
 .r_size_x   dw 0
1340
 .r_size_x   dw 0
1341
 .r_start_x  dw 0
1341
 .r_start_x  dw 0
1342
 .r_size_y   dw 0
1342
 .r_size_y   dw 0
1343
 .r_start_y  dw 0
1343
 .r_start_y  dw 0
1344
 .m_pos      dd 0
1344
 .m_pos      dd 0
1345
 .m_pos2     dd 0
1345
 .m_pos2     dd 0
1346
 .m_keys     dd 0
1346
 .m_keys     dd 0
1347
 .run_size   dd 0
1347
 .run_size   dd 0
1348
 .position2  dd 0
1348
 .position2  dd 0
1349
 .work_size  dd 0
1349
 .work_size  dd 0
1350
 .all_redraw dd 0
1350
 .all_redraw dd 0
1351
 .ar_offset  dd 0
1351
 .ar_offset  dd 0
1352
 
1352
 
1353
;-------------------------------------------------------------------------------
1353
;-------------------------------------------------------------------------------
1354
OpenDialog_data:
1354
OpenDialog_data:
1355
.type                   dd 0
1355
.type                   dd 0
1356
.procinfo               dd RBProcInfo       ;+4
1356
.procinfo               dd RBProcInfo       ;+4
1357
.com_area_name          dd communication_area_name      ;+8
1357
.com_area_name          dd communication_area_name      ;+8
1358
.com_area               dd 0    ;+12
1358
.com_area               dd 0    ;+12
1359
.opendir_pach           dd temp_dir_pach        ;+16
1359
.opendir_pach           dd temp_dir_pach        ;+16
1360
.dir_default_pach       dd communication_area_default_pach      ;+20
1360
.dir_default_pach       dd communication_area_default_pach      ;+20
1361
.start_path             dd open_dialog_path     ;+24
1361
.start_path             dd open_dialog_path     ;+24
1362
.draw_window            dd DRedraw;draw_window_for_OD   ;+28
1362
.draw_window            dd DRedraw;draw_window_for_OD   ;+28
1363
.status                 dd 0    ;+32
1363
.status                 dd 0    ;+32
1364
.openfile_pach          dd DAreaPath;fname_Info   ;+36
1364
.openfile_pach          dd DAreaPath;fname_Info   ;+36
1365
.filename_area          dd 0;DAreaPath        ;+40
1365
.filename_area          dd 0;DAreaPath        ;+40
1366
.filter_area            dd Filter
1366
.filter_area            dd Filter
1367
.x:
1367
.x:
1368
.x_size                 dw 420 ;+48 ; Window X size
1368
.x_size                 dw 420 ;+48 ; Window X size
1369
.x_start                dw 100 ;+50 ; Window X position
1369
.x_start                dw 100 ;+50 ; Window X position
1370
.y:
1370
.y:
1371
.y_size                 dw 320 ;+52 ; Window y size
1371
.y_size                 dw 320 ;+52 ; Window y size
1372
.y_start                dw 100 ;+54 ; Window Y position
1372
.y_start                dw 100 ;+54 ; Window Y position
1373
 
1373
 
1374
communication_area_name:
1374
communication_area_name:
1375
        db 'FFFFFFFF_open_dialog',0
1375
        db 'FFFFFFFF_open_dialog',0
1376
open_dialog_path:
1376
open_dialog_path:
1377
        db '/sys/File managers/opendial',0
1377
        db '/sys/File managers/opendial',0
1378
 
1378
 
1379
communication_area_default_pach:
1379
communication_area_default_pach:
1380
        db '/sys',0
1380
        db '/sys',0
1381
 
1381
 
1382
Filter  dd 0
1382
Filter  dd 0
1383
 
1383
 
1384
;open_dialog     db 0
1384
;open_dialog     db 0
1385
;-------------------------------------------------------------------------------
1385
;-------------------------------------------------------------------------------
1386
 
1386
 
1387
;/­¥ à §¤¥«ïâì
1387
;/­¥ à §¤¥«ïâì
1388
align 4
1388
align 4
1389
IconAreaH       dd ICON_SIZE,ICON_SIZE
1389
IconAreaH       dd ICON_SIZE,ICON_SIZE
1390
I_END:
1390
I_END:
1391
;##### UDATA ###################################################################
1391
;##### UDATA ###################################################################
1392
IconArea        rb 4*ICON_SIZE*ICON_SIZE
1392
IconArea        rb 4*ICON_SIZE*ICON_SIZE
1393
;\
1393
;\
1394
 
1394
 
1395
ScreenX         rw 1
1395
ScreenX         rw 1
1396
ScreenY         rw 1
1396
ScreenY         rw 1
1397
 
1397
 
1398
MouseX          rd 1
1398
MouseX          rd 1
1399
MouseY          rd 1
1399
MouseY          rd 1
1400
 
1400
 
1401
RBSlot          rd 1
1401
RBSlot          rd 1
1402
 
1402
 
1403
AddX            rd 1
1403
AddX            rd 1
1404
AddY            rd 1
1404
AddY            rd 1
1405
 
1405
 
1406
SelIcon         rd 1
1406
SelIcon         rd 1
1407
 
1407
 
1408
sc              system_colors
1408
sc              system_colors
1409
 
1409
 
1410
align 4
1410
align 4
1411
bufStdIco       rb 40
1411
bufStdIco       rb 40
1412
IconsOffs       rd 100
1412
IconsOffs       rd 100
1413
PIcoDB          rd 1
1413
PIcoDB          rd 1
1414
 
1414
 
1415
align 4
1415
align 4
1416
icon_count      rd 1
1416
icon_count      rd 1
1417
strip_file      rd 1
1417
strip_file      rd 1
1418
strip_file_size rd 1
1418
strip_file_size rd 1
1419
 
1419
 
1420
cur_band_compensation rd 1
1420
cur_band_compensation rd 1
1421
 
1421
 
1422
;---- RButton -----------------------------------------------------------------------
1422
;---- RButton -----------------------------------------------------------------------
1423
bufIni          rb 40
1423
bufIni          rb 40
1424
NumUserButt     rd 1
1424
NumUserButt     rd 1
1425
RBUser          rd 16*2+1
1425
RBUser          rd 16*2+1
1426
RMenuW          rw 1
1426
RMenuW          rw 1
1427
RMenuH          rw 1
1427
RMenuH          rw 1
1428
RMenuHsb        rw 1
1428
RMenuHsb        rw 1
1429
 
1429
 
1430
MaxPage         rd 1
1430
MaxPage         rd 1
1431
 
1431
 
1432
mouse_dd        rd 1
1432
mouse_dd        rd 1
1433
 
1433
 
1434
DAreaName       rb NAME_LENGTH+1
1434
DAreaName       rb NAME_LENGTH+1
1435
DAreaPath       rb 256+1
1435
DAreaPath       rb 256+1
1436
DAreaParams     rb 256+1
1436
DAreaParams     rb 256+1
1437
DAreaIcon       rb 256+1
1437
DAreaIcon       rb 256+1
1438
 
1438
 
1439
align 4
1439
align 4
1440
RBProcInfo      rb 1024
1440
RBProcInfo      rb 1024
1441
align 4
1441
align 4
1442
 
1442
 
1443
; OpenDialog
1443
; OpenDialog
1444
temp_dir_pach   rb 1024
1444
temp_dir_pach   rb 1024
1445
fname_Info      rb 1024
1445
fname_Info      rb 1024
1446
;-------------------------------------------------------------------------------
1446
;-------------------------------------------------------------------------------
1447
                rb 1024
1447
                rb 1024
1448
stack_dlg:
1448
stack_dlg:
1449
align 4
1449
align 4
1450
                rb 1024
1450
                rb 1024
1451
stack_area:
1451
stack_area:
1452
;------------------------------------------------------------------------------
1452
;------------------------------------------------------------------------------
1453
ENDMEM:
1453
ENDMEM: