Library of Assembled Shared Sources
matlab_o_stream.h
Go to the documentation of this file.
1/** @file
2 * @author Bram de Greve (bram@cocamware.com)
3 * @author Tom De Muer (tom@cocamware.com)
4 *
5 * *** BEGIN LICENSE INFORMATION ***
6 *
7 * The contents of this file are subject to the Common Public Attribution License
8 * Version 1.0 (the "License"); you may not use this file except in compliance with
9 * the License. You may obtain a copy of the License at
10 * http://lass.sourceforge.net/cpal-license. The License is based on the
11 * Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover
12 * use of software over a computer network and provide for limited attribution for
13 * the Original Developer. In addition, Exhibit A has been modified to be consistent
14 * with Exhibit B.
15 *
16 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
17 * WARRANTY OF ANY KIND, either express or implied. See the License for the specific
18 * language governing rights and limitations under the License.
19 *
20 * The Original Code is LASS - Library of Assembled Shared Sources.
21 *
22 * The Initial Developer of the Original Code is Bram de Greve and Tom De Muer.
23 * The Original Developer is the Initial Developer.
24 *
25 * All portions of the code written by the Initial Developer are:
26 * Copyright (C) 2004-2011 the Initial Developer.
27 * All Rights Reserved.
28 *
29 * Contributor(s):
30 *
31 * Alternatively, the contents of this file may be used under the terms of the
32 * GNU General Public License Version 2 or later (the GPL), in which case the
33 * provisions of GPL are applicable instead of those above. If you wish to allow use
34 * of your version of this file only under the terms of the GPL and not to allow
35 * others to use your version of this file under the CPAL, indicate your decision by
36 * deleting the provisions above and replace them with the notice and other
37 * provisions required by the GPL License. If you do not delete the provisions above,
38 * a recipient may use your version of this file under either the CPAL or the GPL.
39 *
40 * *** END LICENSE INFORMATION ***
41 */
42/**
43* @author Bram de Greve (bram@cocamware.com)
44* @author Tom De Muer (tom@cocamware.com)
45*
46* Distributed under the terms of the GPL (GNU Public License)
47*
48* The LASS License:
49*
50* Copyright 2004-2006 Bram de Greve and Tom De Muer
51*
52* LASS is free software; you can redistribute it and/or modify
53* it under the terms of the GNU General Public License as published by
54* the Free Software Foundation; either version 2 of the License, or
55* (at your option) any later version.
56*
57* This program is distributed in the hope that it will be useful,
58* but WITHOUT ANY WARRANTY; without even the implied warranty of
59* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60* GNU General Public License for more details.
61*
62* You should have received a copy of the GNU General Public License
63* along with this program; if not, write to the Free Software
64* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
65*
66
67
68 */
69
70
71
72/** @class lass::io::MatlabOStream
73 * @brief Output stream for writing a selection of geometric primitives to matlab M files.
74 */
75
76
77
78#ifndef LASS_GUARDIAN_OF_INCLUSION_IO_MATLAB_O_STREAM_H
79#define LASS_GUARDIAN_OF_INCLUSION_IO_MATLAB_O_STREAM_H
80
81
82
83#include "io_common.h"
84#include <fstream>
85
86namespace lass
87{
88
89namespace io
90{
91
92enum MatlabColor
93{
94 mcYellow,
95 mcMagenta,
96 mcCyan,
97 mcRed,
98 mcGreen,
99 mcBlue,
100 mcWhite,
101 mcBlack
102};
103
104
105
106class MatlabOStream: public std::ofstream
107{
108public:
109 MatlabOStream():
110 std::ofstream(),
111 color_(mcBlack)
112 {
113 }
114
115 MatlabOStream(const char* iFilename, std::ios::openmode iOpenMode = std::ios::out | std::ios::trunc):
116 std::ofstream(iFilename, iOpenMode),
117 color_(mcBlack)
118 {
119 }
120
121 virtual ~MatlabOStream()
122 {
123 }
124
125 void setColor(MatlabColor iColor)
126 {
127 color_ = iColor;
128 }
129
130 const std::string& color() const
131 {
132 static const std::string colors[] = {"'y'", "'m'", "'c'", "'r'", "'g'", "'b'", "'w'", "'k'"};
133 return colors[color_];
134 }
135
136 void setFlag(const std::string& iName, bool iValue)
137 {
138 flags_[iName] = iValue;
139 }
140
141 bool flag(const std::string& iName, bool iDefault = false) const
142 {
143 TFlags::const_iterator i = flags_.find(iName);
144 return i != flags_.end() ? i->second : iDefault;
145 }
146
147private:
148
149 typedef std::map<std::string, bool> TFlags;
150
151 TFlags flags_;
152 MatlabColor color_;
153};
154
155
156
157}
158
159}
160
161#endif
streams, binary streams, vrmlstreams, ...
Library for Assembled Shared Sources.
Definition config.h:53