Compare commits

...

56 Commits

Author SHA1 Message Date
Uwe Rathmann 09cdcfb7ea Merge branch 'master' into features/arcrenderer 2025-02-28 09:18:06 +01:00
Uwe Rathmann 537404ccec Merge branch 'master' into features/arcrenderer 2025-02-06 13:50:31 +01:00
Uwe Rathmann 3b7347b2a8 Merge branch 'master' into features/arcrenderer 2025-02-06 10:14:17 +01:00
Uwe Rathmann 4eaae050e6 Merge branch 'master' into features/arcrenderer 2024-12-10 14:12:45 +01:00
Uwe Rathmann 78a828f269 Merge branch 'master' into features/arcrenderer 2024-12-02 10:03:19 +01:00
Uwe Rathmann 5f796bed48 Merge branch 'master' into features/arcrenderer 2024-09-26 10:59:24 +02:00
Uwe Rathmann 4e83c4f2ef Merge branch 'master' into features/arcrenderer 2024-09-24 10:28:26 +02:00
Uwe Rathmann dd333862f4 Merge branch 'master' into features/arcrenderer 2024-09-23 16:07:00 +02:00
Uwe Rathmann 2f629aaded better dirty detection 2024-09-23 15:46:15 +02:00
Uwe Rathmann feabc1fd50 QskArc rendering improved 2024-09-23 14:56:39 +02:00
Uwe Rathmann b17cabaa83 wip 2024-09-20 11:58:32 +02:00
Uwe Rathmann 28f818b62a wip 2024-09-20 11:40:58 +02:00
Uwe Rathmann a560aafcd6 wip 2024-09-20 11:35:54 +02:00
Uwe Rathmann 98967a5619 QskArcRenderer API in line with QskBoxRenderer 2024-09-19 10:49:36 +02:00
Uwe Rathmann 31470a7a50 Merge branch 'master' into features/arcrenderer 2024-09-19 09:54:10 +02:00
Uwe Rathmann 8938c25185 Merge branch 'master' into features/arcrenderer 2024-09-17 17:36:41 +02:00
Uwe Rathmann 30157553f4 Merge branch 'master' into features/arcrenderer 2024-09-11 18:12:12 +02:00
Uwe Rathmann 7e07fc11a1 Merge branch 'master' into features/arcrenderer 2024-09-11 16:14:55 +02:00
Uwe Rathmann 7f0e0126be Merge branch 'master' into arcrenderer2 2024-09-09 09:57:35 +02:00
Uwe Rathmann 8bc7146de0 wip 2024-09-03 08:14:41 +02:00
Uwe Rathmann b97507bf84 wip 2024-09-02 12:00:41 +02:00
Uwe Rathmann 32890fe47f Merge branch 'master' into features/arcrenderer 2024-09-02 11:14:13 +02:00
Uwe Rathmann 5c80504c57 QskArcRenderNode is a QskFillNode now 2024-09-02 10:47:41 +02:00
Uwe Rathmann cf33edb560 wrong normal vector, for cos=0 fixed 2024-07-29 17:33:42 +02:00
Uwe Rathmann 6e8bdd0c60 rendering of uncolored geometry added 2024-07-29 17:20:26 +02:00
Uwe Rathmann 70a47a8700 code cleanup 2024-07-29 14:26:09 +02:00
Uwe Rathmann c37a083779 optimization for circular arcs added 2024-07-29 13:38:08 +02:00
Uwe Rathmann 708e68045b rendering border/filling together 2024-07-25 18:29:37 +02:00
Uwe Rathmann a54afb5305 QskArcRenderNode doing border/filling in one node 2024-07-24 15:00:05 +02:00
Uwe Rathmann c715b625fb code reorganized 2024-07-24 08:39:47 +02:00
Uwe Rathmann 38130ffb7b some implementation for the closing ends of the borders in radial mode
added
2024-07-23 18:06:25 +02:00
Uwe Rathmann ca38a1e46a QskArcRenderer: orthogonal mode completed, radial mode almost completed
( closing lines are missing )
2024-07-18 18:13:28 +02:00
Uwe Rathmann 55b3f0c556 Merge branch 'master' into features/arcrenderer 2024-07-17 15:37:19 +02:00
Uwe Rathmann 0d87964727 QskArcRenderNode stays inside its given rectangle 2024-07-17 14:19:54 +02:00
Uwe Rathmann e937e3941f first implementation of arc borders 2024-07-16 10:42:13 +02:00
Uwe Rathmann 9086c94715 minor fixes 2024-07-15 10:59:43 +02:00
Uwe Rathmann 28528b29e8 Merge branch 'master' into features/arcrenderer 2024-07-15 10:43:38 +02:00
Uwe Rathmann ecf51b79e3 some fixes 2024-06-13 13:03:17 +02:00
Uwe Rathmann 3157acc4ae code reorganized 2024-06-13 12:26:38 +02:00
Uwe Rathmann 04d46b52fb from master 2024-06-12 12:45:26 +02:00
Uwe Rathmann cad0955197 Merge branch 'master' into features/arcrenderer 2024-06-12 12:45:16 +02:00
Uwe Rathmann ac68b66b4e radial arcs added 2024-06-12 12:10:57 +02:00
Uwe Rathmann 929b7a43fd gradient rendering fixed 2024-06-05 10:34:19 +02:00
Uwe Rathmann 1a08de914a filling with gradients seems to work 2024-06-04 18:17:07 +02:00
Uwe Rathmann bf7fe7c8f3 working towards gradients 2024-06-04 13:26:49 +02:00
Uwe Rathmann 36f088a263 preperations for non monochrome gradients 2024-06-03 18:23:43 +02:00
Uwe Rathmann fb635664de special code for corner cases disabled 2024-06-03 15:36:15 +02:00
Uwe Rathmann beb31f9f1f code reorganized 2024-06-03 13:20:49 +02:00
Uwe Rathmann 01db6e256b Merge branch 'master' into features/arcrenderer 2024-06-03 13:19:17 +02:00
Uwe Rathmann a849a8d9f4 code simplified 2024-05-31 13:40:22 +02:00
Uwe Rathmann bc066c8103 QskArcRenderer using the normal vector of the tangents for expanding
the arc to the desired thickness. This matches the result of what
QPainter::drawArc does. However our implementation is much
simpler as we do not convert the arc into a sequence of
bezier curves finally running into code that has to deal with
random QPainterPath element lists.
2024-05-30 19:06:02 +02:00
Uwe Rathmann a327084c3f QskArcMetrics::isProprtional added 2024-05-21 17:19:24 +02:00
Uwe Rathmann 16c9ea2161 Squashed commit of the following:
commit 319abafb0d
Author: Uwe Rathmann <Uwe.Rathmann@tigertal.de>
Date:   Tue May 21 16:08:40 2024 +0200

    bad shadowColor check fixed
