Canvas5StyleManager.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  * Parser to Canvas5 text document ( style part )
36  *
37  */
38 #ifndef CANVAS5_STYLE_MANAGER
39 # define CANVAS5_STYLE_MANAGER
40 
41 #include <string>
42 #include <utility>
43 #include <vector>
44 
45 #include <librevenge/librevenge.h>
46 
47 #include "libmwaw_internal.hxx"
48 
49 #include "MWAWDebug.hxx"
50 #include "MWAWFont.hxx"
51 #include "MWAWGraphicStyle.hxx"
52 #include "MWAWInputStream.hxx"
53 #include "MWAWParagraph.hxx"
54 #include "MWAWPosition.hxx"
55 
56 class MWAWFont;
57 
58 namespace Canvas5Structure
59 {
60 struct Stream;
61 }
62 
64 {
65 struct ColorStyle;
66 struct PenStyle;
67 
68 struct State;
69 }
70 
71 namespace Canvas5ImageInternal
72 {
73 struct VKFLImage;
74 }
75 
76 class Canvas5Graph;
77 class Canvas5Image;
78 class Canvas5Parser;
79 
86 {
87  friend class Canvas5Graph;
88  friend class Canvas5Parser;
89 
90 public:
92  struct CharStyle {
95  : m_font()
96  , m_paragraphId(0)
97  , m_linkId(0)
98  {
99  }
105  int m_linkId;
106  };
107 
109  struct StyleList {
112  : m_fonts()
113  , m_paragraphs()
114  {
115  }
117  std::vector<CharStyle> m_fonts;
119  std::vector<std::pair<MWAWParagraph, int> > m_paragraphs;
120  };
121 
123  explicit Canvas5StyleManager(Canvas5Parser &parser);
125  virtual ~Canvas5StyleManager();
126 
128  int version() const;
130  std::shared_ptr<Canvas5Image> getImageParser() const;
131 
133  std::shared_ptr<Canvas5StyleManagerInternal::ColorStyle> readColorStyle(Canvas5Structure::Stream &stream, unsigned type, long len);
138 
140  std::shared_ptr<Canvas5StyleManagerInternal::PenStyle> readPenStyle(Canvas5Structure::Stream &stream, unsigned type, long len);
142  bool updateLine(Canvas5StyleManagerInternal::PenStyle const &pen, MWAWGraphicStyle &style, int &numLines, int lineId, float *offset);
143 
145  bool readArrow(Canvas5Structure::Stream &stream, MWAWGraphicStyle::Arrow &arrow, unsigned type, long len);
147  bool readCharStyle(Canvas5Structure::Stream &stream, int id, CharStyle &fontIds, bool useFileColors=true);
149  bool readDash(Canvas5Structure::Stream &stream, std::vector<float> &dashes, unsigned type, long len);
151  bool readStyleEnd(Canvas5Structure::Stream &stream, MWAWFont *font=nullptr, MWAWParagraph *para=nullptr);
152 
153 protected:
154  // interface
155 
161  bool updateLineStyle(int sId, MWAWGraphicStyle &style, int &numLines, int lineId=-1, float *offset=nullptr);
163  bool updateLineColor(int cId, MWAWGraphicStyle &style);
165  bool updateSurfaceColor(int cId, MWAWGraphicStyle &style);
166 
167  //
168  // Intermediate level
169  //
170 
172  bool readArrows(Canvas5Structure::Stream &stream);
176  bool readColors(Canvas5Structure::Stream &stream);
178  bool readColor(Canvas5Structure::Stream &stream, MWAWVariable<MWAWColor> &color, std::string &extra);
180  bool readDashes(Canvas5Structure::Stream &stream);
182  bool readFonts(Canvas5Structure::Stream &stream, int numFonts);
192  bool readStyle(Canvas5Structure::Stream &stream, int id, StyleList *styles=nullptr);
194  bool readStyles(Canvas5Structure::Stream &stream);
195 
196  //
197  // Windows RSRC
198  //
199 
200  //
201  // Low level
202  //
203 
205  bool readGradient(Canvas5Structure::Stream &stream, long len, MWAWGraphicStyle::Gradient &gradient);
207  bool readHatch(Canvas5Structure::Stream &stream, long len, MWAWGraphicStyle::Hatch &hatch,
208  MWAWVariable<MWAWColor> &backColor);
210  std::shared_ptr<Canvas5ImageInternal::VKFLImage> readSymbol(Canvas5Structure::Stream &stream, long len,
211  MWAWVariable<MWAWColor> &backColor);
213  std::shared_ptr<Canvas5ImageInternal::VKFLImage> readTexture(Canvas5Structure::Stream &stream, long len);
214 
215 
216 private:
219 
220 protected:
221  //
222  // data
223  //
226 
228  std::shared_ptr<Canvas5StyleManagerInternal::State> m_state;
229 
232 };
233 #endif
234 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
the main class to read the graphic part of Canvas5 file
Definition: Canvas5Graph.hxx:85
the main class to read/convert the image or movie inside of Canvas 5/6 file
Definition: Canvas5Image.hxx:78
the main class to read a Canvas 5/6 files
Definition: Canvas5Parser.hxx:72
the main class to read the style part of Canvas 5 file
Definition: Canvas5StyleManager.hxx:86
bool readStrokes(Canvas5Structure::Stream &stream)
try to read the stroke styles
Definition: Canvas5StyleManager.cxx:1423
bool readStyle(Canvas5Structure::Stream &stream, int id, StyleList *styles=nullptr)
try to read a style
Definition: Canvas5StyleManager.cxx:1667
Canvas5StyleManager(Canvas5StyleManager const &orig)=delete
std::shared_ptr< Canvas5StyleManagerInternal::PenStyle > readPenStyle(Canvas5Structure::Stream &stream, unsigned type, long len)
try to read a pen style
Definition: Canvas5StyleManager.cxx:1233
bool readCharStyle(Canvas5Structure::Stream &stream, int id, CharStyle &fontIds, bool useFileColors=true)
try to read a character style, returns a font, a paragraph id and it potential link id
Definition: Canvas5StyleManager.cxx:1461
bool readPenSize(Canvas5Structure::Stream &stream)
read the pen size (header file)
Definition: Canvas5StyleManager.cxx:1164
Canvas5StyleManager(Canvas5Parser &parser)
constructor
Definition: Canvas5StyleManager.cxx:219
bool readFonts(Canvas5Structure::Stream &stream, int numFonts)
try to read the fonts names
Definition: Canvas5StyleManager.cxx:1055
virtual ~Canvas5StyleManager()
destructor
Definition: Canvas5StyleManager.cxx:226
bool updateSurfaceColor(Canvas5StyleManagerInternal::ColorStyle const &color, MWAWGraphicStyle &style)
try to update the surface color given a color style
Definition: Canvas5StyleManager.cxx:1994
bool readColor(Canvas5Structure::Stream &stream, MWAWVariable< MWAWColor > &color, std::string &extra)
try to read a color: 12 unknown 4 components followed by a type
Definition: Canvas5StyleManager.cxx:245
bool updateLine(Canvas5StyleManagerInternal::PenStyle const &pen, MWAWGraphicStyle &style, int &numLines, int lineId, float *offset)
try to update the line color given a color style
Definition: Canvas5StyleManager.cxx:2051
bool readGradient(Canvas5Structure::Stream &stream, long len, MWAWGraphicStyle::Gradient &gradient)
try to read a gradient zone: OBFL
Definition: Canvas5StyleManager.cxx:290
bool readStyles(Canvas5Structure::Stream &stream)
try to read the styles
Definition: Canvas5StyleManager.cxx:1878
std::shared_ptr< Canvas5Image > getImageParser() const
returns the image parser
Definition: Canvas5StyleManager.cxx:234
int version() const
returns the file version
Definition: Canvas5StyleManager.cxx:229
Canvas5Parser * m_mainParser
the main parser;
Definition: Canvas5StyleManager.hxx:231
bool readArrows(Canvas5Structure::Stream &stream)
try to read the arrows zones
Definition: Canvas5StyleManager.cxx:561
bool readDashes(Canvas5Structure::Stream &stream)
try to read the dashes
Definition: Canvas5StyleManager.cxx:977
Canvas5StyleManager & operator=(Canvas5StyleManager const &orig)=delete
bool readDash(Canvas5Structure::Stream &stream, std::vector< float > &dashes, unsigned type, long len)
try to read a dash's array
Definition: Canvas5StyleManager.cxx:1007
std::shared_ptr< Canvas5StyleManagerInternal::State > m_state
the state
Definition: Canvas5StyleManager.hxx:228
bool updateLineStyle(int sId, MWAWGraphicStyle &style, int &numLines, int lineId=-1, float *offset=nullptr)
try to update the line style given the stroke id and returns the number of lines(plin)
Definition: Canvas5StyleManager.cxx:2092
bool readHatch(Canvas5Structure::Stream &stream, long len, MWAWGraphicStyle::Hatch &hatch, MWAWVariable< MWAWColor > &backColor)
try to read a hatch zone: htch
Definition: Canvas5StyleManager.cxx:461
bool readArrow(Canvas5Structure::Stream &stream, MWAWGraphicStyle::Arrow &arrow, unsigned type, long len)
try to read an arrow
Definition: Canvas5StyleManager.cxx:593
bool readCharStyles(Canvas5Structure::Stream &stream)
try to read the character styles
Definition: Canvas5StyleManager.cxx:1615
MWAWParserStatePtr m_parserState
the parser state
Definition: Canvas5StyleManager.hxx:225
bool readColors(Canvas5Structure::Stream &stream)
try to read the ink color zones
Definition: Canvas5StyleManager.cxx:632
std::shared_ptr< Canvas5StyleManagerInternal::ColorStyle > readColorStyle(Canvas5Structure::Stream &stream, unsigned type, long len)
try to read a color style
Definition: Canvas5StyleManager.cxx:741
bool readFormats(Canvas5Structure::Stream &stream)
read the list of formats, mainly an unit's conversion table
Definition: Canvas5StyleManager.cxx:1101
bool readStyleEnd(Canvas5Structure::Stream &stream, MWAWFont *font=nullptr, MWAWParagraph *para=nullptr)
try to read the second part of a style which contains minor paragraph styles, hyphen,...
Definition: Canvas5StyleManager.cxx:1794
bool updateLineColor(Canvas5StyleManagerInternal::ColorStyle const &color, MWAWGraphicStyle &style)
try to update the line color given a color style
Definition: Canvas5StyleManager.cxx:1949
std::shared_ptr< Canvas5ImageInternal::VKFLImage > readSymbol(Canvas5Structure::Stream &stream, long len, MWAWVariable< MWAWColor > &backColor)
try to read a symbol zone: vkfl
Definition: Canvas5StyleManager.cxx:848
bool readPenStyles(Canvas5Structure::Stream &stream)
read the pen styles
Definition: Canvas5StyleManager.cxx:1184
std::shared_ptr< Canvas5ImageInternal::VKFLImage > readTexture(Canvas5Structure::Stream &stream, long len)
try to read a texture zone: TXUR
Definition: Canvas5StyleManager.cxx:919
Class to store font.
Definition: MWAWFont.hxx:44
a structure used to define a picture style
Definition: MWAWGraphicStyle.hxx:48
class to store the paragraph properties
Definition: MWAWParagraph.hxx:85
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition: libmwaw_internal.hxx:557
Internal: the structures of a Canvas5Image.
Definition: Canvas5Image.cxx:70
a namespace used to define basic function or structure to read a Canvas 5 file
Definition: Canvas5BMParser.hxx:64
Internal: the structures of a Canvas5StyleManager.
Definition: Canvas5StyleManager.cxx:62
a sub stream of Canvas5Structure
Definition: Canvas5Structure.hxx:49
Internal: the color style of a Canvas5StyleManager.
Definition: Canvas5StyleManager.cxx:66
Internal: the pen style of a Canvas5StyleManager.
Definition: Canvas5StyleManager.cxx:108
a structure use to store a character style
Definition: Canvas5StyleManager.hxx:92
int m_linkId
the link id
Definition: Canvas5StyleManager.hxx:105
MWAWFont m_font
the font
Definition: Canvas5StyleManager.hxx:101
CharStyle()
constructor
Definition: Canvas5StyleManager.hxx:94
int m_paragraphId
the paragraph id
Definition: Canvas5StyleManager.hxx:103
a structure use to store a list of styles
Definition: Canvas5StyleManager.hxx:109
StyleList()
constructor
Definition: Canvas5StyleManager.hxx:111
std::vector< CharStyle > m_fonts
the fonts, the paragraph id and the link id
Definition: Canvas5StyleManager.hxx:117
std::vector< std::pair< MWAWParagraph, int > > m_paragraphs
the paragraph list and the tab id
Definition: Canvas5StyleManager.hxx:119
a structure used to define an arrow
Definition: MWAWGraphicStyle.hxx:56
a basic gradient used in a MWAWGraphicStyle
Definition: MWAWGraphicStyle.hxx:139
a basic hatch used in MWAWGraphicStyle
Definition: MWAWGraphicStyle.hxx:276

Generated on Thu May 13 2021 02:58:23 for libmwaw by doxygen 1.9.1