00001 #ifndef ADD_RINGWIDTHS_H
00002 #define ADD_RINGWIDTHS_H 1
00003 #include "mosaic.h"
00004 #include "chain.h"
00005 #include "trees_widthvec.h"
00006 #include "trees_profile.h"
00007 #include "boundary.h"
00008 #include "project_utilities.h"
00009
00010 BEGIN_C_DECLARATIONS
00011
00012
00013 #define INVALID_ID INT_MIN
00014
00015 void provisionalrings_destruct (void *data);
00016
00017 void scale_boundary (BOUNDER * bound, double scale);
00018
00019 LIST_NODE * make_chain (BOUNDER * bound);
00020
00021 void chain_extrapolate (IMAGE_BYTE * mimage, MOSAIC_INDEX * mindex,
00022 double scale, double x, double y,
00023 double orig_x, double orig_y, double orig_phi,
00024 LIST_NODE * guide, BOUNDBOX_LIST box,
00025 double *width, PROFILE_LIST * prof,
00026 LIST_NODE ** extrapolated,
00027 LIST_NODE ** small_extrapolated);
00028
00029 void chain_interpolate (IMAGE_BYTE * mimage, MOSAIC_INDEX * mindex,
00030 double scale, double x, double y,
00031 LIST_NODE * inner, LIST_NODE * outer,
00032 BOUNDBOX_LIST box, double *w_before,
00033 PROFILE_LIST * prof_before, double *w_after,
00034 PROFILE_LIST * prof_after, LIST_NODE ** interpolated,
00035 LIST_NODE ** small_interpolated);
00036
00037 void chain_collapse (IMAGE_BYTE * mimage, MOSAIC_INDEX * mindex,
00038 LIST_NODE * inner, LIST_NODE * outer, double *width,
00039 PROFILE_LIST * prof);
00040
00041 int provisional_point_in_roi (MOSAIC_INDEX * mindex, double x, double y);
00042
00043 double provisional_point_distance (double x, double y, LIST_NODE * boundary);
00044
00045 int provisional_insert (char *doc, int provbnum, IMAGE_BYTE * mimage,
00046 MOSAIC_INDEX * mindex, double scale,
00047 double x, double y,
00048 LIST_NODE * inner, LIST_NODE * outer);
00049
00050 int provisional_extend (char *doc, int provbnum, IMAGE_BYTE * mimage,
00051 MOSAIC_INDEX * mindex, double scale,
00052 double x, double y,
00053 LIST_NODE * initial, LIST_NODE * final);
00054
00055 int provisional_delete (char *doc, int provbnum, IMAGE_BYTE * mimage,
00056 MOSAIC_INDEX * mindex, LIST_NODE * inner,
00057 LIST_NODE * deleted, LIST_NODE * outer,
00058 LIST_NODE * small);
00059
00060 int provisional_missing (char *doc, int provbnum, IMAGE_BYTE * mimage,
00061 MOSAIC_INDEX * mindex, BOUNDBOX_LIST bbox,
00062 LIST_NODE * guide, LIST_NODE * small);
00063
00064 int provisional_check (double x, double y,
00065 LIST_NODE * inner, LIST_NODE * outer);
00066
00067 int have_provisional_changes (char * doc, char * pname);
00068
00069 LIST_NODE * get_provisional_full_chain (char * doc, char * pname);
00070
00071 LIST_NODE * get_provisional_small_chain (char * doc, char * pname);
00072
00073 int get_provisional_insert_point (char * doc, char * pname);
00074
00075 int find_provisional_widths (char * doc, char * pname, double * * widthhandle);
00076
00077 int find_provisional_profiles (char * doc, char * pname,
00078 PROFILE_LIST * * profhandle);
00079
00080 int find_provisional_diff_profiles (char * doc, char * pname,
00081 PROFILE_LIST * * diffprofhandle);
00082
00083 int find_provisional_earlywidths (char * doc, char * pname,
00084 double * * earlywidthhandle);
00085
00086 int find_provisional_latewidths (char * doc, char * pname,
00087 double * * latewidthhandle);
00088
00089 int find_provisional_boundbox (char * doc, char * pname,
00090 BOUNDBOX_LIST * boundboxhandle);
00091
00092 END_C_DECLARATIONS
00093
00094 #endif