Subversion Repositories Kolibri OS

Rev

Rev 3138 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. use32
  2.         org 0
  3.         db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
  4.         dd 1,start,i_end,mem,stacktop,0,sys_path
  5.  
  6. include '../../../../../macros.inc'
  7. include '../../../../../proc32.inc'
  8. include '../../../../../KOSfuncs.inc'
  9. include '../../../../../load_lib.mac'
  10. include '../../../../../dll.inc'
  11.  
  12. @use_library mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
  13.  
  14. struct FileInfoBlock
  15.         Function dd ?
  16.         Position dd ?
  17.         Flags    dd ?
  18.         Count    dd ?
  19.         Buffer   dd ?
  20.                 db ?
  21.         FileName dd ?
  22. ends
  23.  
  24. IMAGE_FILE1_SIZE equ 200*186*3 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬ 200 x 100
  25.  
  26. BUF_STRUCT_SIZE equ 21
  27. buf2d_data equ dword[edi] ;¤ ­­ë¥ ¡ãä¥à  ¨§®¡à ¦¥­¨ï
  28. buf2d_w equ dword[edi+8] ;è¨à¨­  ¡ãä¥à 
  29. buf2d_h equ dword[edi+12] ;¢ëá®â  ¡ãä¥à 
  30. buf2d_l equ word[edi+4]
  31. buf2d_t equ word[edi+6] ;®âáâ㯠ᢥàåã
  32. buf2d_size_lt equ dword[edi+4] ;®âáâ㯠᫥¢  ¨ á¯à ¢  ¤«ï ¡ãä¥à 
  33. buf2d_color equ dword[edi+16] ;梥â ä®­  ¡ãä¥à 
  34. buf2d_bits equ byte[edi+20] ;ª®«¨ç¥á⢮ ¡¨â ¢ 1-© â®çª¥ ¨§®¡à ¦¥­¨ï
  35. vox_offs_tree_table equ 4
  36.  
  37. macro load_image_file path,buf,size { ;¬ ªà®á ¤«ï § £à㧪¨ ¨§®¡à ¦¥­¨©
  38.         ;path - ¬®¦¥â ¡ëâì ¯¥à¥¬¥­­®© ¨«¨ áâப®¢ë¬ ¯ à ¬¥â஬
  39.         if path eqtype '' ;¯à®¢¥à塞 § ¤ ­ «¨ áâப®© ¯ à ¬¥âà path
  40.                 jmp @f
  41.                         local .path_str
  42.                         .path_str db path ;ä®à¬¨à㥬 «®ª «ì­ãî ¯¥à¥¬¥­­ãî
  43.                         db 0
  44.                 @@:
  45.                 ;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
  46.                 copy_path .path_str,[32],file_name,0
  47.         else
  48.                 copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
  49.         end if
  50.  
  51.         stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
  52.         mov [buf],eax
  53.  
  54.         mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨
  55.         mov [run_file_70.Function], 0
  56.         mov [run_file_70.Position], 0
  57.         mov [run_file_70.Flags], 0
  58.         mov [run_file_70.Count], dword size
  59.         m2m [run_file_70.Buffer], [buf]
  60.         mov byte[run_file_70+20], 0
  61.         mov [run_file_70.FileName], file_name
  62.         mov ebx,run_file_70
  63.         int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
  64.         cmp ebx,0xffffffff
  65.         je @f
  66.                 ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
  67.                 stdcall [img_decode], [buf],ebx,0
  68.                 mov [image_data],eax
  69.                 ;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥­¨¥ ª ä®à¬ âã rgb
  70.                 stdcall [img_to_rgb2], [image_data],[buf]
  71.                 ;㤠«ï¥¬ ¢à¥¬¥­­ë© ¡ãä¥à image_data
  72.                 stdcall [img_destroy], [image_data]
  73.         @@:
  74. }
  75.  
  76. align 4
  77. start:
  78.         load_libraries l_libs_start,load_lib_end
  79.  
  80.         ;¯à®¢¥àª  ­  ᪮«ìª® 㤠筮 § £ã§¨« áì ­ è  «¨¡ 
  81.         mov     ebp,lib0
  82.         cmp     dword [ebp+ll_struc_size-4],0
  83.         jz      @f
  84.                 mcall SF_TERMINATE_PROCESS
  85.         @@:
  86.         mov     ebp,lib1
  87.         cmp     dword [ebp+ll_struc_size-4],0
  88.         jz      @f
  89.                 mcall SF_TERMINATE_PROCESS
  90.         @@:
  91.  
  92.         mcall SF_SET_EVENTS_MASK,0x27
  93.         mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors ;¯®«ãç ¥¬ á¨á⥬­ë¥ 梥â 
  94.  
  95.         load_image_file 'img1.png',image_data_rgb, IMAGE_FILE1_SIZE
  96.         stdcall [buf2d_create_f_img], buf_0,[image_data_rgb] ;ᮧ¤ ¥¬ ¡ãä¥à
  97.         stdcall [buf2d_create_f_img], buf_1,[image_data_rgb] ;ᮧ¤ ¥¬ ¡ãä¥à
  98.         stdcall [buf2d_create_f_img], buf_2,[image_data_rgb] ;ᮧ¤ ¥¬ ¡ãä¥à
  99.         stdcall mem.Free,[image_data_rgb] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì
  100.  
  101.         stdcall [buf2d_filter_dither], buf_1,2
  102.         stdcall [buf2d_filter_dither], buf_2,3
  103.  
  104. align 4
  105. red_win:
  106.         call draw_window
  107.  
  108. align 4
  109. still: ;£« ¢­ë© 横«
  110.         mcall SF_WAIT_EVENT
  111.  
  112.         cmp al,1 ;¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
  113.         jz red_win
  114.         cmp al,2
  115.         jz key
  116.         cmp al,3
  117.         jz button
  118.  
  119.         jmp still
  120.  
  121. align 4
  122. key:
  123.         push eax ebx
  124.         mcall SF_GET_KEY
  125. ;...
  126.         pop ebx eax
  127.         jmp still
  128.  
  129.  
  130. align 4
  131. draw_window:
  132.         pushad
  133.         mcall SF_REDRAW,SSF_BEGIN_DRAW
  134.  
  135.         mov edx,[sc.work]
  136.         or  edx,0x33000000
  137.         mcall SF_CREATE_WINDOW,(20 shl 16)+670,(20 shl 16)+520,,,caption ;ᮧ¤ ­¨¥ ®ª­ 
  138.  
  139.         stdcall [buf2d_draw], buf_0
  140.         stdcall [buf2d_draw], buf_1
  141.         stdcall [buf2d_draw], buf_2
  142.        
  143.         mcall SF_REDRAW,SSF_END_DRAW
  144.         popad
  145.         ret
  146.  
  147. system_dir0 db '/sys/lib/'
  148. name_buf2d db 'buf2d.obj',0
  149.  
  150. system_dir1 db '/sys/lib/'
  151. name_libimg db 'libimg.obj',0
  152.  
  153. ;library structures
  154. l_libs_start:
  155.         lib0 l_libs name_buf2d,  file_name, system_dir0, import_buf2d_lib
  156.         lib1 l_libs name_libimg, file_name, system_dir1, import_libimg
  157. load_lib_end:
  158.  
  159. align 4
  160. button:
  161.         mcall SF_GET_BUTTON
  162.         cmp ah,1
  163.         jne still
  164. .exit:
  165.         stdcall [buf2d_delete],buf_0 ;㤠«ï¥¬ ¡ãä¥à
  166.         stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à
  167.         stdcall [buf2d_delete],buf_2 ;㤠«ï¥¬ ¡ãä¥à
  168.         mcall SF_TERMINATE_PROCESS
  169.  
  170. image_data dd 0 ;¯ ¬ïâì ¤«ï ¯à¥®¡à §®¢ ­¨ï ª à⨭ª¨ äã­ªæ¨ï¬¨ libimg
  171. image_data_gray dd 0 ;¯ ¬ïâì á ¯à¥®¡à §®¢ ­­ë¬ ¨§®¡à ¦¥­¨¥¬ ¢ ä®à¬ â¥ 8-bit
  172. image_data_rgb dd 0 ;¯ ¬ïâì á ¯à¥®¡à §®¢ ­­ë¬ ¨§®¡à ¦¥­¨¥¬ ¢ ä®à¬ â¥ rgb
  173. image_data_foto dd 0
  174.  
  175. run_file_70 FileInfoBlock
  176. caption db 'Draw images 28.11.20',0 ;¯®¤¯¨áì ®ª­ 
  177. sc system_colors  ;á¨á⥬­ë¥ 梥â 
  178.  
  179. align 4
  180. buf_0:
  181.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  182.         dw 5 ;+4 left
  183.         dw 5 ;+6 top
  184.         dd 200 ;+8 w
  185.         dd 186 ;+12 h
  186.         dd 0xffffff ;+16 color
  187.         db 24 ;+20 bit in pixel
  188.  
  189. align 4
  190. buf_1:
  191.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  192.         dw 5 ;+4 left
  193.         dw 200 ;+6 top
  194.         dd 200 ;+8 w
  195.         dd 186 ;+12 h
  196.         dd 0 ;+16 color
  197.         db 24 ;+20 bit in pixel
  198.  
  199. align 4
  200. buf_2:
  201.         dd 0 ;㪠§ â¥«ì ­  ¡ãä¥à ¨§®¡à ¦¥­¨ï
  202.         dw 210 ;+4 left
  203.         dw 200 ;+6 top
  204.         dd 200 ;+8 w
  205.         dd 186 ;+12 h
  206.         dd 0 ;+16 color
  207.         db 24 ;+20 bit in pixel
  208.  
  209. align 4
  210. import_libimg:
  211.         dd alib_init1
  212.         img_is_img  dd aimg_is_img
  213.         img_info    dd aimg_info
  214.         img_from_file dd aimg_from_file
  215.         img_to_file dd aimg_to_file
  216.         img_from_rgb dd aimg_from_rgb
  217.         img_to_rgb  dd aimg_to_rgb
  218.         img_to_rgb2 dd aimg_to_rgb2
  219.         img_decode  dd aimg_decode
  220.         img_encode  dd aimg_encode
  221.         img_create  dd aimg_create
  222.         img_destroy dd aimg_destroy
  223.         img_destroy_layer dd aimg_destroy_layer
  224.         img_count   dd aimg_count
  225.         img_lock_bits dd aimg_lock_bits
  226.         img_unlock_bits dd aimg_unlock_bits
  227.         img_flip    dd aimg_flip
  228.         img_flip_layer dd aimg_flip_layer
  229.         img_rotate  dd aimg_rotate
  230.         img_rotate_layer dd aimg_rotate_layer
  231.         img_draw    dd aimg_draw
  232.  
  233.         dd 0,0
  234.         alib_init1   db 'lib_init',0
  235.         aimg_is_img  db 'img_is_img',0 ;®¯à¥¤¥«ï¥â ¯® ¤ ­­ë¬, ¬®¦¥â «¨ ¡¨¡«¨®â¥ª  ᤥ« âì ¨§ ­¨å ¨§®¡à ¦¥­¨¥
  236.         aimg_info    db 'img_info',0
  237.         aimg_from_file db 'img_from_file',0
  238.         aimg_to_file db 'img_to_file',0
  239.         aimg_from_rgb db 'img_from_rgb',0
  240.         aimg_to_rgb  db 'img_to_rgb',0 ;¯à¥®¡à §®¢ ­¨¥ ¨§®¡à ¦¥­¨ï ¢ ¤ ­­ë¥ RGB
  241.         aimg_to_rgb2 db 'img_to_rgb2',0
  242.         aimg_decode  db 'img_decode',0 ; ¢â®¬ â¨ç¥áª¨ ®¯à¥¤¥«ï¥â ä®à¬ â £à ä¨ç¥áª¨å ¤ ­­ëå
  243.         aimg_encode  db 'img_encode',0
  244.         aimg_create  db 'img_create',0
  245.         aimg_destroy db 'img_destroy',0
  246.         aimg_destroy_layer db 'img_destroy_layer',0
  247.         aimg_count   db 'img_count',0
  248.         aimg_lock_bits db 'img_lock_bits',0
  249.         aimg_unlock_bits db 'img_unlock_bits',0
  250.         aimg_flip    db 'img_flip',0
  251.         aimg_flip_layer db 'img_flip_layer',0
  252.         aimg_rotate  db 'img_rotate',0
  253.         aimg_rotate_layer db 'img_rotate_layer',0
  254.         aimg_draw    db 'img_draw',0
  255.  
  256. align 4
  257. import_buf2d_lib:
  258.         dd sz_lib_init
  259.         buf2d_create dd sz_buf2d_create
  260.         buf2d_create_f_img dd sz_buf2d_create_f_img
  261.         buf2d_clear dd sz_buf2d_clear
  262.         buf2d_draw dd sz_buf2d_draw
  263.         buf2d_delete dd sz_buf2d_delete
  264.         buf2d_filter_dither dd sz_buf2d_filter_dither
  265.         dd 0,0
  266.         sz_lib_init db 'lib_init',0
  267.         sz_buf2d_create db 'buf2d_create',0
  268.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  269.         sz_buf2d_clear db 'buf2d_clear',0
  270.         sz_buf2d_draw db 'buf2d_draw',0
  271.         sz_buf2d_delete db 'buf2d_delete',0
  272.         sz_buf2d_filter_dither db 'buf2d_filter_dither',0
  273.  
  274. align 16
  275. i_end:
  276.         sys_path rb 4096
  277.         file_name:
  278.                 rb 4096
  279.         plugin_path:
  280.                 rb 4096
  281.         openfile_path:
  282.                 rb 4096
  283.         filename_area:
  284.                 rb 256
  285.                 rb 1024
  286. stacktop:
  287. mem:
  288.