Subversion Repositories Kolibri OS

Rev

Rev 1535 | Rev 1555 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1535 Rev 1538
Line 13... Line 13...
13
 
13
 
14
BUF_STRUCT_SIZE equ 21
14
BUF_STRUCT_SIZE equ 21
15
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
15
buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
16
buf2d_w equ dword[edi+8] ;è¨à¨­  ¡ãä¥à 
16
buf2d_w equ dword[edi+8] ;è¨à¨­  ¡ãä¥à 
-
 
17
buf2d_h equ dword[edi+12] ;¢ëá®â  ¡ãä¥à 
17
buf2d_h equ dword[edi+12] ;¢ëá®â  ¡ãä¥à 
18
buf2d_l equ word[edi+4]
18
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
19
buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
19
buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
20
buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
20
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
21
buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
Line 194... Line 195...
194
	.end_clear_32:
195
	.end_clear_32:
195
	popad
196
	popad
196
	ret
197
	ret
197
endp
198
endp
Line -... Line 199...
-
 
199
 
-
 
200
;äã­ªæ¨ï ¤«ï ®¡à¥§ ­¨ï ¡ãä¥à®¢ 8 ¨ 24 ¡¨â­ëå, ¯® § ¤ ­®¬ã 梥âã.
-
 
201
;¯ à ¬¥âà opt § ¤ ¥âáï ª®¬¡¨­ æ¨¥© ª®­áâ ­â:
-
 
202
; BUF2D_OPT_CROP_TOP - ®¡à¥§ª  ᢥàåã
-
 
203
; BUF2D_OPT_CROP_LEFT - ®¡à¥§ª  á«¥¢ 
-
 
204
; BUF2D_OPT_CROP_BOTTOM - ®¡à¥§ª  á­¨§ã
198
 
205
; BUF2D_OPT_CROP_RIGHT - ®¡à¥§ª  á¯à ¢ 
199
align 4
206
align 4
200
proc buf_crop_color, buf_struc:dword, color:dword, opt:dword ;®¡à¥§ª  ¡ãä¥à  ¯® § ¤ ­®¬ã 梥⮬ 梥âã
207
proc buf_crop_color, buf_struc:dword, color:dword, opt:dword
201
locals
208
locals
202
	crop_r dd ?
209
	crop_r dd ?
203
endl
210
endl
204
	pushad
211
	pushad
Line 303... Line 310...
303
		mov esi,ebx
310
		mov esi,ebx
304
		imul esi,buf2d_h
311
		imul esi,buf2d_h
305
		add esi,buf2d_data ;esi - 㪠§ â¥«ì ­  ª®­¥æ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
312
		add esi,buf2d_data ;esi - 㪠§ â¥«ì ­  ª®­¥æ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
306
		mov dword[crop_r],0
313
		mov dword[crop_r],0
307
		cld
314
		cld
308
		.found_beg:
315
		.24found_beg_right:
309
		sub esi,3 ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢«¥¢®
316
		sub esi,3 ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢«¥¢®
310
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
317
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
311
		@@:
318
		@@:
312
			cmp word[esi],ax
319
			cmp word[esi],ax
313
			jne .found
320
			jne .24found_right
314
			cmp byte[esi+2],dl
321
			cmp byte[esi+2],dl
315
			jne .found
322
			jne .24found_right
316
			sub esi,ebx ;¯à룠¥¬ ­  ¢¥àå­îî áâபã
323
			sub esi,ebx ;¯à룠¥¬ ­  ¢¥àå­îî áâபã
317
			loop @b
324
			loop @b
318
		inc dword[crop_r]
325
		inc dword[crop_r]
Line 319... Line 326...
319
 
326
 
320
		mov ecx,buf2d_w
327
		mov ecx,buf2d_w
321
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
328
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
322
		cmp dword[crop_r],ecx
329
		cmp dword[crop_r],ecx
Line 323... Line 330...
323
		jge .found
330
		jge .24found_right
324
 
331
 
325
		sub esi,3 ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢«¥¢®
332
		sub esi,3 ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢«¥¢®
326
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
333
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
327
		@@:
334
		@@:
328
			add esi,ebx ;¯à룠¥¬ ­  ­¨¦­îî áâபã
335
			add esi,ebx ;¯à룠¥¬ ­  ­¨¦­îî áâபã
329
			cmp word[esi],ax
336
			cmp word[esi],ax
330
			jne .found
337
			jne .24found_right
331
			cmp byte[esi+2],dl
338
			cmp byte[esi+2],dl
332
			jne .found
