1
0
mirror of https://github.com/JakubMelka/PDF4QT.git synced 2025-03-11 17:00:20 +01:00

Issue : Fixing compilation errors

This commit is contained in:
Jakub Melka 2023-12-08 10:54:29 +01:00
parent cdbbe5e121
commit 642e6a9bb7
19 changed files with 123 additions and 56 deletions

@ -426,7 +426,7 @@ private:
}; };
/// Annotation default appearance /// Annotation default appearance
class PDFAnnotationDefaultAppearance class PDF4QTLIBCORESHARED_EXPORT PDFAnnotationDefaultAppearance
{ {
public: public:
explicit inline PDFAnnotationDefaultAppearance() = default; explicit inline PDFAnnotationDefaultAppearance() = default;
@ -482,7 +482,7 @@ struct AnnotationDrawParameters
/// Annotations are various enhancements to pages graphical representation, /// Annotations are various enhancements to pages graphical representation,
/// such as graphics, text, highlight or multimedia content, such as sounds, /// such as graphics, text, highlight or multimedia content, such as sounds,
/// videos and 3D annotations. /// videos and 3D annotations.
class PDFAnnotation class PDF4QTLIBCORESHARED_EXPORT PDFAnnotation
{ {
public: public:
explicit PDFAnnotation(); explicit PDFAnnotation();
@ -1497,7 +1497,7 @@ public:
mutable PDFCachedItem<PDFObject> appearanceStream; mutable PDFCachedItem<PDFObject> appearanceStream;
}; };
struct PageAnnotations struct PDF4QTLIBCORESHARED_EXPORT PageAnnotations
{ {
bool isEmpty() const { return annotations.empty(); } bool isEmpty() const { return annotations.empty(); }

@ -623,7 +623,6 @@ void PDFFormFieldButton::resetValue(const ResetValueParameters& parameters)
PDFFormManager::PDFFormManager(QObject* parent) : PDFFormManager::PDFFormManager(QObject* parent) :
BaseClass(parent), BaseClass(parent),
m_annotationManager(nullptr),
m_document(nullptr), m_document(nullptr),
m_flags(getDefaultApperanceFlags()), m_flags(getDefaultApperanceFlags()),
m_isCommitDisabled(false) m_isCommitDisabled(false)
@ -636,16 +635,6 @@ PDFFormManager::~PDFFormManager()
} }
PDFAnnotationManager* PDFFormManager::getAnnotationManager() const
{
return m_annotationManager;
}
void PDFFormManager::setAnnotationManager(PDFAnnotationManager* annotationManager)
{
m_annotationManager = annotationManager;
}
const PDFDocument* PDFFormManager::getDocument() const const PDFDocument* PDFFormManager::getDocument() const
{ {
return m_document; return m_document;

@ -72,7 +72,7 @@ using PDFFormWidgets = std::vector<PDFFormWidget>;
/// have children), fields represents various interactive widgets, such as /// have children), fields represents various interactive widgets, such as
/// checks, radio buttons, text edits etc., which are editable and user /// checks, radio buttons, text edits etc., which are editable and user
/// can interact with them. /// can interact with them.
class PDFFormField class PDF4QTLIBCORESHARED_EXPORT PDFFormField
{ {
public: public:
explicit inline PDFFormField() = default; explicit inline PDFFormField() = default;
@ -280,7 +280,7 @@ protected:
/// Represents pushbutton, checkbox and radio button (which is distinguished /// Represents pushbutton, checkbox and radio button (which is distinguished
/// by flags). /// by flags).
class PDFFormFieldButton : public PDFFormField class PDF4QTLIBCORESHARED_EXPORT PDFFormFieldButton : public PDFFormField
{ {
public: public:
explicit inline PDFFormFieldButton() = default; explicit inline PDFFormFieldButton() = default;
@ -325,7 +325,7 @@ private:
}; };
/// Represents single line, or multiline text field /// Represents single line, or multiline text field
class PDFFormFieldText : public PDFFormField class PDF4QTLIBCORESHARED_EXPORT PDFFormFieldText : public PDFFormField
{ {
public: public:
explicit inline PDFFormFieldText() = default; explicit inline PDFFormFieldText() = default;
@ -359,7 +359,7 @@ private:
QString m_richTextValue; QString m_richTextValue;
}; };
class PDFFormFieldChoice : public PDFFormField class PDF4QTLIBCORESHARED_EXPORT PDFFormFieldChoice : public PDFFormField
{ {
using BaseClass = PDFFormField; using BaseClass = PDFFormField;
@ -394,7 +394,7 @@ private:
PDFObject m_selection; PDFObject m_selection;
}; };
class PDFFormFieldSignature : public PDFFormField class PDF4QTLIBCORESHARED_EXPORT PDFFormFieldSignature : public PDFFormField
{ {
public: public:
explicit inline PDFFormFieldSignature() = default; explicit inline PDFFormFieldSignature() = default;
@ -522,9 +522,6 @@ public:
/// \param widget Widget annotation /// \param widget Widget annotation
PDFFormField* getFormFieldForWidget(PDFObjectReference widget) { return m_form.getFormFieldForWidget(widget); } PDFFormField* getFormFieldForWidget(PDFObjectReference widget) { return m_form.getFormFieldForWidget(widget); }
PDFAnnotationManager* getAnnotationManager() const;
void setAnnotationManager(PDFAnnotationManager* annotationManager);
const PDFDocument* getDocument() const; const PDFDocument* getDocument() const;
void setDocument(const PDFModifiedDocument& document); void setDocument(const PDFModifiedDocument& document);
@ -615,7 +612,6 @@ signals:
void documentModified(pdf::PDFModifiedDocument document); void documentModified(pdf::PDFModifiedDocument document);
private: private:
PDFAnnotationManager* m_annotationManager;
const PDFDocument* m_document; const PDFDocument* m_document;
FormAppearanceFlags m_flags; FormAppearanceFlags m_flags;
PDFForm m_form; PDFForm m_form;

@ -147,7 +147,7 @@ private:
/// Precompiled page contains precompiled graphic instructions of a PDF page to draw it quickly /// Precompiled page contains precompiled graphic instructions of a PDF page to draw it quickly
/// on the target painter. It enables very fast drawing, because instructions are not decoded /// on the target painter. It enables very fast drawing, because instructions are not decoded
/// and interpreted from the PDF stream, but they are just "played" on the painter. /// and interpreted from the PDF stream, but they are just "played" on the painter.
class PDFPrecompiledPage class PDF4QTLIBCORESHARED_EXPORT PDFPrecompiledPage
{ {
public: public:
explicit inline PDFPrecompiledPage() = default; explicit inline PDFPrecompiledPage() = default;

@ -106,7 +106,7 @@ private:
}; };
/// Snap engine, which handles snapping of points on the page. /// Snap engine, which handles snapping of points on the page.
class PDFSnapper class PDF4QTLIBCORESHARED_EXPORT PDFSnapper
{ {
public: public:
PDFSnapper(); PDFSnapper();

@ -264,7 +264,7 @@ private:
PDFTextSelectionColoredItems m_items; PDFTextSelectionColoredItems m_items;
}; };
struct PDFFindResult struct PDF4QTLIBCORESHARED_EXPORT PDFFindResult
{ {
bool operator<(const PDFFindResult& other) const; bool operator<(const PDFFindResult& other) const;

@ -20,7 +20,7 @@
namespace pdf namespace pdf
{ {
class PDFTextLayoutGenerator : public PDFPageContentProcessor class PDF4QTLIBCORESHARED_EXPORT PDFTextLayoutGenerator : public PDFPageContentProcessor
{ {
using BaseClass = PDFPageContentProcessor; using BaseClass = PDFPageContentProcessor;

@ -25,7 +25,7 @@ namespace pdf
class PDFPrecompiledPage; class PDFPrecompiledPage;
/// Snapshot for current widget viewable items. /// Snapshot for current widget viewable items.
struct PDFWidgetSnapshot struct PDF4QTLIBCORESHARED_EXPORT PDFWidgetSnapshot
{ {
struct SnapshotItem struct SnapshotItem
{ {

@ -21,6 +21,7 @@
#include "pdfutils.h" #include "pdfutils.h"
#include "pdfcompiler.h" #include "pdfcompiler.h"
#include "pdfwidgetformmanager.h" #include "pdfwidgetformmanager.h"
#include "pdfwidgetannotation.h"
#include "pdfdbgheap.h" #include "pdfdbgheap.h"
#include <QActionGroup> #include <QActionGroup>

@ -23,6 +23,7 @@
#include "pdfcms.h" #include "pdfcms.h"
#include "pdfannotation.h" #include "pdfannotation.h"
#include "pdfdrawwidget.h" #include "pdfdrawwidget.h"
#include "pdfwidgetannotation.h"
#include "pdfdbgheap.h" #include "pdfdbgheap.h"
#include <QTimer> #include <QTimer>

@ -18,7 +18,11 @@
#include "pdfwidgetannotation.h" #include "pdfwidgetannotation.h"
#include "pdfdrawwidget.h" #include "pdfdrawwidget.h"
#include "pdfwidgetutils.h" #include "pdfwidgetutils.h"
#include "pdfwidgetformmanager.h"
#include "pdfdrawspacecontroller.h" #include "pdfdrawspacecontroller.h"
#include "pdfselectpagesdialog.h"
#include "pdfobjecteditorwidget.h"
#include "pdfdocumentbuilder.h"
#include <QMenu> #include <QMenu>
#include <QDialog> #include <QDialog>

@ -15,6 +15,9 @@
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with PDF4QT. If not, see <https://www.gnu.org/licenses/>. // along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
#ifndef PDFWIDGETANNOTATION_H
#define PDFWIDGETANNOTATION_H
#include "pdfwidgetsglobal.h" #include "pdfwidgetsglobal.h"
#include "pdfannotation.h" #include "pdfannotation.h"
#include "pdfdocumentdrawinterface.h" #include "pdfdocumentdrawinterface.h"
@ -101,3 +104,5 @@ private:
}; };
} // namespace pdf } // namespace pdf
#endif // PDFWIDGETANNOTATION_H

@ -17,7 +17,12 @@
#include "pdfwidgetformmanager.h" #include "pdfwidgetformmanager.h"
#include "pdfdrawwidget.h" #include "pdfdrawwidget.h"
#include "pdftexteditpseudowidget.h"
#include "pdfdrawspacecontroller.h"
#include "pdfform.h" #include "pdfform.h"
#include "pdfpainterutils.h"
#include "pdfwidgetannotation.h"
#include "pdfdocumentbuilder.h"
#include <QKeyEvent> #include <QKeyEvent>
#include <QMouseEvent> #include <QMouseEvent>
@ -172,7 +177,7 @@ private:
using BaseClass = PDFFormFieldWidgetEditor; using BaseClass = PDFFormFieldWidgetEditor;
public: public:
explicit PDFFormFieldAbstractButtonEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldAbstractButtonEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldAbstractButtonEditor() = default; virtual ~PDFFormFieldAbstractButtonEditor() = default;
virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override; virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override;
@ -191,7 +196,7 @@ private:
using BaseClass = PDFFormFieldAbstractButtonEditor; using BaseClass = PDFFormFieldAbstractButtonEditor;
public: public:
explicit PDFFormFieldPushButtonEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldPushButtonEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldPushButtonEditor() = default; virtual ~PDFFormFieldPushButtonEditor() = default;
protected: protected:
@ -205,7 +210,7 @@ private:
using BaseClass = PDFFormFieldAbstractButtonEditor; using BaseClass = PDFFormFieldAbstractButtonEditor;
public: public:
explicit PDFFormFieldCheckableButtonEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldCheckableButtonEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldCheckableButtonEditor() = default; virtual ~PDFFormFieldCheckableButtonEditor() = default;
protected: protected:
@ -219,7 +224,7 @@ private:
using BaseClass = PDFFormFieldWidgetEditor; using BaseClass = PDFFormFieldWidgetEditor;
public: public:
explicit PDFFormFieldTextBoxEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldTextBoxEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldTextBoxEditor() = default; virtual ~PDFFormFieldTextBoxEditor() = default;
virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override; virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override;
@ -250,7 +255,7 @@ private:
using BaseClass = PDFFormFieldWidgetEditor; using BaseClass = PDFFormFieldWidgetEditor;
public: public:
explicit PDFFormFieldComboBoxEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldComboBoxEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldComboBoxEditor() = default; virtual ~PDFFormFieldComboBoxEditor() = default;
virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override; virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override;
@ -300,7 +305,7 @@ private:
using BaseClass = PDFFormFieldWidgetEditor; using BaseClass = PDFFormFieldWidgetEditor;
public: public:
explicit PDFFormFieldListBoxEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldListBoxEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldListBoxEditor() = default; virtual ~PDFFormFieldListBoxEditor() = default;
virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override; virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) override;
@ -337,12 +342,23 @@ private:
PDFWidgetFormManager::PDFWidgetFormManager(PDFDrawWidgetProxy* proxy, QObject* parent) : PDFWidgetFormManager::PDFWidgetFormManager(PDFDrawWidgetProxy* proxy, QObject* parent) :
BaseClass(parent), BaseClass(parent),
m_annotationManager(nullptr),
m_proxy(proxy), m_proxy(proxy),
m_focusedEditor(nullptr) m_focusedEditor(nullptr)
{ {
Q_ASSERT(proxy); Q_ASSERT(proxy);
} }
PDFWidgetAnnotationManager* PDFWidgetFormManager::getAnnotationManager() const
{
return m_annotationManager;
}
void PDFWidgetFormManager::setAnnotationManager(PDFWidgetAnnotationManager* annotationManager)
{
m_annotationManager = annotationManager;
}
void PDFWidgetFormManager::shortcutOverrideEvent(QWidget* widget, QKeyEvent* event) void PDFWidgetFormManager::shortcutOverrideEvent(QWidget* widget, QKeyEvent* event)
{ {
if (m_focusedEditor) if (m_focusedEditor)
@ -522,7 +538,7 @@ void PDFWidgetFormManager::grabMouse(const MouseEventInfo& info, QMouseEvent* ev
} }
} }
PDFFormManager::MouseEventInfo PDFWidgetFormManager::getMouseEventInfo(QWidget* widget, QPoint point) PDFWidgetFormManager::MouseEventInfo PDFWidgetFormManager::getMouseEventInfo(QWidget* widget, QPoint point)
{ {
MouseEventInfo result; MouseEventInfo result;
@ -567,7 +583,7 @@ PDFFormManager::MouseEventInfo PDFWidgetFormManager::getMouseEventInfo(QWidget*
{ {
annotationRect = pageAnnotation.annotation->getRectangle(); annotationRect = pageAnnotation.annotation->getRectangle();
} }
QTransform widgetToDevice = m_annotationManager->prepareTransformations(snapshotItem.pageToDeviceMatrix, widget, pageAnnotation.annotation->getEffectiveFlags(), m_document->getCatalog()->getPage(snapshotItem.pageIndex), annotationRect); QTransform widgetToDevice = m_annotationManager->prepareTransformations(snapshotItem.pageToDeviceMatrix, widget, pageAnnotation.annotation->getEffectiveFlags(), getDocument()->getCatalog()->getPage(snapshotItem.pageIndex), annotationRect);
QPainterPath path; QPainterPath path;
path.addRect(annotationRect); path.addRect(annotationRect);
@ -796,7 +812,7 @@ void PDFWidgetFormManager::updateFieldValues()
{ {
BaseClass::updateFieldValues(); BaseClass::updateFieldValues();
if (m_document) if (getDocument())
{ {
for (PDFFormFieldWidgetEditor* editor : m_widgetEditors) for (PDFFormFieldWidgetEditor* editor : m_widgetEditors)
{ {
@ -818,7 +834,7 @@ PDFFormFieldWidgetEditor* PDFWidgetFormManager::getEditor(const PDFFormField* fo
return nullptr; return nullptr;
} }
PDFFormFieldWidgetEditor::PDFFormFieldWidgetEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldWidgetEditor::PDFFormFieldWidgetEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
m_formManager(formManager), m_formManager(formManager),
m_formWidget(formWidget), m_formWidget(formWidget),
m_hasFocus(false) m_hasFocus(false)
@ -959,13 +975,13 @@ void PDFFormFieldWidgetEditor::performKeypadNavigation(QWidget* widget, QKeyEven
m_formManager->focusNextPrevFormField(next); m_formManager->focusNextPrevFormField(next);
} }
PDFFormFieldPushButtonEditor::PDFFormFieldPushButtonEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldPushButtonEditor::PDFFormFieldPushButtonEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
BaseClass(formManager, formWidget) BaseClass(formManager, formWidget)
{ {
} }
PDFFormFieldAbstractButtonEditor::PDFFormFieldAbstractButtonEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldAbstractButtonEditor::PDFFormFieldAbstractButtonEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
BaseClass(formManager, formWidget) BaseClass(formManager, formWidget)
{ {
@ -1062,7 +1078,7 @@ void PDFFormFieldPushButtonEditor::click()
} }
} }
PDFFormFieldCheckableButtonEditor::PDFFormFieldCheckableButtonEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldCheckableButtonEditor::PDFFormFieldCheckableButtonEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
BaseClass(formManager, formWidget) BaseClass(formManager, formWidget)
{ {
@ -1095,7 +1111,7 @@ void PDFFormFieldCheckableButtonEditor::click()
m_formManager->setFormFieldValue(parameters); m_formManager->setFormFieldValue(parameters);
} }
PDFFormFieldComboBoxEditor::PDFFormFieldComboBoxEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldComboBoxEditor::PDFFormFieldComboBoxEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
BaseClass(formManager, formWidget), BaseClass(formManager, formWidget),
m_textEdit(getTextEditFlags(formWidget.getParent()->getFlags())), m_textEdit(getTextEditFlags(formWidget.getParent()->getFlags())),
m_listBox(formWidget.getParent()->getFlags()), m_listBox(formWidget.getParent()->getFlags()),
@ -1460,7 +1476,7 @@ void PDFFormFieldTextBoxEditor::setFocusImpl(bool focused)
} }
} }
PDFFormFieldTextBoxEditor::PDFFormFieldTextBoxEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldTextBoxEditor::PDFFormFieldTextBoxEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
BaseClass(formManager, formWidget), BaseClass(formManager, formWidget),
m_textEdit(formWidget.getParent()->getFlags()) m_textEdit(formWidget.getParent()->getFlags())
{ {
@ -1905,7 +1921,7 @@ int PDFListBoxPseudowidget::getIndexFromWidgetPosition(const QPointF& point) con
return m_topIndex + visualIndex; return m_topIndex + visualIndex;
} }
PDFFormFieldListBoxEditor::PDFFormFieldListBoxEditor(PDFFormManager* formManager, PDFFormWidget formWidget) : PDFFormFieldListBoxEditor::PDFFormFieldListBoxEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget) :
BaseClass(formManager, formWidget), BaseClass(formManager, formWidget),
m_listBox(formWidget.getParent()->getFlags()) m_listBox(formWidget.getParent()->getFlags())
{ {
@ -2154,7 +2170,7 @@ void PDFFormFieldListBoxEditor::commit()
} }
} }
PDFWidgetFormManager::isEditorDrawEnabled(const PDFObjectReference& reference) const bool PDFWidgetFormManager::isEditorDrawEnabled(const PDFObjectReference& reference) const
{ {
const PDFFormFieldWidgetEditor* editor = getEditor(getFormFieldForWidget(reference)); const PDFFormFieldWidgetEditor* editor = getEditor(getFormFieldForWidget(reference));
return editor && editor->isEditorDrawEnabled(); return editor && editor->isEditorDrawEnabled();

@ -15,19 +15,25 @@
// You should have received a copy of the GNU Lesser General Public License // You should have received a copy of the GNU Lesser General Public License
// along with PDF4QT. If not, see <https://www.gnu.org/licenses/>. // along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
#ifndef PDFWIDGETFORMMANAGER_H
#define PDFWIDGETFORMMANAGER_H
#include "pdfwidgetsglobal.h"
#include "pdfform.h" #include "pdfform.h"
#include "pdfdocumentdrawinterface.h" #include "pdfdocumentdrawinterface.h"
namespace pdf namespace pdf
{ {
class PDFDrawWidgetProxy; class PDFDrawWidgetProxy;
class PDFWidgetAnnotationManager;
class PDFWidgetFormManager;
/// Base class for editors of form fields. It enables editation /// Base class for editors of form fields. It enables editation
/// of form fields, such as entering text, clicking on check box etc. /// of form fields, such as entering text, clicking on check box etc.
class PDFFormFieldWidgetEditor class PDF4QTLIBWIDGETSSHARED_EXPORT PDFFormFieldWidgetEditor
{ {
public: public:
explicit PDFFormFieldWidgetEditor(PDFFormManager* formManager, PDFFormWidget formWidget); explicit PDFFormFieldWidgetEditor(PDFWidgetFormManager* formManager, PDFFormWidget formWidget);
virtual ~PDFFormFieldWidgetEditor() = default; virtual ~PDFFormFieldWidgetEditor() = default;
virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event); virtual void shortcutOverrideEvent(QWidget* widget, QKeyEvent* event);
@ -63,12 +69,12 @@ protected:
void performKeypadNavigation(QWidget* widget, QKeyEvent* event); void performKeypadNavigation(QWidget* widget, QKeyEvent* event);
PDFFormManager* m_formManager; PDFWidgetFormManager* m_formManager;
PDFFormWidget m_formWidget; PDFFormWidget m_formWidget;
bool m_hasFocus; bool m_hasFocus;
}; };
class PDFWidgetFormManager : public PDFFormManager, public IDrawWidgetInputInterface class PDF4QTLIBWIDGETSSHARED_EXPORT PDFWidgetFormManager : public PDFFormManager, public IDrawWidgetInputInterface
{ {
Q_OBJECT Q_OBJECT
@ -135,6 +141,9 @@ public:
virtual bool isEditorDrawEnabled(const PDFFormField* formField) const override; virtual bool isEditorDrawEnabled(const PDFFormField* formField) const override;
virtual void drawFormField(const PDFFormField* formField, AnnotationDrawParameters& parameters, bool edit) const override; virtual void drawFormField(const PDFFormField* formField, AnnotationDrawParameters& parameters, bool edit) const override;
PDFWidgetAnnotationManager* getAnnotationManager() const;
void setAnnotationManager(PDFWidgetAnnotationManager* annotationManager);
protected: protected:
virtual void updateFieldValues() override; virtual void updateFieldValues() override;
virtual void onDocumentReset() override; virtual void onDocumentReset() override;
@ -169,6 +178,7 @@ private:
/// \param event Mouse event /// \param event Mouse event
void ungrabMouse(const MouseEventInfo& info, QMouseEvent* event); void ungrabMouse(const MouseEventInfo& info, QMouseEvent* event);
PDFWidgetAnnotationManager* m_annotationManager;
PDFDrawWidgetProxy* m_proxy; PDFDrawWidgetProxy* m_proxy;
MouseGrabInfo m_mouseGrabInfo; MouseGrabInfo m_mouseGrabInfo;
std::optional<QCursor> m_mouseCursor; std::optional<QCursor> m_mouseCursor;
@ -177,3 +187,5 @@ private:
}; };
} // namespace pdf } // namespace pdf
#endif // PDFWIDGETFORMMANAGER_H

@ -30,11 +30,47 @@
#include <QPageSize> #include <QPageSize>
#include <QtConcurrent/QtConcurrent> #include <QtConcurrent/QtConcurrent>
#include <stack>
#include <execution> #include <execution>
namespace pdfviewer namespace pdfviewer
{ {
class PDFTreeFactory : public pdf::ITreeFactory
{
public:
PDFTreeFactory(QTreeWidgetItem* root)
{
m_roots.push(root);
}
// ITreeFactory interface
virtual void pushItem(QStringList texts) override;
virtual void addItem(QStringList texts) override;
virtual void popItem() override;
private:
std::stack<QTreeWidgetItem*> m_roots;
};
void PDFTreeFactory::pushItem(QStringList texts)
{
Q_ASSERT(!m_roots.empty());
m_roots.push(new QTreeWidgetItem(m_roots.top(), texts));
}
void PDFTreeFactory::addItem(QStringList texts)
{
Q_ASSERT(!m_roots.empty());
new QTreeWidgetItem(m_roots.top(), texts);
}
void PDFTreeFactory::popItem()
{
Q_ASSERT(!m_roots.empty());
m_roots.pop();
}
PDFDocumentPropertiesDialog::PDFDocumentPropertiesDialog(const pdf::PDFDocument* document, PDFDocumentPropertiesDialog::PDFDocumentPropertiesDialog(const pdf::PDFDocument* document,
const PDFFileInfo* fileInfo, const PDFFileInfo* fileInfo,
QWidget* parent) : QWidget* parent) :
@ -352,9 +388,14 @@ void PDFDocumentPropertiesDialog::initializeFonts(const pdf::PDFDocument* docume
{ {
new QTreeWidgetItem(fontRootItem, { tr("Font family"), fontDescriptor->fontFamily }); new QTreeWidgetItem(fontRootItem, { tr("Font family"), fontDescriptor->fontFamily });
} }
new QTreeWidgetItem(fontRootItem, { tr("Embedded subset"), fontDescriptor->getEmbeddedFontData() ? tr("Yes") : tr("No") }); new QTreeWidgetItem(fontRootItem, { tr("Embedded subset"), fontDescriptor->getEmbeddedFontData() ? tr("Yes") : tr("No") });
font->dumpFontToTreeItem(fontRootItem);
realizedFont->dumpFontToTreeItem(fontRootItem); PDFTreeFactory treeFactory1(fontRootItem);
font->dumpFontToTreeItem(&treeFactory1);
PDFTreeFactory treeFactory2(fontRootItem);
realizedFont->dumpFontToTreeItem(&treeFactory2);
// Separator item // Separator item
new QTreeWidgetItem(fontRootItem, QStringList()); new QTreeWidgetItem(fontRootItem, QStringList());

@ -42,6 +42,8 @@
#include "pdfrecentfilemanager.h" #include "pdfrecentfilemanager.h"
#include "pdftexttospeech.h" #include "pdftexttospeech.h"
#include "pdfencryptionsettingsdialog.h" #include "pdfencryptionsettingsdialog.h"
#include "pdfwidgetannotation.h"
#include "pdfwidgetformmanager.h"
#include <QMenu> #include <QMenu>
#include <QPrinter> #include <QPrinter>
@ -385,7 +387,7 @@ void PDFProgramController::initializeAnnotationManager()
void PDFProgramController::initializeFormManager() void PDFProgramController::initializeFormManager()
{ {
m_formManager = new pdf::PDFFormManager(m_pdfWidget->getDrawWidgetProxy(), this); m_formManager = new pdf::PDFWidgetFormManager(m_pdfWidget->getDrawWidgetProxy(), this);
m_formManager->setAnnotationManager(m_annotationManager); m_formManager->setAnnotationManager(m_annotationManager);
m_formManager->setAppearanceFlags(m_settings->getSettings().m_formAppearanceFlags); m_formManager->setAppearanceFlags(m_settings->getSettings().m_formAppearanceFlags);
m_annotationManager->setFormManager(m_formManager); m_annotationManager->setFormManager(m_formManager);

@ -42,7 +42,7 @@ class PDFAction;
class PDFWidget; class PDFWidget;
class PDFCMSManager; class PDFCMSManager;
class PDFToolManager; class PDFToolManager;
class PDFFormManager; class PDFWidgetFormManager;
class PDFWidgetAnnotationManager; class PDFWidgetAnnotationManager;
} }
@ -421,7 +421,7 @@ private:
pdf::PDFCMSManager* m_CMSManager; pdf::PDFCMSManager* m_CMSManager;
pdf::PDFToolManager* m_toolManager; pdf::PDFToolManager* m_toolManager;
pdf::PDFWidgetAnnotationManager* m_annotationManager; pdf::PDFWidgetAnnotationManager* m_annotationManager;
pdf::PDFFormManager* m_formManager; pdf::PDFWidgetFormManager* m_formManager;
PDFFileInfo m_fileInfo; PDFFileInfo m_fileInfo;
QFileSystemWatcher m_fileWatcher; QFileSystemWatcher m_fileWatcher;

@ -20,7 +20,7 @@ add_executable(Pdf4QtViewerLite
icon.rc icon.rc
) )
target_link_libraries(Pdf4QtViewerLite PRIVATE Pdf4QtLibCore Pdf4QtViewer Qt6::Core Qt6::Gui Qt6::Widgets) target_link_libraries(Pdf4QtViewerLite PRIVATE Pdf4QtLibCore Pdf4QtLibWidgets Pdf4QtViewer Qt6::Core Qt6::Gui Qt6::Widgets)
set_target_properties(Pdf4QtViewerLite PROPERTIES set_target_properties(Pdf4QtViewerLite PROPERTIES
WIN32_EXECUTABLE ON WIN32_EXECUTABLE ON

@ -20,7 +20,7 @@ add_executable(Pdf4QtViewerProfi
icon.rc icon.rc
) )
target_link_libraries(Pdf4QtViewerProfi PRIVATE Pdf4QtLibCore Pdf4QtViewer Qt6::Core Qt6::Gui Qt6::Widgets) target_link_libraries(Pdf4QtViewerProfi PRIVATE Pdf4QtLibCore Pdf4QtLibWidgets Pdf4QtViewer Qt6::Core Qt6::Gui Qt6::Widgets)
set_target_properties(Pdf4QtViewerProfi PROPERTIES set_target_properties(Pdf4QtViewerProfi PROPERTIES
WIN32_EXECUTABLE ON WIN32_EXECUTABLE ON