diff --git a/programs/system/colrdial/color_dialog.asm b/programs/system/colrdial/color_dialog.asm index 29b6b54f0f..12249df6ae 100644 --- a/programs/system/colrdial/color_dialog.asm +++ b/programs/system/colrdial/color_dialog.asm @@ -69,11 +69,14 @@ dd I_END dd stacktop dd param - dd 0x0 + dd path ;--------------------------------------------------------------------- include '../../macros.inc' +include '../../develop/libraries/box_lib/load_lib.mac' +include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;include 'lang.inc' -;include 'debug.inc' +;include '../../debug.inc' +@use_library ;--------------------------------------------------------------------- p_start_x = 10 p_start_y = 10 @@ -103,10 +106,15 @@ START: mcall 68,11 mcall 66,1,1 mcall 40,0x27 +; mcall 40,0x7 call get_communication_area call get_active_pocess +load_libraries l_libs_start,end_l_libs + test eax,eax + jnz button.exit_2 + xor eax,eax mov al,p_size_x mov [palette_SIZE_X],eax @@ -117,6 +125,7 @@ START: mov eax,0xff0000 mov [tone_color],eax mov [selected_color],eax + call prepare_scrollbars_position_from_color ;-------------------------------------- mov ecx,[palette_SIZE_Y] imul ecx,[palette_SIZE_X] @@ -151,7 +160,12 @@ still: je key cmp eax,3 - jne still + je button + + cmp eax,6 + je mouse + + jmp still ;--------------------------------------------------------------------- align 4 button: @@ -195,7 +209,7 @@ button: shl eax,16 add eax,[ecx+46] mov [ebx+8],eax - +.exit_2: mcall -1 ;--------------------------------------------------------------------- get_window_param: @@ -222,12 +236,14 @@ get_communication_area: ; mov [color_dialog_type],ebx mov ebx,[eax+4] - cmp bx,word x_minimal_size ;300 - jb @f +; cmp bx,word x_minimal_size ;300 +; jb @f + mov bx,420 mov [window_x],ebx mov ebx,[eax+8] - cmp bx,word y_minimal_size ;200 - jb @f +; cmp bx,word y_minimal_size ;200 +; jb @f + mov bx,320 mov [window_y],ebx @@: ret @@ -256,8 +272,10 @@ palette_button: mov eax,[eax] mov [tone_color],eax mov [selected_color],eax + call prepare_scrollbars_position_from_color call create_and_draw_tone call draw_selected_color + call draw_scrollbars jmp still ;--------------------------------------------------------------------- align 4 @@ -274,7 +292,9 @@ tone_button: add eax,[tone_area] mov eax,[eax] mov [selected_color],eax + call prepare_scrollbars_position_from_color call draw_selected_color + call draw_scrollbars jmp still ;--------------------------------------------------------------------- align 4 @@ -288,14 +308,82 @@ color_button: jmp button.exit_1 ;--------------------------------------------------------------------- align 4 +prepare_scrollbars_position_from_color: +; in: eax = selected color + movzx ebx,al + mov [scroll_bar_data_blue.position],ebx + shr eax,8 + mov bl,al + mov [scroll_bar_data_green.position],ebx + shr eax,8 + mov bl,al + mov [scroll_bar_data_red.position],ebx + ret +;--------------------------------------------------------------------- +align 4 +prepare_color_from_scrollbars_position: +; out: ebx = selected color + mov eax,[scroll_bar_data_red.position] + movzx ebx,al + shl ebx,8 + mov eax,[scroll_bar_data_green.position] + mov bl,al + shl ebx,8 + mov eax,[scroll_bar_data_blue.position] + mov bl,al + ret +;--------------------------------------------------------------------- +align 4 key: mcall 2 jmp still ;--------------------------------------------------------------------- align 4 +mouse: + cmp [scroll_bar_data_red.delta2],0 + jne .red + cmp [scroll_bar_data_green.delta2],0 + jne .green + cmp [scroll_bar_data_blue.delta2],0 + jne .blue +;-------------------------------------- +align 4 +.red: + push dword scroll_bar_data_red + call [scrollbar_ver_mouse] + cmp [scroll_bar_data_red.delta2],0 + jne @f +;-------------------------------------- +align 4 +.green: + push dword scroll_bar_data_green + call [scrollbar_ver_mouse] + cmp [scroll_bar_data_green.delta2],0 + jne @f +;-------------------------------------- +align 4 +.blue: + push dword scroll_bar_data_blue + call [scrollbar_ver_mouse] +; cmp [scroll_bar_data_blue.delta2],0 +; jne @f +;-------------------------------------- +align 4 +@@: + call prepare_color_from_scrollbars_position + cmp [selected_color],ebx + je still + mov [selected_color],ebx + call draw_selected_color + jmp still +;--------------------------------------------------------------------- +align 4 draw_selected_color: mcall 13,,,[selected_color] - mcall 8,,,0x60000004 + mcall 13,,,0xffffff + mov ecx,[selected_color] + and ecx,0xffffff + mcall 47,0x00060100,,,0 ret ;--------------------------------------------------------------------- align 4 @@ -309,16 +397,34 @@ draw_tone: mcall 65,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,,24 ret ;--------------------------------------------------------------------- +draw_scrollbars: + push dword scroll_bar_data_red + call [scrollbar_ver_draw] + push dword scroll_bar_data_green + call [scrollbar_ver_draw] + push dword scroll_bar_data_blue + call [scrollbar_ver_draw] + ret +;--------------------------------------------------------------------- align 4 draw_window: mcall 12,1 ; mcall 0, , , 0x33AABBCC,,title - mcall 0,[window_x],[window_y], 0x33AABBCC,,title + xor esi,esi + mcall 0,[window_x],[window_y], 0x34AABBCC,,title mcall 8,,,0x60000002 mcall ,,,0x60000003 + mcall ,,,0x60000004 + xor ebp,ebp mcall 65,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,,24 call draw_tone call draw_selected_color + xor eax,eax + inc eax + mov [scroll_bar_data_red.all_redraw],eax + mov [scroll_bar_data_green.all_redraw],eax + mov [scroll_bar_data_blue.all_redraw],eax + call draw_scrollbars mcall 12,2 ret ;--------------------------------------------------------------------- diff --git a/programs/system/colrdial/i_data.inc b/programs/system/colrdial/i_data.inc index 26866be84d..95de5e0501 100644 --- a/programs/system/colrdial/i_data.inc +++ b/programs/system/colrdial/i_data.inc @@ -9,4 +9,210 @@ window_x: window_y: .y_size dw 320 .y_start dw 10 +;--------------------------------------------------------------------- +;plugins_directory db 'plugins/',0 +plugins_directory db 0 + +system_dir_Boxlib db '/sys/lib/box_lib.obj',0 + +ihead_f_i: +ihead_f_l db 'System error',0 + +er_message_found_lib db 'box_lib.obj - Not found!',0 +er_message_import db 'box_lib.obj - Wrong import!',0 + +align 4 +l_libs_start: +library01 l_libs system_dir_Boxlib+9,path,file_name,system_dir_Boxlib,\ +er_message_found_lib,ihead_f_l,Box_lib_import,er_message_import,ihead_f_i,plugins_directory + +end_l_libs: +;--------------------------------------------------------------------- +;--------------------------------------------------------------------- +align 4 +Box_lib_import: +;init_lib dd a_init +;version_lib dd a_version + + +;edit_box_draw dd aEdit_box_draw +;edit_box_key dd aEdit_box_key +;edit_box_mouse dd aEdit_box_mouse +;version_ed dd aVersion_ed + +;check_box_draw dd aCheck_box_draw +;check_box_mouse dd aCheck_box_mouse +;version_ch dd aVersion_ch + +;option_box_draw dd aOption_box_draw +;option_box_mouse dd aOption_box_mouse +;version_op dd aVersion_op + +scrollbar_ver_draw dd aScrollbar_ver_draw +scrollbar_ver_mouse dd aScrollbar_ver_mouse +;scrollbar_hor_draw dd aScrollbar_hor_draw +;scrollbar_hor_mouse dd aScrollbar_hor_mouse +;version_scrollbar dd aVersion_scrollbar + +;dinamic_button_draw dd aDbutton_draw +;dinamic_button_mouse dd aDbutton_mouse +;version_dbutton dd aVersion_dbutton + +;menu_bar_draw dd aMenu_bar_draw +;menu_bar_mouse dd aMenu_bar_mouse +;menu_bar_activate dd aMenu_bar_activate +;version_menu_bar dd aVersion_menu_bar + +;FileBrowser_draw dd aFileBrowser_draw +;FileBrowser_mouse dd aFileBrowser_mouse +;FileBrowser_key dd aFileBrowser_key +;Version_FileBrowser dd aVersion_FileBrowser + +;PathShow_prepare dd sz_PathShow_prepare +;PathShow_draw dd sz_PathShow_draw +;Version_path_show dd szVersion_path_show + dd 0 + dd 0 + +;a_init db 'lib_init',0 +;a_version db 'version',0 + +;aEdit_box_draw db 'edit_box',0 +;aEdit_box_key db 'edit_box_key',0 +;aEdit_box_mouse db 'edit_box_mouse',0 +;aVersion_ed db 'version_ed',0 + +;aCheck_box_draw db 'check_box_draw',0 +;aCheck_box_mouse db 'check_box_mouse',0 +;aVersion_ch db 'version_ch',0 + +;aOption_box_draw db 'option_box_draw',0 +;aOption_box_mouse db 'option_box_mouse',0 +;aVersion_op db 'version_op',0 + +aScrollbar_ver_draw db 'scrollbar_v_draw',0 +aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 +;aScrollbar_hor_draw db 'scrollbar_h_draw',0 +;aScrollbar_hor_mouse db 'scrollbar_h_mouse',0 +;aVersion_scrollbar db 'version_scrollbar',0 + +;aDbutton_draw db 'dbutton_draw',0 +;aDbutton_mouse db 'dbutton_mouse',0 +;aVersion_dbutton db 'version_dbutton',0 + +;aMenu_bar_draw db 'menu_bar_draw',0 +;aMenu_bar_mouse db 'menu_bar_mouse',0 +;aMenu_bar_activate db 'menu_bar_activate',0 +;aVersion_menu_bar db 'version_menu_bar',0 + +;aFileBrowser_draw db 'FileBrowser_draw',0 +;aFileBrowser_mouse db 'FileBrowser_mouse',0 +;aFileBrowser_key db 'FileBrowser_key',0 +;aVersion_FileBrowser db 'version_FileBrowser',0 + +;sz_PathShow_prepare db 'PathShow_prepare',0 +;sz_PathShow_draw db 'PathShow_draw',0 +;szVersion_path_show db 'version_PathShow',0 +;--------------------------------------------------------------------- +align 4 +scroll_bar_data_red: +.x: +.size_x dw 15 ;+0 +.start_x dw t_start_x + p_size_y + 20 +.y: +.size_y dw p_size_y + p_start_y - (c_start_y + c_size_y + 10) +.start_y dw c_start_y + c_size_y + 10 +.btn_high dd 15 ;+8 +.type dd 2 ;+12 +.max_area dd 255 ;+16 +.cur_area dd 0 ;+20 +.position dd 128 ;+24 +.bckg_col dd 0xFFDBDB ;+28 +.frnt_col dd 0xFF7777 ;0xbbddff ;+32 +.line_col dd 0 ;+36 +.redraw dd 0 ;+40 +.delta dw 0 ;+44 +.delta2 dw 0 ;+46 +.run_x: +.r_size_x dw 0 ;+48 +.r_start_x dw 0 ;+50 +.run_y: +.r_size_y dw 0 ;+52 +.r_start_y dw 0 ;+54 +.m_pos dd 0 ;+56 +.m_pos_2 dd 0 ;+60 +.m_keys dd 0 ;+64 +.run_size dd 0 ;+68 +.position2 dd 0 ;+72 +.work_size dd 0 ;+76 +.all_redraw dd 1 ;+80 +.ar_offset dd 10 ;+84 +;--------------------------------------------------------------------- +align 4 +scroll_bar_data_green: +.x: +.size_x dw 15 ;+0 +.start_x dw t_start_x + p_size_y + 45 +.y: +.size_y dw p_size_y + p_start_y - (c_start_y + c_size_y + 10) +.start_y dw c_start_y + c_size_y + 10 +.btn_high dd 15 ;+8 +.type dd 2 ;+12 +.max_area dd 255 ;+16 +.cur_area dd 0 ;+20 +.position dd 128 ;+24 +.bckg_col dd 0xDBFFDB ;+28 +.frnt_col dd 0x77FF77 ;0xbbddff ;+32 +.line_col dd 0 ;+36 +.redraw dd 0 ;+40 +.delta dw 0 ;+44 +.delta2 dw 0 ;+46 +.run_x: +.r_size_x dw 0 ;+48 +.r_start_x dw 0 ;+50 +.run_y: +.r_size_y dw 0 ;+52 +.r_start_y dw 0 ;+54 +.m_pos dd 0 ;+56 +.m_pos_2 dd 0 ;+60 +.m_keys dd 0 ;+64 +.run_size dd 0 ;+68 +.position2 dd 0 ;+72 +.work_size dd 0 ;+76 +.all_redraw dd 1 ;+80 +.ar_offset dd 10 ;+84 +;--------------------------------------------------------------------- +align 4 +scroll_bar_data_blue: +.x: +.size_x dw 15 ;+0 +.start_x dw t_start_x + p_size_y + 70 +.y: +.size_y dw p_size_y + p_start_y - (c_start_y + c_size_y + 10) +.start_y dw c_start_y + c_size_y + 10 +.btn_high dd 15 ;+8 +.type dd 2 ;+12 +.max_area dd 255 ;+16 +.cur_area dd 0 ;+20 +.position dd 128 ;+24 +.bckg_col dd 0xDBDBFF ;+28 +.frnt_col dd 0x7777FF ;0xbbddff ;+32 +.line_col dd 0 ;+36 +.redraw dd 0 ;+40 +.delta dw 0 ;+44 +.delta2 dw 0 ;+46 +.run_x: +.r_size_x dw 0 ;+48 +.r_start_x dw 0 ;+50 +.run_y: +.r_size_y dw 0 ;+52 +.r_start_y dw 0 ;+54 +.m_pos dd 0 ;+56 +.m_pos_2 dd 0 ;+60 +.m_keys dd 0 ;+64 +.run_size dd 0 ;+68 +.position2 dd 0 ;+72 +.work_size dd 0 ;+76 +.all_redraw dd 1 ;+80 +.ar_offset dd 10 ;+84 ;--------------------------------------------------------------------- \ No newline at end of file diff --git a/programs/system/colrdial/u_data.inc b/programs/system/colrdial/u_data.inc index e2b18b4db2..2bf00ec739 100644 --- a/programs/system/colrdial/u_data.inc +++ b/programs/system/colrdial/u_data.inc @@ -43,6 +43,14 @@ align 4 param: rb 256 ;--------------------------------------------------------------------- +align 4 +path: + rb 4096 +;--------------------------------------------------------------------- +align 4 +file_name: + rb 4096 +;--------------------------------------------------------------------- align 4 rb 4096 stacktop: