Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_algebra_2d.h File Reference
#include <QPoint>
#include <QPointF>
#include <QVector>
#include <QPolygonF>
#include <QTransform>
#include <cmath>
#include <kis_global.h>
#include <kritaglobal_export.h>
#include <functional>
#include <boost/optional.hpp>

Go to the source code of this file.

Classes

struct  KisAlgebra2D::DecomposedMatrix
 
class  KisAlgebra2D::HaltonSequenceGenerator
 a simple class to generate Halton sequence More...
 
class  KisAlgebra2D::OuterCircle
 
struct  KisAlgebra2D::PointTypeTraits< T >
 
struct  KisAlgebra2D::PointTypeTraits< QPoint >
 
struct  KisAlgebra2D::PointTypeTraits< QPointF >
 
class  KisAlgebra2D::RightHalfPlane
 

Namespaces

namespace  KisAlgebra2D
 
namespace  KisAlgebra2D::Private
 

Functions

template<class Point >
Point KisAlgebra2D::abs (const Point &pt)
 
QPointF KisAlgebra2D::absoluteToRelative (const QPointF &pt, const QRectF &rc)
 
qreal KisAlgebra2D::absoluteToRelative (const qreal value, const QRectF &rc)
 
QRectF KisAlgebra2D::absoluteToRelative (const QRectF &rel, const QRectF &rc)
 
template<template< class T > class Container, class Point >
PointTypeTraits< Point >::rect_type KisAlgebra2D::accumulateBounds (const Container< Point > &points)
 
template<template< class T > class Container, class Point , class Rect >
void KisAlgebra2D::accumulateBounds (const Container< Point > &points, Rect *bounds)
 
template<class Point , class Rect >
void KisAlgebra2D::accumulateBounds (const Point &pt, Rect *bounds)
 
template<class Point , class Rect >
void KisAlgebra2D::accumulateBoundsNonEmpty (const Point &pt, Rect *bounds)
 
void KisAlgebra2D::adjustIfOnPolygonBoundary (const QPolygonF &poly, int polygonDirection, QPointF *pt)
 
QPointF KisAlgebra2D::alignForZoom (const QPointF &pt, qreal zoom)
 
qreal KisAlgebra2D::angleBetweenVectors (const QPointF &v1, const QPointF &v2)
 
QRect KisAlgebra2D::approximateRectFromPoints (const QVector< QPoint > &points)
 
QRectF KisAlgebra2D::approximateRectFromPoints (const QVector< QPointF > &points)
 
QRect KisAlgebra2D::approximateRectWithPointTransform (const QRect &rect, std::function< QPointF(QPointF)> func)
 
template<class Rect >
Rect KisAlgebra2D::blowRect (const Rect &rect, qreal coeff)
 
template<class Point , class Rect >
Point KisAlgebra2D::clampPoint (Point pt, const Rect &bounds)
 
template<typename T >
KisAlgebra2D::copysign (T x, T y)
 
void KisAlgebra2D::cropLineToConvexPolygon (QLineF &line, const QPolygonF polygon, bool extendFirst, bool extendSecond)
 
void KisAlgebra2D::cropLineToRect (QLineF &line, const QRect rect, bool extendFirst, bool extendSecond)
 
template<class T >
PointTypeTraits< T >::value_type KisAlgebra2D::crossProduct (const T &a, const T &b)
 
QRectF KisAlgebra2D::cutOffRect (const QRectF &rc, const KisAlgebra2D::RightHalfPlane &p)
 
qreal KisAlgebra2D::directionBetweenPoints (const QPointF &p1, const QPointF &p2, qreal defaultAngle)
 
template<class T >
std::enable_if< std::is_integral< T >::value, T >::type KisAlgebra2D::divideFloor (T a, T b)
 
template<class T >
PointTypeTraits< T >::value_type KisAlgebra2D::dotProduct (const T &a, const T &b)
 
QPoint KisAlgebra2D::ensureInRect (QPoint pt, const QRect &bounds)
 
QPointF KisAlgebra2D::ensureInRect (QPointF pt, const QRectF &bounds)
 
template<class Rect >
Rect KisAlgebra2D::ensureRectNotSmaller (Rect rc, const decltype(Rect().size()) &size)
 
template<class Size >
Size KisAlgebra2D::ensureSizeNotSmaller (const Size &size, const Size &bounds)
 
qreal KisAlgebra2D::findMinimumGoldenSection (std::function< qreal(qreal)> f, qreal xA, qreal xB, qreal eps, int maxIter=100)
 
qreal KisAlgebra2D::findMinimumTernarySection (std::function< qreal(qreal)> f, qreal xA, qreal xB, qreal eps, int maxIter=100)
 
QVector< QPointF > KisAlgebra2D::findTrianglePoint (const QPointF &p1, const QPointF &p2, qreal a, qreal b)
 
boost::optional< QPointF > KisAlgebra2D::findTrianglePointNearest (const QPointF &p1, const QPointF &p2, qreal a, qreal b, const QPointF &nearest)
 
template<class Rect , typename Difference = decltype(Rect::width())>
bool KisAlgebra2D::fuzzyCompareRects (const Rect &r1, const Rect &r2, Difference tolerance)
 
