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.
1 /*=========================================================================
2 
3  Program: OpenIGTLink Library
4  Module: $HeadURL: http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink2_beta/Source/igtlMath.h $
5  Language: C++
6  Date: $Date: 2008-12-22 19:05:42 -0500 (Mon, 22 Dec 2008) $
7  Version: $Revision: 3460 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10 
11  This software is distributed WITHOUT ANY WARRANTY; without even
12  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13  PURPOSE. See the above copyright notices for more information.
14 
15 =========================================================================*/
16 
17 #ifndef __igtlUnit_h
18 #define __igtlUnit_h
19 
20 #include "igtlWin32Header.h"
21 
22 #include "igtlMacro.h"
23 #include "igtlObject.h"
24 #include "igtlObjectFactory.h"
25 #include "igtlTypes.h"
26 
27 namespace igtl
28 {
29 
30 typedef igtlUint64 igtlUnit;
31 
33 {
34 public:
35 
36  // SI Prefix
37  enum {
38  SI_PREFIX_NONE = 0x0, /* None */
39  SI_PREFIX_DEKA = 0x1, /* deka (deca) (1e1) */
40  SI_PREFIX_HECTO = 0x2, /* hecto (1e2) */
41  SI_PREFIX_KILO = 0x3, /* kilo (1e3) */
42  SI_PREFIX_MEGA = 0x4, /* mega (1e6) */
43  SI_PREFIX_GIGA = 0x5, /* giga (1e9) */
44  SI_PREFIX_TERA = 0x6, /* tera (1e12) */
45  SI_PREFIX_PETA = 0x7, /* peta (1e15) */
46  SI_PREFIX_DECI = 0x9, /* deci (1e-1) */
47  SI_PREFIX_CENTI = 0xA, /* centi (1e-2) */
48  SI_PREFIX_MILLI = 0xB, /* milli (1e-3) */
49  SI_PREFIX_MICRO = 0xC, /* micro (1e-6) */
50  SI_PREFIX_NANO = 0xD, /* nano (1e-9) */
51  SI_PREFIX_PICO = 0xE, /* pico (1e-12) */
52  SI_PREFIX_FEMTO = 0xF, /* femto (1e-15) */
53  };
54 
55  // SI Units
56  enum {
57  // SI Base Units
58  SI_BASE_NONE = 0x00,
59  SI_BASE_METER = 0x01, /* meter */
60  SI_BASE_GRAM = 0x02, /* gram */
61  SI_BASE_SECOND = 0x03, /* second */
62  SI_BASE_AMPERE = 0x04, /* ampere */
63  SI_BASE_KELVIN = 0x05, /* kelvin */
64  SI_BASE_MOLE = 0x06, /* mole */
65  SI_BASE_CANDELA = 0x07, /* candela */
66 
67  // SI Derived Units
68  SI_DERIVED_RADIAN = 0x08, /* radian meter/meter */
69  SI_DERIVED_STERADIAN = 0x09, /* steradian meter^2/meter^2 */
70  SI_DERIVED_HERTZ = 0x0A, /* hertz /second */
71  SI_DERIVED_NEWTON = 0x0B, /* newton meter-kilogram/second^2 */
72  SI_DERIVED_PASCAL = 0x0C, /* pascal kilogram/meter-second^2 */
73  SI_DERIVED_JOULE = 0x0D, /* joule meter^2-kilogram/second^2 */
74  SI_DERIVED_WATT = 0x0E, /* watt meter^2-kilogram/second^3 */
75  SI_DERIVED_COULOMB = 0x0F, /* coulomb second-ampere */
76  SI_DERIVED_VOLT = 0x10, /* volt meter^2-kilogram/second^3-ampere */
77  SI_DERIVED_FARAD = 0x11, /* farad second^4-ampere^2/meter^2-kilogram */
78  SI_DERIVED_OHM = 0x12, /* ohm meter^2-kilogram/second^3-ampere^2 */
79  SI_DERIVED_SIEMENS = 0x13, /* siemens second^3-ampere^2/meter^2-kilogram */
80  SI_DERIVED_WEBER = 0x14, /* weber meter^2-kilogram/second^2-ampere */
81  SI_DERIVED_TESLA = 0x15, /* tesla kilogram/second^2-ampere */
82  SI_DERIVED_HENRY = 0x16, /* henry meter^2-kilogram/second^2-ampere^2 */
83  SI_DERIVED_LUMEN = 0x17, /* lumen candela-steradian */
84  SI_DERIVED_LUX = 0x18, /* lux candela-steradian/meter^2 */
85  SI_DERIVED_BECQUEREL = 0x19, /* becquerel /second */
86  SI_DERIVED_GRAY = 0x1A, /* gray meter^2/second^2 */
87  SI_DERIVED_SIEVERT = 0x1B, /* sievert meter^2/second^2 */
88 
89  SI_NUM_UNIT_TYPES = 0x1C,
90  };
91 
92 
93 
94 public:
95  typedef Unit Self;
96  typedef Object Superclass;
99 
102 
103  void Init();
104  int SetPrefix(int prefix);
105  int Append(int unit, int exp);
106 
107  igtlUnit Pack();
108  int Unpack(igtlUnit unit);
109 
110 protected:
111 
113  Unit();
114 
116  virtual ~Unit();
117 
118 
119 private:
120 
121  igtlUint8 m_Prefix; /* Prefix */
122  igtlUint8 m_Unit[6]; /* Either SI-Base or SI-Derived */
123  igtlInt8 m_Exp[6]; /* Must be within [-7, 7] */
124 
125  igtlInt32 m_NUnits; /* Number of units appended */
126 
127 };
128 
129 }
130 
131 #endif // __igtlUnit_h
132 
133 

Generated at Thu Mar 20 2014 16:32:06 for OpenIGTLink by doxygen 1.8.1.2 written by Dimitri van Heesch, © 1997-2000