1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-15 10:33:59 +02:00

Added convenience static methods to DpiScaler

This commit is contained in:
Teo Mrnjavac
2013-07-30 11:43:24 +02:00
parent 73b7e724b4
commit b99bcd5d07
2 changed files with 42 additions and 6 deletions

View File

@@ -32,30 +32,59 @@ DpiScaler::DpiScaler( const QPaintDevice* that )
QSize QSize
DpiScaler::scaled( int w, int h ) const DpiScaler::scaled( int w, int h ) const
{ {
float ratioX = that->logicalDpiX() / 100.0; return scaled( that, w, h );
float ratioY = that->logicalDpiY() / 100.0;
return QSize( qRound( w * ratioX ), qRound( h * ratioY ) );
} }
QSize QSize
DpiScaler::scaled( const QSize& size ) const DpiScaler::scaled( const QSize& size ) const
{ {
return scaled( size.width(), size.height() ); return scaled( that, size );
} }
int int
DpiScaler::scaledX( int x ) const DpiScaler::scaledX( int x ) const
{ {
return scaled( x, 0 ).width(); return scaledX( that, x );
} }
int int
DpiScaler::scaledY( int y ) const DpiScaler::scaledY( int y ) const
{ {
return scaled( 0, y ).height(); return scaledY( that, y );
}
// static methods start here
QSize
DpiScaler::scaled( const QPaintDevice* pd, int w, int h )
{
return QSize( scaledX( pd, w ), scaledY( pd, h ) );
}
QSize
DpiScaler::scaled( const QPaintDevice* pd, const QSize& size )
{
return scaled( pd, size.width(), size.height() );
}
int
DpiScaler::scaledX( const QPaintDevice* pd, int x )
{
float ratioX = pd->logicalDpiX() / 100.0;
return qRound( x * ratioX );
}
int
DpiScaler::scaledY( const QPaintDevice* pd, int y )
{
float ratioY = pd->logicalDpiY() / 100.0;
return qRound( y * ratioY );
} }

View File

@@ -37,11 +37,18 @@ class DLLEXPORT DpiScaler
{ {
public: public:
DpiScaler( const QPaintDevice* that ); DpiScaler( const QPaintDevice* that );
QSize scaled( int w, int h ) const; QSize scaled( int w, int h ) const;
QSize scaled( const QSize& size ) const; QSize scaled( const QSize& size ) const;
int scaledX( int x ) const; int scaledX( int x ) const;
int scaledY( int y ) const; int scaledY( int y ) const;
// convenience one-shot methods, usable without composing or private-inheriting DpiScaler
static QSize scaled( const QPaintDevice* pd, int w, int h );
static QSize scaled( const QPaintDevice* pd, const QSize& size );
inline static int scaledX( const QPaintDevice* pd, int x );
inline static int scaledY( const QPaintDevice* pd, int y );
private: private:
const QPaintDevice* that; const QPaintDevice* that;
}; };