KarmaLib A Structured Library for Signal and Image Processing and Visualisation Karma is a package for signal and image processing applications. It contains KarmaLib (the structured library and API) and a large number of modules (applications) to perform many standard tasks. KarmaLib provides routines to simplify the interface to the operating system. This includes process management and a powerful connection package. Using a Connection Management tool, the applications developer can launch and connect a number of modules (processes) on a network with ease. The communications support in KarmaLib forms one of the major components to the library. Full authentication and encyption support is included, making the development of secure, network-aware applications trivial. It also provides a highly extensible, recursive, heirarchical data structure with extensive library support. This data structure may be accessed in a very portable, generic fashion by applications and may also be accessed directly when speed is critical. By supplying powerful library routines, data structures may be accessed in an abstract way, removing the need for the applications programmer to write code to deal with complex data structures while also allowing users to pass increasingly complex data structures to modules without the need for recompiliation. The applications programmer is left to concentrate on processing simple sub-structures (typically 1, 2 or 3 dimensional arrays) without incurring any processing overhead. Tiling of multi dimensional arrays is supported transparently, and, using special indexing techniques (also transparent to the application), incur no performance overhead. The library also supplies routines to allow the programmer to transfer data structures as objects to and from named objects (disc files and network connections) without requiring the programmer to pay any attention to data formats, byte swapping machines, word sizes, etc. All data transfers are highly optimised to take advantage of the features of any particular platform and operating system. In addition, data structures may be automatically memory mapped from disc into the process address space, yielding enormous peformance increases when reading large data structures from disc, and also saving swap space. Another major component of KarmaLib is the display support. The display system both provides an abstract interface to the underlying graphics system (ie. the X window system), and also provides much higher level functionality than many graphics libraries. As well as supporting simple geometric primitives and text display, a powerful and flexible image display system is included. This allows the direct mapping of application data structures (ie. 2-D and 3-D arrays) to display windows (canvases). These images may be animated at high speed (such as in a movie tool). The complex machinery required to handle window resize and refresh events, as well as other events (ie. mouse events) is built into the display system. Other facilities such as graphics overlay lists (which are easily networked and shared amongst processes), image editing (a simple painting mechanism, also newtork shareable) and axes display are also supplied. KarmaLib is structured into many "packages", which are collections of routines. All the routines in each package have a designated prefix. For example, the data structure manipulation routines all have the prefix: ds_ The include file needed for each package is based on the common prefix. For example: karma_ds.h The packages are also layered. Level 1 packages are the lowest level, and depend directly on the operating system. Higher level packages are dependent on one or more packages at lower levels. A package at one level is not dependent on any other package at the same or higher level. The number of letters in a package's prefix indicates the level of the package. So, for example, the data structure manipulation routines are a level 2 package. In many cases, certain functionality is provided in packages at various levels. With few exceptions, the highest level packages are recommended for use, as these provide the greatest flexibility, ease of use and are also more highly optimised. The library is divided into a number of individual libraries. The "core" library is linked with -lkarma . This library depends on the Operating System, standard C, math and termcap(3) libraries. For normal Unix systems, link with (using cc as your linker): -lkarma -ltermcap -lm For the VX/MVX, link with: -lkarma -ltask -lm The X11 interface to Karma must be linked with: -lkarmaX11 -lXext -lX11 The XView interface to Karma must be linked with: -lkarmaxview -lxview -lolgx -lX11 The Xt interface to Karma must be linked with: -lkarmaXt -lXt -lX11 The Karma graphics library must be linked with zero or more other libraries, depending on the platform. For X11 based graphics, compile with: -DX11 and link with: -lkarmagraphics -lXext -lX11 For VX based graphics, link with: -lkarmagraphics -lkarmavx -lwm The Karma Widgets library is a collection of Xt widgets in alpha development: the normal structure of Karma is not followed here: not sure how to structure it yet. The documentation is in the source files :-) Below is a brief table of all the packages and the routines which they are comprised of. For the complete API for a package, see the manual pages or the Karma WWW page (http://www.atnf.csiro.au/karma/). ----------------------------------------------------------------------------- Routines to print general error messages Link with: -lkarma a_print_abort a_prog_bug a_func_abort ----------------------------------------------------------------------------- Low level connection routines Link with: -lkarma r_alloc_port r_close_dock r_connect_to_port r_accept_connection_on_dock r_close_connection r_get_bytes_readable r_get_inet_addr_from_host r_read r_write r_test_input_event r_open_stdin r_getenv r_setenv r_gethostname r_get_fq_hostname r_getppid r_open_file r_create_pipe r_get_karmabase r_get_service_number r_get_host_from_display r_get_display_num_from_display r_get_screen_num_from_display r_get_def_port ----------------------------------------------------------------------------- Routines to control daemon mode Link with: -lkarma d_enter_daemon_mode d_test_daemon_mode ----------------------------------------------------------------------------- Routines to manipulate memory blocks Link with: -lkarma m_alloc m_free m_error_notify m_abort m_verify_memory_integrity m_clear m_copy m_copy_blocks m_copy_and_swap_blocks m_fill m_cmp m_dup m_alloc_scratch m_free_scratch ----------------------------------------------------------------------------- Routines to generate random numbers Link with: -lkarma n_gaussian n_uniform ----------------------------------------------------------------------------- Low level routines to convert data Link with: -lkarma p_write_buf_float p_read_buf_float p_write_buf_double p_read_buf_double p_write_buf16s p_read_buf16s p_write_buf32s p_read_buf32s p_write_buf16 p_read_buf16 p_write_buf32 p_read_buf32 p_write_buf64 p_read_buf64 ----------------------------------------------------------------------------- Signal handling routines Link with: -lkarma s_block s_unblock s_unblock_all s_ignore s_int_handler s_term_handler s_check_for_int ----------------------------------------------------------------------------- Low level Transform routines Link with: -lkarma t_c_to_c_1D_fft_float t_c_to_c_many_1D_fft_float t_check_power_of_2 t_r_to_c_many_1D_fft_float ----------------------------------------------------------------------------- Routines to manage callback lists Link with: -lkarma c_register_callback c_unregister_callback c_call_callbacks c_destroy_list ----------------------------------------------------------------------------- Routines to generate periodic events Link with: -lkarma e_dispatch_events e_register_func e_unregister_func e_unix_create_list e_unix_dispatch_events ----------------------------------------------------------------------------- Routines to support work functions Link with: -lkarma w_test_supported w_register_support w_register_notify_func w_work_to_be_done w_do_work w_register_func w_unregister_func ----------------------------------------------------------------------------- Routines to manipulate associative arrays of joined pairs Link with: -lkarma j_create j_destroy j_get_info j_put_pair j_get_pair j_destroy_pair j_get_all_pairs j_get_pair_info ----------------------------------------------------------------------------- Routines to manipulate channel objects Link with: -lkarma ch_open_file ch_open_connection ch_accept_on_dock ch_alloc_port ch_attach_to_asynchronous_descriptor ch_open_stdin ch_create_pipe ch_test_for_asynchronous ch_test_for_connection ch_test_for_local_connection ch_close ch_flush ch_read ch_write ch_close_all_channels ch_seek ch_get_bytes_readable ch_test_for_io ch_tell ch_register_converter ch_unregister_converter ch_tap_io_events ch_get_descriptor ch_map_disc ch_open_memory ch_test_for_mmap ch_get_mmap_addr ch_get_mmap_access_count ch_open_and_fill_memory ch_gets ch_getl ch_puts ch_drain ch_fill ch_printf ch_scanf ch_drain_to_boundary ch_fill_to_boundary ch_create_sink ----------------------------------------------------------------------------- Routines to manage child processes Link with: -lkarma cm_manage cm_unmanage cm_poll cm_poll_silent ----------------------------------------------------------------------------- Routines to compute and write RGB colour values into arrays Link with: -lkarma cf_mandelbrot cf_greyscale1 cf_greyscale2 cf_greyscale3 cf_rainbow1 cf_rainbow2 cf_rainbow3 cf_cyclic1 cf_stripchart cf_random_grey cf_random_pseudocolour cf_velocity_compensating_tones cf_compressed_colourmap_3r2g2b cf_ronekers cf_background cf_heat cf_isophot cf_mono cf_mousse cf_rainbow cf_random cf_rgb cf_smooth cf_staircase cf_mirp cf_rgb2 ----------------------------------------------------------------------------- Routines to manipulate the general data structure Link with: -lkarma ds_alloc_multi ds_alloc_packet_desc ds_alloc_data ds_alloc_packet_subdata ds_alloc_packet ds_alloc_array_desc ds_alloc_tiling_info ds_alloc_dim_desc ds_alloc_list_head ds_alloc_list_entry ds_alloc_array ds_alloc_contiguous_list ds_find_1D_extremes ds_find_2D_extremes ds_find_contiguous_extremes ds_find_single_histogram ds_complex_to_real_1D ds_find_1D_sum ds_put_unique_named_value ds_put_unique_named_string ds_get_unique_named_value ds_get_unique_named_string ds_copy_unique_named_element ds_get_fits_axis ds_cmap_alloc_colourmap ds_cmap_find_colourmap ds_cmap_get_all_colourmaps ds_compare_packet_desc ds_compare_array_desc ds_compare_dim_desc ds_copy_packet ds_copy_desc_until ds_copy_array_desc_until ds_copy_dim_desc ds_copy_data ds_copy_array ds_copy_list ds_select_arrays ds_dealloc_multi ds_dealloc_packet ds_dealloc_data ds_dealloc_packet_subdata ds_dealloc_array_desc ds_dealloc_list ds_dealloc_list_entries ds_dealloc2_list ds_dealloc_array ds_draw_ellipse ds_draw_polygon ds_easy_alloc_array ds_easy_alloc_n_element_array ds_wrap_preallocated_n_element_array ds_easy_alloc_array_desc ds_identify_name ds_f_array_name ds_f_name_in_packet ds_f_name_in_array ds_f_elem_in_packet ds_find_hole ds_f_dim_in_array ds_convert_atomic ds_get_coordinate ds_get_element_offset ds_get_packet_size ds_get_array_size ds_packet_all_data ds_element_is_atomic ds_element_is_named ds_element_is_legal ds_get_array_offset ds_get_coord_num ds_get_element ds_get_elements ds_get_coordinate_array ds_element_is_complex ds_get_scattered_elements ds_can_transfer_element_as_block ds_can_transfer_packet_as_block ds_can_swaptransfer_element ds_get_handle_in_packet ds_get_handle_in_array ds_get_handle_in_list ds_history_append_string ds_history_copy ds_list_insert ds_list_append ds_list_delete ds_list_unfragment ds_list_fragment ds_remove_dim_desc ds_append_dim_desc ds_prepend_dim_desc ds_compute_array_offsets ds_remove_tiling_info ds_append_gen_struct ds_put_element ds_put_elements ds_put_element_many_times ds_put_named_element ds_reorder_array ds_foreach_occurrence ds_foreach_in_array ds_foreach_in_list ds_traverse_and_process ds_traverse_array ds_traverse_list ----------------------------------------------------------------------------- Routines to provide encryption Link with: -lkarma en_idea_init en_idea_cfb en_idea_close ----------------------------------------------------------------------------- Routines to extract data from strings Link with: -lkarma ex_int ex_uint ex_word ex_command ex_word_skip ex_float ex_hour ex_command_skip ex_on ex_on_or_off ex_yes ex_str ----------------------------------------------------------------------------- Routines to save and restore history information Link with: -lkarma hi_read hi_write ----------------------------------------------------------------------------- Routines to do low level initialisation of modules Link with: -lkarma im_register_module_name im_register_module_version_date im_register_lib_version ----------------------------------------------------------------------------- Routines to produce message digests (secure hash functions) Link with: -lkarma md_md5_init md_md5_update md_md5_final md_md5_transform ----------------------------------------------------------------------------- Routines to manage cryptographically strong random pools Link with: -lkarma rp_create rp_add_bytes rp_get_bytes rp_destroy rp_destroy_all rp_add_time_noise rp_register_destroy_func ----------------------------------------------------------------------------- String manipulation routines Link with: -lkarma st_find st_chr st_cmp_wild st_cspn st_icmp st_lwr st_nicmp st_nupr st_nlwr st_pbrk st_rchr st_spn st_tok st_tol st_upr st_dup st_qsort ----------------------------------------------------------------------------- Routines to perform optimised vector arithmetic operations Link with: -lkarma va_scale_float ----------------------------------------------------------------------------- Routines to manage a thread pool (MultiThreading support) Link with: -lkarma mt_create_pool mt_get_shared_pool mt_destroy_pool mt_destroy_all_pools mt_num_threads mt_launch_job mt_setlock mt_new_thread_info mt_get_thread_info mt_wait_for_all_jobs ----------------------------------------------------------------------------- Routines to manage events on (file) descriptors Link with: -lkarma dm_unmanage dm_native_setup dm_native_poll ----------------------------------------------------------------------------- Routines for loading shared objects Link with: -lkarma dl_load_object ----------------------------------------------------------------------------- Routines to generate icon pixmaps Link with: -lkarmaX11 ic_write_kplot_icon ic_write_kscat_icon ic_write_funcgen_icon ic_write_kimage_icon ic_write_karma_cm_icon ic_write_datasource_icon ic_write_datasink_icon ic_write_datafilter_icon ----------------------------------------------------------------------------- Routines to manipulate X displays and colourmaps Link with: -lkarmaX11 xc_get_dpy_handle xc_alloc_colours xc_free_colours xc_store_colours xc_get_cmap ----------------------------------------------------------------------------- Routines to manipulate XImage structures Link with: -lkarmaX11 xi_check_shared_images_available xi_create_image xi_create_shm_image xi_destroy_image xi_put_image ----------------------------------------------------------------------------- Routines to query X visuals Link with: -lkarmaX11 xv_get_vinfos xv_get_visuals xv_get_visinfo_for_visual ----------------------------------------------------------------------------- Routines to manipulate a VX display and colourmaps Link with: -lkarmavx vc_get_dpy_handle vc_alloc_colours vc_free_colours vc_store_colours vc_store_colours_24bit vc_get_location vc_set_visualtype vc_get_visualtype ----------------------------------------------------------------------------- Routines to provide channel encryption Link with: -lkarma cen_idea ----------------------------------------------------------------------------- Routines to manage channel objects Link with: -lkarma chm_manage chm_unmanage ----------------------------------------------------------------------------- Routines to scan directories Link with: -lkarma dir_open dir_read dir_close ----------------------------------------------------------------------------- Routines to dump an ASCII representation of a data structure Link with: -lkarma dmp_multi_desc dmp_packet_desc dmp_element_desc dmp_array_desc dmp_dim_desc dmp_multi_data dmp_packet dmp_element dmp_array dmp_list dmp_flag ----------------------------------------------------------------------------- Routines to convert between image formats Link with: -lkarma imc_24to8 ----------------------------------------------------------------------------- Routines to write raw images Link with: -lkarma imw_to8_lossy imw_to8_oi ----------------------------------------------------------------------------- Routines to convert and transfer host data to channel objects Link with: -lkarma pio_write64 pio_read64 pio_write32 pio_read32 pio_write16 pio_read16 pio_write_float pio_read_float pio_read_float_nantrap pio_write_double pio_read_double pio_read_double_nantrap pio_write32s pio_read32s pio_write16s pio_read16s pio_write_swap pio_read_swap pio_write_string pio_read_string ----------------------------------------------------------------------------- Routines to write PostScript Link with: -lkarma psw_va_create psw_mono_image psw_pseudocolour_image psw_rgb_image psw_directcolour_image psw_close psw_finish psw_rgb_line psw_rgb_polygon psw_rgb_ellipse psw_rgb_text psw_set_attributes ----------------------------------------------------------------------------- Routines to scan values from channel objects Link with: -lkarma chs_get_value chs_get_float chs_get_int chs_get_line ----------------------------------------------------------------------------- Routines to interface with PGP Link with: -lkarma pgp_decrypt pgp_encrypt ----------------------------------------------------------------------------- Routines to convert between colour spaces Link with: -lkarma col_hsb_slice_to_rgb_array ----------------------------------------------------------------------------- Routines for Glish library support Link with: -lkarma gls_test_available ----------------------------------------------------------------------------- Routines to support Astronomical sky-projections Link with: -lkarma ----------------------------------------------------------------------------- Routines for loading shared object extensions Link with: -lkarma ----------------------------------------------------------------------------- Routines to manage file descriptors using the Xt toolkit Link with: -lkarmaXt dmx_register_app_context ----------------------------------------------------------------------------- Routines to asynchronously read from the standard input Link with: -lkarma arln_read_float arln_read_int arln_read_flag arln_read_line arln_read_from_stdin ----------------------------------------------------------------------------- Routines to manipulate connections Link with: -lkarma conn_register_server_protocol conn_register_client_protocol conn_get_channel conn_attempt_connection conn_close conn_become_server conn_get_num_serv_connections conn_get_num_client_connections conn_get_serv_connection conn_get_client_connection conn_get_connection_info conn_controlled_by_cm_tool conn_get_connection_module_name conn_register_cm_quiescent_func conn_extract_protocols ----------------------------------------------------------------------------- Routines to read an ASCII data structure from an open channel Link with: -lkarma dsra_multi_desc dsra_packet_desc dsra_element_desc dsra_array_desc dsra_dim_desc dsra_multi_data dsra_packet dsra_element dsra_array dsra_list dsra_flag dsra_type dsra_uint dsra_int dsra_float dsra_double ----------------------------------------------------------------------------- Routines to read and write a data structure from/to channels Link with: -lkarma dsrw_write_multi dsrw_write_multi_header dsrw_write_packet_desc dsrw_write_element_desc dsrw_write_array_desc dsrw_write_dim_desc dsrw_write_packet dsrw_write_element dsrw_write_array dsrw_write_list dsrw_write_packets dsrw_write_flag dsrw_read_multi dsrw_read_multi_header dsrw_read_packet_desc dsrw_read_array_desc dsrw_read_dim_desc dsrw_read_packet dsrw_read_element dsrw_read_array dsrw_read_list dsrw_read_packets dsrw_read_flag dsrw_read_type ----------------------------------------------------------------------------- Manipulate pixel canvases in a device independent way Link with: -lkarmagraphics kwin_create_x kwin_set_gc_x kwin_get_gc_x kwin_create_child kwin_register_refresh_func kwin_register_position_event_func kwin_resize kwin_process_position_event kwin_get_attributes kwin_set_attributes kwin_clear kwin_draw_pc_image kwin_draw_rgb_image kwin_draw_cached_image kwin_draw_point kwin_draw_points kwin_draw_line kwin_draw_lines kwin_fill_ellipse kwin_fill_polygon kwin_draw_string kwin_draw_rectangle kwin_fill_rectangle kwin_draw_ellipse kwin_draw_ellipses kwin_draw_ellipses_TRANSITION kwin_fill_ellipses kwin_fill_ellipses_TRANSITION kwin_draw_segments kwin_get_size kwin_free_cache_data kwin_convert_to_canvas_coord kwin_convert_from_canvas_coord kwin_get_colour kwin_load_font kwin_get_string_size kwin_write_ps kwin_xgl_test_stereo kwin_xgl_create_stereo ----------------------------------------------------------------------------- Routines to manipulate colourmaps Link with: -lkarma kcmap_va_create kcmap_add_RGB_func kcmap_register_resize_func kcmap_change kcmap_modify kcmap_modify_direct_type kcmap_list_funcs kcmap_get_funcs_for_cmap kcmap_get_active_func kcmap_get_pixels kcmap_notify_pixels_changed kcmap_get_pixel kcmap_prepare_for_slavery kcmap_copy_to_struct kcmap_copy_from_struct kcmap_get_rgb_values kcmap_get_attributes kcmap_set_attributes ----------------------------------------------------------------------------- Routines to transfer data structures over connections Link with: -lkarma dsxfr_register_connection_limits dsxfr_put_multi dsxfr_get_multi dsxfr_register_read_func dsxfr_register_close_func ----------------------------------------------------------------------------- Routines to manipulate 2D (image) editing instructions Link with: -lkarma iedit_create_list iedit_get_instruction_desc iedit_alloc_edit_coords iedit_get_edit_coords iedit_add_instruction iedit_remove_instructions iedit_apply_instructions iedit_get_list iedit_make_list_default_master iedit_make_list_default_slave ----------------------------------------------------------------------------- Routines to manipulate control panels (user interface code) Link with: -lkarma panel_create panel_create_group panel_add_item panel_push_onto_stack panel_pop_from_stack panel_process_command_with_stack ----------------------------------------------------------------------------- Routines to dispatch events to other programmes Link with: -lkarma ----------------------------------------------------------------------------- Routines to process named objects Link with: -lkarma dsproc_object ----------------------------------------------------------------------------- Routines to manipulate Intelligent Arrays Link with: -lkarma iarray_num_dim iarray_type iarray_value_name iarray_register_destroy_func iarray_get_image_from_multi iarray_get_movie_from_multi iarray_read_nD iarray_write iarray_create iarray_get_from_multi_array iarray_dealloc iarray_put_named_value iarray_put_named_string iarray_get_named_value iarray_get_named_string iarray_get_sub_array_2D iarray_get_2D_slice_from_3D iarray_remap_torus iarray_dim_length iarray_dim_name iarray_set_world_coords iarray_get_world_coords iarray_get_dim_desc iarray_get_restrictions iarray_copy_data iarray_fill iarray_min_max iarray_scale_and_offset iarray_add_and_scale iarray_sub_and_scale iarray_compute_histogram iarray_sum iarray_dim_index iarray_get_data_scaling iarray_create_from_template iarray_get_coordinate iarray_set_dim_name iarray_append_history_string iarray_copy_named_element iarray_get_fits_axis iarray_write_mono_ps iarray_write_pseudocolour_ps iarray_write_rgb_ps iarray_create_1D iarray_create_2D iarray_create_3D iarray_create_4D iarray_put_double iarray_put_float iarray_put_int iarray_get_double iarray_get_float iarray_get_int iarray_fill_double iarray_fill_float iarray_fill_int iarray_min_max_float iarray_min_max_int iarray_scale_and_offset_float iarray_scale_and_offset_int ----------------------------------------------------------------------------- Routines to initialise and sequence modules Link with: -lkarma module_run module_process_argvs ----------------------------------------------------------------------------- Routines to provide miscellaneous Xt support Link with: -lkarmaXt xtmisc_event_create_list xtmisc_set_icon xtmisc_init_app_initialise xtmisc_popup_cbk xtmisc_exclusive_popup_cbk xtmisc_popdown_cbk xtmisc_toggle_cbk xtmisc_support_work_funcs ----------------------------------------------------------------------------- Routines to manipulate world canvases Link with: -lkarmagraphics canvas_draw_edit_list canvas_draw_edit_object canvas_create canvas_register_refresh_func canvas_register_size_control_func canvas_register_position_event_func canvas_get_attributes canvas_set_attributes canvas_resize canvas_specify canvas_get_specification canvas_convert_to_canvas_coords canvas_convert_from_canvas_coords canvas_register_coords_convert_func canvas_coords_transform canvas_register_transforms_func canvas_get_pixcanvas canvas_get_colour canvas_set_dressing canvas_get_dressing canvas_sequence_dressing_refresh canvas_draw_dressing canvas_get_cmap canvas_draw_image canvas_draw_rgb_image canvas_draw_point canvas_draw_point_p canvas_draw_line canvas_draw_line_p canvas_draw_ellipse canvas_draw_ellipse_p canvas_fill_ellipse canvas_fill_ellipse_p canvas_fill_polygon canvas_draw_rectangle canvas_draw_rectangle_p canvas_fill_rectangle canvas_fill_rectangle_p canvas_draw_lines canvas_draw_lines_p canvas_draw_segments canvas_draw_segments_p canvas_init_win_scale canvas_use_log_scale canvas_create_stroke_instruction ----------------------------------------------------------------------------- Routines to convert between Karma and other data formats Link with: -lkarma foreign_fits_read_header foreign_fits_read_data foreign_fits_write foreign_fits_write_iarray foreign_gipsy_test foreign_gipsy_read_header foreign_gipsy_read_data foreign_gipsy_read foreign_gipsy_write foreign_gipsy_write_iarray foreign_guess_and_read foreign_miriad_read_header foreign_miriad_read foreign_miriad_write foreign_miriad_write_iarray foreign_guess_format_from_filename foreign_pgm_read foreign_ppm_read foreign_ppm_write foreign_sunras_read foreign_sunras_write ----------------------------------------------------------------------------- Routines to support volume rendering Link with: -lkarma vrender_create_context vrender_set_context_attributes vrender_get_context_attributes vrender_register_shader vrender_change_shader_blank_packet vrender_get_shaders vrender_to_buffer vrender_collect_ray vrender_project_3d vrender_compute_caches vrender_image_desc_notify_func vrender_cache_notify_func vrender_view_notify_func vrender_message_notify_func vrender_client_notify_func vrender_get_eye_info ----------------------------------------------------------------------------- Routines to manipulate 2-dimensional (image) overlay objects Link with: -lkarmagraphics overlay_va_create_list overlay_specify_iarray_2d overlay_specify_canvas overlay_associate_display_canvas overlay_unassociate_display_canvas overlay_redraw_on_canvas overlay_line overlay_lines overlay_text overlay_ellipse overlay_filled_polygon overlay_vector overlay_ellipses overlay_segments overlay_vectors overlay_remove_objects overlay_remove_object overlay_move_object ----------------------------------------------------------------------------- Routines to manipulate viewable images Link with: -lkarmagraphics viewimg_draw_edit_list viewimg_draw_edit_object viewimg_init viewimg_create_restr viewimg_create viewimg_create_from_iarray viewimg_create_sequence viewimg_create_sequence_from_iarray viewimg_create_rgb viewimg_create_rgb_sequence viewimg_make_active viewimg_set_active viewimg_register_data_change viewimg_destroy viewimg_get_active viewimg_test_active viewimg_register_position_event_func viewimg_fill_ellipse viewimg_fill_polygon viewimg_get_canvas_attributes viewimg_set_canvas_attributes viewimg_get_attributes viewimg_set_attributes viewimg_set_array_attributes viewimg_get_worldcanvas ----------------------------------------------------------------------------- Routines to manipulate contour images Link with: -lkarmagraphics contour_init contour_create_restr contour_create_from_iarray contour_create_sequence contour_create_sequence_from_iarray contour_set_active contour_set_all_inactive contour_register_data_change contour_destroy contour_set_canvas_attributes contour_set_attributes contour_set_levels contour_get_worldcanvas