IBSimu
1.0.4
|
00001 00005 /* Copyright (c) 2010 Taneli Kalvas. All rights reserved. 00006 * 00007 * You can redistribute this software and/or modify it under the terms 00008 * of the GNU General Public License as published by the Free Software 00009 * Foundation; either version 2 of the License, or (at your option) 00010 * any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, but 00013 * WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with this library (file "COPYING" included in the package); 00019 * if not, write to the Free Software Foundation, Inc., 51 Franklin 00020 * Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 * 00022 * If you have questions about your rights to use or distribute this 00023 * software, please contact Berkeley Lab's Technology Transfer 00024 * Department at TTD@lbl.gov. Other questions, comments and bug 00025 * reports should be sent directly to the author via email at 00026 * taneli.kalvas@jyu.fi. 00027 * 00028 * NOTICE. This software was developed under partial funding from the 00029 * U.S. Department of Energy. As such, the U.S. Government has been 00030 * granted for itself and others acting on its behalf a paid-up, 00031 * nonexclusive, irrevocable, worldwide license in the Software to 00032 * reproduce, prepare derivative works, and perform publicly and 00033 * display publicly. Beginning five (5) years after the date 00034 * permission to assert copyright is obtained from the U.S. Department 00035 * of Energy, and subject to any subsequent five (5) year renewals, 00036 * the U.S. Government is granted for itself and others acting on its 00037 * behalf a paid-up, nonexclusive, irrevocable, worldwide license in 00038 * the Software to reproduce, prepare derivative works, distribute 00039 * copies to the public, perform publicly and display publicly, and to 00040 * permit others to do so. 00041 */ 00042 00043 #ifndef MY_DXF_TABLES_HPP 00044 #define MY_DXF_TABLES_HPP 1 00045 00046 00047 #include <vector> 00048 #include <string> 00049 #include <stdint.h> 00050 #include "mydxffile.hpp" 00051 00052 00055 class MyDXFEntry 00056 { 00057 00058 std::string _handle; // 5 (for others) or 105 (for DIMSTYLE) 00059 std::string _handle_to_owner; // 330 00060 00061 protected: 00062 00065 MyDXFEntry(); 00066 00069 void process_group( class MyDXFFile *dxf ); 00070 00073 void write_common( class MyDXFFile *dxf, std::ofstream &ostr ); 00074 00077 void debug_print_common( std::ostream &os ) const; 00078 00079 public: 00080 00083 virtual ~MyDXFEntry() {}; 00084 00087 virtual void write( class MyDXFFile *dxf, std::ofstream &ostr ) = 0; 00088 00091 virtual void debug_print( std::ostream &os ) const = 0; 00092 00093 friend std::ostream &operator<<( std::ostream &os, const MyDXFEntry &e ); 00094 }; 00095 00096 00097 00100 class MyDXFEntry_BlockRecord : public MyDXFEntry 00101 { 00102 00103 std::string _name; // 2 00104 int16_t _units; // 70 00105 int8_t _explodability; // 280 00106 int8_t _scalability; // 281 00107 std::string _handle_to_layout; // 340 00108 00109 public: 00110 00113 MyDXFEntry_BlockRecord( class MyDXFFile *dxf ); 00114 00117 virtual ~MyDXFEntry_BlockRecord(); 00118 00121 virtual void write( class MyDXFFile *dxf, std::ofstream &ostr ); 00122 00125 virtual void debug_print( std::ostream &os ) const; 00126 }; 00127 00128 00129 00132 class MyDXFEntry_Layer : public MyDXFEntry 00133 { 00134 00135 std::string _name; // 2 00136 std::string _linetype; // 6 00137 int16_t _flags; // 70 00138 int16_t _color; // 62 (negative if layer off) 00139 bool _plotting; // 290 00140 int8_t _lineweight; // 370 00141 00142 std::string _handle_to_plot_style_name; // 390 00143 std::string _handle_to_material; // 347 00144 00145 public: 00146 00149 MyDXFEntry_Layer( class MyDXFFile *dxf ); 00150 00153 virtual ~MyDXFEntry_Layer(); 00154 00157 virtual void write( class MyDXFFile *dxf, std::ofstream &ostr ); 00158 00161 virtual void debug_print( std::ostream &os ) const; 00162 }; 00163 00164 00165 00168 class MyDXFTable 00169 { 00170 std::string _name; // 2 00171 std::string _handle; // 5 00172 std::string _handle_to_owner; // 330 00173 00174 std::vector<MyDXFEntry *> _entries; // 70 (size) 00175 00176 public: 00177 00178 MyDXFTable( const std::string &name, class MyDXFFile *dxf ); 00179 ~MyDXFTable(); 00180 00183 void write( class MyDXFFile *dxf, std::ofstream &ostr ); 00184 00185 void debug_print( std::ostream &os ) const; 00186 }; 00187 00188 00189 00194 class MyDXFTables 00195 { 00196 00197 MyDXFTable *_blockrecord; 00198 MyDXFTable *_layer; 00199 00200 public: 00201 00202 MyDXFTables( class MyDXFFile *dxf ); 00203 ~MyDXFTables(); 00204 00207 void write( class MyDXFFile *dxf, std::ofstream &ostr ); 00208 00211 void debug_print( std::ostream &os ) const; 00212 }; 00213 00214 00215 00216 00217 00218 #endif 00219 00220 00221