Subversion Repositories Kolibri OS

Rev

Rev 3014 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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