[772] | 1 | /* ------------------ */ |
---|
| 2 | /* --- nrarith2.c --- */ |
---|
| 3 | /* ------------------ */ |
---|
| 4 | |
---|
| 5 | /* |
---|
| 6 | * Copyright (c) 2000-2014, Lionel Lacassagne, All rights reserved |
---|
| 7 | * Univ Paris Sud XI, CNRS |
---|
| 8 | * |
---|
| 9 | * Distributed under the Boost Software License, Version 1.0 |
---|
| 10 | * see accompanying file LICENSE.txt or copy it at |
---|
| 11 | * http://www.boost.org/LICENSE_1_0.txt |
---|
| 12 | */ |
---|
| 13 | |
---|
| 14 | #include <stdio.h> |
---|
| 15 | #include <stddef.h> |
---|
| 16 | #include <stdlib.h> |
---|
| 17 | #include <malloc.h> |
---|
| 18 | #include <math.h> // fabs |
---|
| 19 | // #include <memory.h> // memcpy |
---|
| 20 | |
---|
| 21 | #include "mypredef.h" |
---|
| 22 | #include "nrtype.h" |
---|
| 23 | #include "nrdef.h" |
---|
| 24 | #include "nrmacro.h" |
---|
| 25 | #include "nrkernel.h" |
---|
| 26 | |
---|
| 27 | /* ------------------------------------------------------------------------------------- */ |
---|
| 28 | IMAGE_EXPORT(void) addcnz_bmatrix(byte **src,long nrl,long nrh,long ncl, long nch, byte cte, byte **dst) |
---|
| 29 | /* ------------------------------------------------------------------------------------- */ |
---|
| 30 | { |
---|
| 31 | long i,j; |
---|
| 32 | byte *Xi, *Yi; |
---|
| 33 | |
---|
| 34 | for(i=nrl; i<=nrh; i++) { |
---|
| 35 | Xi = src[i]; |
---|
| 36 | Yi = dst[i]; |
---|
| 37 | for(j=ncl; j<=nch; j++) { |
---|
| 38 | if(Xi[j]) |
---|
| 39 | Yi[j] = Xi[j] + cte; |
---|
| 40 | else |
---|
| 41 | Yi[j] = Xi[j]; |
---|
| 42 | } |
---|
| 43 | } |
---|
| 44 | } |
---|
| 45 | /* ----------------------------------------------------------------------------------- */ |
---|
| 46 | IMAGE_EXPORT(void) addandc_bmatrix(byte **src,long nrl,long nrh,long ncl, long nch, byte cte, byte **dst) |
---|
| 47 | /* ----------------------------------------------------------------------------------- */ |
---|
| 48 | { |
---|
| 49 | long i,j; |
---|
| 50 | byte *Xi, *Yi; |
---|
| 51 | |
---|
| 52 | for(i=nrl; i<=nrh; i++) { |
---|
| 53 | Xi = src[i]; |
---|
| 54 | Yi = dst[i]; |
---|
| 55 | for(j=ncl; j<=nch; j++) { |
---|
| 56 | if(Xi[j]) |
---|
| 57 | Yi[j] = Xi[j] + cte; |
---|
| 58 | else |
---|
| 59 | Yi[j] = Xi[i]; |
---|
| 60 | } |
---|
| 61 | } |
---|
| 62 | } |
---|
| 63 | /* ---------------------------------------------------------------------------------------- */ |
---|
| 64 | IMAGE_EXPORT(void) addandc_si16matrix(sint16 **src,long nrl,long nrh,long ncl, long nch, short cte, sint16 **dst) |
---|
| 65 | /* ---------------------------------------------------------------------------------------- */ |
---|
| 66 | { |
---|
| 67 | long i,j; |
---|
| 68 | sint16 *Xi, *Yi; |
---|
| 69 | |
---|
| 70 | for(i=nrl; i<=nrh; i++) { |
---|
| 71 | Xi = src[i]; |
---|
| 72 | Yi = dst[i]; |
---|
| 73 | for(j=ncl; j<=nch; j++) { |
---|
| 74 | if(Xi[j]) Yi[j] = Xi[j] + cte; |
---|
| 75 | } |
---|
| 76 | } |
---|
| 77 | } |
---|
| 78 | /* ------------------------------------------------------------------------------------------- */ |
---|
| 79 | IMAGE_EXPORT(void) addandc_ui16matrix(uint16 **src,long nrl,long nrh,long ncl, long nch, short cte, uint16 **dst) |
---|
| 80 | /* ------------------------------------------------------------------------------------------ */ |
---|
| 81 | { |
---|
| 82 | long i,j; |
---|
| 83 | uint16 *Xi, *Yi; |
---|
| 84 | |
---|
| 85 | for(i=nrl; i<=nrh; i++) { |
---|
| 86 | Xi = src[i]; |
---|
| 87 | Yi = dst[i]; |
---|
| 88 | for(j=ncl; j<=nch; j++) { |
---|
| 89 | if(Xi[j]) Yi[j] = Xi[j] + cte; |
---|
| 90 | } |
---|
| 91 | } |
---|
| 92 | } |
---|
| 93 | /* ----------------------------------------------------------- */ |
---|
| 94 | IMAGE_EXPORT(int) count_bmatrix(byte **m, long nrl,long nrh,long ncl, long nch) |
---|
| 95 | /* ----------------------------------------------------------- */ |
---|
| 96 | { |
---|
| 97 | long i, j; |
---|
| 98 | int s = 0; |
---|
| 99 | byte *Xi; |
---|
| 100 | |
---|
| 101 | for(i=nrl; i<=nrh; i++) { |
---|
| 102 | Xi = m[i]; |
---|
| 103 | for(j=ncl; j<=nch; j++) { |
---|
| 104 | s += Xi[j]; |
---|
| 105 | } |
---|
| 106 | } |
---|
| 107 | return s; |
---|
| 108 | } |
---|