Coverage Report

Created: 2026-03-12 06:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libmwaw/src/lib/ClarisWksSpreadsheet.hxx
Line
Count
Source
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 Claris Works text document ( spreadsheet part )
36
 *
37
 */
38
#ifndef CLARIS_WKS_SPREADSHEET
39
#  define CLARIS_WKS_SPREADSHEET
40
41
#include <list>
42
#include <string>
43
#include <vector>
44
45
#include "MWAWEntry.hxx"
46
#include "MWAWSubDocument.hxx"
47
48
#include "MWAWDebug.hxx"
49
#include "MWAWInputStream.hxx"
50
51
#include "MWAWParser.hxx"
52
53
#include "ClarisWksStruct.hxx"
54
55
namespace ClarisWksSpreadsheetInternal
56
{
57
struct Spreadsheet;
58
struct Field;
59
struct State;
60
}
61
62
class ClarisWksDocument;
63
class ClarisWksParser;
64
65
/** \brief the main class to read the text part of Claris Works file
66
 *
67
 *
68
 *
69
 */
70
class ClarisWksSpreadsheet
71
{
72
  friend class ClarisWksParser;
73
74
public:
75
  //! constructor
76
  explicit ClarisWksSpreadsheet(ClarisWksDocument &document);
77
  //! destructor
78
  virtual ~ClarisWksSpreadsheet();
79
80
  /** returns the file version */
81
  int version() const;
82
83
  /** returns the number of pages */
84
  int numPages() const;
85
86
  //! reads the zone Text DSET
87
  std::shared_ptr<ClarisWksStruct::DSET> readSpreadsheetZone
88
  (ClarisWksStruct::DSET const &zone, MWAWEntry const &entry, bool &complete);
89
  //! check if we can send a spreadsheet as graphic
90
  bool canSendSpreadsheetAsGraphic(int) const
91
111k
  {
92
111k
    return false;
93
111k
  }
94
  //! sends the zone data to the listener (if it exists )
95
  bool sendSpreadsheet(int number, MWAWListenerPtr listener);
96
  //! sends the zone data to the listener (if it exists )
97
  bool sendSpreadsheetAsTable(int number, MWAWListenerPtr listener);
98
99
protected:
100
  //
101
  // Intermediate level
102
  //
103
104
  /** try to read the first spreadsheet zone */
105
  bool readZone1(ClarisWksSpreadsheetInternal::Spreadsheet &sheet);
106
  /** try to read the row height zone */
107
  bool readRowHeightZone(ClarisWksSpreadsheetInternal::Spreadsheet &sheet);
108
109
  //
110
  // low level
111
  //
112
113
private:
114
  ClarisWksSpreadsheet(ClarisWksSpreadsheet const &orig) = delete;
115
  ClarisWksSpreadsheet &operator=(ClarisWksSpreadsheet const &orig) = delete;
116
117
protected:
118
  //
119
  // data
120
  //
121
122
  //! the document
123
  ClarisWksDocument &m_document;
124
125
  //! the parser state
126
  MWAWParserStatePtr m_parserState;
127
128
  //! the state
129
  std::shared_ptr<ClarisWksSpreadsheetInternal::State> m_state;
130
131
  //! the main parser;
132
  MWAWParser *m_mainParser;
133
};
134
#endif
135
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: