19constexpr int kExportCellWidth = 50;
20constexpr int kExportCellHeight = 40;
32 delegate->setPlotType(plotType);
33 view.setItemDelegate(delegate);
34 view.setShowGrid(
false);
35 view.setAlternatingRowColors(
true);
36 view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
37 view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
38 view.horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
39 view.verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
40 view.horizontalHeader()->setDefaultSectionSize(cellW);
41 view.verticalHeader()->setDefaultSectionSize(cellH);
45 const int contentW = view.horizontalHeader()->length() + view.verticalHeader()->width();
46 const int contentH = view.verticalHeader()->length() + view.horizontalHeader()->height();
47 view.resize(contentW, contentH);
54 return renderToPixmap(model, plotType, kExportCellWidth, kExportCellHeight).save(fileName);
60 QPrinter printer(QPrinter::HighResolution);
61 printer.setPageSize(QPageSize(QPageSize::A4));
62 printer.setPageOrientation(QPageLayout::Orientation::Landscape);
63 printer.setOutputFormat(QPrinter::PdfFormat);
64 printer.setOutputFileName(fileName);
68 if (!painter.begin(&printer)) {
73 const QPixmap pixmap =
renderToPixmap(model, plotType, kExportCellWidth, kExportCellHeight);
74 const QSize target = pixmap.size().scaled(painter.viewport().size(), Qt::KeepAspectRatio);
75 painter.drawPixmap(QRect(QPoint(0, 0), target), pixmap);
82 for (
int row = 0; row < inputRowCount; ++row) {
83 for (
int col = 0; col < model->columnCount(); ++col) {
84 out << model->
value(row, col);
87 const auto *header = model->verticalHeaderItem(row);
88 out <<
" : \"" << (header ? header->text() : QString()) <<
"\"\n";
93 for (
int row = inputRowCount; row < model->rowCount(); ++row) {
94 for (
int col = 0; col < model->columnCount(); ++col) {
95 out << model->
value(row, col);
98 const auto *header = model->verticalHeaderItem(row);
99 out <<
" : \"" << (header ? header->text() : QString()) <<
"\"\n";
107 QTextStream out(&text);
109 out << model->rowCount() <<
"," << model->columnCount() <<
",\n";
111 for (
int row = 0; row < model->rowCount(); ++row) {
112 for (
int col = 0; col < model->columnCount(); ++col) {
113 out << model->
value(row, col) <<
",";
Common logging utilities, the Pandaception error type, and helper macros.
#define PANDACEPTION_WITH_CONTEXT(context, msg,...)
DolphinExporter: renders/serializes a SignalModel to images and text artifacts.
SignalDelegate: paints digital waveform graphics into table cells.
PlotType
Controls how signal cells are rendered in the waveform table.
SignalModel for the beWavedDolphin waveform table.
Item delegate that draws digital waveform graphics inside table cells.
QStandardItemModel subclass that makes all cells non-editable.
int value(int row, int col) const
Returns the logic value (0/1) of the cell at (row, col).
Model → artifact conversions for the beWavedDolphin export paths.
void exportToPdf(const SignalModel *model, const PlotType plotType, const QString &fileName)
QPixmap renderToPixmap(const SignalModel *model, const PlotType plotType, const int cellW, const int cellH)
void writeTruthTableText(QTextStream &out, const SignalModel *model, const int inputRowCount)
QString csvText(const SignalModel *model)
bool exportToPng(const SignalModel *model, const PlotType plotType, const QString &fileName)