MWAWChart.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2 
3 /* libmwaw
4 * Version: MPL 2.0 / LGPLv2+
5 *
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 2.0 (the "License"); you may not use this file except in compliance with
8 * the License or as specified alternatively below. You may obtain a copy of
9 * the License at http://www.mozilla.org/MPL/
10 *
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
14 * License.
15 *
16 * Major Contributor(s):
17 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20 * Copyright (C) 2006, 2007 Andrew Ziem
21 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22 *
23 *
24 * All Rights Reserved.
25 *
26 * For minor contributions see the git repository.
27 *
28 * Alternatively, the contents of this file may be used under the terms of
29 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30 * in which case the provisions of the LGPLv2+ are applicable
31 * instead of those above.
32 */
33 
34 /*
35  * Structure to store and construct a chart
36  *
37  */
38 
39 #ifndef MWAW_CHART
40 # define MWAW_CHART
41 
42 #include <iostream>
43 #include <vector>
44 #include <map>
45 
46 #include "libmwaw_internal.hxx"
47 
48 #include "MWAWEntry.hxx"
49 #include "MWAWFont.hxx"
50 #include "MWAWGraphicStyle.hxx"
51 
52 namespace MWAWChartInternal
53 {
54 class SubDocument;
55 }
57 class MWAWChart
58 {
60 public:
62  struct Axis {
66  Axis();
68  ~Axis();
70  void addContentTo(std::string const &sheetName, int coord, librevenge::RVNGPropertyList &propList) const;
72  void addStyleTo(librevenge::RVNGPropertyList &propList) const;
74  friend std::ostream &operator<<(std::ostream &o, Axis const &axis);
78  bool m_showGrid;
85  };
87  struct Legend {
90  : m_show(false)
91  , m_autoPosition(true)
93  , m_position(0,0)
94  , m_font()
95  , m_style()
96  {
97  }
99  void addContentTo(librevenge::RVNGPropertyList &propList) const;
101  void addStyleTo(librevenge::RVNGPropertyList &propList, std::shared_ptr<MWAWFontConverter> fontConverter) const;
103  friend std::ostream &operator<<(std::ostream &o, Legend const &legend);
105  bool m_show;
116  };
118  struct Series {
122  Series();
124  virtual ~Series();
126  void addContentTo(std::string const &sheetName, librevenge::RVNGPropertyList &propList) const;
128  void addStyleTo(librevenge::RVNGPropertyList &propList) const;
130  static std::string getSeriesTypeName(Type type);
132  friend std::ostream &operator<<(std::ostream &o, Series const &series);
139  };
141  struct TextZone {
146 
148  TextZone();
150  ~TextZone();
152  void addContentTo(std::string const &sheetName, librevenge::RVNGPropertyList &propList) const;
154  void addStyleTo(librevenge::RVNGPropertyList &propList, std::shared_ptr<MWAWFontConverter> fontConverter) const;
156  friend std::ostream &operator<<(std::ostream &o, TextZone const &zone);
171  };
172 
174  MWAWChart(std::string const &sheetName, MWAWFontConverterPtr const &fontConverter, MWAWVec2f const &dim=MWAWVec2f());
176  virtual ~MWAWChart();
178  void sendChart(MWAWSpreadsheetListenerPtr &listener, librevenge::RVNGSpreadsheetInterface *interface);
180  virtual void sendContent(TextZone const &zone, MWAWListenerPtr &listener)=0;
181 
183  void setDataType(Series::Type type, bool dataStacked)
184  {
185  m_type=type;
186  m_dataStacked=dataStacked;
187  }
188 
190  MWAWVec2f const &getDimension() const
191  {
192  return m_dim;
193  }
195  void setDimension(MWAWVec2f const &dim)
196  {
197  m_dim=dim;
198  }
200  void add(int coord, Axis const &axis);
202  Axis const &getAxis(int coord) const;
203 
205  void set(Legend const &legend)
206  {
207  m_legend=legend;
208  }
210  Legend const &getLegend() const
211  {
212  return m_legend;
213  }
214 
216  void add(Series const &series);
218  std::vector<Series> const &getSeries() const
219  {
220  return m_seriesList;
221  }
222 
224  void add(TextZone const &textZone);
226  bool getTextZone(TextZone::Type type, TextZone &textZone);
227 
228 protected:
230  void sendTextZoneContent(TextZone::Type type, MWAWListenerPtr &listener);
231 
232 protected:
234  std::string m_sheetName;
246  std::vector<Series> m_seriesList;
248  std::map<TextZone::Type, TextZone> m_textZoneMap;
251 private:
252  explicit MWAWChart(MWAWChart const &orig) = delete;
253  MWAWChart &operator=(MWAWChart const &orig) = delete;
254 };
255 
256 #endif
257 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWChart::sendTextZoneContent
void sendTextZoneContent(TextZone::Type type, MWAWListenerPtr &listener)
sends a textzone content
Definition: MWAWChart.cxx:162
MWAWEntry
basic class to store an entry in a file This contained :
Definition: MWAWEntry.hxx:47
MWAWChart::m_axis
Axis m_axis[4]
the x,y,z and a bad axis
Definition: MWAWChart.hxx:242
MWAWInputStreamPtr
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:547
MWAWChart.hxx
MWAWChart::Series::S_Pie
@ S_Pie
Definition: MWAWChart.hxx:120
MWAWChart::~MWAWChart
virtual ~MWAWChart()
the destructor
Definition: MWAWChart.cxx:127
MWAWChart::Series::m_style
MWAWGraphicStyle m_style
the graphic style
Definition: MWAWChart.hxx:138
MWAWChart::TextZone::m_cell
MWAWVec2i m_cell
the cell position ( for title and subtitle )
Definition: MWAWChart.hxx:164
MWAWChart::Legend::m_relativePosition
int m_relativePosition
the automatic position libmwaw::LeftBit|...
Definition: MWAWChart.hxx:109
MWAWChartInternal::SubDocument::~SubDocument
~SubDocument() final
destructor
Definition: MWAWChart.cxx:72
MWAWChart::operator=
MWAWChart & operator=(MWAWChart const &orig)=delete
MWAWChart::TextZone::ContentType
ContentType
the text content type
Definition: MWAWChart.hxx:145
MWAWChart::getDimension
MWAWVec2f const & getDimension() const
return the chart dimension
Definition: MWAWChart.hxx:190
MWAWFontConverterPtr
std::shared_ptr< MWAWFontConverter > MWAWFontConverterPtr
a smart pointer of MWAWFontConverter
Definition: libmwaw_internal.hxx:539
MWAW_DEBUG_MSG
#define MWAW_DEBUG_MSG(M)
Definition: libmwaw_internal.hxx:129
operator<<
std::ostream & operator<<(std::ostream &o, MWAWChart::Axis const &axis)
Definition: MWAWChart.cxx:388
MWAWVec2f
MWAWVec2< float > MWAWVec2f
MWAWVec2 of float.
Definition: libmwaw_internal.hxx:838
MWAWChart::m_dim
MWAWVec2f m_dim
the chart dimension in point
Definition: MWAWChart.hxx:236
MWAWChart::Axis
a axis in a chart
Definition: MWAWChart.hxx:62
MWAWGraphicStyle::setSurfaceColor
void setSurfaceColor(MWAWColor const &col, float opacity=1)
set the surface color
Definition: MWAWGraphicStyle.hxx:318
MWAWChartInternal
Internal: the structures of a MWAWChart.
Definition: MWAWChart.cxx:58
MWAWChart::Axis::A_Numeric
@ A_Numeric
Definition: MWAWChart.hxx:64
MWAWChart::Series::addContentTo
void addContentTo(std::string const &sheetName, librevenge::RVNGPropertyList &propList) const
add content to the propList
Definition: MWAWChart.cxx:518
MWAWChart::TextZone::addStyleTo
void addStyleTo(librevenge::RVNGPropertyList &propList, std::shared_ptr< MWAWFontConverter > fontConverter) const
add to the propList
Definition: MWAWChart.cxx:634
MWAWChart::TextZone::T_Title
@ T_Title
Definition: MWAWChart.hxx:143
MWAWChart::Axis::A_Logarithmic
@ A_Logarithmic
Definition: MWAWChart.hxx:64
libmwaw::BottomBit
@ BottomBit
Definition: libmwaw_internal.hxx:178
libmwaw::DOC_CHART_ZONE
@ DOC_CHART_ZONE
Definition: libmwaw_internal.hxx:188
MWAWChart::Axis::A_None
@ A_None
Definition: MWAWChart.hxx:64
MWAWChart::m_dataStacked
bool m_dataStacked
a flag to know if the data are stacked or not
Definition: MWAWChart.hxx:240
MWAWChart::set
void set(Legend const &legend)
set the legend
Definition: MWAWChart.hxx:205
MWAWEntry.hxx
MWAWFontConverter.hxx
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:192
MWAWChart::TextZone::C_Text
@ C_Text
Definition: MWAWChart.hxx:145
MWAWChart::MWAWChart
MWAWChart(MWAWChart const &orig)=delete
MWAWChart::Series::S_Bar
@ S_Bar
Definition: MWAWChart.hxx:120
MWAWChart::Legend::operator<<
friend std::ostream & operator<<(std::ostream &o, Legend const &legend)
operator<<
Definition: MWAWChart.cxx:451
MWAWChart::TextZone::T_AxisY
@ T_AxisY
Definition: MWAWChart.hxx:143
MWAWChartInternal::SubDocument::m_textZone
MWAWChart::TextZone::Type m_textZone
the textzone type
Definition: MWAWChart.cxx:90
MWAWChart::Legend::m_style
MWAWGraphicStyle m_style
the graphic style
Definition: MWAWChart.hxx:115
MWAWChart::setDataType
void setDataType(Series::Type type, bool dataStacked)
sets the chart type
Definition: MWAWChart.hxx:183
MWAW_FALLTHROUGH
#define MWAW_FALLTHROUGH
Definition: libmwaw_internal.hxx:118
MWAWChart::Series::getSeriesTypeName
static std::string getSeriesTypeName(Type type)
returns a string corresponding to a series type
Definition: MWAWChart.cxx:493
MWAWChart::Legend
a legend in a chart
Definition: MWAWChart.hxx:87
MWAWChart::TextZone::C_Cell
@ C_Cell
Definition: MWAWChart.hxx:145
MWAWChart::TextZone::m_textEntry
MWAWEntry m_textEntry
the text entry
Definition: MWAWChart.hxx:166
MWAWSubDocument
abstract class used to store a subdocument (with a comparison function)
Definition: MWAWSubDocument.hxx:42
MWAWChart::Legend::m_position
MWAWVec2f m_position
the position in points
Definition: MWAWChart.hxx:111
MWAWGraphicStyle
a structure used to define a picture style
Definition: MWAWGraphicStyle.hxx:48
MWAWChartInternal::SubDocument
Internal: the subdocument of a MWAWChart.
Definition: MWAWChart.cxx:62
MWAWChart::Series::S_Line
@ S_Line
Definition: MWAWChart.hxx:120
MWAWChart::Series::~Series
virtual ~Series()
destructor
Definition: MWAWChart.cxx:489
MWAWChart::Series::Type
Type
the series type
Definition: MWAWChart.hxx:120
MWAWChart::TextZone
a text zone a chart
Definition: MWAWChart.hxx:141
MWAWChart::Series::Series
Series()
constructor
Definition: MWAWChart.cxx:480
MWAWChart::Series::S_Stock
@ S_Stock
Definition: MWAWChart.hxx:120
MWAWChart::TextZone::addContentTo
void addContentTo(std::string const &sheetName, librevenge::RVNGPropertyList &propList) const
add content to the propList
Definition: MWAWChart.cxx:599
MWAWChart::Legend::Legend
Legend()
constructor
Definition: MWAWChart.hxx:89
MWAWSubDocument.hxx
MWAWChart::Axis::operator<<
friend std::ostream & operator<<(std::ostream &o, Axis const &axis)
operator<<
Definition: MWAWChart.cxx:388
MWAWChart::Series::operator<<
friend std::ostream & operator<<(std::ostream &o, Series const &series)
operator<<
Definition: MWAWChart.cxx:544
MWAWChart::TextZone::m_style
MWAWGraphicStyle m_style
the graphic style
Definition: MWAWChart.hxx:170
MWAWChart::m_seriesList
std::vector< Series > m_seriesList
the list of series
Definition: MWAWChart.hxx:246
libmwaw::SubDocumentType
SubDocumentType
Definition: libmwaw_internal.hxx:188
MWAWChartInternal::SubDocument::parse
void parse(MWAWListenerPtr &listener, libmwaw::SubDocumentType type) final
the parser function
Definition: MWAWChart.cxx:96
MWAWChart::sendContent
virtual void sendContent(TextZone const &zone, MWAWListenerPtr &listener)=0
send the zone content (called when the zone is of text type)
MWAWSpreadsheetListenerPtr
std::shared_ptr< MWAWSpreadsheetListener > MWAWSpreadsheetListenerPtr
a smart pointer of MWAWSpreadsheetListener
Definition: libmwaw_internal.hxx:559
MWAWChart::TextZone::T_AxisZ
@ T_AxisZ
Definition: MWAWChart.hxx:143
libmwaw_internal.hxx
MWAWGraphicStyle::m_lineWidth
float m_lineWidth
the linewidth
Definition: MWAWGraphicStyle.hxx:411
MWAWPosition.hxx
MWAWChart::TextZone::TextZone
TextZone()
constructor
Definition: MWAWChart.cxx:583
MWAWChart::Series::S_Column
@ S_Column
Definition: MWAWChart.hxx:120
MWAWChart::add
void add(int coord, Axis const &axis)
adds an axis (corresponding to a coord)
Definition: MWAWChart.cxx:131
MWAWChart::Series::S_Area
@ S_Area
Definition: MWAWChart.hxx:120
MWAWChart::TextZone::~TextZone
~TextZone()
destructor
Definition: MWAWChart.cxx:595
MWAWChart::Legend::addStyleTo
void addStyleTo(librevenge::RVNGPropertyList &propList, std::shared_ptr< MWAWFontConverter > fontConverter) const
add style to the propList
Definition: MWAWChart.cxx:444
MWAWChart::Axis::m_showLabel
bool m_showLabel
show or not the label
Definition: MWAWChart.hxx:80
libmwaw::RightBit
@ RightBit
Definition: libmwaw_internal.hxx:178
MWAWVec2< float >
MWAWChart::Axis::m_showGrid
bool m_showGrid
show or not the grid
Definition: MWAWChart.hxx:78
MWAWChart::Legend::m_autoPosition
bool m_autoPosition
automatic position
Definition: MWAWChart.hxx:107
MWAWChart::getTextZone
bool getTextZone(TextZone::Type type, TextZone &textZone)
returns a textzone content(if set)
Definition: MWAWChart.cxx:154
MWAWChart::Axis::addContentTo
void addContentTo(std::string const &sheetName, int coord, librevenge::RVNGPropertyList &propList) const
add content to the propList
Definition: MWAWChart.cxx:346
MWAWChartInternal::SubDocument::operator!=
bool operator!=(MWAWSubDocument const &doc) const final
operator!=
Definition: MWAWChart.cxx:75
MWAWChart::Axis::A_Sequence
@ A_Sequence
Definition: MWAWChart.hxx:64
MWAWChart::Series::m_range
MWAWBox2i m_range
the data range
Definition: MWAWChart.hxx:136
MWAWChart::TextZone::T_SubTitle
@ T_SubTitle
Definition: MWAWChart.hxx:143
MWAWChart::m_sheetName
std::string m_sheetName
the sheet name
Definition: MWAWChart.hxx:234
MWAWChartInternal::SubDocument::SubDocument
SubDocument(SubDocument const &orig)=delete
MWAWChart::getLegend
Legend const & getLegend() const
return the legend
Definition: MWAWChart.hxx:210
MWAWChartInternal::SubDocument::m_chart
MWAWChart * m_chart
the chart
Definition: MWAWChart.cxx:88
MWAWChart::getAxis
Axis const & getAxis(int coord) const
return an axis (corresponding to a coord)
Definition: MWAWChart.cxx:140
MWAWChart::Axis::m_labelRange
MWAWBox2i m_labelRange
the label range if defined
Definition: MWAWChart.hxx:82
MWAWChart::m_type
Series::Type m_type
the chart type (if no series)
Definition: MWAWChart.hxx:238
libmwaw::LeftBit
@ LeftBit
Definition: libmwaw_internal.hxx:178
MWAWChartInternal::SubDocument::SubDocument
SubDocument(MWAWChart *chart, MWAWChart::TextZone::Type textZone)
Definition: MWAWChart.cxx:64
MWAWChart::MWAWChart
MWAWChart(std::string const &sheetName, MWAWFontConverterPtr const &fontConverter, MWAWVec2f const &dim=MWAWVec2f())
the constructor
Definition: MWAWChart.cxx:115
MWAWGraphicStyle.hxx
MWAWChart::TextZone::m_type
Type m_type
the zone type
Definition: MWAWChart.hxx:158
MWAWChart::Axis::A_Sequence_Skip_Empty
@ A_Sequence_Skip_Empty
Definition: MWAWChart.hxx:64
MWAWChart::Series
a series in a chart
Definition: MWAWChart.hxx:118
MWAWChart::Series::S_Scatter
@ S_Scatter
Definition: MWAWChart.hxx:120
MWAWChart::Axis::Axis
Axis()
constructor
Definition: MWAWChart.cxx:332
libmwaw::TopBit
@ TopBit
Definition: libmwaw_internal.hxx:178
MWAWChart
a class used to store a chart associated to a spreadsheet ....
Definition: MWAWChart.hxx:58
MWAWChart::TextZone::m_contentType
ContentType m_contentType
the content type
Definition: MWAWChart.hxx:160
MWAWChart::TextZone::Type
Type
the text type
Definition: MWAWChart.hxx:143
MWAWChart::TextZone::m_font
MWAWFont m_font
the zone format
Definition: MWAWChart.hxx:168
MWAWListener.hxx
MWAWSpreadsheetListener.hxx
Defines MWAWSpreadsheetListener: the libmwaw spreadsheet processor listener.
MWAWChart::Axis::~Axis
~Axis()
destructor
Definition: MWAWChart.cxx:342
MWAWBox2::size
MWAWVec2< T > size() const
the box size
Definition: libmwaw_internal.hxx:1063
MWAWChart::m_textZoneMap
std::map< TextZone::Type, TextZone > m_textZoneMap
a map text zone type to text zone
Definition: MWAWChart.hxx:248
MWAWChart::m_fontConverter
MWAWFontConverterPtr m_fontConverter
the font converter
Definition: MWAWChart.hxx:250
MWAWChartInternal::SubDocument::operator=
SubDocument & operator=(SubDocument const &orig)=delete
MWAWChart::TextZone::m_position
MWAWVec2f m_position
the position in the zone
Definition: MWAWChart.hxx:162
libmwaw
namespace used to regroup all libwpd functions, enumerations which we have redefined for internal usa...
Definition: libmwaw_internal.cxx:51
MWAWInputStream.hxx
MWAWListenerPtr
std::shared_ptr< MWAWListener > MWAWListenerPtr
a smart pointer of MWAWListener
Definition: libmwaw_internal.hxx:549
MWAWFont.hxx
MWAWChart::TextZone::operator<<
friend std::ostream & operator<<(std::ostream &o, TextZone const &zone)
operator<<
Definition: MWAWChart.cxx:640
MWAWChart::Series::addStyleTo
void addStyleTo(librevenge::RVNGPropertyList &propList) const
add style to the propList
Definition: MWAWChart.cxx:539
MWAWBox2< int >
MWAWFont
Class to store font.
Definition: MWAWFont.hxx:44
MWAWChart::Legend::m_show
bool m_show
show or not the legend
Definition: MWAWChart.hxx:105
MWAWChart::sendChart
void sendChart(MWAWSpreadsheetListenerPtr &listener, librevenge::RVNGSpreadsheetInterface *interface)
send the chart to the listener
Definition: MWAWChart.cxx:176
MWAWChart::Axis::m_style
MWAWGraphicStyle m_style
the graphic style
Definition: MWAWChart.hxx:84
MWAWChart::m_legend
Legend m_legend
the legend
Definition: MWAWChart.hxx:244
MWAWChart::Series::m_type
Type m_type
the type
Definition: MWAWChart.hxx:134
MWAWChart::Axis::addStyleTo
void addStyleTo(librevenge::RVNGPropertyList &propList) const
add style to the propList
Definition: MWAWChart.cxx:378
MWAWChart::Axis::Type
Type
the axis content
Definition: MWAWChart.hxx:64
MWAWChart::setDimension
void setDimension(MWAWVec2f const &dim)
return the chart dimension
Definition: MWAWChart.hxx:195
MWAWChart::Axis::m_type
Type m_type
the sequence type
Definition: MWAWChart.hxx:76
MWAWChart::Legend::m_font
MWAWFont m_font
the font
Definition: MWAWChart.hxx:113
MWAWChart::getSeries
std::vector< Series > const & getSeries() const
return the list of series
Definition: MWAWChart.hxx:218
MWAWChart::Legend::addContentTo
void addContentTo(librevenge::RVNGPropertyList &propList) const
add content to the propList
Definition: MWAWChart.cxx:424
MWAWChart::TextZone::T_AxisX
@ T_AxisX
Definition: MWAWChart.hxx:143

Generated on Tue Apr 24 2018 22:55:11 for libmwaw by doxygen 1.8.20