339
			jne .24found_right
Line 333... Line 340...
333
			loop @b
340
			loop @b
334
		inc dword[crop_r]
341
		inc dword[crop_r]
335
 
342
 
336
		mov ecx,buf2d_w
343
		mov ecx,buf2d_w
Line 337... Line 344...
337
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
344
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
338
		cmp dword[crop_r],ecx
345
		cmp dword[crop_r],ecx
339
		jl .found_beg
346
		jl .24found_beg_right
340
 
347
 
341
		.found:
348
		.24found_right:
342
		cmp dword[crop_r],0
349
		cmp dword[crop_r],0
343
		je .24no_crop_right
350
		je .24no_crop_right
344
			mov ecx,buf2d_w
351
			mov ecx,buf2d_w
345
			sub ecx,dword[crop_r]
352
			sub ecx,dword[crop_r]
346
			stdcall img_rgb_wcrop, buf2d_data, buf2d_w, ecx, buf2d_h ;®¡à¥§ ¥¬ ¡ãä¥à, ¯® ­®¢®¬ã à §¬¥àã
353
			stdcall img_rgb_crop_r, buf2d_data, buf2d_w, ecx, buf2d_h ;®¡à¥§ ¥¬ ¡ãä¥à, ¯® ­®¢®¬ã à §¬¥àã
347
			mov buf2d_w,ecx ;áâ ¢¨¬ ­®¢ãî è¨à¨­ã ¤«ï ¡ãä¥à 
354
			mov buf2d_w,ecx ;áâ ¢¨¬ ­®¢ãî è¨à¨­ã ¤«ï ¡ãä¥à 
348
			mov ebx,buf2d_h
355
			mov ebx,buf2d_h
349
			imul ecx,ebx
356
			imul ecx,ebx
Line -... Line 357...
-
 
357
			lea ecx,[ecx+ecx*2]
-
 
358
			invoke mem.realloc,buf2d_data,ecx
-
 
359
			mov buf2d_data,eax ;­  á«ãç © ¥á«¨ ¨§¬¥­¨«áï 㪠§ â¥«ì ­  ¤ ­­ë¥
-
 
360
	.24no_crop_right:
-
 
361
 
-
 
362
	bt dword[opt],BUF2D_BIT_OPT_CROP_LEFT
-
 
363
	jae .24no_crop_left
-
 
364
		mov eax,dword[color]
-
 
365
		mov edx,eax ;ax = colors - r,g
-
 
366
		shr edx,16 ;dl = color - b
-
 
367
		mov ebx,buf2d_w
-
 
368
		lea ebx,[ebx+ebx*2]
-
 
369
		mov esi,buf2d_data ;esi - 㪠§ â¥«ì ­  ­ ç®«® ¡ãä¥à  ¨§®¡à ¦¥­¨ï
-
 
370
		mov dword[crop_r],0
-
 
371
		cld
-
 
372
		.24found_beg_left:
-
 
373
 
-
 
374
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
-
 
375
		@@:
-
 
376
			cmp word[esi],ax
-
 
377
			jne .24found_left
-
 
378
			cmp byte[esi+2],dl
-
 
379
			jne .24found_left
-
 
380
			add esi,ebx ;¯à룠¥¬ ­  ­¨¦­îî áâபã
-
 
381
			loop @b
-
 
382
		inc dword[crop_r]
-
 
383
		add esi,3 ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢¯à ¢®
-
 
384
 
-
 
385
		mov ecx,buf2d_w
-
 
386
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
-
 
387
		cmp dword[crop_r],ecx
-
 
388
		jge .24found_left
-
 
389
 
-
 
390
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
-
 
391
		@@:
-
 
392
			sub esi,ebx ;¯à룠¥¬ ­  ¢¥àå­îî áâபã
-
 
393
			cmp word[esi],ax
-
 
394
			jne .24found_left
-
 
395
			cmp byte[esi+2],dl
-
 
396
			jne .24found_left
-
 
397
			loop @b
-
 
398
		inc dword[crop_r]
-
 
399
		add esi,3 ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢¯à ¢®
-
 
400
 
-
 
401
		mov ecx,buf2d_w
-
 
402
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
-
 
403
		cmp dword[crop_r],ecx
-
 
404
		jl .24found_beg_left
-
 
405
 
-
 
406
		.24found_left:
-
 
407
		cmp dword[crop_r],0
-
 
408
		je .24no_crop_left
-
 
409
			mov ecx,buf2d_w
-
 
410
			sub ecx,dword[crop_r]
-
 
