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