|
|
|
|
@ -31,13 +31,13 @@ void CursorItem::refresh() |
|
|
|
|
{ |
|
|
|
|
const CursorSource *source = Cursors::self()->currentCursor()->source(); |
|
|
|
|
if (auto surfaceSource = qobject_cast<const SurfaceCursorSource *>(source)) { |
|
|
|
|
setSurface(surfaceSource->surface()); |
|
|
|
|
setSurface(surfaceSource->surface(), surfaceSource->hotspot()); |
|
|
|
|
} else if (auto shapeSource = qobject_cast<const ShapeCursorSource *>(source)) { |
|
|
|
|
setImage(shapeSource->image()); |
|
|
|
|
setImage(shapeSource->image(), shapeSource->hotspot()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CursorItem::setSurface(SurfaceInterface *surface) |
|
|
|
|
void CursorItem::setSurface(SurfaceInterface *surface, const QPointF &hotspot) |
|
|
|
|
{ |
|
|
|
|
m_imageItem.reset(); |
|
|
|
|
|
|
|
|
|
@ -48,9 +48,12 @@ void CursorItem::setSurface(SurfaceInterface *surface) |
|
|
|
|
m_surfaceItem.reset(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (m_surfaceItem) { |
|
|
|
|
m_surfaceItem->setPosition(-hotspot); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CursorItem::setImage(const QImage &image) |
|
|
|
|
void CursorItem::setImage(const QImage &image, const QPointF &hotspot) |
|
|
|
|
{ |
|
|
|
|
m_surfaceItem.reset(); |
|
|
|
|
|
|
|
|
|
@ -58,6 +61,7 @@ void CursorItem::setImage(const QImage &image) |
|
|
|
|
m_imageItem = scene()->renderer()->createImageItem(scene(), this); |
|
|
|
|
} |
|
|
|
|
m_imageItem->setImage(image); |
|
|
|
|
m_imageItem->setPosition(-hotspot); |
|
|
|
|
m_imageItem->setSize(image.size() / image.devicePixelRatio()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|