Woolz Image Processing Version 1.4.0
WlzMacro.h File Reference

Woolz C pre-processor directives, eg macros. More...

Go to the source code of this file.

Defines

#define WLZ_VERSION   PACKAGE_VERSION
#define WLZ_MAX(X, Y)   (((X)>=(Y))?(X):(Y))
#define WLZ_MIN(X, Y)   (((X)<=(Y))?(X):(Y))
#define WLZ_ABS(X)   (((X)>0)?(X):(-(X)))
#define WLZ_NINT(X)   ((int)(((X)<0)?((X)-(0.5)):((X)+(0.5))))
#define WLZ_SIGN(X)   (((X)<0)?-1:((X)>0)?1:0)
#define WLZ_CLAMP(v, min, max)   (v<min ? min : v>max ? max : v)
#define WLZ_M_E   (2.7182818284590452354)
#define WLZ_M_LOG2E   (1.4426950408889634074)
#define WLZ_M_LOG10E   (0.43429448190325182765)
#define WLZ_M_LN2   (0.69314718055994530942)
#define WLZ_M_LN10   (2.30258509299404568402)
#define WLZ_M_PI   (3.14159265358979323846)
#define WLZ_M_PI_2   (1.57079632679489661923)
#define WLZ_M_PI_4   (0.78539816339744830961)
#define WLZ_M_1_PI   (0.31830988618379067154)
#define WLZ_M_2_PI   (0.63661977236758134308)
#define WLZ_M_2_SQRTPI   (1.12837916709551257390)
#define WLZ_M_SQRT2   (1.41421356237309504880)
#define WLZ_M_SQRT1_2   (0.70710678118654752440)
#define WLZ_M_SQRT3   (1.73205080756887729352)
#define WLZ_M_SQRT3_2   (0.86602540378443864676)
#define WLZ_MESH_TOLERANCE   (1.0E-04)
#define WLZ_MESH_TOLERANCE_SQ   (WLZ_MESH_TOLERANCE * WLZ_MESH_TOLERANCE)
#define WLZ_MESH_ELEM_AREA_TOLERANCE   (WLZ_M_SQRT3_2 * WLZ_MESH_TOLERANCE_SQ)
#define WLZ_BIT_SET(A, B)   *((A)+((B)>>3))|=(1<<((B)&7))
#define WLZ_BIT_GET(A, B)   (*((A)+((B)>>3))&(1<<((B)&7)))
#define WLZ_RGBA_RED_GET(V)   ((((WlzUInt )V) & 0xff)>>0)
#define WLZ_RGBA_GREEN_GET(V)   ((((WlzUInt )V) & 0xff00)>>8)
#define WLZ_RGBA_BLUE_GET(V)   ((((WlzUInt )V) & 0xff0000)>>16)
#define WLZ_RGBA_ALPHA_GET(V)   ((((WlzUInt )V) & 0xff000000)>>24)
#define WLZ_RGBA_RED_SET(V, C)
#define WLZ_RGBA_GREEN_SET(V, C)
#define WLZ_RGBA_BLUE_SET(V, C)
#define WLZ_RGBA_ALPHA_SET(V, C)
#define WLZ_RGBA_RGBA_SET(V, R, G, B, A)
#define WLZ_RGBA_MEAN(V)
#define WLZ_RGBA_MODULUS_2(V)
#define WLZ_RGBA_MODULUS(V)   (sqrt((double) WLZ_RGBA_MODULUS_2(V)))
#define WLZ_VTX_2_ABS(A, X)
#define WLZ_VTX_3_ABS(A, X)
#define WLZ_VTX_2_SIGN(S, X)
#define WLZ_VTX_3_SIGN(S, X)
#define WLZ_VTX_2_SET(U, X, Y)
#define WLZ_VTX_3_SET(U, X, Y, Z)
#define WLZ_VTX_2_ADD(U, V, W)
#define WLZ_VTX_3_ADD(U, V, W)
#define WLZ_VTX_2_ADD3(U, V, W, X)
#define WLZ_VTX_3_ADD3(U, V, W, X)
#define WLZ_VTX_3_ADD4(U, V, W, X, Y)
#define WLZ_VTX_2_SUB(U, V, W)
#define WLZ_VTX_3_SUB(U, V, W)
#define WLZ_VTX_2_SCALE(U, V, C)
#define WLZ_VTX_3_SCALE(U, V, C)
#define WLZ_VTX_2_SCALE_ADD(U, V, C, W)
#define WLZ_VTX_3_SCALE_ADD(U, V, C, W)
#define WLZ_VTX_2_DOT(V, W)
#define WLZ_VTX_3_DOT(V, W)
#define WLZ_VTX_3_CROSS(U, V, W)
#define WLZ_VTX_2_SQRLEN(U)
#define WLZ_VTX_3_SQRLEN(U)
#define WLZ_VTX_2_LENGTH(U)   (sqrt(WLZ_VTX_2_SQRLEN(U)))
#define WLZ_VTX_3_LENGTH(U)   (sqrt(WLZ_VTX_3_SQRLEN(U)))
#define WLZ_VTX_2_ZERO(U)
#define WLZ_VTX_3_ZERO(U)
#define WLZ_VTX_2_NEGATE(U, V)
#define WLZ_VTX_3_NEGATE(U, V)
#define WLZ_VTX_2_EQUAL(U, V, T)
#define WLZ_VTX_3_EQUAL(U, V, T)
#define WLZ_VTX_2_FABS(U, V)
#define WLZ_VTX_3_FABS(U, V)
#define WLZ_VTX_2_NINT(U, P)
#define WLZ_VTX_3_NINT(U, P)
#define WLZ_CMESH_ELM2D_GET_NODE_0(e)   ((e)->edu[0].nod)
#define WLZ_CMESH_ELM2D_GET_NODE_1(e)   ((e)->edu[1].nod)
#define WLZ_CMESH_ELM2D_GET_NODE_2(e)   ((e)->edu[2].nod)
#define WLZ_CMESH_ELM2D5_GET_NODE_0(e)   ((e)->edu[0].nod)
#define WLZ_CMESH_ELM2D5_GET_NODE_1(e)   ((e)->edu[1].nod)
#define WLZ_CMESH_ELM2D5_GET_NODE_2(e)   ((e)->edu[2].nod)
#define WLZ_CMESH_ELM3D_GET_NODE_0(e)   ((e)->face[0].edu[0].nod)
#define WLZ_CMESH_ELM3D_GET_NODE_1(e)   ((e)->face[0].edu[1].nod)
#define WLZ_CMESH_ELM3D_GET_NODE_2(e)   ((e)->face[0].edu[2].nod)
#define WLZ_CMESH_ELM3D_GET_NODE_3(e)   ((e)->face[1].edu[1].nod)

