Subversion Repositories Kolibri OS

Rev

Rev 1432 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1401 IgorA 1
;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron
2
;¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬,   â ª¦¥
3
;’¥¯«®¢ã €«¥ªá¥î ( www.lrz.land.ru)
4
use32
5
  org 0x0
6
  db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
7
  dd 0x1
8
  dd start
9
  dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
10
  dd mem
11
  dd stacktop
12
  dd 0x0
13
  dd sys_path
14
 
15
include '../../proc32.inc'
16
include '../../macros.inc'
17
include 'mem.inc'
18
include 'dll.inc'
19
 
20
include '../../develop/libraries/box_lib/load_lib.mac'
21
include '../../develop/libraries/box_lib/trunk/tree_list.mac'
22
include '../../develop/libraries/box_lib/trunk/editbox.mac'
23
include '../../develop/libraries/box_lib/trunk/checkbox.mac'
24
 
25
min_window_w equ 485 ;¬¨­¨¬ «ì­ ï è¨à¨­  ®ª­ 
26
min_window_h equ 325 ;¬¨­¨¬ «ì­ ï ¢ëá®â  ®ª­ 
27
otst_panel_left equ 265
28
 
29
include 'tile_fun.inc'
30
include 'pl_import.inc'
31
 
32
  @use_library
33
 
34
struct f70
35
  func_n dd ?
36
  param1 dd ?
37
  param2 dd ?
38
  param3 dd ?
39
  param4 dd ?
40
  rezerv db ?
41
  name dd ?
42
ends
43
 
44
fn_metki db 'pl_metki.lst',0
45
fn_icon1 db 'tl_sys_16.png',0
46
fn_icon2 db 'tl_nod_16.bmp',0
47
 
48
ini_name db 'planet_v.ini',0
49
ini_sec  db 'Map',0
50
ini_k_cache db 'Cache',0
51
ini_def_cache db '/cache/sat',0
52
ini_ext  db 'ext'
53
.number  db '?'
54
.def db 0 ;à áè¨à¥­¨¥ ¯® 㬮«ç ­¨î
55
 
56
 
57
align 4
58
start:
59
  load_libraries l_libs_start,load_lib_end
60
 
61
;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
62
	mov	ebp,lib0
63
	cmp	dword [ebp+ll_struc_size-4],0
64
	jz	@f
65
	mcall	-1	;exit not correct
66
@@:
67
	mov	ebp,lib1
68
	cmp	dword [ebp+ll_struc_size-4],0
69
	jz	@f
70
	mcall	-1	;exit not correct
71
@@:
72
	mov	ebp,lib2
73
	cmp	dword [ebp+ll_struc_size-4],0
74
	jz	@f
75
	mcall	-1	;exit not correct
76
@@:
77
	mov	ebp,lib3
78
	cmp	dword [ebp+ll_struc_size-4],0
79
	jz	@f
80
	mcall	-1	;exit not correct
81
@@:
82
 
83
  stdcall dll.Init,dword[lib_init]
84
  stdcall dll.Init,dword[lib_init_ini]
85
 
86
  copy_path ini_name,sys_path,file_name,0x0
87
  stdcall dword[ini_get_str],file_name,ini_sec,ini_k_cache,dword[edit1.text],dword[edit1.max],ini_def_cache
88
  stdcall [str_len],dword[edit1.text],dword[edit1.max]
89
  mov dword[edit1.size],eax
90
  mov dword[edit1.pos],eax
91
 
92
  stdcall dword[tl_data_init], tree1
93
  stdcall dword[tl_data_init], tree2
94
 
95
;áç¨â뢠¥¬ à áè¨à¥­¨ï ª àâ ¨§ *.ini ä ©« 
96
  mov byte[ini_ext.number],'0'
97
@@: ;áç¨â뢠¥¬ ¯ à ¬¥âàë ®â ext1 ¤® ext9
98
  inc byte[ini_ext.number]
99
  stdcall dword[ini_get_str],file_name,ini_sec,ini_ext,txt_tile_type_0,dword[tree1.info_capt_len],ini_ext.def
100
  cmp byte[txt_tile_type_0],0
101
  je @f
102
    stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1
103
  jmp @b
104
@@:
105
  mov byte[ini_ext.number],'0' ;áç¨â뢠¥¬ ¯ à ¬¥âà ®â ext0 ª®â®àë© ¡ã¤¥â ¢ë¡à ­ ¢ ᯨ᪥
106
  stdcall dword[ini_get_str],file_name,ini_sec,ini_ext,txt_tile_type_0,dword[tree1.info_capt_len],ini_ext.def
107
  cmp byte[txt_tile_type_0],0
108
  jne @f
