File indexing completed on 2023-10-25 09:46:40
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <cassert>
0014
0015
0016 #include "TVirtualX.h"
0017 #include "TGFont.h"
0018
0019
0020 #include "Fireworks/TableWidget/interface/FWColumnLabelCellRenderer.h"
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033 FWColumnLabelCellRenderer::FWColumnLabelCellRenderer(const TGGC* iContext, bool isSortable)
0034 : FWTextTableCellRenderer(iContext),
0035 m_sortOrder(fireworks::table::kNotSorted),
0036 m_sizeOfOrderIcon(height()),
0037 m_isSortable(isSortable) {
0038 if (m_isSortable) {
0039 FontMetrics_t metrics;
0040 font()->GetFontMetrics(&metrics);
0041
0042 m_sizeOfOrderIcon -= 2 * metrics.fDescent;
0043 m_sizeOfOrderIconStartX = metrics.fDescent;
0044
0045
0046 if (1 == m_sizeOfOrderIcon % 2) {
0047 ++m_sizeOfOrderIcon;
0048 }
0049 }
0050 }
0051
0052
0053
0054
0055
0056
0057 FWColumnLabelCellRenderer::~FWColumnLabelCellRenderer() {}
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074 void FWColumnLabelCellRenderer::setSortOrder(fireworks::table::SortOrder iOrder) {
0075 if (!m_isSortable)
0076 assert(iOrder == fireworks::table::kNotSorted);
0077
0078 m_sortOrder = iOrder;
0079 }
0080
0081 void FWColumnLabelCellRenderer::draw(Drawable_t iID, int iX, int iY, unsigned int iWidth, unsigned int iHeight) {
0082 if (m_isSortable) {
0083 using namespace fireworks::table;
0084 UInt_t h = m_sizeOfOrderIcon;
0085 const GContext_t c = graphicsContext()->GetGC();
0086 int dY = m_sizeOfOrderIconStartX;
0087
0088 if (kAscendingSort == m_sortOrder) {
0089 gVirtualX->DrawLine(iID, c, iX + h / 2, iY + 2 + dY, iX, iY + h - 2 + dY);
0090 gVirtualX->DrawLine(iID, c, iX, iY + h - 2 + dY, iX + h, iY + h - 2 + dY);
0091 gVirtualX->DrawLine(iID, c, iX + h / 2, iY + 2 + dY, iX + h, iY + h - 2 + dY);
0092 }
0093 if (kDescendingSort == m_sortOrder) {
0094 gVirtualX->DrawLine(iID, c, iX, iY + 2 + dY, iX + h, iY + 2 + dY);
0095 gVirtualX->DrawLine(iID, c, iX + h / 2, iY + h - 2 + dY, iX + h, iY + 2 + dY);
0096 gVirtualX->DrawLine(iID, c, iX + h / 2, iY + h - 2 + dY, iX, iY + 2 + dY);
0097 }
0098 FWTextTableCellRenderer::draw(iID, iX + kGap + h, iY, iWidth - kGap - h, iHeight);
0099 } else {
0100 return FWTextTableCellRenderer::draw(iID, iX + kGap, iY - kGap, iWidth, iHeight);
0101 }
0102 }
0103
0104
0105
0106
0107 fireworks::table::SortOrder FWColumnLabelCellRenderer::sortOrder() const { return m_sortOrder; }
0108
0109 UInt_t FWColumnLabelCellRenderer::width() const {
0110 if (m_isSortable)
0111 return FWTextTableCellRenderer::width() + kGap + m_sizeOfOrderIcon;
0112 else {
0113 return FWTextTableCellRenderer::width() + kGap * 2;
0114 }
0115 }
0116
0117
0118
0119