Detailed Description

Woolz C pre-processor directives, eg macros.

Author:
Bill Hill
Date:
March 1999
Version:
Id:
0e0b25f2a13125d93f22615642b835e1bf831840
Address: MRC Human Genetics Unit, MRC Institute of Genetics and Molecular Medicine, University of Edinburgh, Western General Hospital, Edinburgh, EH4 2XU, UK.
Copyright (C), [2012], The University Court of the University of Edinburgh, Old College, Edinburgh, UK.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


Define Documentation

#define WLZ_VERSION   PACKAGE_VERSION
#define WLZ_ABS (   X)    (((X)>0)?(X):(-(X)))
#define WLZ_NINT (   X)    ((int)(((X)<0)?((X)-(0.5)):((X)+(0.5))))
#define WLZ_SIGN (   X)    (((X)<0)?-1:((X)>0)?1:0)
#define WLZ_M_E   (2.7182818284590452354)
#define WLZ_M_LOG2E   (1.4426950408889634074)
#define WLZ_M_LOG10E   (0.43429448190325182765)
#define WLZ_M_LN2   (0.69314718055994530942)
#define WLZ_M_LN10   (2.30258509299404568402)
#define WLZ_M_PI_2   (1.57079632679489661923)
#define WLZ_M_PI_4   (0.78539816339744830961)
#define WLZ_M_1_PI   (0.31830988618379067154)
#define WLZ_M_2_PI   (0.63661977236758134308)
#define WLZ_M_2_SQRTPI   (1.12837916709551257390)
#define WLZ_M_SQRT2   (1.41421356237309504880)
#define WLZ_M_SQRT1_2   (0.70710678118654752440)
#define WLZ_M_SQRT3   (1.73205080756887729352)
#define WLZ_M_SQRT3_2   (0.86602540378443864676)
#define WLZ_MESH_ELEM_AREA_TOLERANCE   (WLZ_M_SQRT3_2 * WLZ_MESH_TOLERANCE_SQ)
#define WLZ_BIT_SET (   A,
 
)    *((A)+((B)>>3))|=(1<<((B)&7))
#define WLZ_BIT_GET (   A,
 
)    (*((A)+((B)>>3))&(1<<((B)&7)))