2024-05-21 17:00:13 +02:00
Uwe Rathmann aba7656d2a proportional arc thickness - like what the Qt rendering classes do 2024-05-15 09:27:52 +02:00
Uwe Rathmann f6845c709c QskArcRenderer - work in progress, QskArcRenderNode added 2024-05-14 17:03:03 +02:00
Uwe Rathmann 49e1d54724 QskArcRenderer started with some boilerplate code 2024-04-24 11:25:06 +02:00
2 changed files with 41 additions and 38 deletions

View File

@ -8,6 +8,7 @@
#include "Slider.h"
#include <QskGridBox.h>
#include <QskRgbValue.h>
namespace
{
@ -41,36 +42,11 @@ namespace
addItem( slider, 1, 0 );
}
{
auto slider = new Slider( "Border", 0, 10, 1, arc->borderWidth() );
auto slider = new Slider( "Border", 0, 50, 1, arc->borderWidth() );
connect( slider, &Slider::valueChanged, arc, &ShadowedArc::setBorderWidth );
addItem( slider, 1, 1);
}
{
auto slider = new Slider( "Spread Radius", -10, 50, 1, arc->spreadRadius() );
connect( slider, &Slider::valueChanged, arc, &ShadowedArc::setSpreadRadius );
addItem( slider, 2, 0 );
}
{
auto slider = new Slider( "Blur Radius", 0, 50, 1, arc->blurRadius() );
connect( slider, &Slider::valueChanged, arc, &ShadowedArc::setBlurRadius );
addItem( slider, 2, 1 );
}
{
auto slider = new Slider( "Offset X", -50, 50, 1, arc->offsetX() );
connect( slider, &Slider::valueChanged, arc, &ShadowedArc::setOffsetX );
addItem( slider, 3, 0 );
}
{
auto slider = new Slider( "Offset Y", -50, 50, 1, arc->offsetY() );
connect( slider, &Slider::valueChanged, arc, &ShadowedArc::setOffsetY );
addItem( slider, 3, 1 );
}
}
};
@ -79,20 +55,48 @@ namespace
public:
Arc()
{
setBackgroundColor( QskRgb::LemonChiffon );
setClip( true ); // for testing if the arc stays inside its bounding rectangle
setStartAngle( 45.0 );
setSpanAngle( 270.0 );
setThickness( 10.0 );
setThickness( 30.0 );
setFillGradient( Qt::darkRed );
setBorderWidth( 5.0 );
setBorderColor( QColor( 0, 0, 0, 150 ) );
setBorderWidth( 0 );
setBorderColor( Qt::darkYellow );
#if 0
const QskGradientStops stops =
{
{ 0.1, Qt::darkRed },
{ 0.1, Qt::darkYellow },
{ 0.5, Qt::darkYellow },
{ 0.5, Qt::darkBlue },
{ 0.75, Qt::darkBlue },
{ 0.75, Qt::darkRed }
};
#endif
#if 0
const QskGradientStops stops =
{
{ 0.1, Qt::darkRed },
{ 0.5, Qt::darkYellow },
{ 0.75, Qt::darkBlue },
{ 1.0, Qt::darkRed }
};
#endif
#if 1
QskGradientStops stops;
for ( int i = 0; i < 100; i++ )
{
const auto pos = i * 1.0 / 100;
setShadowColor( Qt::black );
setSpreadRadius( 0.0 );
setBlurRadius( 4.0 );
setOffsetX( 2.0 );
setOffsetY( 2.0 );
stops += { pos, ( i % 2 ) ? Qt::darkRed : Qt::darkBlue };
stops += { pos, ( i % 2 ) ? Qt::darkBlue : Qt::darkRed };
}
#endif
setFillGradient( stops );
}
};
}
@ -101,7 +105,6 @@ ArcPage::ArcPage( QQuickItem* parent )
: QskLinearBox( Qt::Vertical, parent )
{
auto arc = new Arc();
arc->setMargins( 40 ); // some extra space for testing the offsets
auto panel = new ControlPanel( arc );
panel->setSizePolicy( Qt::Vertical, QskSizePolicy::Fixed );

View File

@ -130,14 +130,14 @@ ShadowedArc::ShadowedArc( QQuickItem* parent )
// initial settings
setArcMetrics( { 0.0, 360.0, 1.0, Qt::RelativeSize } );
setArcMetrics( { 0.0, 360.0, 1.0, Qt::AbsoluteSize } );
setFillGradient( Qt::darkRed );
setBorderWidth( 0 );
setBorderColor( Qt::gray );
setShadowColor( Qt::black );
setShadowColor( QColor() );
setShadowMetrics( { 0, 0, QPointF( 0, 0 ), Qt::AbsoluteSize } );
}