411
			stdcall img_rgb_crop_l, buf2d_data, buf2d_w, ecx, buf2d_h ;®¡à¥§ ¥¬ ¡ãä¥à, ¯® ­®¢®¬ã à §¬¥àã
-
 
412
			mov buf2d_w,ecx ;áâ ¢¨¬ ­®¢ãî è¨à¨­ã ¤«ï ¡ãä¥à 
-
 
413
			mov ebx,buf2d_h
-
 
414
			imul ecx,ebx
-
 
415
			lea ecx,[ecx+ecx*2]
-
 
416
			invoke mem.realloc,buf2d_data,ecx
350
			lea ecx,[ecx+ecx*2]
417
			mov buf2d_data,eax ;­  á«ãç © ¥á«¨ ¨§¬¥­¨«áï 㪠§ â¥«ì ­  ¤ ­­ë¥
Line 351... Line 418...
351
			invoke mem.realloc,buf2d_data,ecx
418
			mov eax,dword[crop_r]
352
			mov buf2d_data,eax ;­  á«ãç © ¥á«¨ ¨§¬¥­¨«áï 㪠§ â¥«ì ­  ¤ ­­ë¥
419
			add buf2d_l,ax
Line 477... Line 544...
477
		.8found:
544
		.8found:
478
		cmp edx,0
545
		cmp edx,0
479
		je .8no_crop_right
546
		je .8no_crop_right
480
			mov ecx,buf2d_w
547
			mov ecx,buf2d_w
481
			sub ecx,edx
548
			sub ecx,edx
482
			stdcall img_gray_wcrop, buf2d_data, buf2d_w, ecx, buf2d_h ;®¡à¥§ ¥¬ ¡ãä¥à, ¯® ­®¢®¬ã à §¬¥àã
549
			stdcall img_gray_crop_r, buf2d_data, buf2d_w, ecx, buf2d_h ;®¡à¥§ ¥¬ ¡ãä¥à, ¯® ­®¢®¬ã à §¬¥àã
483
			mov buf2d_w,ecx ;áâ ¢¨¬ ­®¢ãî è¨à¨­ã ¤«ï ¡ãä¥à 
550
			mov buf2d_w,ecx ;áâ ¢¨¬ ­®¢ãî è¨à¨­ã ¤«ï ¡ãä¥à 
484
			mov ebx,buf2d_h
551
			mov ebx,buf2d_h
485
			imul ecx,ebx
552
			imul ecx,ebx
486
			invoke mem.realloc,buf2d_data,ecx
553
			invoke mem.realloc,buf2d_data,ecx
487
			mov buf2d_data,eax ;­  á«ãç © ¥á«¨ ¨§¬¥­¨«áï 㪠§ â¥«ì ­  ¤ ­­ë¥
554
			mov buf2d_data,eax ;­  á«ãç © ¥á«¨ ¨§¬¥­¨«áï 㪠§ â¥«ì ­  ¤ ­­ë¥
488
	.8no_crop_right:
555
	.8no_crop_right:
Line -... Line 556...
-
 
556
 
-
 
557
	bt dword[opt],BUF2D_BIT_OPT_CROP_LEFT
-
 
558
	jae .8no_crop_left
-
 
559
		mov eax,dword[color]
-
 
560
		mov ebx,buf2d_w
-
 
561
		mov esi,buf2d_data ;esi - 㪠§ â¥«ì ­  ­ ç®«® ¡ãä¥à  ¨§®¡à ¦¥­¨ï
-
 
562
		mov edx,0
-
 
563
		cld
-
 
564
		.8found_beg_left:
-
 
565
 
-
 
566
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
-
 
567
		@@:
-
 
568
			cmp word[esi],ax
-
 
569
			jne .8found_left
-
 
570
			add esi,ebx ;¯à룠¥¬ ­  ­¨¦­îî áâபã
-
 
571
			loop @b
-
 
572
		inc edx
-
 
573
		inc esi ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢¯à ¢®
-
 
574
 
-
 
575
		mov ecx,buf2d_w
-
 
576
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
-
 
577
		cmp edx,ecx
-
 
578
		jge .8found_left
-
 
579
 
-
 
580
		mov ecx,buf2d_h ;¢®ááâ ­®¢«¥­¨¥ ecx ¤«ï ­®¢®£® 横« 
-
 
581
		@@:
-
 
582
			sub esi,ebx ;¯à룠¥¬ ­  ¢¥àå­îî áâபã
-
 
583
			cmp word[esi],ax
-
 
584
			jne .8found_left
-
 
585
			loop @b
-
 
586
		inc edx