Referenced by WlzContourGrdObj2D().

#define WLZ_RGBA_ALPHA_GET (   V)    ((((WlzUInt )V) & 0xff000000)>>24)
#define WLZ_RGBA_RED_SET (   V,
 
)
Value:
(V = (((WlzUInt )V)&0xffffff00) | \
                                               (((WlzUInt) C)&0xff))

Referenced by WlzGreyInvertMinMax(), WlzGreySetRangeLut(), and WlzRGBABoxThreshold().

#define WLZ_RGBA_GREEN_SET (   V,
 
)
Value:
(V = (((WlzUInt )V)&0xffff00ff) | \
                                               ((((WlzUInt) C)&0xff)<<8))

Referenced by WlzGreyInvertMinMax(), WlzGreySetRangeLut(), and WlzRGBABoxThreshold().

#define WLZ_RGBA_BLUE_SET (   V,
 
)
Value:
(V = (((WlzUInt )V)&0xff00ffff) | \
                                               ((((WlzUInt) C)&0xff)<<16))

Referenced by WlzGreyInvertMinMax(), WlzGreySetRangeLut(), and WlzRGBABoxThreshold().

#define WLZ_RGBA_ALPHA_SET (   V,
 
)
Value:
(V = (((WlzUInt )V)&0x00ffffff) | \
                                               ((((WlzUInt) C)&0xff)<<24))

Referenced by WlzGreySetRangeLut().

#define WLZ_RGBA_MEAN (   V)
Value:
#define WLZ_RGBA_MODULUS_2 (   V)
#define WLZ_VTX_2_ABS (   A,
 
)
Value:
(A).vtX = WLZ_ABS((X).vtX), \
                (A).vtY = WLZ_ABS((X).vtY)
#define WLZ_VTX_3_ABS (   A,
 
)
Value:
(A).vtX = WLZ_ABS((X).vtX), \
                (A).vtY = WLZ_ABS((X).vtY), \
                (A).vtZ = WLZ_ABS((X).vtZ)
#define WLZ_VTX_2_SIGN (   S,
 
)
Value:
(S).vtX = WLZ_SIGN((X).vtX), \
                (S).vtY = WLZ_SIGN((X).vtY)
#define WLZ_VTX_3_SIGN (   S,
 
)
Value:
(S).vtX = WLZ_SIGN((X).vtX), \
                (S).vtY = WLZ_SIGN((X).vtY), \
                (S).vtZ = WLZ_SIGN((X).vtZ)
#define WLZ_VTX_2_SET (   U,
  X,
 
)
Value:
(U).vtX = (X), \
                (U).vtY = (Y)

Referenced by WlzCMeshClosePointDom2D5().

#define WLZ_VTX_3_SET (   U,
  X,
  Y,
 
)
Value:
(U).vtX = (X), \
                (U).vtY = (Y), \
                (U).vtZ = (Z)

Referenced by WlzCMeshClosePointDom2D5(), WlzCMeshClosestNod2D5(), WlzCMeshComputeNormalsIxv2D5(), and WlzGeomCurvature().

#define WLZ_VTX_3_ADD (   U,
  V,
 
)
#define WLZ_VTX_2_ADD3 (   U,
  V,
  W,
 
)
Value:
(U).vtX = (V).vtX + (W).vtX + (X).vtX, \
                (U).vtY = (V).vtY + (W).vtY + (X).vtY

Referenced by WlzGeomTriangleCen2D().

#define WLZ_VTX_3_ADD3 (   U,
  V,
  W,
 
)
Value:
(U).vtX = (V).vtX + (W).vtX + (X).vtX, \
                (U).vtY = (V).vtY + (W).vtY + (X).vtY, \
                (U).vtZ = (V).vtZ + (W).vtZ + (X).vtZ

Referenced by WlzGeomTriangleCen3D().

