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_check (double x, double y,
00061 LIST_NODE * inner, LIST_NODE * outer);
00062
00063 int have_provisional_changes (char * doc, char * pname);
00064
00065 LIST_NODE * get_provisional_full_chain (char * doc, char * pname);
00066
00067 LIST_NODE * get_provisional_small_chain (char * doc, char * pname);
00068
00069 int get_provisional_insert_point (char * doc, char * pname);
00070
00071 int find_provisional_widths (char * doc, char * pname, double * * widthhandle);
00072
00073 int find_provisional_profiles (char * doc, char * pname,
00074 PROFILE_LIST * * profhandle);
00075
00076 int find_provisional_diff_profiles (char * doc, char * pname,
00077 PROFILE_LIST * * diffprofhandle);
00078
00079 int find_provisional_earlywidths (char * doc, char * pname,
00080 double * * earlywidthhandle);
00081
00082 int find_provisional_latewidths (char * doc, char * pname,
00083 double * * latewidthhandle);
00084
00085 int find_provisional_boundbox (char * doc, char * pname,
00086 BOUNDBOX_LIST * boundboxhandle);
00087
00088 END_C_DECLARATIONS
00089
00090 #endif