Krita Source Code Documentation
Loading...
Searching...
No Matches
SvgUtil::PreserveAspectRatioParser Struct Reference

#include <SvgUtil.h>

Public Types

enum  Alignment { Min , Middle , Max }
 

Public Member Functions

 PreserveAspectRatioParser (const QString &str)
 
QPointF rectAnchorPoint (const QRectF &rc) const
 
QString toString () const
 

Public Attributes

bool defer = false
 
Qt::AspectRatioMode mode = Qt::IgnoreAspectRatio
 
Alignment xAlignment = Min
 
Alignment yAlignment = Min
 

Private Member Functions

Alignment alignmentFromString (const QString &str) const
 
QString alignmentToString (Alignment alignment) const
 

Static Private Member Functions

static qreal alignedValue (qreal min, qreal max, Alignment alignment)
 

Detailed Description

Definition at line 136 of file SvgUtil.h.

Member Enumeration Documentation

◆ Alignment

Enumerator
Min 
Middle 
Max 

Definition at line 140 of file SvgUtil.h.

Constructor & Destructor Documentation

◆ PreserveAspectRatioParser()

SvgUtil::PreserveAspectRatioParser::PreserveAspectRatioParser ( const QString & str)

Definition at line 459 of file SvgUtil.cpp.

460{
461 QRegExp rexp("(defer)?\\s*(none|(x(Min|Max|Mid)Y(Min|Max|Mid)))\\s*(meet|slice)?", Qt::CaseInsensitive);
462 int index = rexp.indexIn(str.toLower());
463
464 if (index >= 0) {
465 if (rexp.cap(1) == "defer") {
466 defer = true;
467 }
468
469 if (rexp.cap(2) != "none") {
470 xAlignment = alignmentFromString(rexp.cap(4));
471 yAlignment = alignmentFromString(rexp.cap(5));
472 mode = rexp.cap(6) == "slice" ?
473 Qt::KeepAspectRatioByExpanding : Qt::KeepAspectRatio;
474 }
475 }
476}
Alignment alignmentFromString(const QString &str) const
Definition SvgUtil.cpp:515

References alignmentFromString(), defer, mode, xAlignment, and yAlignment.

Member Function Documentation

◆ alignedValue()

qreal SvgUtil::PreserveAspectRatioParser::alignedValue ( qreal min,
qreal max,
Alignment alignment )
staticprivate

Definition at line 530 of file SvgUtil.cpp.

531{
532 qreal result = min;
533
534 switch (alignment) {
535 case Min:
536 result = min;
537 break;
538 case Middle:
539 result = 0.5 * (min + max);
540 break;
541 case Max:
542 result = max;
543 break;
544 }
545
546 return result;
547}
T min(T a, T b, T c)
constexpr std::enable_if< sizeof...(values)==0, size_t >::type max()

◆ alignmentFromString()

SvgUtil::PreserveAspectRatioParser::Alignment SvgUtil::PreserveAspectRatioParser::alignmentFromString ( const QString & str) const
private

Definition at line 515 of file SvgUtil.cpp.

515 {
516 return
517 str == "max" ? Max :
518 str == "mid" ? Middle : Min;
519}

◆ alignmentToString()

QString SvgUtil::PreserveAspectRatioParser::alignmentToString ( Alignment alignment) const
private

Definition at line 521 of file SvgUtil.cpp.

522{
523 return
524 alignment == Max ? "Max" :
525 alignment == Min ? "Min" :
526 "Mid";
527
528}

◆ rectAnchorPoint()

QPointF SvgUtil::PreserveAspectRatioParser::rectAnchorPoint ( const QRectF & rc) const

Definition at line 478 of file SvgUtil.cpp.

479{
480 return QPointF(alignedValue(rc.x(), rc.x() + rc.width(), xAlignment),
481 alignedValue(rc.y(), rc.y() + rc.height(), yAlignment));
482}
static qreal alignedValue(qreal min, qreal max, Alignment alignment)
Definition SvgUtil.cpp:530

◆ toString()

QString SvgUtil::PreserveAspectRatioParser::toString ( ) const

Definition at line 484 of file SvgUtil.cpp.

485{
486 QString result;
487
488 if (!defer &&
489 xAlignment == Middle &&
490 yAlignment == Middle &&
491 mode == Qt::KeepAspectRatio) {
492
493 return result;
494 }
495
496 if (defer) {
497 result += "defer ";
498 }
499
500 if (mode == Qt::IgnoreAspectRatio) {
501 result += "none";
502 } else {
503 result += QString("x%1Y%2")
506
507 if (mode == Qt::KeepAspectRatioByExpanding) {
508 result += " slice";
509 }
510 }
511
512 return result;
513}
QString alignmentToString(Alignment alignment) const
Definition SvgUtil.cpp:521

Member Data Documentation

◆ defer

bool SvgUtil::PreserveAspectRatioParser::defer = false

Definition at line 146 of file SvgUtil.h.

◆ mode

Qt::AspectRatioMode SvgUtil::PreserveAspectRatioParser::mode = Qt::IgnoreAspectRatio

Definition at line 147 of file SvgUtil.h.

◆ xAlignment

Alignment SvgUtil::PreserveAspectRatioParser::xAlignment = Min

Definition at line 148 of file SvgUtil.h.

◆ yAlignment

Alignment SvgUtil::PreserveAspectRatioParser::yAlignment = Min

Definition at line 149 of file SvgUtil.h.


The documentation for this struct was generated from the following files: