LCOV - code coverage report
Current view: top level - core/layout - qgspagesizeregistry.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 42 87 48.3 %
Date: 2021-03-26 12:19:53 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :                             qgspagesizeregistry.cpp
       3                 :            :                             ------------------------
       4                 :            :     begin                : June 2017
       5                 :            :     copyright            : (C) 2017 by Nyall Dawson
       6                 :            :     email                : nyall dot dawson at gmail dot com
       7                 :            :  ***************************************************************************/
       8                 :            : /***************************************************************************
       9                 :            :  *                                                                         *
      10                 :            :  *   This program is free software; you can redistribute it and/or modify  *
      11                 :            :  *   it under the terms of the GNU General Public License as published by  *
      12                 :            :  *   the Free Software Foundation; either version 2 of the License, or     *
      13                 :            :  *   (at your option) any later version.                                   *
      14                 :            :  *                                                                         *
      15                 :            :  ***************************************************************************/
      16                 :            : 
      17                 :            : #include "qgspagesizeregistry.h"
      18                 :            : #include "qgslayoutmeasurementconverter.h"
      19                 :            : #include "qgis.h"
      20                 :            : 
      21                 :            : //
      22                 :            : // QgsPageSizeRegistry
      23                 :            : //
      24                 :            : 
      25                 :          5 : QgsPageSizeRegistry::QgsPageSizeRegistry()
      26                 :            : {
      27                 :         10 :   add( QgsPageSize( QStringLiteral( "A6" ), QgsLayoutSize( 105, 148 ), QObject::tr( "A6" ) ) );
      28                 :         10 :   add( QgsPageSize( QStringLiteral( "A5" ), QgsLayoutSize( 148, 210 ), QObject::tr( "A5" ) ) );
      29                 :         10 :   add( QgsPageSize( QStringLiteral( "A4" ), QgsLayoutSize( 210, 297 ), QObject::tr( "A4" ) ) );
      30                 :         10 :   add( QgsPageSize( QStringLiteral( "A3" ), QgsLayoutSize( 297, 420 ), QObject::tr( "A3" ) ) );
      31                 :         10 :   add( QgsPageSize( QStringLiteral( "A2" ), QgsLayoutSize( 420, 594 ), QObject::tr( "A2" ) ) );
      32                 :         10 :   add( QgsPageSize( QStringLiteral( "A1" ), QgsLayoutSize( 594, 841 ), QObject::tr( "A1" ) ) );
      33                 :         10 :   add( QgsPageSize( QStringLiteral( "A0" ), QgsLayoutSize( 841, 1189 ), QObject::tr( "A0" ) ) );
      34                 :         10 :   add( QgsPageSize( QStringLiteral( "B6" ), QgsLayoutSize( 125, 176 ), QObject::tr( "B6" ) ) );
      35                 :         10 :   add( QgsPageSize( QStringLiteral( "B5" ), QgsLayoutSize( 176, 250 ), QObject::tr( "B5" ) ) );
      36                 :         10 :   add( QgsPageSize( QStringLiteral( "B4" ), QgsLayoutSize( 250, 353 ), QObject::tr( "B4" ) ) );
      37                 :         10 :   add( QgsPageSize( QStringLiteral( "B3" ), QgsLayoutSize( 353, 500 ), QObject::tr( "B3" ) ) );
      38                 :         10 :   add( QgsPageSize( QStringLiteral( "B2" ), QgsLayoutSize( 500, 707 ), QObject::tr( "B2" ) ) );
      39                 :         10 :   add( QgsPageSize( QStringLiteral( "B1" ), QgsLayoutSize( 707, 1000 ), QObject::tr( "B1" ) ) );
      40                 :         10 :   add( QgsPageSize( QStringLiteral( "B0" ), QgsLayoutSize( 1000, 1414 ), QObject::tr( "B0" ) ) );
      41                 :         10 :   add( QgsPageSize( QStringLiteral( "Legal" ), QgsLayoutSize( 215.9, 355.6 ), QObject::tr( "Legal" ) ) );
      42                 :         10 :   add( QgsPageSize( QStringLiteral( "Letter" ), QgsLayoutSize( 215.9, 279.4 ), QObject::tr( "Letter" ) ) );
      43                 :         10 :   add( QgsPageSize( QStringLiteral( "ANSI A" ), QgsLayoutSize( 215.9, 279.4 ), QObject::tr( "ANSI A" ) ) );
      44                 :         10 :   add( QgsPageSize( QStringLiteral( "ANSI B" ), QgsLayoutSize( 279.4, 431.8 ), QObject::tr( "ANSI B" ) ) );
      45                 :         10 :   add( QgsPageSize( QStringLiteral( "ANSI C" ), QgsLayoutSize( 431.8, 558.8 ), QObject::tr( "ANSI C" ) ) );
      46                 :         10 :   add( QgsPageSize( QStringLiteral( "ANSI D" ), QgsLayoutSize( 558.8, 863.6 ), QObject::tr( "ANSI D" ) ) );
      47                 :         10 :   add( QgsPageSize( QStringLiteral( "ANSI E" ), QgsLayoutSize( 863.6, 1117.6 ), QObject::tr( "ANSI E" ) ) );
      48                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch A" ), QgsLayoutSize( 228.6, 304.8 ), QObject::tr( "Arch A" ) ) );
      49                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch B" ), QgsLayoutSize( 304.8, 457.2 ), QObject::tr( "Arch B" ) ) );
      50                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch C" ), QgsLayoutSize( 457.2, 609.6 ), QObject::tr( "Arch C" ) ) );
      51                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch D" ), QgsLayoutSize( 609.6, 914.4 ), QObject::tr( "Arch D" ) ) );
      52                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch E" ), QgsLayoutSize( 914.4, 1219.2 ), QObject::tr( "Arch E" ) ) );
      53                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch E1" ), QgsLayoutSize( 762, 1066.8 ), QObject::tr( "Arch E1" ) ) );
      54                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch E2" ), QgsLayoutSize( 660, 965 ), QObject::tr( "Arch E2" ) ) );
      55                 :         10 :   add( QgsPageSize( QStringLiteral( "Arch E3" ), QgsLayoutSize( 686, 991 ), QObject::tr( "Arch E3" ) ) );
      56                 :         10 :   add( QgsPageSize( QStringLiteral( "1920x1080" ), QgsLayoutSize( 1080, 1920, QgsUnitTypes::LayoutPixels ), QObject::tr( "1920×1080" ) ) );
      57                 :         10 :   add( QgsPageSize( QStringLiteral( "1280x800" ), QgsLayoutSize( 800, 1280, QgsUnitTypes::LayoutPixels ), QObject::tr( "1280×800" ) ) );
      58                 :         10 :   add( QgsPageSize( QStringLiteral( "1024x768" ), QgsLayoutSize( 768, 1024, QgsUnitTypes::LayoutPixels ), QObject::tr( "1024×768" ) ) );
      59                 :          5 : }
      60                 :            : 
      61                 :        160 : void QgsPageSizeRegistry::add( const QgsPageSize &size )
      62                 :            : {
      63                 :        160 :   mPageSizes.append( size );
      64                 :        160 : }
      65                 :            : 
      66                 :          0 : QList<QgsPageSize> QgsPageSizeRegistry::entries() const
      67                 :            : {
      68                 :          0 :   QList< QgsPageSize > result;
      69                 :          0 :   QList< QgsPageSize >::const_iterator it = mPageSizes.constBegin();
      70                 :          0 :   for ( ; it != mPageSizes.constEnd(); ++it )
      71                 :            :   {
      72                 :          0 :     result.push_back( *it );
      73                 :          0 :   }
      74                 :          0 :   return result;
      75                 :          0 : }
      76                 :            : 
      77                 :          0 : QList<QgsPageSize> QgsPageSizeRegistry::find( const QString &name ) const
      78                 :            : {
      79                 :          0 :   QList< QgsPageSize > result;
      80                 :          0 :   QList< QgsPageSize >::const_iterator it = mPageSizes.constBegin();
      81                 :          0 :   for ( ; it != mPageSizes.constEnd(); ++it )
      82                 :            :   {
      83                 :          0 :     if ( ( *it ).name.compare( name, Qt::CaseInsensitive ) == 0 )
      84                 :            :     {
      85                 :          0 :       result.push_back( *it );
      86                 :          0 :     }
      87                 :          0 :   }
      88                 :          0 :   return result;
      89                 :          0 : }
      90                 :            : 
      91                 :          0 : QString QgsPageSizeRegistry::find( const QgsLayoutSize &size ) const
      92                 :            : {
      93                 :            :   //try to match to existing page size
      94                 :          0 :   QgsLayoutMeasurementConverter converter;
      95                 :          0 :   const auto constMPageSizes = mPageSizes;
      96                 :          0 :   for ( const QgsPageSize &pageSize : constMPageSizes )
      97                 :            :   {
      98                 :            :     // convert passed size to same units
      99                 :          0 :     QgsLayoutSize xSize = converter.convert( size, pageSize.size.units() );
     100                 :            : 
     101                 :            :     //consider width and height values may be exchanged
     102                 :          0 :     if ( ( qgsDoubleNear( xSize.width(), pageSize.size.width(), 0.01 ) && qgsDoubleNear( xSize.height(), pageSize.size.height(), 0.01 ) )
     103                 :          0 :          || ( qgsDoubleNear( xSize.height(), pageSize.size.width(), 0.01 ) && qgsDoubleNear( xSize.width(), pageSize.size.height(), 0.01 ) ) )
     104                 :            :     {
     105                 :          0 :       return pageSize.name;
     106                 :            :     }
     107                 :            :   }
     108                 :          0 :   return QString();
     109                 :          0 : }
     110                 :            : 
     111                 :          0 : bool QgsPageSizeRegistry::decodePageSize( const QString &pageSizeName, QgsPageSize &pageSize )
     112                 :            : {
     113                 :          0 :   QList< QgsPageSize > matches = find( pageSizeName.trimmed() );
     114                 :          0 :   if ( matches.length() > 0 )
     115                 :            :   {
     116                 :          0 :     pageSize = matches.at( 0 );
     117                 :          0 :     return true;
     118                 :            :   }
     119                 :          0 :   return false;
     120                 :          0 : }
     121                 :            : 
     122                 :            : //
     123                 :            : // QgsPageSize
     124                 :            : //
     125                 :            : 
     126                 :          0 : QgsPageSize::QgsPageSize()
     127                 :          0 :   : size( QgsLayoutSize( 0.0, 0.0 ) )
     128                 :            : {
     129                 :          0 : }
     130                 :            : 
     131                 :        160 : QgsPageSize::QgsPageSize( const QString &pageName, const QgsLayoutSize &pageSize, const QString &displayName )
     132                 :        160 :   : name( pageName )
     133                 :        160 :   , size( pageSize )
     134                 :        160 :   , displayName( displayName )
     135                 :            : {
     136                 :        160 : }
     137                 :            : 
     138                 :          0 : QgsPageSize::QgsPageSize( const QgsLayoutSize &pageSize )
     139                 :          0 :   :  size( pageSize )
     140                 :            : {
     141                 :            : 
     142                 :          0 : }
     143                 :            : 
     144                 :          0 : bool QgsPageSize::operator==( const QgsPageSize &other ) const
     145                 :            : {
     146                 :          0 :   return ( name == other.name && size == other.size );
     147                 :            : }
     148                 :            : 
     149                 :          0 : bool QgsPageSize::operator!=( const QgsPageSize &other ) const
     150                 :            : {
     151                 :          0 :   return ( ! operator==( other ) );
     152                 :            : }

Generated by: LCOV version 1.14