109
    mov dword[txt_tile_type_0],'.bmp' ;¥á«¨ ¢ *.ini ä ©«¥ ­¨ç¥£® ­¥â ¤®¡ ¢«ï¥¬ à áè¨à¥­¨¥ .bmp
110
  @@:
111
  stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1
112
 
113
; init bmp file
114
  push dword RGB_TILE_SIZE+300 ;300 - § ¯ á­ë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª  bmp ä ©« 
115
  call mem.Alloc
116
  mov [bmp_icon],eax
117
 
118
  stdcall array_tile_function, tile_00,max_tiles_count,tile_init
119
  stdcall tiles_init_grid, tile_00,max_tiles_count,max_tiles_cols
120
 
121
  push dword TREE_ICON_SYS16_BMP_SIZE
122
  call mem.Alloc
123
  mov [tree_sys_icon],eax
124
 
125
  push dword TREE_ICON_NOD16_BMP_SIZE
126
  call mem.Alloc
127
  mov [tree_nod_icon],eax
128
 
129
  copy_path fn_icon1,sys_path,file_name,0x0
130
  mov eax,70 ;load icon file
131
  mov [run_file_70.func_n], 0
132
  mov [run_file_70.param1], 0
133
  mov [run_file_70.param2], 0
134
  mov [run_file_70.param3], TREE_ICON_SYS16_BMP_SIZE
135
  m2m [run_file_70.param4], [tree_sys_icon]
136
  mov [run_file_70.rezerv], 0
137
  mov [run_file_70.name], file_name
138
  mov ebx,run_file_70
139
  int 0x40
140
  cmp ebx,0xffffffff
141
  je @f
142
    stdcall dword[img_decode], dword[tree_sys_icon],ebx,0
143
    mov dword[data_icon],eax
144
    stdcall dword[img_to_rgb2], dword[data_icon],dword[tree_sys_icon]
145
    stdcall dword[img_destroy], dword[data_icon]
146
 
147
    m2m dword[tree1.data_img_sys],dword[tree_sys_icon]
148
    m2m dword[tree2.data_img_sys],dword[tree_sys_icon]
149
  @@:
150
 
151
 
152
  copy_path fn_icon2,sys_path,file_name,0x0
153
  mov eax,70 ;load icon file
154
  mov [run_file_70.param3], TREE_ICON_NOD16_BMP_SIZE
155
  m2m [run_file_70.param4], [tree_nod_icon]
156
  mov ebx,run_file_70
157
  int 0x40
158
  cmp ebx,0xffffffff
159
  je @f
160
    stdcall dword[img_decode], dword[tree_nod_icon],ebx,0
161
    mov dword[data_icon],eax
162
    stdcall dword[img_to_rgb2], dword[data_icon],dword[tree_nod_icon]
163
    stdcall dword[img_destroy], dword[data_icon]
164
 
165
    m2m dword[tree1.data_img],dword[tree_nod_icon]
166
    m2m dword[tree2.data_img],dword[tree_nod_icon]
167
  @@:
168
 
169
  mcall 40,0x27
170
 
171
  mcall 48,3,sc,sizeof.system_colors
172
  ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
173
  edit_boxes_set_sys_color edit1,editboxes_end,sc
174
  check_boxes_set_sys_color ch1,checkboxes_end,sc
175
 
176
  mov byte[file_name],0
177
 
178
red_win:
179
  call draw_win
180
  call but_MetLoad
181
 
182
still:
183
  mov eax,10
184
  mcall
185
 
186
  cmp al,0x1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
187
  jz red_win
188
  cmp al,0x2
189
  jz key
190
  cmp al,0x3
191
  jz button
192
 
193
  push dword ch2
194
  call [check_box_mouse]
195
  push dword ch1
196
  call [check_box_mouse]
197
 
198
  stdcall [edit_box_mouse], edit1
199
  stdcall [edit_box_mouse], edit2
200
 
201
  stdcall [tl_mouse], tree1
202
  stdcall [tl_mouse], tree2
203
 
204
  jmp still
205
 
206
key:
207
  push eax ebx
208
  mcall 2
209
  stdcall [edit_box_key], edit1
210
  stdcall [edit_box_key], edit2
211
 
212
  push dword tree1
213
  call [tl_key]
214
  push dword tree2
215
  call [tl_key]
216
 
217
  mov ebx,dword[el_focus] ;÷òî-áû êàðòà íå äâèãàëàñü åñëè îêíà treelist â ôîêóñå
218
  cmp ebx, dword tree1
219
  je .end_f
220
  cmp ebx, dword tree2
221
  je .end_f
222
 
223
  ;÷òî-áû êàðòà íå äâèãàëàñü åñëè òåêñòîâûå ïîëÿ â ôîêóñå
