Разработать QML компонент
Необходимая дополнительная функциональность
1. Возможность устанавливать разный радиус скругления для разных углов компонента. Параметры: borderTopLeftRadius, borderTopRightRadius, borderBottomLeftRadius, borderBottomRightRadius.
2. Возможность устанавливать для бордеров разные размеры и цвета с каждой из сторон компонента. Также необходимо сделать параметр, устанавливающий стиль (solid, dotted, dashed), аналогичный border-style в css. Параметры размеров бордера: borderTopWidth, borderLeftWidth, borderBottomWidth, borderRightWidth. Параметры цвета бордера: borderTopColor, borderLeftColor, borderBottomColor, borderRightColor. Параметр стиля бордера: borderStyle.
3. При установке параметра clip: true, содержимое компонета должно обрезаться с учетом скругленных углов и бордера, аналогично тому как в html/css обрезается содержимое блока с overflow: hidden (в оригинальном Rectangle при clip: true не учитывается бордер и скругления углов).
Требования
1. Компонент необходимо реализовать на C++ для Qt6 и обеспечить совместимость с Qt5. Компонент должен быть максимально оптимизированным по производительности: предполагается использовать его в качестве базового компонента для построения всего UI, следовательно одновременно будут рендериться тысячи экземпляров этого компонета. Производительность (с аналогичными параметрами) должна быть не хуже чем у оригинального Rectangle.
2. Компонент должен стандартным образом взаимодействовать со всеми основными qml компонентами (например анимациями) и механизмами (например anchors). Также компонент должен одинакого хорошо работать со всеми api рендеринга: Software, OpenVG, OpenGL, Direct3D11, Vulkan, Metal. То есть надо будет обойтись без колхозинга, СТОРОННИХ БИБЛИОТЕК и использовать только официально документированные инструменты Qt для реализации всего вышеперечисленного.
Примечания
Чтобы понять что я хочу видеть от функциональности разных цветов бордеров разных сторон компонента и как совместить эту функциональность с закруглением углов, предлагаю взглянуть на приложенные изображения. Я ожидаю увидеть отрисовку этих элементов, аналогичную той, что имеется для css свойств border и border-radius в современных браузерах. Переход одного цвета в другой на углах - простая диагональ.
Кто мне нужен
Мне нужен специалист, который не просто уверен, что в силах разобраться, а действительно занимался схожими задачами. Я жду от вас не просто уверенности в собственных силах, а конкретное понимание решения поставленной задачи. Попытки или частично реализованная функциональность мне не нужна, мне нужен результат в том виде, что я описал.
Порядок сотрудничества
Работаем строго по безопасной сделке на этой площадке. За пределами площадки никакого общения и оплаты не будет. Сделка будет закрыта после того как реализованный в полном объеме функционал компонента пройдет мои тесты.