summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qwasmdom.h
blob: 0a520815a3c41f200c6ab00a652adddc5c56aaf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#ifndef QWASMDOM_H
#define QWASMDOM_H

#include <QtCore/qtconfigmacros.h>
#include <QtCore/QPointF>
#include <private/qstdweb_p.h>
#include <QtCore/qnamespace.h>

#include <emscripten/val.h>

#include <functional>
#include <memory>
#include <string>

#include <QMimeData>
QT_BEGIN_NAMESPACE

namespace qstdweb {
    struct CancellationFlag;
}


class QPoint;
class QRect;

namespace dom {
struct DataTransfer
{
    explicit DataTransfer(emscripten::val webDataTransfer);
    ~DataTransfer();
    DataTransfer(const DataTransfer &other);
    DataTransfer(DataTransfer &&other);
    DataTransfer &operator=(const DataTransfer &other);
    DataTransfer &operator=(DataTransfer &&other);

    void toMimeDataWithFile(std::function<void(QMimeData *)> callback);
    QMimeData *toMimeDataPreview();
    void setDragImage(emscripten::val element, const QPoint &hotspot);
    void setData(std::string format, std::string data);
    void setDropAction(Qt::DropAction dropAction);
    void setDataFromMimeData(const QMimeData &mimeData);

    emscripten::val webDataTransfer;
};

inline emscripten::val document()
{
    return emscripten::val::global("document");
}

void syncCSSClassWith(emscripten::val element, std::string cssClassName, bool flag);

QPointF mapPoint(emscripten::val source, emscripten::val target, const QPointF &point);

void drawImageToWebImageDataArray(const QImage &source, emscripten::val destinationImageData,
                                  const QRect &sourceRect);
} // namespace dom

QT_END_NAMESPACE
#endif // QWASMDOM_H