224
  test word[edit1.flags],10b ;ed_focus
225
  jne .end_f
226
  test word[edit2.flags],10b ;ed_focus
227
  jne .end_f
228
 
229
    cmp ah,179 ;Right
230
    jne @f
231
      call CursorMoveRight
232
    @@:
233
    cmp ah,176 ;Left
234
    jne @f
235
    cmp dword[map.coord_x],0
236
    je @f
237
      dec dword[map.coord_x]
238
      ;ᤢ¨£ ¥¬ á¥âªã â ©«®¢ ¢¯à ¢®, çâ®-¡ë ç áâì â ©«®¢ ᮢ¯ «¨ ¨ ¯à¨è«®áì ¬¥­ìè¥ § £à㦠âì ­®¢ëå
239
      stdcall tiles_grid_move_right, tile_00,max_tiles_count,max_tiles_cols
240
      call but_Refresh
241
    @@:
242
    cmp ah,177 ;Down
243
    jne @f
244
      call CursorMoveDown
245
    @@:
246
    cmp ah,178 ;Up
247
    jne @f
248
    cmp dword[map.coord_y],0
249
    je @f
250
      dec dword[map.coord_y]
251
      ;ᤢ¨£ ¥¬ á¥âªã â ©«®¢ ¢­¨§
252
      stdcall tiles_grid_move_down, tile_00,max_tiles_count,max_tiles_rows
253
      call but_Refresh
254
    @@:
255
 
256
    cmp ah,45 ;-
257
    jne @f
258
      call but_ZoomM
259
    @@:
260
    cmp ah,61 ;+
261
    jne @f
262
      call but_ZoomP
263
    @@:
264
 
265
  .end_f:
266
  pop ebx eax
267
  jmp still
268
 
269
 
270
align 4
271
draw_win:
272
pushad
273
  mcall 12,1
274
 
275
  xor eax,eax
276
  mov ebx,20*65536+min_window_w
277
  mov ecx,20*65536+min_window_h
278
  mov edx,[sc.work]
279
  or  edx,0x33000000
280
  mov edi,hed
281
  mcall
282
 
283
  mcall 9,procinfo,-1
284
 
285
  cmp dword[procinfo.box.width],min_window_w ; ¯à®¢¥à塞 è¨à¨­ã ®ª­ 
286
  jge @f
287
    mov dword[procinfo.box.width],min_window_w ; ¥á«¨ ®ª­® ®ç¥­ì 㧪®¥, 㢥«¨ç¨¢ ¥¬ è¨à¨­ã ¤«ï ¨§¡¥¦ ­¨ï £«îª®¢
288
  @@:
289
 
290
  mov edi,dword[procinfo.box.width]
291
  sub edi,min_window_w-otst_panel_left
292
  mov dword[tree1.box_left],edi
293
  mov dword[tree2.box_left],edi
294
 
295
  mov eax,dword[tree2.box_left] ;¤¢¨£ ¥¬ áªà®««¨­£
296
  add eax,dword[tree2.box_width]
297
  mov ebx,dword[tree2.p_scrol]
298
  mov word[ebx+2],ax
299
 
300
  mov dword[edit2.left],edi
301
  add dword[edit2.left],370-otst_panel_left
302
 
303
  stdcall dword[tl_draw],dword tree1
304
  stdcall dword[tl_draw],dword tree2
305
  mov dword[wScrMetki.all_redraw],1
306
  push dword wScrMetki
307
  call [scrollbar_ver_draw]
308
 
309
  mov eax,8 ;ª­®¯ª 
310
  mov ebx,145*65536+20
311
  mov ecx,5*65536+25
312
  mov edx,6
313
  mov esi,[sc.work_button]
314
  int 0x40
315
 
316
  mov ebx,100*65536+20
317
  mov ecx,5*65536+25
318
  mov edx,5
319
  int 0x40
320
 
321
  mov bx,di
322
  shl ebx,16
323
  mov bx,100
324
  mov ecx,265*65536+25
325
  mov edx,9
326
  int 0x40
327
 
328
  ;ebx ...
329
  mov ecx,235*65536+25
330
  mov edx,8
331
  int 0x40
332
 
333
  mov bx,di
334
  add bx,410-otst_panel_left
335
  shl ebx,16
336
  mov bx,55
337
  ;mov ebx,410*65536+55
338
  mov ecx,5*65536+25
339
  mov edx,7
340
  int 0x40
341
 
342
  mov bx,di
343
  add bx,440-otst_panel_left
344
  shl ebx,16
345
  mov bx,30
346
  ;mov ebx,440*65536+30
347
  mov ecx,265*65536+25
348
  mov edx,12
349
  int 0x40
350
 
