RagTime5Formula.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 RagTime 5-6 document ( formula part )
36 *
37 */
38#ifndef RAGTIME5_FORMULA
39# define RAGTIME5_FORMULA
40
41#include <set>
42#include <string>
43#include <map>
44#include <vector>
45
46#include <librevenge/librevenge.h>
47
48#include "libmwaw_internal.hxx"
49
50#include "MWAWCell.hxx"
51#include "MWAWDebug.hxx"
52#include "MWAWInputStream.hxx"
53#include "MWAWPosition.hxx"
54
57
59{
60struct ClusterFormula;
61struct State;
62}
63
66class RagTime5Zone;
67
74{
75 friend class RagTime5Document;
76
77public:
78
80 explicit RagTime5Formula(RagTime5Document &doc);
82 virtual ~RagTime5Formula();
83
85 int version() const;
86
87 // interface with main parser
88
90 bool readFormulaClusters(RagTime5ClusterManager::Link const &link, int sheetId);
92 std::set<unsigned long> const &getFunctionsId() const;
93protected:
94
95
96 //
97 // Intermediate level
98 //
99
102
104 bool readFormulaZones(RagTime5ClusterManager::Cluster &cluster, RagTime5ClusterManager::Link const &link, int sheetId, bool isDefinition);
106 bool readFormulaDefinition(RagTime5Zone &zone, long endPos, int sheetId, int n, std::vector<MWAWCellContent::FormulaInstruction> &formula);
108 bool readFormulaPosition(RagTime5Zone &zone, long endPos, int n);
109
110 //
111 // low level
112 //
113
115 bool readFormula(MWAWInputStreamPtr &input, std::vector<MWAWCellContent::FormulaInstruction> &formula,
116 long const(&limitPos)[5], std::vector<std::string> const &functions, std::vector<MWAWCellContent::FormulaInstruction> const &cells, libmwaw::DebugStream &f) const;
118 bool readFormula2(MWAWInputStreamPtr &input, long const(&limitPos)[5], std::vector<std::string> const &functions, std::vector<MWAWCellContent::FormulaInstruction> const &cells, libmwaw::DebugStream &f) const;
119
120
121 //
122 // send data
123 //
124
125public:
127 static std::string printType(unsigned long fileType)
128 {
129 return RagTime5StructManager::printType(fileType);
130 }
131
132private:
133 RagTime5Formula(RagTime5Formula const &orig) = delete;
135
136protected:
137 //
138 // data
139 //
142
144 std::shared_ptr<RagTime5StructManager> m_structManager;
147
149 std::shared_ptr<RagTime5FormulaInternal::State> m_state;
150};
151#endif
152// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
Defines MWAWCell (cell content and format)
the main class to read a RagTime v5 file
Definition: RagTime5Document.hxx:77
the main class to read the formula part of RagTime 56 file
Definition: RagTime5Formula.hxx:74
std::shared_ptr< RagTime5FormulaInternal::State > m_state
the state
Definition: RagTime5Formula.hxx:149
RagTime5Formula(RagTime5Formula const &orig)=delete
RagTime5Document & m_document
the parser
Definition: RagTime5Formula.hxx:141
virtual ~RagTime5Formula()
destructor
Definition: RagTime5Formula.cxx:364
MWAWParserStatePtr m_parserState
the parser state
Definition: RagTime5Formula.hxx:146
std::shared_ptr< RagTime5StructManager > m_structManager
the structure manager
Definition: RagTime5Formula.hxx:144
bool readFormulaPosition(RagTime5Zone &zone, long endPos, int n)
try to read a formula position
Definition: RagTime5Formula.cxx:1246
RagTime5Formula & operator=(RagTime5Formula const &orig)=delete
bool readFormula(MWAWInputStreamPtr &input, std::vector< MWAWCellContent::FormulaInstruction > &formula, long const(&limitPos)[5], std::vector< std::string > const &functions, std::vector< MWAWCellContent::FormulaInstruction > const &cells, libmwaw::DebugStream &f) const
try to read a formula
Definition: RagTime5Formula.cxx:537
bool readFormulaZones(RagTime5ClusterManager::Cluster &cluster, RagTime5ClusterManager::Link const &link, int sheetId, bool isDefinition)
try to read a list of formula definition
Definition: RagTime5Formula.cxx:423
static std::string printType(unsigned long fileType)
debug: print a file type
Definition: RagTime5Formula.hxx:127
bool readFormulaClusters(RagTime5ClusterManager::Link const &link, int sheetId)
try to read some formula cluster
Definition: RagTime5Formula.cxx:386
std::set< unsigned long > const & getFunctionsId() const
returns the set of function id in fields
Definition: RagTime5Formula.cxx:373
bool readFormula2(MWAWInputStreamPtr &input, long const(&limitPos)[5], std::vector< std::string > const &functions, std::vector< MWAWCellContent::FormulaInstruction > const &cells, libmwaw::DebugStream &f) const
try to read a formula (second zone)
Definition: RagTime5Formula.cxx:874
bool readFunctionNames(RagTime5ClusterManager::Link const &link)
try to read the functions name
Definition: RagTime5Formula.cxx:378
bool readFormulaDefinition(RagTime5Zone &zone, long endPos, int sheetId, int n, std::vector< MWAWCellContent::FormulaInstruction > &formula)
try to read a formula definition
Definition: RagTime5Formula.cxx:1009
int version() const
returns the file version
Definition: RagTime5Formula.cxx:368
basic class used to store RagTime 5/6 structures
Definition: RagTime5StructManager.hxx:175
static std::string printType(unsigned long fileType)
debug: print a file type
Definition: RagTime5StructManager.cxx:94
main zone in a RagTime v5-v6 document
Definition: RagTime5StructManager.hxx:51
std::shared_ptr< MWAWParserState > MWAWParserStatePtr
a smart pointer of MWAWParserState
Definition: libmwaw_internal.hxx:557
std::shared_ptr< MWAWInputStream > MWAWInputStreamPtr
a smart pointer of MWAWInputStream
Definition: libmwaw_internal.hxx:551
Internal: the structures of a RagTime5Formula.
Definition: RagTime5Formula.cxx:64
std::stringstream DebugStream
a basic stream (if debug_with_files is not defined, does nothing)
Definition: MWAWDebug.hxx:61
the cluster data
Definition: RagTime5ClusterManager.hxx:261

Generated on Thu Jan 19 2023 00:00:00 for libmwaw by doxygen 1.9.6