-
 
587
		inc esi ;¤¢¨£ ¥¬áï ­  1-­ã ª®«®­ªã ¢¯à ¢®
-
 
588
 
-
 
589
		mov ecx,buf2d_w
-
 
590
		dec ecx ;1 ª®«®­ª  ­  § ¯ á
-
 
591
		cmp edx,ecx
-
 
592
		jl .8found_beg_left
-
 
593
 
-
 
594
		.8found_left:
-
 
595
		cmp edx,0
-
 
596
		je .8no_crop_left
-
 
597
			mov ecx,buf2d_w
-
 
598
			sub ecx,edx
-
 
599
			stdcall img_gray_crop_l, buf2d_data, buf2d_w, ecx, buf2d_h ;®¡à¥§ ¥¬ ¡ãä¥à, ¯® ­®¢®¬ã à §¬¥àã
-
 
600
			mov buf2d_w,ecx ;áâ ¢¨¬ ­®¢ãî è¨à¨­ã ¤«ï ¡ãä¥à 
-
 
601
			mov ebx,buf2d_h
-
 
602
			imul ecx,ebx
-
 
603
			invoke mem.realloc,buf2d_data,ecx
-
 
604
			mov buf2d_data,eax ;­  á«ãç © ¥á«¨ ¨§¬¥­¨«áï 㪠§ â¥«ì ­  ¤ ­­ë¥
-
 
605
			mov eax,edx
-
 
606
			add buf2d_l,ax
-
 
607
	.8no_crop_left:
489
 
608
 
Line 490... Line 609...
490
	.8end_f:
609
	.8end_f:
491
 
610
 
492
	popad
611
	popad
Line -... Line 612...
-
 
612
	ret
493
	ret
613
endp
494
endp
614
 
495
 
615
;®¡à¥§ ¥¬ 梥⭮¥ ¨§®¡à ¦¥­¨¥ á ¯à ¢®© áâ®à®­ë
496
;input:
616
;input:
497
;data_rgb - pointer to rgb data
617
;data_rgb - pointer to rgb data
498
;size_w_old - width img in pixels
618
;size_w_old - width img in pixels
499
;size_w_new - new width img in pixels
619
;size_w_new - new width img in pixels
500
;size_h - height img in pixels
620
;size_h - height img in pixels
501
align 4
621
align 4
502
proc img_rgb_wcrop, data_rgb:dword, size_w_old:dword, size_w_new:dword, size_h:dword
622
proc img_rgb_crop_r, data_rgb:dword, size_w_old:dword, size_w_new:dword, size_h:dword
503
	pushad
623
	pushad
504
	mov eax, dword[size_w_old]
624
	mov eax, dword[size_w_old]
Line 523... Line 643...
523
	@@:
643
	@@:
524
	popad
644
	popad
525
	ret
645
	ret
526
endp
646
endp
Line -... Line 647...
-
 
647
 
527
 
648
;®¡à¥§ ¥¬ á¥à®¥ ¨§®¡à ¦¥­¨¥ á ¯à ¢®© áâ®à®­ë
528
;input:
649
;input:
529
;data_gray - pointer to gray data
650
;data_gray - pointer to gray data
530
;size_w_old - width img in pixels
651
;size_w_old - width img in pixels
531
;size_w_new - new width img in pixels
652
;size_w_new - new width img in pixels
532
;size_h - height img in pixels
653
;size_h - height img in pixels
533
align 4
654
align 4
534
proc img_gray_wcrop, data_gray:dword, size_w_old:dword, size_w_new:dword, size_h:dword
655
proc img_gray_crop_r, data_gray:dword, size_w_old:dword, size_w_new:dword, size_h:dword
535
	pushad
656
	pushad
536
	mov eax, dword[size_w_old]
657
	mov eax, dword[size_w_old]
537
	mov ebx, dword[size_w_new]
658
	mov ebx, dword[size_w_new]
538
	mov edx, dword[size_h]
659
	mov edx, dword[size_h]
Line 553... Line 674...
553
	@@:
674
	@@:
554
	popad
675
	popad
555
	ret
676
	ret
556
endp
677
endp
Line -... Line 678...
-
 
678
 
-
 
679
;®¡à¥§ ¥¬ 梥⭮¥ ¨§®¡à ¦¥­¨¥ á «¥¢®© áâ®à®­ë
-
 
680
;input:
-
 
681
;data_rgb - pointer to rgb data
-
 
682
;size_w_old - width img in pixels
-
 
683
;size_w_new - new width img in pixels
-
 