351
  mov bx,di
352
  add bx,405-otst_panel_left
353
  shl ebx,16
354
  mov bx,30
355
  ;mov ebx,405*65536+30
356
  mov ecx,265*65536+25
357
  mov edx,11
358
  int 0x40
359
 
360
  mov bx,di
361
  add bx,370-otst_panel_left
362
  shl ebx,16
363
  mov bx,30
364
  ;mov ebx,370*65536+30
365
  mov ecx,265*65536+25
366
  mov edx,10
367
  int 0x40
368
 
369
  mov eax,4 ;à¨á®¢ ­¨¥ ⥪áâ 
370
  mov ebx,152*65536+13
371
  mov ecx,[sc.work_button_text]
372
  or  ecx,0x80000000
373
  mov edx,txt_zoom_p
374
  mcall
375
 
376
  mov ebx,107*65536+13
377
  mov edx,txt_zoom_m
378
  int 0x40
379
 
380
  mov bx,di
381
  add bx,270-otst_panel_left
382
  shl ebx,16
383
  mov bx,243
384
  ;mov ebx,270*65536+243
385
  mov edx,txt151
386
  int 0x40
387
 
388
  mov bx,di
389
  add bx,270-otst_panel_left
390
  shl ebx,16
391
  mov bx,273
392
  ;mov ebx,270*65536+273
393
  mov edx,txt152
394
  int 0x40
395
 
396
  mov bx,di
397
  add bx,415-otst_panel_left
398
  shl ebx,16
399
  mov bx,13
400
  ;mov ebx,415*65536+13
401
  mov edx,txt_but_refresh
402
  int 0x40
403
 
404
  mov bx,di
405
  add bx,380-otst_panel_left
406
  shl ebx,16
407
  mov bx,275
408
  ;mov ebx,380*65536+275
409
  mov edx,txt_met_up
410
  int 0x40
411
 
412
  mov bx,di
413
  add bx,415-otst_panel_left
414
  shl ebx,16
415
  mov bx,275
416
  ;mov ebx,415*65536+275
417
  mov edx,txt_met_dn
418
  int 0x40
419
 
420
 
421
  mov bx,di
422
  add bx,450-otst_panel_left
423
  shl ebx,16
424
  mov bx,275
425
  ;mov ebx,450*65536+275
426
  mov edx,txt_met_sh
427
  int 0x40
428
 
429
  mov ecx,[sc.work_text]
430
  or  ecx,0x80000000
431
 
432
  mov ebx,175*65536+13
433
  mov edx,txt_cache
434
  int 0x40
435
 
436
  mov bx,di
437
  ;add bx,450-otst_panel_left
438
  shl ebx,16
439
  mov bx,35
440
  ;mov ebx,265*65536+35
441
  mov edx,txt141
442
  int 0x40
443
 
444
  mov bx,135
445
  ;mov ebx,265*65536+135
446
  mov edx,txt142
447
  int 0x40
448
 
449
  call draw_tiles
450
 
451
  push dword ch2
452
  call [check_box_draw]
453
  push dword ch1
454
  call [check_box_draw]
455
 
456
  stdcall [edit_box_draw], edit1
457
  stdcall [edit_box_draw], edit2
458
 
459
  mcall 12,2
460
popad
461
  ret
462
 
463
  head_f_i:
464
  head_f_l  db '‘¨á⥬­ ï ®è¨¡ª ',0
465
  err_message_found_lib0 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã box_lib.obj',0
466
  err_message_import0 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ box_lib.obj',0
467
  err_message_found_lib1 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libimg.obj',0
468
  err_message_import1 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libimg.obj',0
469
  err_message_found_lib2 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã str.obj',0
470
  err_message_import2 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ str.obj',0
471
  err_message_found_lib3 db '¥ 㤠«®áì ­ ©â¨ ¡¨¡«¨®â¥ªã libini.obj',0
472
  err_message_import3 db 'Žè¨¡ª  ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ libini.obj',0
473
 
474
system_dir0 db '/sys/lib/'
475
boxlib_name db 'box_lib.obj',0
476
 
477
system_dir1 db '/sys/lib/'
478
libimg_name db 'libimg.obj',0
479
 
480
system_dir2 db '/sys/lib/'
481
strlib_name db 'str.obj',0
482
 
483
system_dir3 db '/sys/lib/'
484
libini_name db 'libini.obj',0
485
 
486
;library structures
487
l_libs_start:
488
  lib0 l_libs boxlib_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, boxlib_import,err_message_import0, head_f_i
489
  lib1 l_libs libimg_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, libimg_import, err_message_import1, head_f_i
490
  lib2 l_libs strlib_name, sys_path, file_name, system_dir2, err_message_found_lib2, head_f_l, strlib_import, err_message_import2, head_f_i