bool KisAlgebra2D::fuzzyMatrixCompare (const QTransform &t1, const QTransform &t2, qreal delta)
 
template<template< typename > class Cont, class Point >
bool KisAlgebra2D::fuzzyPointCompare (const Cont< Point > &c1, const Cont< Point > &c2, qreal delta)
 
bool KisAlgebra2D::fuzzyPointCompare (const QPointF &p1, const QPointF &p2)
 
bool KisAlgebra2D::fuzzyPointCompare (const QPointF &p1, const QPointF &p2, qreal delta)
 
bool KisAlgebra2D::intersectLineConvexPolygon (QLineF &line, const QPolygonF polygon, bool extendFirst, bool extendSecond)
 
bool KisAlgebra2D::intersectLineRect (QLineF &line, const QRect rect, bool extend)
 
bool KisAlgebra2D::intersectLineRect (QLineF &line, const QRect rect, bool extendFirst, bool extendSecond)
 
boost::optional< QPointF > KisAlgebra2D::intersectLines (const QLineF &boundedLine, const QLineF &unboundedLine)
 
boost::optional< QPointF > KisAlgebra2D::intersectLines (const QPointF &p1, const QPointF &p2, const QPointF &q1, const QPointF &q2)
 
QVector< QPointF > KisAlgebra2D::intersectTwoCircles (const QPointF &center1, qreal r1, const QPointF &center2, qreal r2)
 
template<class T >
KisAlgebra2D::inwardUnitNormal (const T &a, int polygonDirection)
 
template<typename T >
bool KisAlgebra2D::isInRange (T x, T a, T b)
 
template<typename R >
R KisAlgebra2D::lazyRound (qreal value)
 
template<>
int KisAlgebra2D::lazyRound< int > (qreal value)
 
template<>
qreal KisAlgebra2D::lazyRound< qreal > (qreal value)
 
template<class T >
KisAlgebra2D::leftUnitNormal (const T &a)
 
template<typename Point >
Point KisAlgebra2D::lerp (const Point &pt1, const Point &pt2, qreal t)
 
template<typename T >
KisAlgebra2D::linearReshapeFunc (T x, T x0, T x1, T y0, T y1)
 
QTransform KisAlgebra2D::mapToRect (const QRectF &rect)
 
QTransform KisAlgebra2D::mapToRectInverse (const QRectF &rect)
 
template<class Size >
auto KisAlgebra2D::maxDimension (Size size) -> decltype(size.width())
 
template<class Size >
auto KisAlgebra2D::minDimension (Size size) -> decltype(size.width())
 
QPointF KisAlgebra2D::moveElasticPoint (const QPointF &pt, const QPointF &base, const QPointF &newBase, const QPointF &wingA, const QPointF &wingB)
 moveElasticPoint moves point pt based on the model of elasticity
 
QPointF KisAlgebra2D::moveElasticPoint (const QPointF &pt, const QPointF &base, const QPointF &newBase, const QVector< QPointF > &anchorPoints)
 moveElasticPoint moves point pt based on the model of elasticity
 
template<class T >
qreal KisAlgebra2D::norm (const T &a)
 
template<class Point >
Point KisAlgebra2D::normalize (const Point &a)
 
qreal KisAlgebra2D::pointToLineDistSquared (const QPointF &pt, const QLineF &line)
 
template<class T >
int KisAlgebra2D::polygonDirection (const QVector< T > &polygon)
 
int KisAlgebra2D::quadraticEquation (qreal a, qreal b, qreal c, qreal *x1, qreal *x2)
 
QPointF KisAlgebra2D::relativeToAbsolute (const QPointF &pt, const QRectF &rc)
 
QRectF KisAlgebra2D::relativeToAbsolute (const QRectF &rel, const QRectF &rc)
 
qreal KisAlgebra2D::relativeToAbsolute (qreal value, const QRectF &rc)
 
void KisAlgebra2D::Private::resetEmptyRectangle (const QPoint &pt, QRect *rc)
 
void KisAlgebra2D::Private::resetEmptyRectangle (const QPointF &pt, QRectF *rc)
 
template<class T >
KisAlgebra2D::rightUnitNormal (const T &a)
 
QVector< QPoint > KisAlgebra2D::sampleRectWithPoints (const QRect &rect)
 
QVector< QPointF > KisAlgebra2D::sampleRectWithPoints (const QRectF &rect)
 
template<typename T >
KisAlgebra2D::signPZ (T x)
 
template<typename T >
KisAlgebra2D::signZZ (T x)
 
QPainterPath KisAlgebra2D::smallArrow ()
 
QPointF KisAlgebra2D::transformAsBase (const QPointF &pt, const QPointF &base1, const QPointF &base2)
 
std::pair< QPointF, QTransform > KisAlgebra2D::transformEllipse (const QPointF &axes, const QTransform &fullLocalToGlobal)
 
template<typename T >
KisAlgebra2D::wrapValue (T value, T min, T max)
 
template<typename T , typename std::enable_if< std::is_integral< T >::value, T >::type * = nullptr>
KisAlgebra2D::wrapValue (T value, T wrapBounds)