684
;size_h - height img in pixels
-
 
685
align 4
-
 
686
proc img_rgb_crop_l, data_rgb:dword, size_w_old:dword, size_w_new:dword, size_h:dword
-
 
687
	pushad
-
 
688
	mov edi,dword[data_rgb]
-
 
689
	mov esi,edi
-
 
690
	mov eax,dword[size_w_old]
-
 
691
	mov ebx,dword[size_w_new]
-
 
692
	cmp eax,ebx
-
 
693
	jle .end_f ;áâ àë© à §¬¥à ¨§®¡à ¦¥­¨ï ­¥ ¬®¦¥â ¡ëâì ¬¥­ìè¥ ­®¢®£® (¯à¨ ãá«®¢¨¨ ®¡à¥§ ­¨ï ª à⨭ª¨)
-
 
694
		lea eax,[eax+eax*2]
-
 
695
		lea ebx,[ebx+ebx*2]
-
 
696
		sub eax,ebx
-
 
697
		mov edx,dword[size_h] ;¢ëá®â  ¨§®¡à ¦¥­¨ï
-
 
698
		cld
-
 
699
		@@:
-
 
700
			add esi,eax
-
 
701
			mov ecx,ebx
-
 
702
			rep movsb
-
 
703
			dec edx
-
 
704
			cmp edx,0
-
 
705
			jg @b
-
 
706
	.end_f:
-
 
707
	popad
-
 
708
	ret
-
 
709
endp
-
 
710
 
-
 
711
;®¡à¥§ ¥¬ á¥à®¥ ¨§®¡à ¦¥­¨¥ á «¥¢®© áâ®à®­ë
-
 
712
;input:
-
 
713
;data_gray - pointer to gray data
-
 
714
;size_w_old - width img in pixels
-
 
715
;size_w_new - new width img in pixels
-
 
716
;size_h - height img in pixels
-
 
717
align 4
-
 
718
proc img_gray_crop_l, data_gray:dword, size_w_old:dword, size_w_new:dword, size_h:dword
-
 
719
	pushad
-
 
720
	mov edi,dword[data_gray]
-
 
721
	mov esi,edi
-
 
722
	mov eax,dword[size_w_old]
-
 
723
	mov ebx,dword[size_w_new]
-
 
724
	cmp eax,ebx
-
 
725
	jle .end_f ;áâ àë© à §¬¥à ¨§®¡à ¦¥­¨ï ­¥ ¬®¦¥â ¡ëâì ¬¥­ìè¥ ­®¢®£® (¯à¨ ãá«®¢¨¨ ®¡à¥§ ­¨ï ª à⨭ª¨)
-
 
726
		sub eax,ebx
-
 
727
		mov edx,dword[size_h] ;¢ëá®â  ¨§®¡à ¦¥­¨ï
-
 
728
		cld
-
 
729
		@@:
-
 
730
			add esi,eax
-
 
731
			mov ecx,ebx
-
 
732
			rep movsb
-
 
733
			dec edx
-
 
734
			cmp edx,0
-
 
735
			jg @b
-
 
736
	.end_f:
-
 
737
	popad
-
 
738
	ret
-
 
739
endp
557
 
740
 
558
;hoffs - ª®««¨ç¥á⢮ ¯¨ªá¥«¥© ­  ª®âàë¥ ¯®¤­¨¬ ¥âáï/®¯ã᪠¥âáï ¨§®¡à ¦¥­¨¥
741
;hoffs - ª®««¨ç¥á⢮ ¯¨ªá¥«¥© ­  ª®âàë¥ ¯®¤­¨¬ ¥âáï/®¯ã᪠¥âáï ¨§®¡à ¦¥­¨¥
559
;img_t - ¢ëá®â , á ª®â®à®© ­ ç¨­ ¥âáï ¤¢¨£ îé ïáï ç áâì ¨§®¡à ¦¥­¨ï
742
;img_t - ¢ëá®â , á ª®â®à®© ­ ç¨­ ¥âáï ¤¢¨£ îé ïáï ç áâì ¨§®¡à ¦¥­¨ï
560
align 4
743
align 4
561
proc buf_offset_h, buf_struc:dword, hoffs:dword, img_t:dword, img_h:dword ;ᤢ¨£ ¥â ¨§®¡à ¦¥­¨¥ ¯® ¢ëá®â¥
744
proc buf_offset_h, buf_struc:dword, hoffs:dword, img_t:dword, img_h:dword ;ᤢ¨£ ¥â ¨§®¡à ¦¥­¨¥ ¯® ¢ëá®â¥