qskinny/src/layouts/QskLayoutHint.cpp

90 lines
2.1 KiB
C++
Raw Normal View History

2019-07-13 09:01:27 +00:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
* This file may be used under the terms of the QSkinny License, Version 1.0
*****************************************************************************/
2019-06-04 06:00:00 +00:00
#include "QskLayoutHint.h"
#include "QskControl.h"
2019-06-04 06:00:00 +00:00
#include <qnamespace.h>
2020-05-02 10:38:44 +00:00
#include <algorithm>
2019-06-04 06:00:00 +00:00
2020-05-02 10:38:44 +00:00
void QskLayoutHint::setSize( int which, qreal size ) noexcept
2019-06-04 06:00:00 +00:00
{
switch (which)
{
case Qt::MinimumSize:
m_minimum = size;
break;
case Qt::PreferredSize:
m_preferred = size;
break;
case Qt::MaximumSize:
m_maximum = size;
break;
default:
break;
}
}
2020-05-02 10:38:44 +00:00
void QskLayoutHint::expandTo( const QskLayoutHint& other ) noexcept
2019-07-29 15:34:24 +00:00
{
2020-05-02 10:38:44 +00:00
m_minimum = std::max( m_minimum, other.m_minimum );
m_preferred = std::max( m_preferred, other.m_preferred );
m_maximum = std::max( m_maximum, other.m_maximum );
2019-07-29 15:34:24 +00:00
}
2020-05-02 10:38:44 +00:00
void QskLayoutHint::normalize() noexcept
2019-06-04 06:00:00 +00:00
{
2020-05-02 10:38:44 +00:00
m_minimum = std::max( m_minimum, qreal( 0.0 ) );
m_maximum = std::max( m_minimum, m_maximum );
2019-06-04 06:00:00 +00:00
m_preferred = qBound( m_minimum, m_preferred, m_maximum );
}
2019-06-19 11:26:29 +00:00
2020-05-02 10:38:44 +00:00
qreal QskLayoutHint::combined( int which, qreal value1, qreal value2 ) noexcept
{
2019-09-20 05:44:39 +00:00
if ( which == Qt::MaximumSize )
{
if ( value1 < 0.0 )
return value2;
2019-09-20 05:44:39 +00:00
if ( value2 < 0.0 )
return value1;
2020-05-02 10:38:44 +00:00
return std::min( value1, value2 );
2019-09-20 05:44:39 +00:00
}
2020-05-02 10:38:44 +00:00
return std::max( value1, value2 );
2019-07-09 12:49:24 +00:00
}
2019-06-19 11:26:29 +00:00
#ifndef QT_NO_DEBUG_STREAM
#include <qdebug.h>
2019-07-02 16:17:57 +00:00
static inline QString qskHintValueString( qreal value )
{
if ( value >= QskLayoutHint::unlimited )
2019-07-02 16:17:57 +00:00
return QStringLiteral( "unlimited" );
else
return QString::number( value );
}
2019-06-19 11:26:29 +00:00
QDebug operator<<( QDebug debug, const QskLayoutHint& hint )
{
QDebugStateSaver saver( debug );
debug.nospace();
debug << "LayoutHint" << "( "
2019-07-02 16:17:57 +00:00
<< qskHintValueString( hint.minimum() ) << ", "
<< qskHintValueString( hint.preferred() ) << ", "
<< qskHintValueString( hint.maximum() ) << " )";
2019-06-19 11:26:29 +00:00
return debug;
}
#endif
2020-05-02 10:38:44 +00:00
#include "moc_QskLayoutHint.cpp"