Subversion Repositories Kolibri OS

Rev

Rev 551 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ;
  2. ;    UNIFORM WINDOW COLOURS & SKIN
  3. ;
  4. ;    Compile with FASM for Menuet
  5. ;
  6. ;    < russian edition by Ivan Poddubny >
  7. ;    < skin selection by Mike Semenyako >
  8. ;
  9. ; last update:  10/09/2010
  10. ; written by:   Marat Zakiyanov aka Mario79, aka Mario
  11. ; changes:      select path with OpenDialog
  12. ;******************************************************************************
  13.    use32
  14.    org     0
  15.    db      'MENUET01'  ; identifier
  16.    dd      1           ; header version
  17.    dd      START       ; start address
  18.    dd      I_END       ; file size
  19.    dd      i_end ;28000h      ; memory
  20.    dd      stacktop    ; stack pointer
  21.    dd      skin_info       ; parameters
  22.    dd      cur_dir_path ; path to file
  23.    
  24. include 'lang.inc'
  25. include '../../../macros.inc'
  26. include 'kglobals.inc'
  27. include 'unpacker.inc'
  28. include '../../../develop/libraries/box_lib/load_lib.mac'
  29.         @use_library
  30. ;******************************************************************************
  31.  
  32.  
  33. struct SKIN_HEADER
  34.   ident   dd ?
  35.   version dd ?
  36.   params  dd ?
  37.   buttons dd ?
  38.   bitmaps dd ?
  39. ends
  40.  
  41. struct SKIN_PARAMS
  42.   skin_height    dd ?
  43.   margin.right   dw ?
  44.   margin.left    dw ?
  45.   margin.bottom  dw ?
  46.   margin.top     dw ?
  47.   colors.inner   dd ?
  48.   colors.outer   dd ?
  49.   colors.frame   dd ?
  50.   colors_1.inner dd ?
  51.   colors_1.outer dd ?
  52.   colors_1.frame dd ?
  53.   dtp.size       dd ?
  54.   dtp.data       db 40 dup (?)
  55. ends
  56.  
  57. struct SKIN_BUTTONS
  58.   type     dd ?
  59.   pos:
  60.     left   dw ?
  61.     top    dw ?
  62.   size:
  63.     width  dw ?
  64.     height dw ?
  65. ends
  66.  
  67. struct SKIN_BITMAPS
  68.   kind  dw ?
  69.   type  dw ?
  70.   _data  dd ?
  71. ends
  72.  
  73.  
  74. START:                          ; start of execution
  75. ;---------------------------------------------------------------------
  76.         mcall   68,11
  77.        
  78.         test    eax,eax
  79.         jz      close  
  80.  
  81. load_libraries l_libs_start,end_l_libs
  82.  
  83. ;if return code =-1 then exit, else nornary work
  84. ;        cmp     eax,-1
  85.         inc     eax
  86.         test    eax,eax
  87.         jz      close
  88.  
  89. ;---------------------------------------------------------------------
  90.         mov     edi,filename_area
  91.         mov     esi,start_temp_file_name
  92.         xor     eax,eax
  93.         cld
  94. @@:
  95.         lodsb
  96.         stosb
  97.         test    eax,eax
  98.         jnz     @b
  99.  
  100.  
  101.         mov     edi,fname
  102.         mov     esi,default_dtp
  103.         xor     eax,eax
  104.         cld
  105. @@:
  106.         lodsb
  107.         stosb
  108.         test    eax,eax
  109.         jnz     @b
  110.  
  111. ;---------------------------------------------------------------------
  112. ;        mov     esi, param
  113. ;        cmp     byte [esi], 0
  114. ;               je      @f
  115. ;        jnz     has_param
  116. ;    mov  esi,default_skn
  117. ;    mov  edi,fname
  118. ;    mov  ecx,default_skn.size
  119. ;    rep  movsb
  120. ;    jmp  skin_path_ready
  121. ;has_param:
  122. ;        mov     ecx, 256/4
  123. ;        mov     edi, fname
  124. ;        rep     movsd
  125. ;               skin_path_ready
  126. ;---------------------------------------------------------------------
  127.         mov     edi,skin_info
  128.         cmp     byte [edi], 0
  129.         jne     skin_path_ready
  130.         mov     esi,default_skin
  131.         xor     eax,eax
  132.         cld
  133. @@:
  134.         lodsb
  135.         stosb
  136.         test    eax,eax
  137.         jnz     @b
  138. skin_path_ready:       
  139. ;---------------------------------------------------------------------
  140. ;OpenDialog     initialisation
  141.         push    dword OpenDialog_data
  142.         call    [OpenDialog_Init]
  143.  
  144.         push    dword OpenDialog_data2
  145.         call    [OpenDialog_Init]
  146.        
  147. ; prepare for PathShow
  148.         push    dword PathShow_data_1
  149.         call    [PathShow_prepare]
  150.        
  151.         push    dword PathShow_data_2
  152.         call    [PathShow_prepare]
  153. ;--------------------------------------------------------------------- 
  154.     mov  eax,48                 ; get current colors
  155.     mov  ebx,3
  156.     mov  ecx,color_table
  157.     mov  edx,4*10
  158.     mcall
  159.  
  160.     call load_skin_file.2
  161.  
  162. ;    mov  esi, default_dtp
  163. ;    mov  edi, fname
  164. ;    mov  ecx, default_dtp.size
  165. ;    rep  movsb
  166.  
  167. red:
  168.     call draw_window            ; at first, draw the window
  169.  
  170. still:
  171.  
  172.     mov  eax,23                 ; wait here for event
  173.     mov  ebx,5
  174.     mcall
  175.  
  176.     dec  eax                    ; redraw request ?
  177.     jz   red
  178.     dec  eax                    ; key in buffer ?
  179.     jz   key
  180.     dec  eax                    ; button in buffer ?
  181.     jz   button
  182.  
  183.     call draw_cursor
  184.  
  185.     jmp  still
  186.  
  187.  
  188.   key:                          ; key
  189.     mov  al,2                   ; just read it and ignore
  190.     mcall
  191.     jmp  still
  192.  
  193.   button:                       ; button
  194.     mov  al,17                  ; get id
  195.     mcall
  196.  
  197. ;    cmp  ah,11                  ; read string
  198. ;    jne  no_string
  199. ;    call read_string
  200. ;    jmp  still
  201. ;  no_string:
  202.  
  203.     cmp  ah,12                  ; load file
  204.     jne  no_load
  205.     call load_file
  206.     call draw_window
  207.     jmp  still
  208.   no_load:
  209.  
  210.     cmp  ah,13                  ; save file
  211.     jne  no_save
  212.     call save_file
  213.     jmp  still
  214.   no_save:
  215.  
  216.     cmp  ah,14                  ; set 3d buttons
  217.     jne  no_3d
  218.     mov  eax,48
  219.     mov  ebx,1
  220.     mov  ecx,1
  221.     mcall
  222.     jmp  doapply
  223.    no_3d:
  224.  
  225.     cmp  ah,15                  ; set flat buttons
  226.     jne  no_flat
  227.     mcall 48, 1, 0
  228. doapply:
  229.     mcall 48, 0, 0
  230.     jmp  still
  231.   no_flat:
  232.  
  233.     cmp  ah,16                  ; apply
  234.     jne  no_apply
  235.   apply_direct:
  236.     mov  eax,48
  237.     mov  ebx,2
  238.     mov  ecx,color_table
  239.     mov  edx,10*4
  240.     mcall
  241.     jmp  doapply
  242.   no_apply:
  243.  
  244.     cmp  ah,17                  ; load skin file
  245.     jne  no_load_skin
  246.     call load_skin_file
  247.     call draw_window
  248.     jmp  still
  249.   no_load_skin:
  250.  
  251.     cmp   ah,18                 ; apply skin
  252.     jne   no_apply_skin
  253.     cmp   [skin_info],0
  254.     je    no_apply_skin
  255.     mcall 48,8,skin_info
  256.     call  draw_window
  257.     jmp   still
  258.   no_apply_skin:
  259.  
  260.     cmp  ah,31
  261.     jb   no_new_colour
  262.     cmp  ah,41
  263.     jg   no_new_colour
  264.     shr  eax,8
  265.     sub  eax,31
  266.     shl  eax,2
  267.     mov  ebx,[color]
  268.     mov  [eax+color_table],ebx
  269.     cmp  dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
  270.     jne  @f
  271.     mov  edi,[not_packed_area+SKIN_HEADER.params]
  272.     mov  dword[edi+not_packed_area+SKIN_PARAMS.dtp.data+eax],ebx
  273.     call draw_skin
  274. @@: call draw_colours
  275.     jmp  still
  276.   no_new_colour:
  277.  
  278.     cmp  ah,1                   ; terminate
  279.     jnz  noid1
  280. close:
  281.     or   eax,-1
  282.     mcall
  283.   noid1:
  284.  
  285.     jmp  still
  286.  
  287.  
  288. draw_cursor:
  289.  
  290.     pusha
  291.     mov  eax,37
  292.     mov  ebx,2
  293.     mcall
  294.  
  295.     cmp  eax,0
  296.     jne  dc1
  297.     popa
  298.     ret
  299.  
  300.  dc1:
  301.  
  302.     mov  eax,37
  303.     mov  ebx,1
  304.     mcall
  305.  
  306.     mov  ebx,eax
  307.     shr  ebx,16
  308.     mov  ecx,eax
  309.     and  ecx,0xffff
  310.  
  311.     cmp  ecx,32
  312.     jbe  no_color
  313.     cmp  ebx,32
  314.     jbe  no_color
  315.  
  316.     cmp  ebx,266           ; CHANGE COLOR
  317.     jb   no_color
  318.     cmp  ebx,266+20*3
  319.     jg   no_color
  320.  
  321.     cmp  ecx,30+128
  322.     jge  no_color
  323.     cmp  ecx,30
  324.     jb   no_color
  325.  
  326.     sub  ebx,266
  327.     mov  eax,ebx
  328.     cdq
  329.     mov  ebx,20
  330.     div  ebx
  331.     mov  ebx,2
  332.     sub  ebx,eax
  333.  
  334.     add  ecx,-30
  335.     not  ecx
  336.     shl  ecx,1
  337.  
  338.     mov  byte [ebx+color],cl
  339.     call draw_color
  340.  
  341.     popa
  342.     ret
  343.  
  344.   no_color:
  345.  
  346.     popa
  347.     ret
  348.  
  349. ;---------------------------------------------------------------------
  350. load_file:
  351. ;---------------------------------------------------------------------
  352. ; invoke OpenDialog
  353.         mov     [OpenDialog_data.type],dword 0
  354.         push    dword OpenDialog_data
  355.         call    [OpenDialog_Start]
  356.         cmp     [OpenDialog_data.status],1
  357.         je      .1
  358.         ret
  359. .1:
  360. ; prepare for PathShow
  361.         push    dword PathShow_data_1
  362.         call    [PathShow_prepare]
  363.  
  364.         call    draw_PathShow
  365. ;---------------------------------------------------------------------
  366.         xor     eax, eax
  367.         mov     ebx, read_info
  368.         mov     dword [ebx], eax       ; subfunction: read
  369.         mov     dword [ebx+4], eax     ; offset (low dword)
  370.         mov     dword [ebx+8], eax     ; offset (high dword)
  371.         mov     dword [ebx+12], 40     ; read colors file: 4*10 bytes
  372.         mov     dword [ebx+16], color_table ; address
  373.         mcall   70
  374.         ret
  375. ;---------------------------------------------------------------------
  376. load_skin_file:
  377. ;---------------------------------------------------------------------
  378. ; invoke OpenDialog
  379.         push    dword OpenDialog_data2
  380.         call    [OpenDialog_Start]
  381.         cmp     [OpenDialog_data2.status],1
  382.         je      .1
  383.         ret
  384. .1:
  385. ; prepare for PathShow
  386.         push    dword PathShow_data_2
  387.         call    [PathShow_prepare]
  388.  
  389.         call    draw_PathShow
  390. ;---------------------------------------------------------------------
  391. .2:
  392.         xor     eax, eax
  393.         mov     ebx, read_info2
  394.         mov     dword [ebx], eax       ; subfunction: read
  395.         mov     dword [ebx+4], eax     ; offset (low dword)
  396.         mov     dword [ebx+8], eax     ; offset (high dword)
  397.         mov     dword [ebx+12], 32*1024 ; read: max 32 KBytes
  398.         mov     dword [ebx+16], file_load_area ; address
  399.         mcall   70
  400.  
  401.         mov     esi, file_load_area
  402.  
  403.         cmp     dword [esi], 'KPCK'
  404.         jnz     notpacked
  405.         cmp     dword [esi+4], 32*1024 ; max 32 KBytes
  406.         ja      doret
  407.         push    unpack_area
  408.         push    esi
  409.         call    unpack
  410.         mov     esi, unpack_area
  411. notpacked:
  412.  
  413.     cmp   dword[esi+SKIN_HEADER.ident],'SKIN'
  414.     jne   doret
  415.  
  416.     mov   edi,not_packed_area
  417.     mov   ecx,0x8000/4
  418.     rep   movsd
  419.  
  420. ;    mov   esi,fname
  421. ;    mov   edi,skin_info.fname
  422. ;    mov   ecx,257
  423. ;    rep   movsb
  424.  
  425.     mov   ebp,not_packed_area
  426.     mov   esi,[ebp+SKIN_HEADER.params]
  427.     add   esi,ebp
  428.     lea   esi,[esi+SKIN_PARAMS.dtp.data]
  429.     mov   edi,color_table
  430.     mov   ecx,10
  431.     rep   movsd
  432.   doret:
  433.  
  434. ret
  435.  
  436. ;---------------------------------------------------------------------
  437. save_file:
  438. ;---------------------------------------------------------------------
  439. ; invoke OpenDialog
  440.         mov     [OpenDialog_data.type],dword 1
  441.         push    dword OpenDialog_data
  442.         call    [OpenDialog_Start]
  443.         cmp     [OpenDialog_data.status],1
  444.         je      .1
  445.         ret
  446. .1:
  447. ; prepare for PathShow
  448.         push    dword PathShow_data_1
  449.         call    [PathShow_prepare]
  450.  
  451.         call    draw_PathShow
  452. ;---------------------------------------------------------------------
  453.         mov     ebx, write_info
  454.         mov     dword [ebx], 2         ; subfunction: write
  455.         and     dword [ebx+4], 0       ; (reserved)
  456.         and     dword [ebx+8], 0       ; (reserved)
  457.         mov     dword [ebx+12], 10*4   ; bytes to write
  458.         mov     dword [ebx+16], color_table ; address
  459.         mcall   70
  460.         ret
  461. ;---------------------------------------------------------------------
  462. ;read_string:
  463. ;
  464. ;    pusha
  465. ;
  466. ;    mov  edi,fname
  467. ;    mov  al,'_'
  468. ;    mov  ecx,87
  469. ;    cld
  470. ;    rep  stosb
  471. ;
  472. ;    call print_text
  473. ;
  474. ;    mov  edi,fname
  475. ;
  476. ;  f11:
  477. ;    mov  eax,10
  478. ;    mcall
  479. ;    cmp  eax,2
  480. ;    jne  read_done
  481. ;;    mov  eax,2
  482. ;    mcall
  483. ;    shr  eax,8
  484. ;    cmp  eax,13
  485. ;    je   read_done
  486. ;    cmp  eax,8
  487. ;    jne  nobsl
  488. ;    cmp  edi,fname
  489. ;    je   f11
  490. ;    dec  edi
  491. ;    mov  [edi],byte '_'
  492. ;    call print_text
  493. ;    jmp  f11
  494. ;   nobsl:
  495. ;    mov  [edi],al
  496. ;
  497. ;    call print_text
  498. ;
  499. ;    inc  edi
  500. ;    cmp  edi, fname+87
  501. ;    jne  f11
  502. ;
  503. ;  read_done:
  504. ;
  505. ;    mov  ecx, fname+88
  506. ;    sub  ecx, edi
  507. ;    mov  eax, 0
  508. ;    cld
  509. ;    rep  stosb
  510. ;
  511. ;    call print_text
  512. ;
  513. ;    popa
  514. ;
  515. ;    ret
  516.  
  517.  
  518. ;print_text:
  519. ;    pushad
  520. ;
  521. ;    mpack ebx,15,6*87+4
  522. ;    mpack ecx,(30+18*10+2),11
  523. ;    mcall 13,,,[w_work]
  524. ;
  525. ;    mpack ebx,17,(30+18*10+4)
  526. ;    mcall 4,,[w_work_text],fname,87
  527. ;
  528. ;    popad
  529. ;ret
  530.  
  531.  
  532. draw_color:
  533.  
  534.     pusha
  535.  
  536.     mov  eax,13
  537.     mov  ebx,266*65536+60
  538.     mov  ecx,170*65536+30
  539.     mov  edx,[color]
  540.     mcall
  541.  
  542. ;   mov  eax,13
  543.     mov  ebx,266*65536+60
  544.     mov  ecx,200*65536+10
  545.     mov  edx,[w_work]
  546.     mcall
  547.  
  548.     mov  eax,47
  549.     mov  ebx,0+1*256+8*65536
  550.     mov  ecx,[color]
  551.     mov  edx,272*65536+201
  552.     mov  esi,[w_work_text]
  553.     mcall
  554.  
  555.     popa
  556.  
  557.     ret
  558.  
  559.  
  560. draw_colours:
  561.  
  562.     pusha
  563.  
  564.     mov  esi,color_table
  565.  
  566.     mov  ebx,225*65536+32
  567.     mov  ecx,32*65536+12
  568.   newcol:
  569.     mov  eax,13
  570.     mov  edx,[esi]
  571.     mcall
  572.     add  ecx,18*65536
  573.     add  esi,4
  574.     cmp  esi,color_table+4*9
  575.     jbe  newcol
  576.  
  577.     popa
  578.  
  579.     ret
  580.  
  581.  
  582. draw_framerect: ; ebx,ecx
  583.         push    ebx ecx
  584.         add     bx,[esp+6]
  585.         mov     cx,[esp+2]
  586.         dec     ebx
  587.         mcall   38
  588.         add     cx,[esp]
  589.         rol     ecx,16
  590.         add     cx,[esp]
  591.         sub     ecx,0x00010001
  592.         mcall
  593.         mov     ebx,[esp+4]
  594.         mov     ecx,[esp]
  595.         mov     bx,[esp+6]
  596.         add     cx,[esp+2]
  597.         dec     ecx
  598.         mcall
  599.         add     bx,[esp+4]
  600.         rol     ebx,16
  601.         add     bx,[esp+4]
  602.         sub     ebx,0x00010001
  603.         mcall
  604.         add     esp,8
  605.         ret
  606.  
  607. find_bitmap:
  608.         mov     edi,[ebp+SKIN_HEADER.bitmaps]
  609.         add     edi,ebp
  610.         xor     ebx,ebx
  611.   .lp1: cmp     dword[edi],0
  612.         je      .lp2
  613.         cmp     dword[edi+0],eax
  614.         jne     @f
  615.         mov     ebx,[edi+SKIN_BITMAPS._data]
  616.         add     ebx,ebp
  617.         mov     ecx,[ebx-2]
  618.         mov     cx,[ebx+4]
  619.         add     ebx,8
  620.   .lp2: ret
  621.     @@: add     edi,8
  622.         jmp     .lp1
  623.  
  624. dec_edx:
  625.         sub     dl,4
  626.         jnc     @f
  627.         xor     dl,dl
  628.     @@: sub     dh,4
  629.         jnc     @f
  630.         xor     dh,dh
  631.     @@: rol     edx,16
  632.         sub     dl,4
  633.         jnc     @f
  634.         xor     dl,dl
  635.     @@: rol     edx,16
  636.         ret
  637.  
  638. area:
  639.   .x      = 345
  640.   .y      = 20
  641.   .width  = 206
  642.   .height = 191
  643.  
  644. wnd1:
  645.   .x      = area.x+49
  646.   .y      = area.y+5
  647.   .width  = 150
  648.   .height = 90
  649. wnd2:
  650.   .x      = area.x+35
  651.   .y      = area.y+35
  652.   .width  = 150
  653.   .height = 90
  654. wnd3:
  655.   .x      = area.x+21
  656.   .y      = area.y+65
  657.   .width  = 150
  658.   .height = 90
  659. wnd4:
  660.   .x      = area.x+7
  661.   .y      = area.y+95
  662.   .width  = 150
  663.   .height = 90
  664.  
  665. virtual at edi+SKIN_PARAMS.dtp.data
  666.   dtp system_colors
  667. end virtual
  668.  
  669. draw_skin:
  670.         mcall   13,<area.x,area.width>,<area.y+2,area.height-2>,0x00FFFFFF
  671.  
  672.         mov     ebp,not_packed_area
  673.         mov     edi,[ebp+SKIN_HEADER.params]
  674.         add     edi,ebp
  675.         mpack   ebx,wnd1.x,wnd1.width
  676.         mpack   ecx,wnd1.y,wnd1.height
  677.         mov     edx,[dtp.frame]
  678.         call    draw_framerect
  679.         mcall   13,<wnd1.x+1,wnd1.width-2>,<wnd1.y+1,wnd1.height-2>,dword[dtp.work]
  680.  
  681.         mov     eax,38
  682.         mpack   ebx,wnd1.x+1,wnd1.x+wnd1.width-2
  683.         mpack   ecx,wnd1.y+1,wnd1.y+1
  684.         mov     edx,[dtp.grab]
  685.         mov     esi,20
  686.     @@: mcall
  687.         call    dec_edx
  688.         add     ecx,0x00010001
  689.         dec     esi
  690.         jnz     @b
  691.  
  692.         mov     edi,[ebp+SKIN_HEADER.params]
  693.         add     edi,ebp
  694.         mcall   4,<wnd1.x+6,wnd1.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
  695.  
  696.         mcall   8,<wnd1.x+wnd1.width-18,12>,<wnd1.y+4,12>,0,[dtp.grab_button]
  697.         mcall   4,<wnd1.x+wnd1.width-18+4,wnd1.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
  698.  
  699. ;----------------------------------------------------------------------
  700.  
  701.         mov     edi,[ebp+SKIN_HEADER.params]
  702.         add     edi,ebp
  703.         mpack   ebx,wnd2.x,wnd2.width
  704.         mpack   ecx,wnd2.y,wnd2.height
  705.         mov     edx,[dtp.frame]
  706.         shr     edx,1
  707.         and     edx,0x007F7F7F
  708.         call    draw_framerect
  709.         mpack   ebx,wnd2.x+4,wnd2.width-8
  710.         mpack   ecx,wnd2.y+4,wnd2.height-8
  711.         call    draw_framerect
  712.         mcall   13,<wnd2.x+1,wnd2.width-2>,<wnd2.y+1,3>,[dtp.frame]
  713.         add     ecx,(wnd2.height-5)*65536
  714.         mcall
  715.         mcall   ,<wnd2.x+1,3>,<wnd2.y+1,wnd2.height-2>
  716.         add     ebx,(wnd2.width-5)*65536
  717.         mcall
  718.         mcall   ,<wnd2.x+5,wnd2.width-10>,<wnd2.y+5,wnd2.height-10>,dword[dtp.work]
  719.  
  720.         mov     eax,38
  721.         mpack   ebx,wnd2.x+4,wnd2.x+wnd2.width-5
  722.         mpack   ecx,wnd2.y+4,wnd2.y+4
  723.         mov     edx,[dtp.grab]
  724.         mov     esi,16
  725.     @@: mcall
  726.         call    dec_edx
  727.         add     ecx,0x00010001
  728.         dec     esi
  729.         jnz     @b
  730.  
  731.         mov     edi,[ebp+SKIN_HEADER.params]
  732.         add     edi,ebp
  733.         mcall   4,<wnd2.x+8,wnd2.y+7>,dword[dtp.grab_text],caption_text,caption_text.size
  734.  
  735.         mcall   8,<wnd2.x+wnd2.width-20,12>,<wnd2.y+4,12>,0,[dtp.grab_button]
  736.         mcall   4,<wnd2.x+wnd2.width-20+4,wnd2.y+4+2>,dword[dtp.grab_button_text],close_text,close_text.size
  737.  
  738. ;----------------------------------------------------------------------
  739.  
  740.         mov     edi,[ebp+SKIN_HEADER.params]
  741.         add     edi,ebp
  742.         mpack   ebx,wnd3.x,wnd3.width
  743.         mpack   ecx,wnd3.y,wnd3.height
  744.         mov     edx,[edi+SKIN_PARAMS.colors_1.outer]
  745.         call    draw_framerect
  746.         mpack   ebx,wnd3.x+4,wnd3.width-8
  747.         mpack   ecx,wnd3.y+4,wnd3.height-8
  748.         mov     edx,[edi+SKIN_PARAMS.colors_1.inner]
  749.         call    draw_framerect
  750.         mcall   13,<wnd3.x+1,wnd3.width-2>,<wnd3.y+1,3>,[edi+SKIN_PARAMS.colors_1.frame]
  751.         add     ecx,(wnd3.height-5)*65536
  752.         mcall
  753.         mcall   ,<wnd3.x+1,3>,<wnd3.y+1,wnd3.height-2>
  754.         add     ebx,(wnd3.width-5)*65536
  755.         mcall
  756.         mcall   ,<wnd3.x+5,wnd3.width-10>,<wnd3.y+5,wnd3.height-10>,dword[dtp.work]
  757.  
  758.         mov     eax,0x00000001 ; left, inactive
  759.         call    find_bitmap
  760.         mcall   7,,,<wnd3.x,wnd3.y>
  761.  
  762.         pushd   [ebx-8]
  763.         mov     eax,0x00000003 ; base, inactive
  764.         call    find_bitmap
  765.         pop     edx
  766.         mov     esi,wnd3.x+wnd3.width-1
  767.         sub     esi,edx
  768.         shl     edx,16
  769.         add     edx,wnd3.x*65536+wnd3.y
  770.         mcall   7
  771.     @@: rol     edx,16
  772.         add     dx,[ebx-8]
  773.         cmp     dx,si
  774.         ja      @f
  775.         rol     edx,16
  776.         mcall   7
  777.         jmp     @b
  778.     @@:
  779.  
  780.         mov     eax,0x00000002 ; oper, inactive
  781.         call    find_bitmap
  782.         mov     edx,ecx
  783.         shr     edx,16
  784.         neg     edx
  785.         shl     edx,16
  786.         add     edx,(wnd3.x+wnd3.width)*65536+wnd3.y
  787.         mcall   7
  788.  
  789.         mov     ebp,not_packed_area
  790.         mov     edi,[ebp+SKIN_HEADER.params]
  791.         add     edi,ebp
  792.         mov     eax,dword[edi+SKIN_PARAMS.margin.left-2]
  793.         mov     ax,word[edi+SKIN_PARAMS.skin_height]
  794.         sub     ax,[edi+SKIN_PARAMS.margin.bottom]
  795.         shr     ax,1
  796.         add     ax,[edi+SKIN_PARAMS.margin.top]
  797.         add     ax,-4
  798.         push    eax
  799.         lea     ebx,[eax+wnd3.x*65536+wnd3.y]
  800.         mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
  801.  
  802. ;---------------------------------------------------------
  803.  
  804.         mov     edi,[ebp+SKIN_HEADER.params]
  805.         add     edi,ebp
  806.         mpack   ebx,wnd4.x,wnd4.width
  807.         mpack   ecx,wnd4.y,wnd4.height
  808.         mov     edx,[edi+SKIN_PARAMS.colors.outer]
  809.         call    draw_framerect
  810.         mpack   ebx,wnd4.x+4,wnd4.width-8
  811.         mpack   ecx,wnd4.y+4,wnd4.height-8
  812.         mov     edx,[edi+SKIN_PARAMS.colors.inner]
  813.         call    draw_framerect
  814.         mcall   13,<wnd4.x+1,wnd4.width-2>,<wnd4.y+1,3>,[edi+SKIN_PARAMS.colors.frame]
  815.         add     ecx,(wnd4.height-5)*65536
  816.         mcall
  817.         mcall   ,<wnd4.x+1,3>,<wnd4.y+1,wnd4.height-2>
  818.         add     ebx,(wnd4.width-5)*65536
  819.         mcall
  820.         mcall   ,<wnd4.x+5,wnd4.width-10>,<wnd4.y+5,wnd4.height-10>,dword[dtp.work]
  821.  
  822.         mov     eax,0x00010001 ; left, inactive
  823.         call    find_bitmap
  824.         mcall   7,,,<wnd4.x,wnd4.y>
  825.  
  826.         pushd   [ebx-8]
  827.         mov     eax,0x00010003 ; base, inactive
  828.         call    find_bitmap
  829.         pop     edx
  830.         mov     esi,wnd4.x+wnd4.width-1
  831.         sub     esi,edx
  832.         shl     edx,16
  833.         add     edx,wnd4.x*65536+wnd4.y
  834.         mcall   7
  835.     @@: rol     edx,16
  836.         add     dx,[ebx-8]
  837.         cmp     dx,si
  838.         ja      @f
  839.         rol     edx,16
  840.         mcall   7
  841.         jmp     @b
  842.     @@:
  843.  
  844.         mov     eax,0x00010002 ; oper, inactive
  845.         call    find_bitmap
  846.         mov     edx,ecx
  847.         shr     edx,16
  848.         neg     edx
  849.         shl     edx,16
  850.         add     edx,(wnd4.x+wnd4.width)*65536+wnd4.y
  851.         mcall   7
  852.  
  853.         mov     ebp,not_packed_area
  854.         mov     edi,[ebp+SKIN_HEADER.params]
  855.         add     edi,ebp
  856.         pop     eax
  857.         lea     ebx,[eax+wnd4.x*65536+wnd4.y]
  858.         mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
  859.  
  860. ;----------------------------------------------------------------------
  861.  
  862.         mov     edi,[ebp+SKIN_HEADER.buttons]
  863.         add     edi,ebp
  864.   .lp1: cmp     dword[edi],0
  865.         je      .lp2
  866.         mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
  867.         mov     bx,[edi+SKIN_BUTTONS.width]
  868.         mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
  869.         mov     cx,[edi+SKIN_BUTTONS.height]
  870.         add     ebx,(wnd4.x+wnd4.width)*65536
  871.         add     ecx,wnd4.y*65536
  872.         dec     ebx
  873.         dec     ecx
  874.         mcall   8,,,0x40000000
  875.         add     edi,12
  876.         jmp     .lp1
  877.   .lp2:
  878.  
  879.         mov     edi,[ebp+SKIN_HEADER.params]
  880.         add     edi,ebp
  881.         mpack   ebx,wnd4.x+10,wnd4.y+10
  882.         add     bx,word[edi+SKIN_PARAMS.skin_height]
  883.         mcall   4,,[dtp.work_text],window_text,window_text.size
  884.  
  885.         mov     ecx,[edi+SKIN_PARAMS.skin_height]
  886.         shl     ecx,16
  887.         add     ecx,(wnd4.y+8)*65536+10
  888.         mcall   13,<wnd4.x+window_text.size*6+20,wnd4.x+wnd4.width-10-\
  889.                    (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
  890.  
  891.         add     ecx,25*65536+8
  892.         mcall   8,<wnd4.x+wnd4.width/2-button_text.size*3-6,\
  893.                   button_text.size*6+11>,,0,[dtp.work_button]
  894.  
  895.         shr     ecx,16
  896.         mov     bx,cx
  897.         add     ebx,0x00060006
  898.         mcall   4,,[dtp.work_button_text],button_text,button_text.size
  899.  
  900.         ret
  901. ;---------------------------------------------------------------------
  902. draw_PathShow:
  903.         pusha
  904.         mcall   13,<10,534>,<214,15>,0xffffff
  905.         mcall   13,<10,534>,<232,15>,0xffffff
  906. ; draw for PathShow
  907.         push    dword PathShow_data_1
  908.         call    [PathShow_draw]
  909.        
  910.         push    dword PathShow_data_2
  911.         call    [PathShow_draw]
  912.         popa
  913.         ret
  914. ;---------------------------------------------------------------------
  915. ;   *********************************************
  916. ;   *******  WINDOW DEFINITIONS AND DRAW ********
  917. ;   *********************************************
  918.  
  919.  
  920. draw_window:
  921.  
  922.     mov  eax,12                    ; function 12:tell os about windowdraw
  923.     mov  ebx,1                     ; 1, start of draw
  924.     mcall
  925.  
  926.     mov  eax,48
  927.     mov  ebx,3
  928.     mov  ecx,app_colours
  929.     mov  edx,10*4
  930.     mcall
  931.  
  932.     mov  eax,14
  933.     mcall
  934.  
  935.                                       ; DRAW WINDOW
  936.     mov  eax,0                     ; function 0 : define and draw window
  937.     mov  ebx,110*65536+555         ; [x start] *65536 + [x size]
  938.     mov  ecx,50*65536+275          ; [y start] *65536 + [y size]
  939.     mov  edx,[w_work]              ; color of work area RRGGBB,8->color
  940.     or   edx,0x14000000
  941.     mov  edi,title                ; WINDOW LABEL
  942.     mcall
  943.  
  944. if lang eq ru
  945.   load_w  = (5*2+6*9)
  946.   save_w  = (5*2+6*9)
  947.   flat_w  = (5*2+6*7)
  948.   apply_w = (5*2+6*9)
  949. else
  950.   load_w  = (5*2+6*6)
  951.   save_w  = (5*2+6*8)
  952.   flat_w  = (5*2+6*4)
  953.   apply_w = (5*2+6*7)
  954. end if
  955.  
  956. ;    mov  eax,8                    ; FILENAME BUTTON
  957. ;    mov  ebx,5*65536+545
  958. ;    mov  ecx,212*65536+10
  959. ;    mov  edx,0x4000000B
  960. ;    mov  esi,[w_grab_button]       ; button color RRGGBB
  961. ;    mcall
  962.  
  963.     mov  eax,8                    ; LOAD BUTTON
  964.     mov  ebx,15*65536+load_w
  965.     mov  ecx,(35+18*12)*65536+14
  966.     mov  edx,12
  967.     mov  esi,[w_work_button]
  968.     mcall
  969.  
  970. ;   mov  eax,8                    ; SAVE BUTTON
  971.     add  ebx,(load_w+2)*65536-load_w+save_w
  972.     inc  edx
  973.     mcall
  974.  
  975. ;   mov  eax,8                    ; 3D
  976. ;   mov  ebx,15*65536+35
  977. ;   mov  ecx,(30+18*12)*65536+14
  978.     mov  ebx,(340-t1.size*6-13)*65536+(5*2+6*4)
  979.     inc  edx
  980.     mcall
  981.  
  982. ;   mov  eax,8                    ; FLAT
  983.     add  ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w
  984.     inc  edx
  985.     mcall
  986.  
  987. ;   mov  eax,8                    ; APPLY BUTTON
  988.     add  ebx,(flat_w+6+2)*65536-flat_w+apply_w
  989.     inc  edx
  990.     mcall
  991.  
  992. ;   mov  eax,8                    ; LOAD SKIN BUTTON
  993.     mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w
  994.     inc  edx
  995.     mcall
  996.  
  997. ;   mov  eax,8                    ; APPLY SKIN BUTTON
  998.     add  ebx,(load_w+6+2)*65536-load_w+apply_w
  999.     inc  edx
  1000.     mcall
  1001.  
  1002.     mov  eax, 4
  1003.     mov  ebx, (339-t1.size*6-12)*65536+(35+18*12+4)
  1004.     mov  ecx, [w_work_button_text]
  1005.     mov  edx, t1
  1006.     mov  esi, t1.size
  1007.     mcall
  1008.  
  1009.     mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+(35+18*12+4)
  1010.     mov  edx,t2
  1011.     mov  esi,t2.size
  1012.     mcall
  1013.  
  1014.     mov  ebx,(15+(load_w+save_w+2-t3.size*6)/2)*65536+(35+18*12+4)
  1015.     mov  edx,t3
  1016.     mov  esi,t3.size
  1017.     mcall
  1018.  
  1019. ;   mov  eax, 4
  1020. ;    mov  ebx, 277*65536+(30+18*12+4)
  1021. ;    mov  edx, t2
  1022. ;    mov  esi, t2.size
  1023. ;    mcall
  1024.  
  1025.     mov  eax,38                    ; R G B COLOR GLIDES
  1026.     mov  ebx,266*65536+285
  1027.     mov  ecx,30*65536+30
  1028.     mov  edx,0xff0000
  1029.   .newl:
  1030.     mcall
  1031.     pusha
  1032.     add  ebx,20*65536+20
  1033.     shr  edx,8
  1034.     mcall
  1035.     add  ebx,20*65536+20
  1036.     shr  edx,8
  1037.     mcall
  1038.     popa
  1039.     sub  edx,0x020000
  1040.     add  ecx,0x00010001
  1041.     cmp  ecx,158*65536+158
  1042.     jnz  .newl
  1043.  
  1044.     call draw_color
  1045.  
  1046.     mov  edx,31                    ; BUTTON ROW
  1047.     mov  ebx,15*65536+200
  1048.     mov  ecx,30*65536+14
  1049.     mov  esi,[w_work_button]
  1050.   newb:
  1051.     mov  eax,8
  1052.     mcall
  1053.     add  ecx,18*65536
  1054.     inc  edx
  1055.     cmp  edx,40
  1056.     jbe  newb
  1057.  
  1058.     mov  ebx,15*65536+34           ; ROW OF TEXTS
  1059.     mov  ecx,[w_work_button_text]
  1060.     mov  edx,text
  1061.     mov  esi,32
  1062.   newline:
  1063.     mov  eax,4
  1064.     mcall
  1065.     add  ebx,18
  1066.     add  edx,32
  1067.     cmp  [edx],byte 'x'
  1068.     jne  newline
  1069.  
  1070.     call draw_colours
  1071.  
  1072.         call    draw_PathShow  
  1073.        
  1074. ;    mcall 13,<5,546>,<212,11>,[w_work]
  1075. ;    mcall 13,<337,7>,<2,250>,[w_frame]
  1076. ;    shr   edx,1
  1077. ;    and   edx,0x007F7F7F
  1078. ;    mcall 38,<336,336>,<20,250>
  1079. ;    add   ebx,0x00080008
  1080. ;    mcall
  1081. ;    sub   ebx,0x00040004
  1082. ;    mcall ,,<0,255>
  1083. ;    mcall ,<5,550>,<211,211>
  1084. ;    add   ecx,0x000C000C
  1085. ;    mcall
  1086.  
  1087. ;    call print_text
  1088.  
  1089.     cmp  dword[not_packed_area+SKIN_HEADER.ident],'SKIN'
  1090.     jne  @f
  1091.     call draw_skin
  1092.   @@:
  1093.  
  1094.     mov  eax,12                    ; function 12:tell os about windowdraw
  1095.     mov  ebx,2                     ; 2, end of draw
  1096.     mcall
  1097.  
  1098.     ret
  1099.  
  1100.  
  1101. ; DATA AREA
  1102.  
  1103. lsz text,\
  1104.     ru,  ' €ŒŠ€ ŽŠ€                     ',\
  1105.     ru,  ' Ž‹Ž‘€ ‡€ƒŽ‹Ž‚Š€               ',\
  1106.     ru,  ' ŠŽŠ€ € Ž‹Ž‘… ‡€ƒŽ‹Ž‚Š€     ',\
  1107.     ru,  ' ’…Š‘’ € ŠŽŠ… € ‡€ƒŽ‹Ž‚Š…   ',\
  1108.     ru,  ' ’…Š‘’ ‡€ƒŽ‹Ž‚ŽŠ€               ',\
  1109.     ru,  ' €Ž—€Ÿ Ž‹€‘’œ                ',\
  1110.     ru,  ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ       ',\
  1111.     ru,  ' ’…Š‘’ € ŠŽŠ…                ',\
  1112.     ru,  ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ        ',\
  1113.     ru,  ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ      ',\
  1114.     ru,  'x',\
  1115.     en,  ' WINDOW FRAME                   ',\
  1116.     en,  ' WINDOW GRAB BAR                ',\
  1117.     en,  ' WINDOW GRAB BUTTON             ',\
  1118.     en,  ' WINDOW GRAB BUTTON TEXT        ',\
  1119.     en,  ' WINDOW GRAB TITLE              ',\
  1120.     en,  ' WINDOW WORK AREA               ',\
  1121.     en,  ' WINDOW WORK AREA BUTTON        ',\
  1122.     en,  ' WINDOW WORK AREA BUTTON TEXT   ',\
  1123.     en,  ' WINDOW WORK AREA TEXT          ',\
  1124.     en,  ' WINDOW WORK AREA GRAPH         ',\
  1125.     en,  'x',\
  1126.     et,  ' AKNA RAAM                      ',\
  1127.     et,  ' AKNA HAARAMISE RIBA            ',\
  1128.     et,  ' AKNA HAARAMISE NUPP            ',\
  1129.     et,  ' AKNA HAARAMISE NUPU TEKST      ',\
  1130.     et,  ' AKNA HAARAMISE PEALKIRI        ',\
  1131.     et,  ' AKNA TÖÖPIIRKOND               ',\
  1132.     et,  ' AKNA TÖÖPIIRKONNA NUPP         ',\
  1133.     et,  ' AKNA TÖÖPIIRKONNA NUPPU TEKST  ',\
  1134.     et,  ' AKNA TÖÖPIIRKONNA TEKST        ',\
  1135.     et,  ' AKNA TÖÖPIIRKONNA GRAAFIKA     ',\
  1136.     et,  'x'
  1137.  
  1138. lsz t1,\
  1139.     ru, '  3D   ‹Ž‘Šˆ…   ˆŒ…ˆ’œ ',\
  1140.     en, '  3D   FLAT    APPLY  ',\
  1141.     et, '  3D   LAME   KINNITA '
  1142.  
  1143. lsz t2,\
  1144.     ru,  ' ‡€ƒ“‡ˆ’œ   ˆŒ…ˆ’œ ',\
  1145.     en,  '  LOAD     APPLY  ',\
  1146.     et,  '  LAADI   KINNITA '
  1147.  
  1148. lsz t3,\
  1149.     ru,  ' ‡€ƒ“‡ˆ’œ  ‘Ž•€ˆ’œ ',\
  1150.     en,  '  LOAD     SAVE  ',\
  1151.     et,  ' LAADI  SALVESTA',\
  1152.  
  1153. lsz caption_text,\
  1154.     ru, '‡ £®«®¢®ª',\
  1155.     en, 'Caption',\
  1156.     et, 'Pealkiri'
  1157.  
  1158. sz  close_text,'x'
  1159.  
  1160. lsz window_text,\
  1161.     ru, '’¥ªáâ ¢ ®ª­¥',\
  1162.     en, 'Window text',\
  1163.     et, 'Akna tekst'
  1164.  
  1165. lsz button_text,\
  1166.     ru, '’¥ªáâ ­  ª­®¯ª¥',\
  1167.     en, 'Button text',\
  1168.     et, 'Nupu tekst'
  1169.  
  1170. ;sz  default_skn, '/sys/DEFAULT.SKN',0
  1171.  
  1172. if lang eq ru
  1173.   title db '€‘’Ž‰Š€ ŽŠŽ',0
  1174. else if lang eq et
  1175.   title db 'AKNA SEADED - VALI VÄRV JA VAJUTA OBJEKTILE',0
  1176. else
  1177.   title db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0
  1178. end if
  1179.  
  1180.  
  1181. color dd  0
  1182.  
  1183. ;---------------------------------------------------------------------
  1184. l_libs_start:
  1185.  
  1186. library01  l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
  1187. err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
  1188.  
  1189. library02  l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
  1190. err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
  1191.  
  1192. end_l_libs:
  1193. ;---------------------------------------------------------------------
  1194. system_dir_Boxlib       db '/sys/lib/box_lib.obj',0
  1195. system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
  1196.  
  1197. head_f_i:
  1198. head_f_l        db 'System error',0
  1199.  
  1200. err_message_found_lib1  db 'box_lib.obj - Not found!',0
  1201. err_message_found_lib2  db 'proc_lib.obj - Not found!',0
  1202.  
  1203. err_message_import1     db 'box_lib.obj - Wrong import!',0
  1204. err_message_import2     db 'proc_lib.obj - Wrong import!',0
  1205.  
  1206. ;---------------------------------------------------------------------
  1207. align 4
  1208. ProcLib_import:
  1209. OpenDialog_Init         dd aOpenDialog_Init
  1210. OpenDialog_Start        dd aOpenDialog_Start
  1211. ;OpenDialog__Version    dd aOpenDialog_Version
  1212.         dd      0
  1213.         dd      0
  1214. aOpenDialog_Init        db 'OpenDialog_init',0
  1215. aOpenDialog_Start       db 'OpenDialog_start',0
  1216. ;aOpenDialog_Version    db 'Version_OpenDialog',0
  1217. ;---------------------------------------------------------------------
  1218. align 4
  1219. Box_lib_import:
  1220. ;init_lib               dd a_init
  1221. ;version_lib            dd a_version
  1222.  
  1223.  
  1224. ;edit_box_draw          dd aEdit_box_draw
  1225. ;edit_box_key           dd aEdit_box_key
  1226. ;edit_box_mouse         dd aEdit_box_mouse
  1227. ;version_ed             dd aVersion_ed
  1228.  
  1229. ;check_box_draw         dd aCheck_box_draw
  1230. ;check_box_mouse        dd aCheck_box_mouse
  1231. ;version_ch             dd aVersion_ch
  1232.  
  1233. ;option_box_draw        dd aOption_box_draw
  1234. ;option_box_mouse       dd aOption_box_mouse
  1235. ;version_op             dd aVersion_op
  1236.  
  1237. ;scrollbar_ver_draw     dd aScrollbar_ver_draw
  1238. ;scrollbar_ver_mouse    dd aScrollbar_ver_mouse
  1239. ;scrollbar_hor_draw     dd aScrollbar_hor_draw
  1240. ;scrollbar_hor_mouse    dd aScrollbar_hor_mouse
  1241. ;version_scrollbar      dd aVersion_scrollbar
  1242.  
  1243. ;dinamic_button_draw    dd aDbutton_draw
  1244. ;dinamic_button_mouse   dd aDbutton_mouse
  1245. ;version_dbutton        dd aVersion_dbutton
  1246.  
  1247. ;menu_bar_draw          dd aMenu_bar_draw
  1248. ;menu_bar_mouse         dd aMenu_bar_mouse
  1249. ;menu_bar_activate      dd aMenu_bar_activate
  1250. ;version_menu_bar       dd aVersion_menu_bar
  1251.  
  1252. ;FileBrowser_draw       dd aFileBrowser_draw
  1253. ;FileBrowser_mouse      dd aFileBrowser_mouse
  1254. ;FileBrowser_key        dd aFileBrowser_key
  1255. ;Version_FileBrowser    dd aVersion_FileBrowser
  1256.  
  1257. PathShow_prepare        dd sz_PathShow_prepare
  1258. PathShow_draw           dd sz_PathShow_draw
  1259. ;Version_path_show      dd szVersion_path_show
  1260.                         dd 0
  1261.                         dd 0
  1262.  
  1263. ;a_init                 db 'lib_init',0
  1264. ;a_version              db 'version',0
  1265.  
  1266. ;aEdit_box_draw         db 'edit_box',0
  1267. ;aEdit_box_key          db 'edit_box_key',0
  1268. ;aEdit_box_mouse        db 'edit_box_mouse',0
  1269. ;aVersion_ed            db 'version_ed',0
  1270.  
  1271. ;aCheck_box_draw        db 'check_box_draw',0
  1272. ;aCheck_box_mouse       db 'check_box_mouse',0
  1273. ;aVersion_ch            db 'version_ch',0
  1274.  
  1275. ;aOption_box_draw       db 'option_box_draw',0
  1276. ;aOption_box_mouse      db 'option_box_mouse',0
  1277. ;aVersion_op            db 'version_op',0
  1278.  
  1279. ;aScrollbar_ver_draw    db 'scrollbar_v_draw',0
  1280. ;aScrollbar_ver_mouse   db 'scrollbar_v_mouse',0
  1281. ;aScrollbar_hor_draw    db 'scrollbar_h_draw',0
  1282. ;aScrollbar_hor_mouse   db 'scrollbar_h_mouse',0
  1283. ;aVersion_scrollbar     db 'version_scrollbar',0
  1284.  
  1285. ;aDbutton_draw          db 'dbutton_draw',0
  1286. ;aDbutton_mouse         db 'dbutton_mouse',0
  1287. ;aVersion_dbutton       db 'version_dbutton',0
  1288.  
  1289. ;aMenu_bar_draw         db 'menu_bar_draw',0
  1290. ;aMenu_bar_mouse                db 'menu_bar_mouse',0
  1291. ;aMenu_bar_activate     db 'menu_bar_activate',0
  1292. ;aVersion_menu_bar      db 'version_menu_bar',0
  1293.  
  1294. ;aFileBrowser_draw      db 'FileBrowser_draw',0
  1295. ;aFileBrowser_mouse     db 'FileBrowser_mouse',0
  1296. ;aFileBrowser_key       db 'FileBrowser_key',0
  1297. ;aVersion_FileBrowser   db 'version_FileBrowser',0
  1298.  
  1299. sz_PathShow_prepare     db 'PathShow_prepare',0
  1300. sz_PathShow_draw        db 'PathShow_draw',0
  1301. ;szVersion_path_show    db 'version_PathShow',0
  1302. ;---------------------------------------------------------------------
  1303. PathShow_data_1:
  1304. .type                   dd 0    ;+0
  1305. .start_y                dw 217  ;+4
  1306. .start_x                dw 12   ;+6
  1307. .font_size_x            dw 6    ;+8     ; 6 - for font 0, 8 - for font 1
  1308. .area_size_x            dw 530  ;+10
  1309. .font_number            dd 0    ;+12    ; 0 - monospace, 1 - variable
  1310. .background_flag        dd 0    ;+16
  1311. .font_color             dd 0x0  ;+20
  1312. .background_color       dd 0x0  ;+24
  1313. .text_pointer           dd fname        ;+28
  1314. .work_area_pointer      dd text_work_area       ;+32
  1315. .temp_text_length       dd 0    ;+36
  1316. ;---------------------------------------------------------------------
  1317. PathShow_data_2:
  1318. .type                   dd 0    ;+0
  1319. .start_y                dw 235  ;+4
  1320. .start_x                dw 12   ;+6
  1321. .font_size_x            dw 6    ;+8     ; 6 - for font 0, 8 - for font 1
  1322. .area_size_x            dw 530  ;+10
  1323. .font_number            dd 0    ;+12    ; 0 - monospace, 1 - variable
  1324. .background_flag        dd 0    ;+16
  1325. .font_color             dd 0x0  ;+20
  1326. .background_color       dd 0x0  ;+24
  1327. .text_pointer           dd skin_info    ;+28
  1328. .work_area_pointer      dd text_work_area2      ;+32
  1329. .temp_text_length       dd 0    ;+36
  1330. ;---------------------------------------------------------------------
  1331. OpenDialog_data:
  1332. .type                   dd 0
  1333. .procinfo               dd procinfo     ;+4
  1334. .com_area_name          dd communication_area_name      ;+8
  1335. .com_area               dd 0    ;+12
  1336. .opendir_pach           dd temp_dir_pach        ;+16
  1337. .dir_default_pach       dd communication_area_default_pach      ;+20
  1338. .start_path             dd open_dialog_path     ;+24
  1339. .draw_window            dd draw_window  ;+28
  1340. .status                 dd 0    ;+32
  1341. .openfile_pach          dd fname        ;+36
  1342. .filename_area          dd filename_area        ;+40
  1343. .filter_area            dd Filter
  1344. .x:
  1345. .x_size                 dw 420 ;+48 ; Window X size
  1346. .x_start                dw 10 ;+50 ; Window X position
  1347. .y:
  1348. .y_size                 dw 320 ;+52 ; Window y size
  1349. .y_start                dw 10 ;+54 ; Window Y position
  1350.  
  1351. OpenDialog_data2:
  1352. .type                   dd 0
  1353. .procinfo               dd procinfo     ;+4
  1354. .com_area_name          dd communication_area_name2     ;+8
  1355. .com_area               dd 0    ;+12
  1356. .opendir_pach           dd temp_dir_pach2       ;+16
  1357. .dir_default_pach       dd communication_area_default_pach      ;+20
  1358. .start_path             dd open_dialog_path     ;+24
  1359. .draw_window            dd draw_window  ;+28
  1360. .status                 dd 0    ;+32
  1361. .openfile_pach          dd skin_info    ;+36
  1362. .filename_area          dd filename_area2       ;+40
  1363. .filter_area            dd Filter2
  1364. .x:
  1365. .x_size                 dw 420 ;+48 ; Window X size
  1366. .x_start                dw 10 ;+50 ; Window X position
  1367. .y:
  1368. .y_size                 dw 320 ;+52 ; Window y size
  1369. .y_start                dw 10 ;+54 ; Window Y position
  1370.  
  1371. communication_area_name2:
  1372.         db 'FFFFFFFF_open_dialog',0
  1373.  
  1374. communication_area_name:
  1375.         db 'FFFFFFFF_open_dialog2',0
  1376. open_dialog_path:
  1377.         db '/sys/File Managers/opendial',0
  1378. communication_area_default_pach:
  1379.         db '/sys',0
  1380.  
  1381. Filter:
  1382. dd      Filter.end - Filter
  1383. .1:
  1384. db      'DTP',0
  1385. .end:
  1386. db      0
  1387.  
  1388. Filter2:
  1389. dd      Filter.end - Filter
  1390. .1:
  1391. db      'SKN',0
  1392. .end:
  1393. db      0
  1394.  
  1395. start_temp_file_name:   db 'default.dtp',0
  1396.  
  1397. default_skin:
  1398.         db '/sys/default.skn',0
  1399. default_dtp:
  1400.         db '/sys/default.dtp',0
  1401. ;---------------------------------------------------------------------
  1402. IncludeIGlobals
  1403.  
  1404. I_END:
  1405.  
  1406. IncludeUGlobals
  1407.  
  1408. read_info:
  1409.   .mode         dd ?            ; read
  1410.   .start_block  dd ?            ; first block
  1411.   .blocks       dd ?            ; 512 bytes
  1412.   .address      dd ?
  1413.   .workarea     dd ?
  1414. fname rb 4096            ; filename
  1415.  
  1416. virtual at read_info
  1417.  write_info:
  1418.   .mode         dd ?
  1419.   rd 1
  1420.   .bytes2write  dd ?
  1421.   .address      dd ?
  1422.   .workarea     dd ?
  1423. end virtual
  1424.  
  1425. read_info2:
  1426.   .mode         dd ?            ; read
  1427.   .start_block  dd ?            ; first block
  1428.   .blocks       dd ?            ; 512 bytes
  1429.   .address      dd ?
  1430.   .workarea     dd ?
  1431. skin_info rb 4096
  1432.  
  1433. ;param   rb      257
  1434.  
  1435. align 4
  1436. app_colours:
  1437.  
  1438. w_frame              dd ?
  1439. w_grab               dd ?
  1440. w_grab_button        dd ?
  1441. w_grab_button_text   dd ?
  1442. w_grab_text          dd ?
  1443. w_work               dd ?
  1444. w_work_button        dd ?
  1445. w_work_button_text   dd ?
  1446. w_work_text          dd ?
  1447. w_work_graph         dd ?
  1448.  
  1449. color_table:
  1450.   times 10 dd ?
  1451. ;---------------------------------------------------------------------
  1452. align 4
  1453. cur_dir_path:
  1454.         rb 4096
  1455. ;---------------------------------------------------------------------
  1456. library_path:
  1457.         rb 4096
  1458. ;---------------------------------------------------------------------
  1459. ;fname_buf:
  1460. ;       rb 4096
  1461. ;---------------------------------------------------------------------
  1462. temp_dir_pach:
  1463.         rb 4096
  1464. ;---------------------------------------------------------------------
  1465. temp_dir_pach2:
  1466.         rb 4096
  1467. ;---------------------------------------------------------------------
  1468. text_work_area:
  1469.         rb 1024
  1470. ;---------------------------------------------------------------------
  1471. text_work_area2:
  1472.         rb 1024
  1473. ;---------------------------------------------------------------------
  1474. procinfo:
  1475.         rb 1024
  1476. ;---------------------------------------------------------------------
  1477. filename_area:
  1478.         rb 256
  1479. ;---------------------------------------------------------------------
  1480. filename_area2:
  1481.         rb 256
  1482. ;---------------------------------------------------------------------
  1483.         rb 4096
  1484. stacktop:
  1485. ;---------------------------------------------------------------------
  1486. file_load_area: ; old 0x10000
  1487.         rb 32*1024
  1488. ;---------------------------------------------------------------------
  1489. not_packed_area:        ; old 0x18000
  1490.         rb 32*1024
  1491. ;---------------------------------------------------------------------
  1492. unpack_area:    ; old 0x20000
  1493.         rb 32*1024
  1494. ;---------------------------------------------------------------------
  1495. i_end: