/Users/huttone/Devel/sedflux-new/sedflux/trunk/ew/utils/eh_grid.h

Go to the documentation of this file.
00001 #ifndef __EH_GRID_H__
00002 #define __EH_GRID_H__
00003 
00004 #include <stdio.h>
00005 #include <glib.h>
00006 #include <utils/eh_types.h>
00007 
00008 new_handle( Eh_grid );
00009 derived_handle( Eh_grid , Eh_dbl_grid );
00010 derived_handle( Eh_grid , Eh_int_grid );
00011 
00012 typedef gboolean (*Populate_func)( double , double , gpointer );
00013 
00016 typedef struct
00017 {
00018    int i; //< i-index
00019    int j; //< j-index
00020 }
00021 Eh_ind_2;
00022 
00023 typedef gssize Eh_grid_id;
00024 
00025 Eh_ind_2    eh_ind_2_create          ( int i         , int j          );
00026 gboolean    eh_ind_2_cmp             ( Eh_ind_2 a    , Eh_ind_2 b     );
00027 Eh_ind_2*   eh_ind_2_dup             ( Eh_ind_2 *src , Eh_ind_2 *dest );
00028 
00029 gssize      eh_grid_n_x              ( Eh_grid g );
00030 gssize      eh_grid_n_y              ( Eh_grid g );
00031 gssize      eh_grid_n_el             ( Eh_grid g );
00032 gssize      eh_grid_el_size          ( Eh_grid g );
00033 gssize      eh_grid_low_x            ( Eh_grid g );
00034 gssize      eh_grid_low_y            ( Eh_grid g );
00035 double*     eh_grid_x                ( Eh_grid g );
00036 double*     eh_grid_y                ( Eh_grid g );
00037 void*       eh_grid_row              ( Eh_grid g , gssize row );
00038 void**      eh_grid_data             ( Eh_grid g );
00039 double**    eh_dbl_grid_data         ( Eh_grid g );
00040 double**    eh_dbl_grid_data_start   ( Eh_grid g );
00041 void*       eh_grid_data_start       ( Eh_grid g );
00042 
00043 Eh_grid     eh_grid_set_data         ( Eh_grid g , void** new_data );
00044 Eh_grid     eh_grid_set_x_lin        ( Eh_grid g , double x_0 , double dx );
00045 Eh_grid     eh_grid_set_y_lin        ( Eh_grid g , double y_0 , double dy );
00046 
00047 Eh_grid     eh_grid_malloc           ( gssize n_x   , gssize n_y , gssize size );
00048 Eh_grid     eh_grid_resize           ( Eh_grid g    , gssize n_x , gssize n_y );
00049 Eh_grid     eh_grid_add_row          ( Eh_grid g    , void* new_row );
00050 Eh_grid     eh_grid_add_column       ( Eh_grid g    , void* new_column );
00051 void        eh_grid_free_data        ( Eh_grid g    , gboolean free_data );
00052 Eh_grid     eh_grid_destroy          ( Eh_grid g    , gboolean free_data );
00053 
00054 void        eh_grid_dump             ( FILE *fp     , Eh_grid g );
00055 Eh_grid     eh_grid_load             ( FILE *fp );
00056 
00057 gboolean    eh_grid_cmp_data         ( Eh_grid g_1  , Eh_grid g_2 );
00058 gboolean    eh_grid_cmp_x_data       ( Eh_grid g_1  , Eh_grid g_2 );
00059 gboolean    eh_grid_cmp_y_data       ( Eh_grid g_1  , Eh_grid g_2 );
00060 gboolean    eh_grid_cmp              ( Eh_grid g_1  , Eh_grid g_2 );
00061 gboolean    eh_dbl_grid_cmp          ( Eh_dbl_grid g_1 , Eh_dbl_grid g_2 , double eps );
00062 
00063 Eh_grid     eh_grid_dup              ( Eh_grid g );
00064 Eh_grid     eh_grid_copy             ( Eh_grid dest , Eh_grid src );
00065 Eh_grid     eh_grid_copy_data        ( Eh_grid dest , Eh_grid src );
00066 
00067 Eh_grid     eh_grid_reindex          ( Eh_grid g    , gssize low_x , gssize low_y );
00068 gboolean    eh_grid_is_in_domain     ( Eh_grid g    , gssize i , gssize j );
00069 gboolean    eh_grid_is_same_size     ( Eh_grid g_1  , Eh_grid g_2 );
00070 Eh_grid_id  eh_grid_sub_to_id        ( gssize n_j   , gssize i , gssize j );
00071 Eh_ind_2    eh_grid_id_to_sub        ( gssize n_i   , Eh_grid_id id );
00072 
00073 void        eh_dbl_grid_set_val      ( Eh_grid g , gssize i , gssize j , double val );
00074 void        eh_int_grid_set_val      ( Eh_grid g , gssize i , gssize j , int val    );
00075 double      eh_dbl_grid_val          ( Eh_dbl_grid g   , gssize i     , gssize j            );
00076 int         eh_int_grid_val          ( Eh_int_grid g   , gssize i     , gssize j            );
00077 void*       eh_grid_loc              ( Eh_grid     g   , gssize i     , gssize j            );
00078 
00079 int         eh_dbl_grid_write        ( FILE* fp        , Eh_dbl_grid g                      );
00080 gboolean    eh_grid_is_compatible    ( Eh_grid g_1     , Eh_grid g_2                        );
00081 void        eh_grid_foreach          ( Eh_grid g       , GFunc func    , gpointer user_data );
00082 
00083 Eh_dbl_grid eh_dbl_grid_add          ( Eh_dbl_grid g_1 , Eh_dbl_grid g_2                    );
00084 Eh_dbl_grid eh_dbl_grid_subtract     ( Eh_dbl_grid g_1 , Eh_dbl_grid g_2                    );
00085 double      eh_dbl_grid_sum          ( Eh_dbl_grid g                                        );
00086 double      eh_dbl_grid_sum_bad_val  ( Eh_dbl_grid g   , double bad_val                     );
00087 Eh_dbl_grid eh_dbl_grid_set          ( Eh_dbl_grid g   , double val                         );
00088 Eh_dbl_grid eh_dbl_grid_randomize    ( Eh_dbl_grid g );
00089 void        eh_dbl_grid_scalar_mult  ( Eh_dbl_grid g   , double val                         );
00090 Eh_dbl_grid eh_dbl_grid_rotate       ( Eh_dbl_grid g   , double angle  ,
00091                                        gssize i_0      , gssize j_0    , double* err        );
00092 Eh_dbl_grid eh_dbl_grid_reduce       ( Eh_dbl_grid g   , gssize new_nx , gssize new_ny      );
00093 Eh_dbl_grid eh_dbl_grid_expand       ( Eh_dbl_grid g   , gssize new_nx , gssize new_ny      );
00094 Eh_dbl_grid eh_dbl_grid_remesh       ( Eh_dbl_grid g   , gssize new_nx , gssize new_ny      );
00095 
00096 void        interpolate_2            ( Eh_dbl_grid source , Eh_dbl_grid dest ) G_GNUC_DEPRECATED;
00097 void        interpolate_2_bad_val    ( Eh_dbl_grid source , Eh_dbl_grid dest , double bad_val ) G_GNUC_DEPRECATED;
00098 
00099 Eh_grid_id* eh_dbl_grid_line_ids     ( Eh_dbl_grid g   , gssize i_0 , gssize j_0 ,
00100                                                          gssize i_1 , gssize j_1 );
00101 gssize      eh_grid_path_len         ( gssize* p );
00102 gboolean    eh_grid_path_is_same     ( gssize* p_1 , gssize* p_2 );
00103 Eh_grid     eh_grid_sub              ( Eh_grid g       , gssize i_0    , gssize j_0 ,
00104 
00105                                                          gssize n_x    , gssize n_y         );
00106 void        eh_dbl_grid_rebin        ( Eh_dbl_grid src , Eh_dbl_grid dest                   );
00107 void        eh_dbl_grid_rebin_bad_val( Eh_dbl_grid src , Eh_dbl_grid dest , double val      );
00108 
00109 Eh_dbl_grid eh_dbl_grid_populate     ( Eh_dbl_grid g   , Populate_func f , gpointer user_data );
00110 
00111 void        eh_dbl_grid_fprintf      ( FILE* fp        , const gchar* format , Eh_dbl_grid g );
00112 Eh_grid     eh_grid_transpose        ( Eh_grid g );
00113 Eh_dbl_grid eh_dbl_grid_diff         ( Eh_dbl_grid g , gssize n , gssize dim );
00114 
00115 Eh_dbl_grid eh_dbl_grid_new_set      ( gint n_x , gint n_y , double** d );
00116 
00117 #define eh_grid_val( g , t , i , j ) ( *((t*)eh_grid_loc(g,i,j)) )
00118 #define eh_grid_new( t , n_x , n_y ) eh_grid_malloc( (n_x) , (n_y) , sizeof(t) )
00119 #define eh_grid_new_uniform( t , n_x , n_y , dx , dy ) eh_grid_malloc_uniform( (n_x) , (n_y) , sizeof(t) , dx , dy )
00120 
00121 #endif

Generated on Fri Jan 4 18:04:16 2008 for sedflux by  doxygen 1.5.2