Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  
igtlUnit.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   OpenIGTLink Library
00004   Module:    $HeadURL: http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink2_beta/Source/igtlMath.h $
00005   Language:  C++
00006   Date:      $Date: 2008-12-22 19:05:42 -0500 (Mon, 22 Dec 2008) $
00007   Version:   $Revision: 3460 $
00008 
00009   Copyright (c) Insight Software Consortium. All rights reserved.
00010 
00011   This software is distributed WITHOUT ANY WARRANTY; without even
00012   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00013   PURPOSE.  See the above copyright notices for more information.
00014 
00015 =========================================================================*/
00016 
00017 #ifndef __igtlUnit_h
00018 #define __igtlUnit_h
00019 
00020 #include "igtlWin32Header.h"
00021 
00022 #include "igtlMacro.h"
00023 #include "igtlObject.h"
00024 #include "igtlObjectFactory.h"
00025 #include "igtlTypes.h"
00026 
00027 namespace igtl
00028 {
00029 
00030 typedef igtlUint64 igtlUnit;
00031 
00032 class IGTLCommon_EXPORT Unit : public Object
00033 {
00034 public:
00035 
00036   // SI Prefix
00037   enum {
00038     SI_PREFIX_NONE  = 0x0, /* None */
00039     SI_PREFIX_DEKA  = 0x1, /* deka (deca) (1e1) */
00040     SI_PREFIX_HECTO = 0x2, /* hecto (1e2) */
00041     SI_PREFIX_KILO  = 0x3, /* kilo (1e3) */
00042     SI_PREFIX_MEGA  = 0x4, /* mega (1e6) */
00043     SI_PREFIX_GIGA  = 0x5, /* giga (1e9) */
00044     SI_PREFIX_TERA  = 0x6, /* tera (1e12) */
00045     SI_PREFIX_PETA  = 0x7, /* peta (1e15) */
00046     SI_PREFIX_DECI  = 0x9, /* deci (1e-1) */
00047     SI_PREFIX_CENTI = 0xA, /* centi (1e-2) */
00048     SI_PREFIX_MILLI = 0xB, /* milli (1e-3) */
00049     SI_PREFIX_MICRO = 0xC, /* micro (1e-6) */
00050     SI_PREFIX_NANO  = 0xD, /* nano (1e-9) */
00051     SI_PREFIX_PICO  = 0xE, /* pico (1e-12) */
00052     SI_PREFIX_FEMTO = 0xF, /* femto (1e-15) */
00053   };
00054 
00055   // SI Units
00056   enum {
00057     // SI Base Units
00058     SI_BASE_NONE    = 0x00,
00059     SI_BASE_METER   = 0x01, /* meter */
00060     SI_BASE_GRAM    = 0x02, /* gram */
00061     SI_BASE_SECOND  = 0x03, /* second */
00062     SI_BASE_AMPERE  = 0x04, /* ampere */
00063     SI_BASE_KELVIN  = 0x05, /* kelvin */
00064     SI_BASE_MOLE    = 0x06, /* mole */
00065     SI_BASE_CANDELA = 0x07, /* candela */
00066 
00067     // SI Derived Units
00068     SI_DERIVED_RADIAN    = 0x08,  /* radian     meter/meter */
00069     SI_DERIVED_STERADIAN = 0x09,  /* steradian  meter^2/meter^2 */
00070     SI_DERIVED_HERTZ     = 0x0A,  /* hertz      /second */
00071     SI_DERIVED_NEWTON    = 0x0B,  /* newton     meter-kilogram/second^2 */
00072     SI_DERIVED_PASCAL    = 0x0C,  /* pascal     kilogram/meter-second^2 */
00073     SI_DERIVED_JOULE     = 0x0D,  /* joule      meter^2-kilogram/second^2 */
00074     SI_DERIVED_WATT      = 0x0E,  /* watt       meter^2-kilogram/second^3 */
00075     SI_DERIVED_COULOMB   = 0x0F,  /* coulomb    second-ampere */
00076     SI_DERIVED_VOLT      = 0x10,  /* volt       meter^2-kilogram/second^3-ampere */
00077     SI_DERIVED_FARAD     = 0x11,  /* farad      second^4-ampere^2/meter^2-kilogram */
00078     SI_DERIVED_OHM       = 0x12,  /* ohm        meter^2-kilogram/second^3-ampere^2 */
00079     SI_DERIVED_SIEMENS   = 0x13,  /* siemens    second^3-ampere^2/meter^2-kilogram */
00080     SI_DERIVED_WEBER     = 0x14,  /* weber      meter^2-kilogram/second^2-ampere */
00081     SI_DERIVED_TESLA     = 0x15,  /* tesla      kilogram/second^2-ampere */
00082     SI_DERIVED_HENRY     = 0x16,  /* henry      meter^2-kilogram/second^2-ampere^2 */
00083     SI_DERIVED_LUMEN     = 0x17,  /* lumen      candela-steradian */
00084     SI_DERIVED_LUX       = 0x18,  /* lux        candela-steradian/meter^2 */
00085     SI_DERIVED_BECQUEREL = 0x19,  /* becquerel  /second */
00086     SI_DERIVED_GRAY      = 0x1A,  /* gray       meter^2/second^2 */
00087     SI_DERIVED_SIEVERT   = 0x1B,  /* sievert    meter^2/second^2 */
00088 
00089     SI_NUM_UNIT_TYPES    = 0x1C,
00090   };
00091 
00092 
00093 
00094 public:
00095   typedef Unit                       Self;
00096   typedef Object                     Superclass;
00097   typedef SmartPointer< Self >       Pointer;
00098   typedef SmartPointer< const Self > ConstPointer;
00099 
00100   igtlTypeMacro(Unit, Object);
00101   igtlNewMacro(Self);
00102 
00103   void     Init();
00104   int      SetPrefix(int prefix);
00105   int      Append(int unit, int exp);
00106 
00107   igtlUnit Pack();
00108   int      Unpack(igtlUnit unit);
00109   
00110 protected:
00111 
00113   Unit();
00114 
00116   virtual ~Unit();
00117 
00118 
00119 private:
00120 
00121   igtlUint8       m_Prefix;            /* Prefix */
00122   igtlUint8       m_Unit[6];           /* Either SI-Base or SI-Derived */
00123   igtlInt8        m_Exp[6];            /* Must be within [-7, 7] */
00124 
00125   igtlInt32       m_NUnits;            /* Number of units appended */
00126 
00127 };
00128 
00129 }
00130 
00131 #endif // __igtlUnit_h
00132 
00133 

Generated at Sat Dec 3 2011 08:54:21 for OpenIGTLink by doxygen 1.7.4 written by Dimitri van Heesch, © 1997-2000