Coverage Report

Created: 2026-09-06 07:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libmwaw/src/lib/RagTime5Pipeline.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 RagTime 5-6 document ( pipeline part )
36
 *
37
 */
38
#ifndef RAGTIME5_PIPELINE
39
#  define RAGTIME5_PIPELINE
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 "MWAWDebug.hxx"
51
#include "MWAWInputStream.hxx"
52
#include "MWAWPosition.hxx"
53
54
#include "RagTime5StructManager.hxx"
55
#include "RagTime5ClusterManager.hxx"
56
57
namespace RagTime5PipelineInternal
58
{
59
struct ClusterPipeline;
60
struct State;
61
}
62
63
class RagTime5Document;
64
class RagTime5StructManager;
65
class RagTime5Zone;
66
67
/** \brief the main class to read the text part of RagTime 56 file
68
 *
69
 *
70
 *
71
 */
72
class RagTime5Pipeline
73
{
74
  friend class RagTime5Document;
75
76
public:
77
78
  //! constructor
79
  explicit RagTime5Pipeline(RagTime5Document &doc);
80
  //! destructor
81
  virtual ~RagTime5Pipeline();
82
83
  /** returns the file version */
84
  int version() const;
85
86
protected:
87
88
  //! sends the data which have not yet been sent to the listener
89
  void flushExtra();
90
91
  // interface with main parser
92
93
  //! try to read a pipeline cluster
94
  std::shared_ptr<RagTime5ClusterManager::Cluster> readPipelineCluster(RagTime5Zone &zone, int zoneType);
95
  //! try to return the container's type corresponding to an id
96
  RagTime5ClusterManager::Cluster::Type getContainerType(int pipelineId) const;
97
  //! try to send the container corresponding to pipelineId (mainly unimplemented)
98
  bool send(int pipelineId, MWAWListenerPtr listener, MWAWPosition const &pos, int partId=0, double totalWidth=-1);
99
100
  //
101
  // Intermediate level
102
  //
103
104
  //
105
  // low level
106
  //
107
108
  //
109
  // send data
110
  //
111
112
public:
113
  //! debug: print a file type
114
  static std::string printType(unsigned long fileType)
115
0
  {
116
0
    return RagTime5StructManager::printType(fileType);
117
0
  }
118
119
private:
120
  RagTime5Pipeline(RagTime5Pipeline const &orig) = delete;
121
  RagTime5Pipeline &operator=(RagTime5Pipeline const &orig) = delete;
122
123
protected:
124
  //
125
  // data
126
  //
127
  //! the parser
128
  RagTime5Document &m_document;
129
130
  //! the structure manager
131
  std::shared_ptr<RagTime5StructManager> m_structManager;
132
  //! the parser state
133
  MWAWParserStatePtr m_parserState;
134
135
  //! the state
136
  std::shared_ptr<RagTime5PipelineInternal::State> m_state;
137
};
138
#endif
139
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: