File indexing completed on 2024-04-21 16:34:02

0001 /*
0002     This file is part of the Okteta Gui library, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2003, 2008, 2019 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #ifndef OKTETA_CHARBYTEARRAYCOLUMNRENDERER_P_HPP
0010 #define OKTETA_CHARBYTEARRAYCOLUMNRENDERER_P_HPP
0011 
0012 // lib
0013 #include "charbytearraycolumnrenderer.hpp"
0014 #include "abstractbytearraycolumnrenderer_p.hpp"
0015 #include "oktetagui.hpp"
0016 
0017 namespace Okteta {
0018 
0019 class CharByteArrayColumnRendererPrivate : public AbstractByteArrayColumnRendererPrivate
0020 {
0021 public:
0022     CharByteArrayColumnRendererPrivate(CharByteArrayColumnRenderer* q,
0023                                        AbstractColumnStylist* stylist,
0024                                        AbstractByteArrayModel* byteArrayModel,
0025                                        ByteArrayTableLayout* layout,
0026                                        ByteArrayTableRanges* ranges);
0027 
0028     ~CharByteArrayColumnRendererPrivate() override;
0029 
0030 public:
0031     void init();
0032 
0033 public: // modification access
0034     bool setShowingNonprinting(bool showingNonprinting = true);
0035     bool setSubstituteChar(QChar substituteChar);
0036     bool setUndefinedChar(QChar undefinedChar);
0037 
0038 public: // value access
0039     bool isShowingNonprinting() const;
0040     QChar substituteChar() const;
0041     QChar undefinedChar() const;
0042 
0043 protected: // AbstractByteArrayColumnRendererPrivate API
0044     void renderByteText(QPainter* painter, Byte byte, Character byteChar, const QColor& color) const override;
0045 
0046 private:
0047     /** */
0048     QChar mSubstituteChar;
0049     /** */
0050     QChar mUndefinedChar;
0051     /** */
0052     bool mShowingNonprinting;
0053 
0054 private:
0055     Q_DECLARE_PUBLIC(CharByteArrayColumnRenderer)
0056 };
0057 
0058 
0059 inline CharByteArrayColumnRendererPrivate::CharByteArrayColumnRendererPrivate(CharByteArrayColumnRenderer* q,
0060                                                                               AbstractColumnStylist* stylist,
0061                                                                               AbstractByteArrayModel* byteArrayModel,
0062                                                                               ByteArrayTableLayout* layout,
0063                                                                               ByteArrayTableRanges* ranges)
0064     : AbstractByteArrayColumnRendererPrivate(q, stylist, byteArrayModel, layout, ranges)
0065     , mSubstituteChar(DefaultSubstituteChar)
0066     , mUndefinedChar(DefaultUndefinedChar)
0067     , mShowingNonprinting(DefaultShowingNonprinting)
0068 {
0069 }
0070 
0071 inline CharByteArrayColumnRendererPrivate::~CharByteArrayColumnRendererPrivate() = default;
0072 
0073 inline void CharByteArrayColumnRendererPrivate::init()
0074 {
0075     Q_Q(CharByteArrayColumnRenderer);
0076 
0077     q->setSpacing(0, 0, 0);
0078 }
0079 
0080 inline bool CharByteArrayColumnRendererPrivate::isShowingNonprinting()  const { return mShowingNonprinting; }
0081 inline QChar CharByteArrayColumnRendererPrivate::substituteChar()       const { return mSubstituteChar; }
0082 inline QChar CharByteArrayColumnRendererPrivate::undefinedChar()        const { return mUndefinedChar; }
0083 
0084 inline bool CharByteArrayColumnRendererPrivate::setSubstituteChar(QChar substituteChar)
0085 {
0086     if (mSubstituteChar == substituteChar) {
0087         return false;
0088     }
0089 
0090     mSubstituteChar = substituteChar;
0091     return true;
0092 }
0093 
0094 inline bool CharByteArrayColumnRendererPrivate::setUndefinedChar(QChar undefinedChar)
0095 {
0096     if (mUndefinedChar == undefinedChar) {
0097         return false;
0098     }
0099 
0100     mUndefinedChar = undefinedChar;
0101     return true;
0102 }
0103 
0104 inline bool CharByteArrayColumnRendererPrivate::setShowingNonprinting(bool showingNonprinting)
0105 {
0106     if (mShowingNonprinting == showingNonprinting) {
0107         return false;
0108     }
0109 
0110     mShowingNonprinting = showingNonprinting;
0111     return true;
0112 }
0113 
0114 }
0115 
0116 #endif