C

Qt Quick Ultralite painteditem Example

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#pragma once

#include <qul/painteditemdelegate.h>

#include <platforminterface/drawingdevice.h>
#include <platforminterface/rect.h>

class OscillatorPaintedItem : public Qul::PaintedItemDelegate
{
public:
    Qul::Property<int> angle;
    Qul::Property<int> initialAngle;
    Qul::Property<int> pivotLength;

    Qul::PlatformInterface::Rect boundingRect(Qul::PlatformInterface::Size size) const QUL_DECL_OVERRIDE;

    void paint(Qul::PlatformInterface::DrawingDevice *device,
               const Qul::PlatformInterface::Rect &clip,
               const Qul::PlatformInterface::Transform &transform,
               Qul::PlatformInterface::Size size,
               float opacity) const QUL_DECL_OVERRIDE;

    void paintCurvePath(Qul::PlatformInterface::DrawingDevice *device,
                        const Qul::PlatformInterface::Rect &clip,
                        const Qul::PlatformInterface::Transform &transform,
                        Qul::PlatformInterface::Point focus,
                        int radius,
                        uint16_t startAngle,
                        uint16_t endAngle,
                        Qul::PlatformInterface::Rgba32 color) const;

    void paintBlob(Qul::PlatformInterface::DrawingDevice *device,
                   const Qul::PlatformInterface::Rect &clip,
                   Qul::PlatformInterface::Point center,
                   int radius,
                   Qul::PlatformInterface::Rgba32 color) const;
};