491
  lib3 l_libs libini_name, sys_path, file_name, system_dir3, err_message_found_lib3, head_f_l, libini_import, err_message_import3, head_f_i
492
load_lib_end:
493
 
494
align 4
495
button:
496
  mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
497
  cmp ah,5
498
  jne @f
499
    call but_ZoomM
500
  @@:
501
  cmp ah,6
502
  jne @f
503
    call but_ZoomP
504
  @@:
505
  cmp ah,7
506
  jne @f
507
    call but_Refresh
508
  @@:
509
 
510
  cmp ah,9
511
  jz  but_MetSave
512
  cmp ah,8
513
  jz  but_MetAdd
514
 
515
  cmp ah,10
516
  jne @f
517
    call but_met_up
518
  @@:
519
  cmp ah,11
520
  jne @f
521
    call but_met_dn
522
  @@:
523
  cmp ah,12
524
  jne @f
525
    call fun_goto_met
526
  @@:
527
  cmp ah,1
528
  jne still
529
 
530
.exit:
531
  push dword[bmp_icon]
532
  call mem.Free
533
  stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy
534
 
535
  stdcall dword[tl_data_clear], tree1
536
  mov dword[tree2.data_img_sys],0 ;÷èñòèì óêàçàòåëü íà ñèñòåìíûå èêîíêè,
537
    ;ò. ê. îíè áûëè óäàëåíû âåðõíåé ôóíêöèåé tl_data_clear
538
    ;ïîâòîðíûé âûçîâ tl_data_clear áåç ÷èñòêè óêàçàòåëÿ âûçâåò îøèáêó
539
  mov dword[tree2.data_img],0 ;÷èñòèì óêàçàòåëü íà èêîíêè óçëîâ
540
  stdcall dword[tl_data_clear], tree2
541
 
542
;  stdcall dword[img_destroy], dword[data_icon]
543
  mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
544
 
545
 
546
;input:
547
;data_rgb - pointer to rgb data
548
;size - count img pixels (size img data / 3(rgb) )
549
align 4
550
proc img_rgb_wdiv2 data_rgb:dword, size:dword
551
  push eax ebx ecx edx
552
  mov eax,dword[data_rgb]
553
  mov ecx,dword[size] ;ecx = size
554
  imul ecx,3
555
  @@: ;çàòåìíåíèå öâåòà ïèêñåëåé
556
    shr byte[eax],1
557
    and byte[eax],0x7f
558
    inc eax
559
    loop @b
560
 
561
  mov eax,dword[data_rgb]
562
  mov ecx,dword[size] ;ecx = size
563
  shr ecx,1
564
  @@: ;ñëîæåíèå öâåòîâ ïèêñåëåé
565
    mov ebx,dword[eax+3] ;êîïèðóåì öâåò ñîñåäíåãî ïèêñåëÿ
566
    add word[eax],bx
567
    shr ebx,16
568
    add byte[eax+2],bl
569
 
570
    add eax,6 ;=2*3
571
    loop @b
572
 
573
  mov eax,dword[data_rgb]
574
  add eax,3
575
  mov ebx,eax
576
  add ebx,3
577
  mov ecx,dword[size] ;ecx = size
578
  shr ecx,1
579
  dec ecx ;ëèøíèé ïèêñåëü
580
  @@: ;ïîäæàòèå ïèêñåëåé
581
    mov edx,dword[ebx]
582
    mov word[eax],dx
583
    shr edx,16
584
    mov byte[eax+2],dl
585
 
586
    add eax,3
587
    add ebx,6
588
    loop @b
589
 
590
  pop edx ecx ebx eax
591
  ret
592
endp
593
 
594
;input:
595
;data_rgb - pointer to rgb data
596
;size - count img pixels (size img data / 3(rgb) )
597
;size_w - width img in pixels
598
align 4
599
proc img_rgb_hdiv2, data_rgb:dword, size:dword, size_w:dword
600
  pushad
601
 
602
  mov eax,dword[data_rgb] ;eax =
603
  mov ecx,dword[size]	  ;ecx = size
604
  imul ecx,3
605
  @@: ;çàòåìíåíèå öâåòà ïèêñåëåé
606
    shr byte[eax],1
607
    and byte[eax],0x7f
608
    inc eax
609
    loop @b
610
 
611
  mov eax,dword[data_rgb] ;eax =
612
  mov edi,dword[size_w]
613
  lea esi,[edi+edi*2] ;esi = width*3(rgb)
614
  mov ebx,esi
615
  add ebx,eax
616
  mov ecx,dword[size]  ;ecx = size
617
  shr ecx,1
618
  xor edi,edi
