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_p.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 <litehtml.h>
9
10#include <QPaintDevice>
11#include <QPixmap>
12#include <QPoint>
13#include <QRect>
14#include <QString>
15#include <QVector>
16
17#include <unordered_map>
18
20{
21public:
22 struct Element
23 {
25 int index = -1;
26 int x = -1;
27 };
28
29 enum class Mode { Free, Word };
30
31 bool isValid() const;
32
33 void update();
34 QRect boundingRect() const;
35
40
43 bool isSelecting = false;
44};
45
46struct Index
47{
49 // only contains leaf elements
51
52 using Entry = std::pair<int, litehtml::element::ptr>;
54
55 Entry findElement(int index) const;
56};
57
59{
60public: // document_container API
61 litehtml::uint_ptr create_font(const char *faceName,
62 int size,
63 int weight,
64 litehtml::font_style italic,
65 unsigned int decoration,
66 litehtml::font_metrics *fm) override;
67 void delete_font(litehtml::uint_ptr hFont) override;
68 int text_width(const char *text, litehtml::uint_ptr hFont) override;
69 void draw_text(litehtml::uint_ptr hdc,
70 const char *text,
71 litehtml::uint_ptr hFont,
72 litehtml::web_color color,
73 const litehtml::position &pos) override;
74 int pt_to_px(int pt) const override;
76 const char *get_default_font_name() const override;
77 void draw_list_marker(litehtml::uint_ptr hdc, const litehtml::list_marker &marker) override;
78 void load_image(const char *src, const char *baseurl, bool redraw_on_ready) override;
79 void get_image_size(const char *src, const char *baseurl, litehtml::size &sz) override;
80 void draw_background(litehtml::uint_ptr hdc,
81 const std::vector<litehtml::background_paint> &bgs) override;
82 void draw_borders(litehtml::uint_ptr hdc,
83 const litehtml::borders &borders,
84 const litehtml::position &draw_pos,
85 bool root) override;
86 void set_caption(const char *caption) override;
87 void set_base_url(const char *base_url) override;
88 void link(const std::shared_ptr<litehtml::document> &doc,
89 const litehtml::element::ptr &el) override;
90 void on_anchor_click(const char *url, const litehtml::element::ptr &el) override;
91 void set_cursor(const char *cursor) override;
92 void transform_text(std::string &text, litehtml::text_transform tt) override;
93 void import_css(std::string &text, const std::string &url, std::string &baseurl) override;
94 void set_clip(const litehtml::position &pos,
95 const litehtml::border_radiuses &bdr_radius) override;
96 void del_clip() override;
97 void get_client_rect(litehtml::position &client) const override;
99 const char *tag_name,
100 const litehtml::string_map &attributes,
101 const std::shared_ptr<litehtml::document> &doc) override;
102 void get_media_features(litehtml::media_features &media) const override;
103 void get_language(std::string &language, std::string &culture) const override;
104
105 QPixmap getPixmap(const QString &imageUrl, const QString &baseUrl);
106 QString serifFont() const;
107 QString sansSerifFont() const;
108 QString monospaceFont() const;
109 QUrl resolveUrl(const QString &url, const QString &baseUrl) const;
110 void drawSelection(QPainter *painter, const QRect &clip) const;
111 void buildIndex();
112 void updateSelection();
113 void clearSelection();
114
124 bool m_antialias = true;
132 bool m_blockLinks = false;
133};
134
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
litehtml::document::ptr m_document
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
QHash< QUrl, QPixmap > m_pixmaps
QRect boundingRect() const
QPoint selectionStartDocumentPos
QVector< QRect > selection
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
std::unordered_map< litehtml::element::ptr, int > elementToIndex
std::vector< Entry > indexToElement
Entry findElement(int index) const
litehtml::element::ptr element