File indexing completed on 2024-04-28 04:32:44

0001 /*
0002     SPDX-FileCopyrightText: 2007 Pino Toscano <pino@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 // local includes
0008 #include "pagesize.h"
0009 
0010 using namespace Okular;
0011 
0012 class Okular::PageSizePrivate : public QSharedData
0013 {
0014 public:
0015     PageSizePrivate()
0016         : m_width(0)
0017         , m_height(0)
0018     {
0019     }
0020 
0021     bool operator==(const PageSizePrivate &rhs) const
0022     {
0023         return m_width == rhs.m_width && m_height == rhs.m_height && m_name == rhs.m_name;
0024     }
0025 
0026     double m_width;
0027     double m_height;
0028     QString m_name;
0029 };
0030 
0031 PageSize::PageSize()
0032 {
0033 }
0034 
0035 PageSize::PageSize(double width, double height, const QString &name)
0036     : d(new PageSizePrivate)
0037 {
0038     d->m_width = width;
0039     d->m_height = height;
0040     d->m_name = name;
0041 }
0042 
0043 PageSize::PageSize(const PageSize &pageSize)
0044     : d(pageSize.d)
0045 {
0046 }
0047 
0048 PageSize::~PageSize()
0049 {
0050 }
0051 
0052 double PageSize::width() const
0053 {
0054     if (!d) {
0055         return 0;
0056     }
0057 
0058     return d->m_width;
0059 }
0060 
0061 double PageSize::height() const
0062 {
0063     if (!d) {
0064         return 0;
0065     }
0066 
0067     return d->m_height;
0068 }
0069 
0070 QString PageSize::name() const
0071 {
0072     if (!d) {
0073         return QString();
0074     }
0075 
0076     return d->m_name;
0077 }
0078 
0079 bool PageSize::isNull() const
0080 {
0081     if (!d) {
0082         return true;
0083     }
0084 
0085     return d->m_width == 0 && d->m_height == 0 && d->m_name.isEmpty();
0086 }
0087 
0088 bool PageSize::operator==(const PageSize &pageSize) const
0089 {
0090     // 1st: we're null: check if the other is null too
0091     if (!d) {
0092         return !pageSize.d;
0093     }
0094     // 2nd: we're not null, return if the other is null
0095     if (!pageSize.d) {
0096         return false;
0097     }
0098 
0099     // 3rd: normal == check
0100     return *d == *pageSize.d;
0101 }
0102 
0103 bool PageSize::operator!=(const PageSize &pageSize) const
0104 {
0105     return !operator==(pageSize);
0106 }
0107 
0108 PageSize &PageSize::operator=(const PageSize &pageSize)
0109 {
0110     if (this == &pageSize) {
0111         return *this;
0112     }
0113 
0114     d = pageSize.d;
0115     return *this;
0116 }