]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/include/vmfuncs.h
#2502 creaMaracasVisu Feature New Normal - alternation between containers: button...
[creaMaracasVisu.git] / lib / maracasVisuLib / include / vmfuncs.h
index 976cd2ce70bb74ec31cfa5b58b29cd5eadf70fd1..85366a52fc82ea7eb26512654e65d2c7d7ac6218 100644 (file)
@@ -1,3 +1,28 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 ////////////////////////////////////////////////////////////////////////////////
 // vmfuncs.h
 // Creation : 02/02/2000
@@ -29,6 +54,8 @@
 #include <memory.h>
 #include "mathdefs.h"
 
+#include <creaSystem.h>
+
 using namespace std;
 
 namespace gtm
@@ -47,14 +74,14 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorPrint( std::ostream& o, T* v, uint n, bool col )
+    void VectorPrint( std::ostream& o, T* v, uint32_t n, bool col )
     {
-       uint i;
+       uint32_t i;
        
        o << n << ": [";
        if( col ) o << endl;
        else      o << " ";
-       for( uint i = 0; i < n; i++ ) {
+       for( uint32_t i = 0; i < n; i++ ) {
            
            o << v[ i ];
            if( col ) o << endl;
@@ -72,7 +99,7 @@ namespace gtm
      */
     template< class T >
     inline
-    T* VectorAllocateMemory( uint n )
+    T* VectorAllocateMemory( uint32_t n )
     {
        T* v = new T[ n ];
 
@@ -103,7 +130,7 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorAssignMemory( T* v, T* v_o, uint n )
+    void VectorAssignMemory( T* v, T* v_o, uint32_t n )
     {
        memcpy( v, v_o, sizeof( T ) * n );
 
@@ -117,7 +144,7 @@ namespace gtm
      */
     template< class T >
     inline
-    T* VectorCopyMemory( T* v, uint n )
+    T* VectorCopyMemory( T* v, uint32_t n )
     {
        T* n_v = VectorAllocateMemory< T >( n );
        VectorAssignMemory< T >( n_v, v, n );
@@ -134,9 +161,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorAssignScalar( T* v, T s, uint n )
+    void VectorAssignScalar( T* v, T s, uint32_t n )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < n; v[ i ] = s, i++ );
 
@@ -153,9 +180,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorMatrixCast( T** ma, T* v, uint n, uint m, bool col )
+    void VectorMatrixCast( T** ma, T* v, uint32_t n, uint32_t m, bool col )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < ( ( col )? m: n ); i++ )
            ma[ ( col )? n: i ][ ( col )? i: m ] = v[ i ];
@@ -172,9 +199,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorAdd( T* v, T* v_l, T* v_r, uint n )
+    void VectorAdd( T* v, T* v_l, T* v_r, uint32_t n )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < n; v[ i ] = v_l[ i ] + v_r[ i ], i++ );
 
@@ -190,9 +217,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorSubtract( T* v, T* v_l, T* v_r, uint n )
+    void VectorSubtract( T* v, T* v_l, T* v_r, uint32_t n )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < n; v[ i ] = v_l[ i ] - v_r[ i ], i++ );
 
@@ -225,10 +252,10 @@ namespace gtm
      */
     template< class T >
     inline
-    T VectorDotProduct( T* v_l, T* v_r, uint n )
+    T VectorDotProduct( T* v_l, T* v_r, uint32_t n )
     {
        T ret;
-       uint i;
+       uint32_t i;
 
        for( i = 0, ret = ( T )0; i < n; ret = ret + ( v_l[ i ] * v_r[ i ] ), i++ );
        return( ret );
@@ -245,9 +272,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorScalarProduct( T* v, T* v_l, T s, uint n )
+    void VectorScalarProduct( T* v, T* v_l, T s, uint32_t n )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < n; v[ i ] = v_l[ i ] * s, i++ );
 
@@ -261,7 +288,7 @@ namespace gtm
      */
     template< class T >
     inline
-    T VectorNorm( T* v, uint n )
+    T VectorNorm( T* v, uint32_t n )
     {
        return( ( T )( sqrt( ( double )( VectorDotProduct< T >( v, v, n ) ) ) ) );
 
@@ -276,9 +303,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void VectorNormalize( T* v, T* v_o, uint n )
+    void VectorNormalize( T* v, T* v_o, uint32_t n )
     {
-       uint i;
+       uint32_t i;
        T norm = VectorNorm< T >( v_o, n );
 
        norm = ( norm == ( T )0 )? ( T )1: norm;
@@ -300,9 +327,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixPrint( std::ostream& o, T** ma, uint n, uint m )
+    void MatrixPrint( std::ostream& o, T** ma, uint32_t n, uint32_t m )
     {
-       uint i, j;
+       uint32_t i, j;
 
        o << n << " x " << m << endl;
        for( j = 0; j < m; j++ ) {
@@ -322,9 +349,9 @@ namespace gtm
      */
     template< class T >
     inline
-    T** MatrixAllocateMemory( uint n, uint m )
+    T** MatrixAllocateMemory( uint32_t n, uint32_t m )
     {
-       uint i;
+       uint32_t i;
        T** ma = new T*[ n ];
 
        for( i = 0; i < n; i++ ) {
@@ -347,9 +374,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixAssignMemory( T** ma, T** ma_o, uint n, uint m )
+    void MatrixAssignMemory( T** ma, T** ma_o, uint32_t n, uint32_t m )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < n; i++ )
            memcpy( ma[ i ], ma_o[ i ], sizeof( T ) * m );
@@ -365,7 +392,7 @@ namespace gtm
      */
     template< class T >
     inline
-    T** MatrixCopyMemory( T** ma, uint n, uint m )
+    T** MatrixCopyMemory( T** ma, uint32_t n, uint32_t m )
     {
        T** n_ma = MatrixAllocateMemory< T >( n, m );
        MatrixAssignMemory< T >( n_ma, ma, n, m );
@@ -383,9 +410,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixAssignScalar( T** ma, T s, uint n, uint m )
+    void MatrixAssignScalar( T** ma, T s, uint32_t n, uint32_t m )
     {
-       uint i, j;
+       uint32_t i, j;
 
        for( i = 0; i < n; i++ )
            for( j = 0; j < m; j++ )
@@ -404,9 +431,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixVectorCast( T* v, T** ma, uint n, uint m, bool col )
+    void MatrixVectorCast( T* v, T** ma, uint32_t n, uint32_t m, bool col )
     {
-       uint i;
+       uint32_t i;
 
        for( i = 0; i < ( ( col )? m: n ); i++ )
            v[ i ] = ma[ ( col )? n: i ][ ( col )? i: m ];
@@ -421,9 +448,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixFreeMemory( T** ma, uint n )
+    void MatrixFreeMemory( T** ma, uint32_t n )
     {
-       uint i;
+       uint32_t i;
 
        if( ma ) {
 
@@ -446,9 +473,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixAdd( T** ma, T** ma_l, T** ma_r, uint n, uint m )
+    void MatrixAdd( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m )
     {
-       uint i, j;
+       uint32_t i, j;
 
        for( i = 0; i < n; i++ )
            for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] + ma_r[ i ][ j ], j++ );
@@ -466,9 +493,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixSubtract( T** ma, T** ma_l, T** ma_r, uint n, uint m )
+    void MatrixSubtract( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m )
     {
-       uint i, j;
+       uint32_t i, j;
 
        for( i = 0; i < n; i++ )
            for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] - ma_r[ i ][ j ], j++ );
@@ -487,7 +514,7 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixProduct( T** ma, T** ma_l, T** ma_r, uint n, uint m, uint nr )
+    void MatrixProduct( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m, uint32_t nr )
     {
        unsigned i, j, k;
 
@@ -512,9 +539,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixScalarProduct( T** ma, T** ma_l, T s, uint n, uint m )
+    void MatrixScalarProduct( T** ma, T** ma_l, T s, uint32_t n, uint32_t m )
     {
-       uint i, j;
+       uint32_t i, j;
 
        for( i = 0; i < n; i++ )
            for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] * s, j++ );
@@ -533,9 +560,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixCofactor( T** ma, T** ma_o, uint i, uint j, uint n, uint m )
+    void MatrixCofactor( T** ma, T** ma_o, uint32_t i, uint32_t j, uint32_t n, uint32_t m )
     {
-       uint k, l;
+       uint32_t k, l;
        
        for( k = 0; k < i; k++ ) {
            
@@ -561,9 +588,9 @@ namespace gtm
      */
     template< class T >
     inline
-    T MatrixDeterminant( T** ma, uint n )
+    T MatrixDeterminant( T** ma, uint32_t n )
     {
-       uint k;
+       uint32_t k;
        T** tmp = NULL;
        T ret = ( T )0, c;
        
@@ -614,9 +641,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixInverseAdjoint( T** ma, T** ma_o, uint n )
+    void MatrixInverseAdjoint( T** ma, T** ma_o, uint32_t n )
     {
-       uint i, j;
+       uint32_t i, j;
        T** tmp;
        T c;
 
@@ -649,9 +676,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixInverseGauss( T** ma, T** ma_o, uint n )
+    void MatrixInverseGauss( T** ma, T** ma_o, uint32_t n )
     {
-       uint i, j, k, n2 = 2 * n;
+       uint32_t i, j, k, n2 = 2 * n;
        T** ma_a = MatrixAllocateMemory< T >( n2, n );
        T a, b;
 
@@ -699,9 +726,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixTranspose( T** ma, T** ma_o, uint n, uint m )
+    void MatrixTranspose( T** ma, T** ma_o, uint32_t n, uint32_t m )
     {
-       uint i, j;
+       uint32_t i, j;
 
        for( i = 0; i < m; i++ )
            for( j = 0; j < n; ma[ i ][ j ] = ma_o[ j ][ i ], j++ );
@@ -716,9 +743,9 @@ namespace gtm
      */
     template< class T >
     inline
-    void MatrixLoadIdentity( T** ma, uint n )
+    void MatrixLoadIdentity( T** ma, uint32_t n )
     {
-       uint i, j;
+       uint32_t i, j;
 
        for( i = 0; i < n; i++ )
            for( j = 0; j < n; ma[ i ][ j ] = ( i == j )? ( T )1: ( T )0, j++ );