17#ifndef CURSORIMAGEPROVIDER_H
18#define CURSORIMAGEPROVIDER_H
20#include <QQuickImageProvider>
21#include <QScopedPointer>
31 virtual ~CursorImage() {}
44 int frameDuration{40};
47 int requestedHeight{0};
50class XCursorImage :
public CursorImage {
52 XCursorImage(
const QString &theme,
const QString &file,
int preferredCursorHeightPx);
53 virtual ~XCursorImage();
56class BuiltInCursorImage :
public CursorImage {
58 BuiltInCursorImage(
int cursorHeight);
61class BlankCursorImage :
public CursorImage {
66class CustomCursorImage :
public CursorImage {
68 CustomCursorImage(
const QCursor &cursor);
71class CursorImageProvider :
public QQuickImageProvider
74 CursorImageProvider();
75 virtual ~CursorImageProvider();
77 static CursorImageProvider *instance() {
return m_instance; }
80 QImage requestImage(
const QString &cursorThemeAndNameAndHeight, QSize *size,
const QSize &requestedSize)
override;
82 CursorImage *fetchCursor(
const QString &themeName,
const QString &cursorName,
int cursorHeight);
84 void setCustomCursor(
const QCursor &customCursor);
87 CursorImage *fetchCursor(
const QString &cursorThemeAndNameAndHeight);
88 CursorImage *fetchCursorHelper(
const QString &themeName,
const QString &cursorName,
int cursorHeight);
92 QMap<QString, QMap<QString, CursorImage*> > m_cursors;
94 QScopedPointer<CursorImage> m_builtInCursorImage;
95 BlankCursorImage m_blankCursorImage;
96 QScopedPointer<CursorImage> m_customCursorImage;
98 QMap<QString, QStringList> m_fallbackNames;
100 static CursorImageProvider *m_instance;