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