1 /*
2 This file is part of the Okteta Gui library, made within the KDE community.
3
4 SPDX-FileCopyrightText: 2003, 2008, 2019 Friedrich W. H. Kossebau <kossebau@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9 #include "bordercolumnrenderer_p.hpp"
10
11 // lib
12 #include <abstractcolumnstylist.hpp>
13 // Qt
14 #include <QPainter>
15 #include <QStyle>
16
17 namespace Okteta {
18
19 static constexpr PixelX BorderMargin = 4;
20 static constexpr PixelX LineWidth = 1;
21 static constexpr PixelX BorderWidth = 2 * BorderMargin + LineWidth;
22 static constexpr PixelX LineX = BorderMargin;
23
init()24 void BorderColumnRendererPrivate::init()
25 {
26 Q_Q(BorderColumnRenderer);
27
28 q->setWidth(m_lineDrawn ? BorderWidth : BorderMargin);
29 }
30
renderColumn(QPainter * painter,const PixelXRange & Xs,const PixelYRange & Ys)31 void BorderColumnRendererPrivate::renderColumn(QPainter* painter, const PixelXRange& Xs, const PixelYRange& Ys)
32 {
33 Q_Q(BorderColumnRenderer);
34
35 q->AbstractColumnRenderer::renderColumn(painter, Xs, Ys);
36
37 renderBorderLine(painter, Xs, Ys);
38 }
39
renderEmptyColumn(QPainter * painter,const PixelXRange & Xs,const PixelYRange & Ys)40 void BorderColumnRendererPrivate::renderEmptyColumn(QPainter* painter, const PixelXRange& Xs, const PixelYRange& Ys)
41 {
42 Q_Q(BorderColumnRenderer);
43
44 q->AbstractColumnRenderer::renderEmptyColumn(painter, Xs, Ys);
45
46 if (m_inEmpty) {
47 renderBorderLine(painter, Xs, Ys);
48 }
49 }
50
renderBorderLine(QPainter * painter,const PixelXRange & Xs,const PixelYRange & Ys)51 void BorderColumnRendererPrivate::renderBorderLine(QPainter* painter, const PixelXRange& Xs, const PixelYRange& Ys)
52 {
53 Q_Q(BorderColumnRenderer);
54
55 const PixelX viewGlobalLineX = q->x() + LineX;
56
57 if (m_lineDrawn && Xs.includes(viewGlobalLineX)) {
58 const int lineColor = -1; // TODO: viewport->style()->styleHint( QStyle::SH_Table_GridLineColor, 0, viewport );
59
60 painter->setPen(lineColor != -1 ? (QRgb)lineColor : mStylist->palette().mid().color());
61 painter->drawLine(viewGlobalLineX, Ys.start(), viewGlobalLineX, Ys.end());
62 }
63 }
64
65 }
66