619
  @@: ;ñëîæåíèå öâåòîâ ïèêñåëåé
620
    mov edx,dword[ebx] ;êîïèðóåì öâåò íèæíåãî ïèêñåëÿ
621
    add word[eax],dx
622
    shr edx,16
623
    add byte[eax+2],dl
624
 
625
    add eax,3
626
    add ebx,3
627
    inc edi
628
    cmp edi,dword[size_w]
629
    jl .old_line
630
      add eax,esi
631
      add ebx,esi
632
      xor edi,edi
633
    .old_line:
634
    loop @b
635
 
636
 
637
  mov eax,dword[data_rgb] ;eax =
638
  add eax,esi ;esi = width*3(rgb)
639
  mov ebx,esi
640
  add ebx,eax
641
  mov ecx,dword[size]  ;ecx = size
642
  shr ecx,1
643
  sub ecx,dword[size_w] ;ëèøíÿÿ ñòðîêà ïèêñåëåé
644
  xor edi,edi
645
  @@: ;ïîäæàòèå ïèêñåëåé
646
    mov edx,dword[ebx] ;êîïèðóåì öâåò íèæíåãî ïèêñåëÿ
647
    mov word[eax],dx
648
    shr edx,16
649
    mov byte[eax+2],dl
650
 
651
    add eax,3
652
    add ebx,3
653
    inc edi
654
    cmp edi,dword[size_w]
655
    jl .old_line_2
656
      add ebx,esi
657
      xor edi,edi
658
    .old_line_2:
659
    loop @b
660
 
661
  popad
662
  ret
663
endp
664
 
665
;input:
666
;data_rgb - pointer to rgb data
667
;size - count img pixels (size img data / 3(rgb) )
668
align 4
669
proc img_rgb_wmul2, data_rgb:dword, size:dword
670
  push eax ebx ecx edx
671
  ;eax - source
672
  ;ebx - destination
673
  mov ecx,dword[size] ;ecx = size
674
  mov eax,ecx
675
  dec eax
676
  lea eax,[eax+eax*2] ;eax = (size-1)*3
677
  mov ebx,eax ;ebx = size*3
678
  add eax,dword[data_rgb] ;eax = pointer + size*3
679
  add ebx,eax ;ebx = pointer + 2*size*3
680
  @@:
681
    mov edx,dword[eax] ;edx = pixel color
682
    mov word[ebx],dx
683
    mov word[ebx+3],dx
684
    shr edx,16
685
    mov byte[ebx+2],dl
686
    mov byte[ebx+3+2],dl
687
    sub eax,3
688
    sub ebx,6
689
    loop @b
690
  pop edx ecx ebx eax
691
  ret
692
endp
693
 
694
;äã­ªæ¨ï ¤«ï à áâ¢ ­¨ï ¨§®¡à ¦¥­¨ï ¯® ¢ëá®â¥ ¢ 2 à § 
695
;¢ 㪠§ â¥«¥ data_rgb ¯ ¬ï⨠¤®«¦­® ¡ëâì ¢ 2 à §  ¡®«ìè¥ ç¥¬ size*3
696
;¨­ ç¥ ¯à¨ à áâ¢ ­¨¨ ¡ã¤¥â ®è¨¡ª , ¢ë室  ­  çã¦ãî ¯ ¬ïâì
697
;input:
698
;data_rgb - pointer to rgb data
699
;size - count img pixels (size img data / 3(rgb) )
700
;size_w - width img in pixels
701
align 4
702
proc img_rgb_hmul2, data_rgb:dword, size:dword, size_w:dword
703
  pushad
704
 
705
  mov esi,dword[size_w]
706
  lea esi,[esi+esi*2] ;esi = width * 3(rgb)
707
  mov eax,dword[size]
708
  lea eax,[eax+eax*2]
709
  mov edi,eax
710
  shl edi,1
711
  add eax,dword[data_rgb] ;eax = pointer to end pixel (old image) + 1
712
  add edi,dword[data_rgb] ;edi = pointer to end pixel (new image) + 1
713
  mov ebx,edi
714
  sub ebx,esi
715
 
716
  .beg_line:
717
  mov ecx,dword[size_w]
718
  @@:
719
    sub eax,3
720
    sub ebx,3
721
    sub edi,3
722
 
723
    mov edx,dword[eax] ;edx = pixel color
724
    mov word[ebx],dx
725
    mov word[edi],dx
726
    shr edx,16
727
    mov byte[ebx+2],dl
728
    mov byte[edi+2],dl
729
 
730
    loop @b
731
 
732
  sub ebx,esi
733
  sub edi,esi
734
 
735
  cmp eax,dword[data_rgb]
736
  jg .beg_line
737
 
738
  popad
