Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
container_qpainter.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#pragma once
5
7
8#include <QByteArray>
9#include <QPaintDevice>
10#include <QPainter>
11#include <QPoint>
12#include <QRect>
13#include <QString>
14#include <QTextDocument>
15#include <QUrl>
16#include <QVector>
17
18#include <functional>
19#include <memory>
20
23
25{
26public:
27 DocumentContainerContext();
28 ~DocumentContainerContext();
29
30 void setMasterStyleSheet(const QString &css);
31
32private:
33 std::unique_ptr<DocumentContainerContextPrivate> d;
34
35 friend class DocumentContainer;
36 friend class DocumentContainerPrivate;
37};
38
40{
41public:
42 DocumentContainer();
43 virtual ~DocumentContainer();
44
45public: // outside API
46 void setPaintDevice(QPaintDevice *paintDevice);
47 void setDocument(const QByteArray &data, DocumentContainerContext *context);
48 bool hasDocument() const;
49 void setBaseUrl(const QString &url);
50 void setScrollPosition(const QPoint &pos);
51 void render(int width, int height);
52 void draw(QPainter *painter, const QRect &clip);
53 int documentWidth() const;
54 int documentHeight() const;
55 int anchorY(const QString &anchorName) const;
56
57 // these return areas to redraw in document space
58 QVector<QRect> mousePressEvent(const QPoint &documentPos,
59 const QPoint &viewportPos,
60 Qt::MouseButton button);
61 QVector<QRect> mouseMoveEvent(const QPoint &documentPos, const QPoint &viewportPos);
62 QVector<QRect> mouseReleaseEvent(const QPoint &documentPos,
63 const QPoint &viewportPos,
64 Qt::MouseButton button);
65 QVector<QRect> mouseDoubleClickEvent(const QPoint &documentPos,
66 const QPoint &viewportPos,
67 Qt::MouseButton button);
68 QVector<QRect> leaveEvent();
69
70 QUrl linkAt(const QPoint &documentPos, const QPoint &viewportPos);
71
72 QString caption() const;
73 QString selectedText() const;
74
75 void findText(const QString &text,
76 QTextDocument::FindFlags flags,
77 bool incremental,
78 bool *wrapped,
79 bool *success,
80 QVector<QRect> *oldSelection,
81 QVector<QRect> *newSelection);
82
83 void setDefaultFont(const QFont &font);
84 QFont defaultFont() const;
85 void setAntialias(bool on);
86 bool antialias() const;
87
88 using DataCallback = std::function<QByteArray(QUrl)>;
89 void setDataCallback(const DataCallback &callback);
90
91 using CursorCallback = std::function<void(QCursor)>;
92 void setCursorCallback(const CursorCallback &callback);
93
94 using LinkCallback = std::function<void(QUrl)>;
95 void setLinkCallback(const LinkCallback &callback);
96
97 using PaletteCallback = std::function<QPalette()>;
98 void setPaletteCallback(const PaletteCallback &callback);
99
100 using ClipboardCallback = std::function<void(bool)>;
101 void setClipboardCallback(const ClipboardCallback &callback);
102
103 int withFixedElementPosition(int y, const std::function<void()> &action);
104
105private:
106 std::unique_ptr<DocumentContainerPrivate> d;
107};
void get_image_size(const char *src, const char *baseurl, litehtml::size &sz) override
int pt_to_px(int pt) const override
void get_client_rect(litehtml::position &client) const override
const char * get_default_font_name() const override
void on_anchor_click(const char *url, const litehtml::element::ptr &el) override
void get_media_features(litehtml::media_features &media) const override
void draw_borders(litehtml::uint_ptr hdc, const litehtml::borders &borders, const litehtml::position &draw_pos, bool root) override
void link(const std::shared_ptr< litehtml::document > &doc, const litehtml::element::ptr &el) override
litehtml::uint_ptr create_font(const char *faceName, int size, int weight, litehtml::font_style italic, unsigned int decoration, litehtml::font_metrics *fm) override
void draw_list_marker(litehtml::uint_ptr hdc, const litehtml::list_marker &marker) override
void set_caption(const char *caption) override
void get_language(std::string &language, std::string &culture) const override
void delete_font(litehtml::uint_ptr hFont) override
void import_css(std::string &text, const std::string &url, std::string &baseurl) override
void load_image(const char *src, const char *baseurl, bool redraw_on_ready) override
void transform_text(std::string &text, litehtml::text_transform tt) override
void draw_background(litehtml::uint_ptr hdc, const std::vector< litehtml::background_paint > &bgs) override
int get_default_font_size() const override
void set_clip(const litehtml::position &pos, const litehtml::border_radiuses &bdr_radius) override
int text_width(const char *text, litehtml::uint_ptr hFont) override
void set_cursor(const char *cursor) override
std::shared_ptr< litehtml::element > create_element(const char *tag_name, const litehtml::string_map &attributes, const std::shared_ptr< litehtml::document > &doc) override
void drawSelection(QPainter *painter, const QRect &clip) const
DocumentContainer::DataCallback m_dataCallback
QUrl resolveUrl(const QString &url, const QString &baseUrl) const
void set_base_url(const char *base_url) override
QPixmap getPixmap(const QString &imageUrl, const QString &baseUrl)
void draw_text(litehtml::uint_ptr hdc, const char *text, litehtml::uint_ptr hFont, litehtml::web_color color, const litehtml::position &pos) override
QRect boundingRect() const
bool isValid() const
static std::tuple< litehtml::element::ptr, litehtml::element::ptr, litehtml::element::ptr > getCommonParent(const litehtml::elements_list &a, const litehtml::elements_list &b)
static Qt::PenStyle borderPenStyle(litehtml::border_style style)
static QCursor toQCursor(const QString &c)
static Selection::Element selection_element_at_point(const litehtml::element::ptr &element, const QPoint &pos, const QPoint &viewportPos, Selection::Mode mode)
static Q_LOGGING_CATEGORY(log, "qlitehtml", QtCriticalMsg) static QFont toQFont(litehtml
static litehtml::element::ptr firstLeaf(const litehtml::element::ptr &element, const litehtml::element::ptr &stop)
static QFont::Style toQFontStyle(litehtml::font_style style)
static QRect toQRect(litehtml::position position)
static bool deepest_child_at_point(const litehtml::element::ptr &element, const QPoint &pos, const QPoint &viewportPos, const std::function< bool(const litehtml::element::ptr &)> &action, int level=0)
static QPen borderPen(const litehtml::border &border)
static std::pair< Selection::Element, Selection::Element > getStartAndEnd(const Selection::Element &a, const Selection::Element &b)
static litehtml::elements_list path(const litehtml::element::ptr &element)
static QPainter * toQPainter(litehtml::uint_ptr hdc)
static Selection::Element selectionDetails(const litehtml::element::ptr &element, const QString &text, const QPoint &pos)
static litehtml::element::ptr nextLeaf(const litehtml::element::ptr &element, const litehtml::element::ptr &stop)
static QColor toQColor(const litehtml::web_color &color)
static bool isVisible(const litehtml::element::ptr &element)
static litehtml::element::ptr elementForY(int y, const litehtml::element::ptr &element)
static QFont::Weight cssWeightToQtWeight(int cssWeight)
static QString tagName(const litehtml::element::ptr &e)
const int kDragDistance
#define QLITEHTML_EXPORT
Entry findElement(int index) const