qskinny/src/nodes/QskBoxRenderer.h

77 lines
2.2 KiB
C
Raw Normal View History

/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
#ifndef QSK_BOX_RENDERER_H
#define QSK_BOX_RENDERER_H
#include "QskVertex.h"
class QskBoxBorderMetrics;
class QskBoxBorderColors;
2022-12-09 11:50:31 +01:00
class QskBoxShapeMetrics;
class QskGradient;
class QSGGeometry;
2022-12-09 11:50:31 +01:00
class QRectF;
class QSK_EXPORT QskBoxRenderer
{
2018-08-03 08:15:28 +02:00
public:
2022-12-05 17:06:55 +01:00
static void renderBorder( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
2022-12-05 17:06:55 +01:00
static void renderFill( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
2022-12-05 17:06:55 +01:00
static void renderBox( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
static bool isGradientSupported( const QskBoxShapeMetrics&, const QskGradient& );
class Metrics
{
2018-08-03 08:15:28 +02:00
public:
Metrics( const QRectF&, const QskBoxShapeMetrics&, const QskBoxBorderMetrics& );
QskVertex::Quad outerQuad;
QskVertex::Quad innerQuad;
#if 1
QskVertex::Quad centerQuad; // to be removed
#endif
struct Corner
{
bool isCropped;
qreal centerX, centerY;
qreal radiusX, radiusY;
qreal radiusInnerX, radiusInnerY;
int stepCount;
2018-08-03 08:15:28 +02:00
} corner[ 4 ];
bool isBorderRegular;
bool isRadiusRegular;
bool isTotallyCropped;
};
2018-08-03 08:15:28 +02:00
private:
2022-12-05 17:06:55 +01:00
static void renderRectellipseFill( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
2022-12-05 17:06:55 +01:00
static void renderRectellipseBorder( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
2022-12-05 17:06:55 +01:00
static void renderRectellipse( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
2022-12-05 17:06:55 +01:00
static void renderDiagonalFill( const Metrics&, const QskGradient&,
int lineCount, QskVertex::ColoredLine* );
};
#endif