File indexing completed on 2024-04-28 09:48:36
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 #include "bordercolumnrenderer_p.hpp" 0010 0011 // lib 0012 #include <abstractcolumnstylist.hpp> 0013 // Qt 0014 #include <QPainter> 0015 #include <QStyle> 0016 0017 namespace Okteta { 0018 0019 static constexpr PixelX BorderMargin = 4; 0020 static constexpr PixelX LineWidth = 1; 0021 static constexpr PixelX BorderWidth = 2 * BorderMargin + LineWidth; 0022 static constexpr PixelX LineX = BorderMargin; 0023 0024 void BorderColumnRendererPrivate::init() 0025 { 0026 Q_Q(BorderColumnRenderer); 0027 0028 q->setWidth(m_lineDrawn ? BorderWidth : BorderMargin); 0029 } 0030 0031 void BorderColumnRendererPrivate::renderColumn(QPainter* painter, const PixelXRange& Xs, const PixelYRange& Ys) 0032 { 0033 Q_Q(BorderColumnRenderer); 0034 0035 q->AbstractColumnRenderer::renderColumn(painter, Xs, Ys); 0036 0037 renderBorderLine(painter, Xs, Ys); 0038 } 0039 0040 void BorderColumnRendererPrivate::renderEmptyColumn(QPainter* painter, const PixelXRange& Xs, const PixelYRange& Ys) 0041 { 0042 Q_Q(BorderColumnRenderer); 0043 0044 q->AbstractColumnRenderer::renderEmptyColumn(painter, Xs, Ys); 0045 0046 if (m_inEmpty) { 0047 renderBorderLine(painter, Xs, Ys); 0048 } 0049 } 0050 0051 void BorderColumnRendererPrivate::renderBorderLine(QPainter* painter, const PixelXRange& Xs, const PixelYRange& Ys) 0052 { 0053 Q_Q(BorderColumnRenderer); 0054 0055 const PixelX viewGlobalLineX = q->x() + LineX; 0056 0057 if (m_lineDrawn && Xs.includes(viewGlobalLineX)) { 0058 const int lineColor = -1; // TODO: viewport->style()->styleHint( QStyle::SH_Table_GridLineColor, 0, viewport ); 0059 0060 painter->setPen(lineColor != -1 ? (QRgb)lineColor : mStylist->palette().mid().color()); 0061 painter->drawLine(viewGlobalLineX, Ys.start(), viewGlobalLineX, Ys.end()); 0062 } 0063 } 0064 0065 }