ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
qPclIO.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include "qPclIO.h"
9 
10 // Local
12 
13 #include "PcdFilter.h"
14 
15 // Qt
16 #include <QtPlugin>
17 
18 qPclIO::qPclIO(QObject* parent)
19  : QObject(parent), ccIOPluginInterface(":/ECV/plugin/qPclIO/info.json") {}
20 
21 // Command line command to set the PCD output file format
23  return {FileIOFilter::Shared(new PcdFilter)};
24 }
25 
26 constexpr char COMMAND_PCD_OUTPUT_FORMAT[] = "PCD_OUTPUT_FORMAT";
27 constexpr char OPTION_PCD_OUTPUT_FORMAT_CBINARY[] = "COMPRESSED_BINARY";
28 constexpr char OPTION_PCD_OUTPUT_FORMAT_BINARY[] = "BINARY";
29 constexpr char OPTION_PCD_OUTPUT_FORMAT_ASCII[] = "ASCII";
30 
32 public:
34  : ccCommandLineInterface::Command("Set PCD output format",
36 
37  ~PCDCommand() override = default;
38 
39  bool process(ccCommandLineInterface& cmd) override {
40  if (cmd.arguments().size() == 0) {
41  return cmd.error(
42  QObject::tr("Missing argument after %1: output format type")
44  }
45 
46  QString format = cmd.arguments().takeFirst().toUpper();
47 
49  cmd.print(QObject::tr("PCD output format: compressed binary"));
52  cmd.print(QObject::tr("PCD output format: binary"));
54  } else if (format == OPTION_PCD_OUTPUT_FORMAT_ASCII) {
55  cmd.print(QObject::tr("PCD output format: ASCII/text"));
57  } else {
58  return cmd.error(QObject::tr("Unknown PCD format: ") + format);
59  }
60 
61  return true;
62  }
63 };
64 
65 void qPclIO::registerCommands(ccCommandLineInterface* cmd) {
66  if (cmd) {
67  cmd->registerCommand(
69  }
70 }
filament::Texture::InternalFormat format
QSharedPointer< FileIOFilter > Shared
Shared type.
Definition: FileIOFilter.h:97
PCDCommand()
Definition: qPclIO.cpp:33
bool process(ccCommandLineInterface &cmd) override
Main process.
Definition: qPclIO.cpp:39
~PCDCommand() override=default
PCD point cloud I/O filter.
Definition: PcdFilter.h:14
@ COMPRESSED_BINARY
Definition: PcdFilter.h:32
static void SetOutputFileFormat(PCDOutputFileFormat format)
Set the output file format.
Definition: PcdFilter.cpp:867
Command line interface.
virtual QStringList & arguments()=0
Returns the list of arguments.
virtual void print(const QString &message) const =0
virtual bool error(const QString &message) const =0
virtual bool registerCommand(Command::Shared command)=0
Registers a new command.
I/O filter plugin interface.
virtual FilterList getFilters()
Returns a list of I/O filter instances.
QVector< FileIOFilter::Shared > FilterList
constexpr char OPTION_PCD_OUTPUT_FORMAT_CBINARY[]
Definition: qPclIO.cpp:27
constexpr char COMMAND_PCD_OUTPUT_FORMAT[]
Definition: qPclIO.cpp:26
constexpr char OPTION_PCD_OUTPUT_FORMAT_BINARY[]
Definition: qPclIO.cpp:28
constexpr char OPTION_PCD_OUTPUT_FORMAT_ASCII[]
Definition: qPclIO.cpp:29
QSharedPointer< Command > Shared
Shared type.
Command(const QString &name, const QString &keyword)
Default constructor.