From 773874982df775e3295eb1c5718cda8a24d97cbe Mon Sep 17 00:00:00 2001 From: IgorA Date: Thu, 29 Mar 2012 20:33:24 +0000 Subject: [PATCH] 'log_el': - add *.ini file - small changes git-svn-id: svn://kolibrios.org@2523 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/media/log_el/trunk/le_libs.inc | 2 +- programs/media/log_el/trunk/le_pole.inc | 8 +-- programs/media/log_el/trunk/log_el.asm | 64 ++++++++++++++++++------ programs/media/log_el/trunk/log_el.ini | 6 +++ programs/media/log_el/trunk/toolbar.png | Bin 4679 -> 4751 bytes 5 files changed, 60 insertions(+), 20 deletions(-) create mode 100644 programs/media/log_el/trunk/log_el.ini diff --git a/programs/media/log_el/trunk/le_libs.inc b/programs/media/log_el/trunk/le_libs.inc index 27c548c540..55318444c9 100644 --- a/programs/media/log_el/trunk/le_libs.inc +++ b/programs/media/log_el/trunk/le_libs.inc @@ -1 +1 @@ -;include 'load_lib.mac' ;include 'mem.inc' ;include 'dll.inc' ;@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load head_f_i: head_f_l db 'Системная ошибка',0 system_dir_0 db '/sys/lib/' lib_name_0 db 'proc_lib.obj',0 err_message_found_lib_0 db 'Не найдена библиотека ',39,'proc_lib.obj',39,0 err_message_import_0 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,0 system_dir_1 db '/sys/lib/' lib_name_1 db 'libimg.obj',0 err_message_found_lib_1 db 'Не найдена библиотека ',39,'libimg.obj',39,0 err_message_import_1 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,0 system_dir_2 db '/sys/lib/' lib_name_2 db 'box_lib.obj',0 err_message_found_lib_2 db 'Не найдена библиотека ',39,'box_lib.obj',39,0 err_message_import_2 db 'Ошибка при импорте библиотеки ',39,'box_lib.obj',39,0 system_dir_7 db '/sys/lib/' lib_name_7 db 'buf2d.obj',0 err_msg_found_lib_7 db 'Не найдена библиотека ',39,'buf2d.obj',39,0 err_msg_import_7 db 'Ошибка при импорте библиотеки ',39,'buf2d',39,0 l_libs_start: lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\ err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i lib2 l_libs lib_name_2, sys_path, file_name, system_dir_2,\ err_message_found_lib_2, head_f_l, import_box_lib, err_message_import_2, head_f_i lib_7 l_libs lib_name_7, sys_path, library_path, system_dir_7,\ err_msg_found_lib_7,head_f_l,import_buf2d,err_msg_import_7,head_f_i l_libs_end: align 4 proclib_import: ;описание экспортируемых функций OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 aOpenDialog_Init db 'OpenDialog_init',0 aOpenDialog_Start db 'OpenDialog_start',0 align 4 import_libimg: dd alib_init1 img_is_img dd aimg_is_img img_info dd aimg_info img_from_file dd aimg_from_file img_to_file dd aimg_to_file img_from_rgb dd aimg_from_rgb img_to_rgb dd aimg_to_rgb img_to_rgb2 dd aimg_to_rgb2 img_decode dd aimg_decode img_encode dd aimg_encode img_create dd aimg_create img_destroy dd aimg_destroy img_destroy_layer dd aimg_destroy_layer img_count dd aimg_count img_lock_bits dd aimg_lock_bits img_unlock_bits dd aimg_unlock_bits img_flip dd aimg_flip img_flip_layer dd aimg_flip_layer img_rotate dd aimg_rotate img_rotate_layer dd aimg_rotate_layer img_draw dd aimg_draw dd 0,0 alib_init1 db 'lib_init',0 aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение aimg_info db 'img_info',0 aimg_from_file db 'img_from_file',0 aimg_to_file db 'img_to_file',0 aimg_from_rgb db 'img_from_rgb',0 aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_encode db 'img_encode',0 aimg_create db 'img_create',0 aimg_destroy db 'img_destroy',0 aimg_destroy_layer db 'img_destroy_layer',0 aimg_count db 'img_count',0 aimg_lock_bits db 'img_lock_bits',0 aimg_unlock_bits db 'img_unlock_bits',0 aimg_flip db 'img_flip',0 aimg_flip_layer db 'img_flip_layer',0 aimg_rotate db 'img_rotate',0 aimg_rotate_layer db 'img_rotate_layer',0 aimg_draw db 'img_draw',0 align 4 import_box_lib: dd alib_init2 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна 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 tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec tl_node_move_up dd sz_tl_node_move_up tl_node_move_down dd sz_tl_node_move_down tl_save_mem dd sz_tl_save_mem tl_load_mem dd sz_tl_load_mem tl_get_mem_size dd sz_tl_get_mem_size tl_node_poi_get_info dd sz_tl_node_poi_get_info tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info tl_node_poi_get_data dd sz_tl_node_poi_get_data dd 0,0 alib_init2 db 'lib_init',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 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 sz_tl_node_move_up db 'tl_node_move_up',0 sz_tl_node_move_down db 'tl_node_move_down',0 sz_tl_save_mem db 'tl_save_mem',0 sz_tl_load_mem db 'tl_load_mem',0 sz_tl_get_mem_size db 'tl_get_mem_size',0 sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0 sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0 sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0 align 4 import_buf2d: init dd sz_init buf2d_create dd sz_buf2d_create buf2d_create_f_img dd sz_buf2d_create_f_img buf2d_clear dd sz_buf2d_clear buf2d_draw dd sz_buf2d_draw buf2d_delete dd sz_buf2d_delete buf2d_line dd sz_buf2d_line buf2d_rect_by_size dd sz_buf2d_rect_by_size buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size buf2d_circle dd sz_buf2d_circle buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2 buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2 buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8 buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32 buf2d_bit_blt dd sz_buf2d_bit_blt buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha buf2d_curve_bezier dd sz_buf2d_curve_bezier buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix buf2d_draw_text dd sz_buf2d_draw_text buf2d_crop_color dd sz_buf2d_crop_color buf2d_offset_h dd sz_buf2d_offset_h buf2d_flood_fill dd sz_buf2d_flood_fill buf2d_set_pixel dd sz_buf2d_set_pixel dd 0,0 sz_init db 'lib_init',0 sz_buf2d_create db 'buf2d_create',0 sz_buf2d_create_f_img db 'buf2d_create_f_img',0 sz_buf2d_clear db 'buf2d_clear',0 sz_buf2d_draw db 'buf2d_draw',0 sz_buf2d_delete db 'buf2d_delete',0 sz_buf2d_line db 'buf2d_line',0 sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0 sz_buf2d_circle db 'buf2d_circle',0 sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0 sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0 sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0 sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0 sz_buf2d_bit_blt db 'buf2d_bit_blt',0 sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0 sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0 sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0 sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0 sz_buf2d_draw_text db 'buf2d_draw_text',0 sz_buf2d_crop_color db 'buf2d_crop_color',0 sz_buf2d_offset_h db 'buf2d_offset_h',0 sz_buf2d_flood_fill db 'buf2d_flood_fill',0 sz_buf2d_set_pixel db 'buf2d_set_pixel',0 \ No newline at end of file +;include 'load_lib.mac' ;include 'mem.inc' ;include 'dll.inc' ;@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load head_f_i: head_f_l db 'Системная ошибка',0 system_dir_0 db '/sys/lib/' lib_name_0 db 'proc_lib.obj',0 err_message_found_lib_0 db 'Не найдена библиотека ',39,'proc_lib.obj',39,0 err_message_import_0 db 'Ошибка при импорте библиотеки ',39,'proc_lib.obj',39,0 system_dir_1 db '/sys/lib/' lib_name_1 db 'libimg.obj',0 err_message_found_lib_1 db 'Не найдена библиотека ',39,'libimg.obj',39,0 err_message_import_1 db 'Ошибка при импорте библиотеки ',39,'libimg.obj',39,0 system_dir_2 db '/sys/lib/' lib_name_2 db 'box_lib.obj',0 err_message_found_lib_2 db 'Не найдена библиотека ',39,'box_lib.obj',39,0 err_message_import_2 db 'Ошибка при импорте библиотеки ',39,'box_lib.obj',39,0 system_dir_3 db '/sys/lib/' lib_name_3 db 'libini.obj',0 err_message_found_lib_3 db 'Не найдена библиотека ',39,'libini.obj',39,0 err_message_import_3 db 'Ошибка при импорте библиотеки ',39,'libini.obj',39,0 system_dir_7 db '/sys/lib/' lib_name_7 db 'buf2d.obj',0 err_msg_found_lib_7 db 'Не найдена библиотека ',39,'buf2d.obj',39,0 err_msg_import_7 db 'Ошибка при импорте библиотеки ',39,'buf2d',39,0 l_libs_start: lib0 l_libs lib_name_0, sys_path, file_name, system_dir_0,\ err_message_found_lib_0, head_f_l, proclib_import,err_message_import_0, head_f_i lib1 l_libs lib_name_1, sys_path, file_name, system_dir_1,\ err_message_found_lib_1, head_f_l, import_libimg, err_message_import_1, head_f_i lib2 l_libs lib_name_2, sys_path, file_name, system_dir_2,\ err_message_found_lib_2, head_f_l, import_box_lib, err_message_import_2, head_f_i lib3 l_libs lib_name_3, sys_path, file_name, system_dir_3,\ err_message_found_lib_3, head_f_l, import_libini, err_message_import_3, head_f_i lib_7 l_libs lib_name_7, sys_path, library_path, system_dir_7,\ err_msg_found_lib_7,head_f_l,import_buf2d,err_msg_import_7,head_f_i l_libs_end: align 4 proclib_import: ;описание экспортируемых функций OpenDialog_Init dd aOpenDialog_Init OpenDialog_Start dd aOpenDialog_Start dd 0,0 aOpenDialog_Init db 'OpenDialog_init',0 aOpenDialog_Start db 'OpenDialog_start',0 align 4 import_libimg: dd alib_init1 img_is_img dd aimg_is_img img_info dd aimg_info img_from_file dd aimg_from_file img_to_file dd aimg_to_file img_from_rgb dd aimg_from_rgb img_to_rgb dd aimg_to_rgb img_to_rgb2 dd aimg_to_rgb2 img_decode dd aimg_decode img_encode dd aimg_encode img_create dd aimg_create img_destroy dd aimg_destroy img_destroy_layer dd aimg_destroy_layer img_count dd aimg_count img_lock_bits dd aimg_lock_bits img_unlock_bits dd aimg_unlock_bits img_flip dd aimg_flip img_flip_layer dd aimg_flip_layer img_rotate dd aimg_rotate img_rotate_layer dd aimg_rotate_layer img_draw dd aimg_draw dd 0,0 alib_init1 db 'lib_init',0 aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение aimg_info db 'img_info',0 aimg_from_file db 'img_from_file',0 aimg_to_file db 'img_to_file',0 aimg_from_rgb db 'img_from_rgb',0 aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB aimg_to_rgb2 db 'img_to_rgb2',0 aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных aimg_encode db 'img_encode',0 aimg_create db 'img_create',0 aimg_destroy db 'img_destroy',0 aimg_destroy_layer db 'img_destroy_layer',0 aimg_count db 'img_count',0 aimg_lock_bits db 'img_lock_bits',0 aimg_unlock_bits db 'img_unlock_bits',0 aimg_flip db 'img_flip',0 aimg_flip_layer db 'img_flip_layer',0 aimg_rotate db 'img_rotate',0 aimg_rotate_layer db 'img_rotate_layer',0 aimg_draw db 'img_draw',0 align 4 import_box_lib: dd alib_init2 ;функция запускается макросом 1 раз при подключении бибилиотеки, потому в программе метка на нее не нужна 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 tl_data_init dd sz_tl_data_init tl_data_clear dd sz_tl_data_clear tl_info_clear dd sz_tl_info_clear tl_key dd sz_tl_key tl_mouse dd sz_tl_mouse tl_draw dd sz_tl_draw tl_info_undo dd sz_tl_info_undo tl_info_redo dd sz_tl_info_redo tl_node_add dd sz_tl_node_add tl_node_set_data dd sz_tl_node_set_data tl_node_get_data dd sz_tl_node_get_data tl_node_delete dd sz_tl_node_delete tl_cur_beg dd sz_tl_cur_beg tl_cur_next dd sz_tl_cur_next tl_cur_perv dd sz_tl_cur_perv tl_node_close_open dd sz_tl_node_close_open tl_node_lev_inc dd sz_tl_node_lev_inc tl_node_lev_dec dd sz_tl_node_lev_dec tl_node_move_up dd sz_tl_node_move_up tl_node_move_down dd sz_tl_node_move_down tl_save_mem dd sz_tl_save_mem tl_load_mem dd sz_tl_load_mem tl_get_mem_size dd sz_tl_get_mem_size tl_node_poi_get_info dd sz_tl_node_poi_get_info tl_node_poi_get_next_info dd sz_tl_node_poi_get_next_info tl_node_poi_get_data dd sz_tl_node_poi_get_data dd 0,0 alib_init2 db 'lib_init',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 sz_tl_data_init db 'tl_data_init',0 sz_tl_data_clear db 'tl_data_clear',0 sz_tl_info_clear db 'tl_info_clear',0 sz_tl_key db 'tl_key',0 sz_tl_mouse db 'tl_mouse',0 sz_tl_draw db 'tl_draw',0 sz_tl_info_undo db 'tl_info_undo',0 sz_tl_info_redo db 'tl_info_redo',0 sz_tl_node_add db 'tl_node_add',0 sz_tl_node_set_data db 'tl_node_set_data',0 sz_tl_node_get_data db 'tl_node_get_data',0 sz_tl_node_delete db 'tl_node_delete',0 sz_tl_cur_beg db 'tl_cur_beg',0 sz_tl_cur_next db 'tl_cur_next',0 sz_tl_cur_perv db 'tl_cur_perv',0 sz_tl_node_close_open db 'tl_node_close_open',0 sz_tl_node_lev_inc db 'tl_node_lev_inc',0 sz_tl_node_lev_dec db 'tl_node_lev_dec',0 sz_tl_node_move_up db 'tl_node_move_up',0 sz_tl_node_move_down db 'tl_node_move_down',0 sz_tl_save_mem db 'tl_save_mem',0 sz_tl_load_mem db 'tl_load_mem',0 sz_tl_get_mem_size db 'tl_get_mem_size',0 sz_tl_node_poi_get_info db 'tl_node_poi_get_info',0 sz_tl_node_poi_get_next_info db 'tl_node_poi_get_next_info',0 sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0 align 4 import_libini: dd alib_init0 ini_get_str dd aini_get_str ini_get_int dd aini_get_int ini_get_color dd aini_get_color dd 0,0 alib_init0 db 'lib_init',0 aini_get_str db 'ini_get_str',0 aini_get_int db 'ini_get_int',0 aini_get_color db 'ini_get_color',0 align 4 import_buf2d: init dd sz_init buf2d_create dd sz_buf2d_create buf2d_create_f_img dd sz_buf2d_create_f_img buf2d_clear dd sz_buf2d_clear buf2d_draw dd sz_buf2d_draw buf2d_delete dd sz_buf2d_delete buf2d_line dd sz_buf2d_line buf2d_rect_by_size dd sz_buf2d_rect_by_size buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size buf2d_circle dd sz_buf2d_circle buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2 buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2 buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8 buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32 buf2d_bit_blt dd sz_buf2d_bit_blt buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha buf2d_curve_bezier dd sz_buf2d_curve_bezier buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix buf2d_draw_text dd sz_buf2d_draw_text buf2d_crop_color dd sz_buf2d_crop_color buf2d_offset_h dd sz_buf2d_offset_h buf2d_flood_fill dd sz_buf2d_flood_fill buf2d_set_pixel dd sz_buf2d_set_pixel dd 0,0 sz_init db 'lib_init',0 sz_buf2d_create db 'buf2d_create',0 sz_buf2d_create_f_img db 'buf2d_create_f_img',0 sz_buf2d_clear db 'buf2d_clear',0 sz_buf2d_draw db 'buf2d_draw',0 sz_buf2d_delete db 'buf2d_delete',0 sz_buf2d_line db 'buf2d_line',0 sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0 sz_buf2d_circle db 'buf2d_circle',0 sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0 sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0 sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0 sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0 sz_buf2d_bit_blt db 'buf2d_bit_blt',0 sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0 sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0 sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0 sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0 sz_buf2d_draw_text db 'buf2d_draw_text',0 sz_buf2d_crop_color db 'buf2d_crop_color',0 sz_buf2d_offset_h db 'buf2d_offset_h',0 sz_buf2d_flood_fill db 'buf2d_flood_fill',0 sz_buf2d_set_pixel db 'buf2d_set_pixel',0 \ No newline at end of file diff --git a/programs/media/log_el/trunk/le_pole.inc b/programs/media/log_el/trunk/le_pole.inc index 53431cbd4b..492ae2e6e4 100644 --- a/programs/media/log_el/trunk/le_pole.inc +++ b/programs/media/log_el/trunk/le_pole.inc @@ -219,13 +219,13 @@ proc but_test_pole, pole:dword mov eax,pole_b_sort mov edi,open_file_lif stdcall convert_int_to_str - stdcall [buf2d_draw_text], buf_0, buf_font,edi,5,ebx,color_s0 ;рисуем b_sort + stdcall [buf2d_draw_text], buf_0, buf_font,edi,5,ebx,[shem_colors] ;рисуем b_sort add ebx,18 mov eax,[esi] add esi,4 stdcall convert_int_to_str - stdcall [buf2d_draw_text], buf_0, buf_font,edi,5,ebx,color_s0 ;рисуем число точек + stdcall [buf2d_draw_text], buf_0, buf_font,edi,5,ebx,[shem_colors] ;рисуем число точек add ebx,9 cmp ecx,1 @@ -245,7 +245,7 @@ proc but_test_pole, pole:dword mov eax,[esi] add esi,4 stdcall convert_int_to_str - stdcall [buf2d_draw_text], buf_0, buf_font,edi,5,ebx,color_border ;рисуем 4 строки указателей + stdcall [buf2d_draw_text], buf_0, buf_font,edi,5,ebx,[color_border] ;рисуем 4 строки указателей add ebx,9 loop @b @@ -797,7 +797,7 @@ proc pole_paint, pole:dword dec ebx add ecx,2 add edx,2 - stdcall [buf2d_rect_by_size], buf_0, eax,ebx, ecx,edx, color_border + stdcall [buf2d_rect_by_size], buf_0, eax,ebx, ecx,edx, [color_border] ;eax -> firstC ;ebx -> i diff --git a/programs/media/log_el/trunk/log_el.asm b/programs/media/log_el/trunk/log_el.asm index bd5c41c4c0..ab3035c9b4 100644 --- a/programs/media/log_el/trunk/log_el.asm +++ b/programs/media/log_el/trunk/log_el.asm @@ -9,13 +9,16 @@ use32 dd 0 dd sys_path -color_border equ 0xff0000 +ini_def_c_bkgnd equ 0 +ini_def_c_border equ 0xff0000 color_s0 equ 0xff ;сигнал 0 color_s1 equ 0xffffff ;сигнал 1 color_s2 equ 0xff00 ;точка без пересечения color_s3 equ 0xff0000 ;временное значение для сохранения color_caption equ 0x808080 +color_border dd ini_def_c_border + debug equ 0 ;номара иконок: @@ -50,7 +53,7 @@ include 'le_pole.inc' include 'le_signal.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load -caption db 'Логические элементы 26.03.12',0 ;подпись окна +caption db 'Логические элементы 29.03.12',0 ;подпись окна panel_0_coord_top equ 5 ;верхняя координата 0-го ряда панели инструментов panel_1_coord_top equ 35 @@ -164,7 +167,7 @@ run_file_70 FileInfoBlock image_data dd 0 ;указатель на временную память. для нужен преобразования изображения IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3 -IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*24 +IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*25 image_data_toolbar dd 0 TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;размер bmp файла с системными иконками @@ -217,7 +220,13 @@ macro load_image_file path,buf,size { ; @@: } - +ini_name db 'log_el.ini',0 ;имя файла +ini_sec_color db 'Colors',0 +key_color_bkgnd db 'background',0 +key_color_border db 'border',0 +key_color_s0 db 's0',0 +key_color_s1 db 's1',0 +key_color_s2 db 's2',0 align 4 start: @@ -230,7 +239,23 @@ start: @@: mcall 48,3,sc,sizeof.system_colors mcall 40,0x27 - stdcall [OpenDialog_Init],OpenDialog_data ;подготовка диалога + + ;*** считывание настроек из *.ini файла + copy_path ini_name,sys_path,file_name,0x0 + + stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_bkgnd,ini_def_c_bkgnd + mov dword[buf_0.color],eax + stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_border,ini_def_c_border + mov dword[color_border],eax + stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_s0,color_s0 + mov dword[shem_colors],eax + stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_s1,color_s1 + mov dword[shem_colors+4],eax + stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_s2,color_s2 + mov dword[shem_colors+8],eax + + ;*** подготовка диалога + stdcall [OpenDialog_Init],OpenDialog_data stdcall [buf2d_create], buf_0 ;создание буфера load_image_file 'toolbar.png', image_data_toolbar,IMAGE_TOOLBAR_SIZE @@ -282,6 +307,7 @@ start: loop @b stdcall [tl_cur_beg], tree2 + ;*** установка времени для таймера mcall 26,9 mov [last_time],eax @@ -814,7 +840,7 @@ pushad mov esi,[sc.work_button] int 0x40 - add ebx,25 shl 16 + add ebx,30 shl 16 mov edx,31 int 0x40 @@ -830,6 +856,10 @@ pushad mov edx,34 int 0x40 + add ebx,25 shl 16 + mov edx,35 + int 0x40 + ; *** рисование иконок на кнопках *** mov eax,7 mov ebx,[image_data_toolbar] @@ -840,19 +870,23 @@ pushad int 0x40 add ebx,IMAGE_TOOLBAR_ICON_SIZE - add edx,(25 shl 16) ;icon pen 1 + add edx,(30 shl 16) ;icon - рисование провода int 0x40 add ebx,IMAGE_TOOLBAR_ICON_SIZE - add edx,(25 shl 16) ;icon pen 2 + add edx,(25 shl 16) ;icon - рисование пересечений проводов int 0x40 add ebx,IMAGE_TOOLBAR_ICON_SIZE - add edx,(25 shl 16) ;icon pen 3 + add edx,(25 shl 16) ;icon - рисование логических элементов int 0x40 add ebx,IMAGE_TOOLBAR_ICON_SIZE - add edx,(25 shl 16) ;icon add elemet + add edx,(25 shl 16) ;icon - рисование подписей + int 0x40 + + add ebx,IMAGE_TOOLBAR_ICON_SIZE + add edx,(25 shl 16) ;icon - затирачка int 0x40 mcall 12,2 @@ -977,13 +1011,13 @@ button: stdcall set_pen_mode,2,1,((9 shl 8)+9) shl 16 @@: cmp ah,33 - jne @f - stdcall set_pen_mode,3,2,((15 shl 8)+9) shl 16 ;установка режима стирания провода - @@: - cmp ah,34 jne @f stdcall set_pen_mode,4,3,((9 shl 8)+9) shl 16 ;установка режима создания элементов @@: + cmp ah,35 + jne @f + stdcall set_pen_mode,3,2,((15 shl 8)+9) shl 16 ;установка режима стирания провода + @@: cmp ah,1 jne still .exit: @@ -2309,7 +2343,7 @@ buf_0: dd 0 ; .t: dw panel_1_coord_top ;+6 top .w: dd 395 ;+8 w .h: dd 340 ;+12 h -.color: dd 0 ;+16 color +.color: dd ini_def_c_bkgnd ;+16 color db 24 ;+20 bit in pixel align 4 diff --git a/programs/media/log_el/trunk/log_el.ini b/programs/media/log_el/trunk/log_el.ini new file mode 100644 index 0000000000..2a4147b2e6 --- /dev/null +++ b/programs/media/log_el/trunk/log_el.ini @@ -0,0 +1,6 @@ +[Colors] +background=255,255,255 ;ЎтхЄ Їюэр +border=128,0,0 ;... уЁрэшЎ√ +s0 = 0,128,255 ;... яЁютюфр +s1 = 255,0,0 ;... ёшуэрыр +s2 = 0,0,192 ;... яхЁхёхўхэшщ \ No newline at end of file diff --git a/programs/media/log_el/trunk/toolbar.png b/programs/media/log_el/trunk/toolbar.png index e781d3f5a12dd32f64e99bc3449caa7f85eb501c..6b1d47fc4e0f9495ad24c4fc796e8c63476d5c41 100644 GIT binary patch delta 4722 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 AsQ>@~ delta 4647 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