#define WLZ_VTX_3_ADD4 (   U,
  V,
  W,
  X,
 
)
Value:
(U).vtX = (V).vtX + (W).vtX + (X).vtX + (Y).vtX, \
                (U).vtY = (V).vtY + (W).vtY + (X).vtY + (Y).vtY, \
                (U).vtZ = (V).vtZ + (W).vtZ + (X).vtZ + (Y).vtZ

Referenced by WlzGeomTetrahedronCen3D().

#define WLZ_VTX_2_SCALE_ADD (   U,
  V,
  C,
 
)
Value:
(U).vtX = (V).vtX * (C) + (W.vtX), \
                (U).vtY = (V).vtY * (C) + (W.vtY)
#define WLZ_VTX_3_SCALE_ADD (   U,
  V,
  C,
 
)
Value:
(U).vtX = (V).vtX * (C) + (W.vtX), \
                (U).vtY = (V).vtY * (C) + (W.vtY), \
                (U).vtZ = (V).vtZ * (C) + (W.vtZ)

Referenced by WlzGeomLineLineSegmentIntersect3D(), and WlzGeomVtxOnLineSegment3D().

#define WLZ_VTX_2_DOT (   V,
 
)
Value:
((V).vtX * ((W).vtX) + \
                ((V).vtY *  (W).vtY))

Referenced by WlzAffineTransformLSqReg2D(), and WlzGeomVertexInDiamCircle().

#define WLZ_VTX_3_CROSS (   U,
  V,
 
)
#define WLZ_VTX_2_ZERO (   U)
Value:
(U).vtX = 0, \
                (U).vtY = 0

Referenced by WlzBasisFnSetCMesh2D(), WlzBasisFnTransformNormalD(), and WlzCentreOfMassVtx2D().

#define WLZ_VTX_3_ZERO (   U)
Value:
(U).vtX = 0, \
                (U).vtY = 0, \
                (U).vtZ = 0

Referenced by WlzBasisFnSetCMesh3D(), WlzCentreOfMassVtx3D(), WlzCMeshComputeNormalsIxv2D5(), and WlzCMeshComputeNormalsNod().

#define WLZ_VTX_2_NEGATE (   U,
 
)
Value:
(U).vtX = -((V).vtX), \
                (U).vtY = -((V).vtY)
#define WLZ_VTX_3_NEGATE (   U,
 
)
Value:
(U).vtX = -((V).vtX), \
                (U).vtY = -((V).vtY), \
                (U).vtZ = -((V).vtZ)
#define WLZ_VTX_2_EQUAL (   U,
  V,
 
)
Value:
((fabs((U).vtX - (V).vtX) < (T)) && \
                 (fabs((U).vtY - (V).vtY) < (T)))

Referenced by WlzCMeshLocateNod2D().

#define WLZ_VTX_3_EQUAL (   U,
  V,
 
)
Value:
((fabs((U).vtX - (V).vtX) < (T)) && \
                 (fabs((U).vtY - (V).vtY) < (T)) && \
                 (fabs((U).vtZ - (V).vtZ) < (T)))

Referenced by WlzCMeshLocateNod2D5(), and WlzCMeshLocateNod3D().

#define WLZ_VTX_2_FABS (   U,
 
)
Value:
((U).vtX = fabs((V).vtX), \
                 (U).vtY = fabs((V).vtY))
#define WLZ_VTX_3_FABS (   U,
 
)
Value:
((U).vtX = fabs((V).vtX), \
                 (U).vtY = fabs((V).vtY), \
                 (U).vtZ = fabs((V).vtZ))
#define WLZ_VTX_2_NINT (   U,
 
)
Value:
((U).vtX = WLZ_NINT((P).vtX), \
                 (U).vtY = WLZ_NINT((P).vtY))

Referenced by WlzProjectObjToPlane().

#define WLZ_VTX_3_NINT (   U,
 
)
Value:
((U).vtX = WLZ_NINT((P).vtX), \
                 (U).vtY = WLZ_NINT((P).vtY) \
                 (U).vtZ = WLZ_NINT((P).vtZ))
#define WLZ_CMESH_ELM2D5_GET_NODE_0 (   e)    ((e)->edu[0].nod)
#define WLZ_CMESH_ELM2D5_GET_NODE_1 (   e)    ((e)->edu[1].nod)
#define WLZ_CMESH_ELM2D5_GET_NODE_2 (   e)    ((e)->edu[2].nod)