// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "qlitehtml_global.h" #include #include #include #include #include #include #include #include #include #include #include class DocumentContainerPrivate; class DocumentContainerContextPrivate; class QLITEHTML_EXPORT DocumentContainerContext { public: DocumentContainerContext(); ~DocumentContainerContext(); void setMasterStyleSheet(const QString &css); private: std::unique_ptr d; friend class DocumentContainer; friend class DocumentContainerPrivate; }; class QLITEHTML_EXPORT DocumentContainer { public: DocumentContainer(); virtual ~DocumentContainer(); public: // outside API void setPaintDevice(QPaintDevice *paintDevice); void setDocument(const QByteArray &data, DocumentContainerContext *context); bool hasDocument() const; void setBaseUrl(const QString &url); QString baseUrl() const; void setScrollPosition(const QPoint &pos); void render(int width, int height); void draw(QPainter *painter, const QRect &clip); int documentWidth() const; int documentHeight() const; int anchorY(const QString &anchorName) const; enum class MediaType { None, All, Screen, Print, Braille, Embossed, Handheld, Projection, Speech, TTY, TV }; void setMediaType(MediaType t); // these return areas to redraw in document space QVector mousePressEvent(const QPoint &documentPos, const QPoint &viewportPos, Qt::MouseButton button); QVector mouseMoveEvent(const QPoint &documentPos, const QPoint &viewportPos); QVector mouseReleaseEvent(const QPoint &documentPos, const QPoint &viewportPos, Qt::MouseButton button); QVector mouseDoubleClickEvent(const QPoint &documentPos, const QPoint &viewportPos, Qt::MouseButton button); QVector leaveEvent(); QUrl linkAt(const QPoint &documentPos, const QPoint &viewportPos); QString caption() const; QString selectedText() const; void findText(const QString &text, QTextDocument::FindFlags flags, bool incremental, bool *wrapped, bool *success, QVector *oldSelection, QVector *newSelection); void setDefaultFont(const QFont &font); QFont defaultFont() const; void setAntialias(bool on); bool antialias() const; using DataCallback = std::function; void setDataCallback(const DataCallback &callback); DataCallback dataCallback() const; using CursorCallback = std::function; void setCursorCallback(const CursorCallback &callback); using LinkCallback = std::function; void setLinkCallback(const LinkCallback &callback); using PaletteCallback = std::function; void setPaletteCallback(const PaletteCallback &callback); PaletteCallback paletteCallback() const; using ClipboardCallback = std::function; void setClipboardCallback(const ClipboardCallback &callback); int withFixedElementPosition(int y, const std::function &action); private: std::unique_ptr d; };