739
  ret
740
endp
741
 
742
;input:
743
;data_rgb - pointer to rgb data
744
;size - count img pixels (size img data / 3(rgb) )
745
;size_w - width img in pixels
746
align 4
747
proc img_rgb_hoffs, data_rgb:dword, size:dword, size_w:dword, hoffs:dword
748
  push eax ebx ecx edx esi
749
 
750
  mov esi,dword[size_w]
751
  lea esi,[esi+esi*2] ;esi = width * 3(rgb)
752
  imul esi,dword[hoffs]
753
 
754
  mov eax,dword[size]
755
  lea eax,[eax+eax*2]
756
  add eax,dword[data_rgb] ;eax = pointer to end pixel + 1
757
  sub eax,3
758
  mov ebx,eax
759
  add ebx,esi
760
 
761
  mov ecx,dword[size]
762
  dec ecx
763
  @@:
764
    mov edx,dword[eax] ;edx = pixel color
765
    mov word[ebx],dx
766
    shr edx,16
767
    mov byte[ebx+2],dl
768
 
769
    sub eax,3
770
    sub ebx,3
771
    loop @b
772
  pop esi edx ecx ebx eax
773
  ret
774
endp
775
 
776
 
777
;input:
778
;data_rgb - pointer to rgb data
779
;size_w_old - width img in pixels
780
;size_w_new - new width img in pixels
781
;size_h - height img in pixels
782
align 4
783
proc img_rgb_wcrop, data_rgb:dword, size_w_old:dword, size_w_new:dword, size_h:dword
784
  pushad
785
    mov eax, dword[size_w_old]
786
    lea eax, dword[eax+eax*2] ;eax = width(old) * 3(rgb)
787
    mov ebx, dword[size_w_new]
788
    lea ebx, dword[ebx+ebx*2] ;ebx = width(new) * 3(rgb)
789
    mov edx, dword[size_h]
790
    ;dec edx
791
    mov edi, dword[data_rgb] ;edi - ¯®«ã砥⠤ ­­ë¥
792
    mov esi, edi
793
    add edi, ebx
794
    add esi, eax
795
    cld
796
  @@:
797
    dec edx ;㬥­ìè ¥¬ áç¥â稪 ®áâ ¢è¨åáï áâப ­  1
798
    cmp edx,0
799
    jle @f
800
 
801
    mov ecx, ebx
802
    rep movsb ;¯¥à¥­®á (ª®¯¨à®¢ ­¨¥) áâப¨ ¯¨ªá¥«¥©
803
;stdcall mem_copy,esi,edi,ebx
804
 
805
    add esi,eax ;¯¥à¥å®¤ ­  ­®¢ãî áâà®çªã ¨§®¡à ¦¥­¨ï
806
    sub esi,ebx
807
;add esi,eax
808
;add edi,ebx
809
    jmp @b
810
  @@:
811
 
812
  popad
813
  ret
814
endp
815
 
816
align 4
817
proc mem_copy, source:dword, destination:dword, len:dword
818
  push ecx esi edi
819
    cld
820
    mov esi, dword[source]
821
    mov edi, dword[destination]
822
    mov ecx, dword[len]
823
    rep movsb
824
  pop edi esi ecx
825
  ret
826
endp
827
 
828
align 4
829
proc mem_clear, mem:dword, len:dword
830
  push eax ecx edi
831
    cld
832
    xor al,al
833
    mov edi, dword[mem]
834
    mov ecx, dword[len]
835
    repne stosb
836
  pop edi ecx eax
837
  ret
838
endp
839
 
840
  txt_met_up db 24,0
841
  txt_met_dn db 25,0
842
  txt_met_sh db '*',0
843
  txt_zoom_m db '-',0
844
  txt_zoom_p db '+',0
845
  txt151 db '„®¡ ¢¨âì ¬¥âªã',0
846
  txt152 db '‘®åà ­¨âì ¬¥âª¨',0
847
  txt_but_refresh db 'Ž¡­®¢¨âì',0
848
  txt_cache db 'Cache:',0
849
  txt141 db '‚¨¤ ª àâë',0
850
  txt142 db '‚ë¡®à ¬¥âª¨',0
851
 
852
; check_boxes
853
ch1 check_box 5,  5, 6, 12, 0xffffd0, 0x800000, 0, ch_text1, 12,ch_flag_en
854
ch2 check_box 5, 20, 6, 12, 0xffffd0, 0x800000, 0, ch_text2, 11,ch_flag_en
855
checkboxes_end:
856
 
857
ch_text1 db '¡à âì ᢥàåã'
858
ch_text2 db '¡à âì á­¨§ã'
859
 
