/* ----------------- */ /* --- nrmem2X.c --- */ /* ----------------- */ /* * Copyright (c) 2000-2014, Lionel Lacassagne, All rights reserved * Univ Paris Sud XI, CNRS * */ /* * 2002/06/11 ajout des fonctions endline */ #include #include #include #include // fabs #include "mypredef.h" #include "nrtype.h" #include "nrdef.h" #include "nrmacro.h" #include "nrkernel.h" #include "nrtypex.h" #include "nrmem1.h" #include "nrmem2.h" #include "nrmem2x.h" /* ------------------------------------------ */ /* --- ATTENTION ---------------------------- */ /* ------------------------------------------ */ /* l'utilisation des fonctions endline */ /* necessite l'allocation d'une ligne de plus */ /* (a cause du m[i+1] */ /* ------------------------------------------ */ /* ------------------------------------------------------------------------------------ */ IMAGE_EXPORT(void) reset_endline_bmatrix(byte **m, long nrl, long nrh, long ncl, long nch) /* ------------------------------------------------------------------------------------ */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* --------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) reset_endline_i16matrix(int16 **m, long nrl, long nrh, long ncl, long nch) /* --------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* ----------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) reset_endline_ui16matrix(uint16 **m, long nrl, long nrh, long ncl, long nch) /* ----------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* ----------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) reset_endline_imatrix(int **m, long nrl, long nrh, long ncl, long nch) /* ----------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* --------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) reset_endline_i32matrix(int32 **m, long nrl, long nrh, long ncl, long nch) /* --------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* ----------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) reset_endline_ui32matrix(uint32 **m, long nrl, long nrh, long ncl, long nch) /* ----------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* --------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) reset_endline_i64matrix(int64 **m, long nrl, long nrh, long ncl, long nch) /* --------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; return; } /* ------------------------------------------------------ */ IMAGE_EXPORT(void) endline_bmatrix(byte **m, long i, long l) /* ------------------------------------------------------ */ { m[i+1] = m[i] + l; } /* --------------------------------------------------------- */ IMAGE_EXPORT(void) endline_i16matrix(int16 **m, long i, long l) /* --------------------------------------------------------- */ { m[i+1] = m[i] + l; } /* ----------------------------------------------------------- */ IMAGE_EXPORT(void) endline_ui16matrix(uint16 **m, long i, long l) /* ----------------------------------------------------------- */ { m[i+1] = m[i] + l; } /* ----------------------------------------------------- */ IMAGE_EXPORT(void) endline_imatrix(int **m, long i, long l) /* ----------------------------------------------------- */ { m[i+1] = m[i] + l; } /* --------------------------------------------------------- */ IMAGE_EXPORT(void) endline_i32matrix(int32 **m, long i, long l) /* --------------------------------------------------------- */ { m[i+1] = m[i] + l; } /* ----------------------------------------------------------- */ IMAGE_EXPORT(void) endline_ui32matrix(uint32 **m, long i, long l) /* ----------------------------------------------------------- */ { m[i+1] = m[i] + l; } /* --------------------------------------------------------- */ IMAGE_EXPORT(void) endline_i64matrix(int64 **m, long i, long l) /* --------------------------------------------------------- */ { m[i+1] = m[i] + l; } /* ----------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_bmatrix(byte **m, long i, long l, long ncl) /* ----------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (byte) l; } /* -------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_i16matrix(int16 **m, long i, long l, long ncl) /* -------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (int16) l; } /* ---------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_ui16matrix(uint16 **m, long i, long l, long ncl) /* ---------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (uint16) l; } /* ---------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_imatrix(int **m, long i, long l, long ncl) /* ---------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (int) l; } /* -------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_i32matrix(int32 **m, long i, long l, long ncl) /* -------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (int32) l; } /* ---------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_ui32matrix(uint32 **m, long i, long l, long ncl) /* ---------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (uint32) l; } /* -------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline0_i64matrix(int64 **m, long i, long l, long ncl) /* -------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl] = (int64) l; } /* ----------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_bmatrix(byte **m, long i, long l, long ncl) /* ----------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (byte) l; } /* -------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_i16matrix(int16 **m, long i, long l, long ncl) /* -------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (int16) l; } /* ---------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_ui16matrix(uint16 **m, long i, long l, long ncl) /* ---------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (uint16) l; } /* ---------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_imatrix(int **m, long i, long l, long ncl) /* ---------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (int) l; } /* -------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_i32matrix(int32 **m, long i, long l, long ncl) /* -------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (int32) l; } /* ---------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_ui32matrix(uint32 **m, long i, long l, long ncl) /* ---------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (uint32) l; } /* -------------------------------------------------------------------- */ IMAGE_EXPORT(void) endline1_i64matrix(int64 **m, long i, long l, long ncl) /* -------------------------------------------------------------------- */ { m[i+1] = m[i] + l + 1; m[i][ncl-1] = (int64) l; } /* -------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_si16Pmatrix(si16Point **m, long nrl, long nrh, long ncl, long nch) /* -------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* -------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_ui16Pmatrix(ui16Point **m, long nrl, long nrh, long ncl, long nch) /* -------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* -------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_si32Pmatrix(si32Point **m, long nrl, long nrh, long ncl, long nch) /* -------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* -------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_ui32Pmatrix(ui32Point **m, long nrl, long nrh, long ncl, long nch) /* -------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* ------------------------------------------------------------------------------------ */ IMAGE_EXPORT(void) resize_f32Pmatrix(f32Point **m, long nrl, long nrh, long ncl, long nch) /* ------------------------------------------------------------------------------------ */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } // Triplet Matrix /* ---------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_si16Tmatrix(si16Triplet **m, long nrl, long nrh, long ncl, long nch) /* ---------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* ---------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_ui16Tmatrix(ui16Triplet **m, long nrl, long nrh, long ncl, long nch) /* ---------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* ---------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_si32Tmatrix(si32Triplet **m, long nrl, long nrh, long ncl, long nch) /* ---------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* ---------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_ui32Tmatrix(ui32Triplet **m, long nrl, long nrh, long ncl, long nch) /* ---------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* -------------------------------------------------------------------------------------- */ IMAGE_EXPORT(void) resize_f32Tmatrix(f32Triplet **m, long nrl, long nrh, long ncl, long nch) /* -------------------------------------------------------------------------------------- */ { long i, ncol=nch-ncl+1; for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol; } /* * -------------- * matrix_reverse * -------------- */ /* ---------------------------------------------------------------- */ IMAGE_EXPORT(void) bmatrix_reverse(byte **m, long nrl, long nrh, long ncl, long nch) /* ---------------------------------------------------------------- */ { long i, mrow=(nrl+nrh+1)/2; byte *t; for(i=nrl; i