860
edit1 edit_box 190, 215,  10, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000, 500, ed_buffer.1, mouse_dd, 0
861
edit2 edit_box 100, 370, 240, 0xd0ffff, 0xff, 0x80ff, 0, 0xa000,  30, ed_buffer.2, mouse_dd, 0
862
editboxes_end:
863
 
864
tree1 tree_list 10,10, tl_list_box_mode+tl_key_no_edit, 16,16,\
865
    0x8080ff,0x0000ff,0xffffff, 265,45,90,85, 0,0,0,\
866
    el_focus, 0,fun_new_map_type
867
tree2 tree_list 32,300, tl_draw_par_line, 16,16,\
868
    0x8080ff,0x0000ff,0xffffff, 265,145,190,85, 0,12,0,\
869
    el_focus, wScrMetki,fun_goto_met
870
 
871
align 4
872
wScrMetki:
873
.x:
874
.size_x     dw 16 ;+0
875
.start_x    dw 0 ;+2
876
.y:
877
.size_y     dw 100 ;+4
878
.start_y    dw 0 ;+6
879
.btn_high   dd 15 ;+8
880
.type	    dd 1  ;+12
881
.max_area   dd 100  ;+16
882
.cur_area   dd 30  ;+20
883
.position   dd 0  ;+24
884
.bckg_col   dd 0xeeeeee ;+28
885
.frnt_col   dd 0xbbddff ;+32
886
.line_col   dd 0  ;+36
887
.redraw     dd 0  ;+40
888
.delta	    dw 0  ;+44
889
.delta2     dw 0  ;+46
890
.run_x:
891
.r_size_x   dw 0  ;+48
892
.r_start_x  dw 0  ;+50
893
.run_y:
894
.r_size_y   dw 0 ;+52
895
.r_start_y  dw 0 ;+54
896
.m_pos	    dd 0 ;+56
897
.m_pos_2    dd 0 ;+60
898
.m_keys     dd 0 ;+64
899
.run_size   dd 0 ;+68
900
.position2  dd 0 ;+72
901
.work_size  dd 0 ;+76
902
.all_redraw dd 0 ;+80
903
.ar_offset  dd 1 ;+84
904
 
905
ed_buffer: ;òåêñò äëÿ edit
906
  .1: rb 502
907
  .2: rb 32
908
 
909
el_focus dd tree1
910
 
911
tree_sys_icon dd 0
912
tree_nod_icon dd 0
913
 
914
bmp_icon   dd 0 ;¯ ¬ïâì ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨ï
915
data_icon  dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
916
 
917
run_file_70 f70
918
 
919
 
920
txt_tile_path db 'tile path',0
921
  rb 300
922
txt_tile_type dd txt_tile_type_0 ;óêàçàòåëü íà âûáðàííûé òèï ôàéëîâ
923
txt_tile_type_0 db 0
924
  rb 10
925
 
926
align 4
927
map: ;êîîðäèíàòû êàðòû
928
  .coord_x dd 0 ;êîîðäèíàòà x
929
  .coord_y dd 0 ;êîîðäèíàòà y
930
  .zoom    db 1 ;ìàñøòàá
931
 
932
align 4
933
tile_00 rb size_tile_struc * max_tiles_count
934
 
935
;ýòîò êîä íå ìîé, îí ïðåîáðàçóåò ÷èñëî â ñòðîêó
936
;input:
937
; eax = value
938
; edi = string buffer
939
;output:
940
; edi =
941
align 4
942
tl_convert_to_str:
943
  pushad
944
    mov dword[edi+1],0;0x20202020
945
    call .str
946
  popad
947
  ret
948
 
949
align 4
950
.str:
951
  mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî
952
    ;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âçîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé
953
  cmp eax,ecx  ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax
954
  jb @f
955
  xor edx,edx  ;î÷èñòèòü edx
956
  div ecx      ;ðàçäåëèòü - îñòàòîê â edx
957
  push edx     ;ïîëîæèòü â ñòåê
958
  ;dec edi             ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè
959
  call .str;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx
960
  pop eax
961
  @@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ))
962
  or al,0x30  ;äàííàÿ êîìàíäà êîðî÷å  ÷åì äâå âûøå
963
  stosb       ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi
964
  ret	      ;âåðíóòüñÿ ÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ
965
 
966
 
967
hed db 'Planet viewer 09.02.10',0 ;¯®¤¯¨áì ®ª­ 
968
 
969
sc system_colors  ;á¨á⥬­ë¥ 梥â 
970
mouse_dd dd 0 ;­ã¦­® ¤«ï Shift-  ¢ editbox
971
  sys_path rb 4096
972
  file_name:
973
    rb 4096
974
i_end:
975
  procinfo process_information
976
  rb 1024
977
stacktop:
978
mem:
979