File indexing completed on 2024-04-28 15:11:28
0001 /* 0002 SPDX-FileCopyrightText: 2007 Jason Harris <kstars@30doradus.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "eqplotwidget.h" 0008 0009 #include "kstarsdatetime.h" 0010 #include "modcalcvizequinox.h" 0011 0012 #include <KLocalizedString> 0013 0014 #include <QPainter> 0015 0016 eqPlotWidget::eqPlotWidget(QWidget *parent) : KPlotWidget(parent) 0017 { 0018 } 0019 0020 //Draw rotated labels and month names on top axis 0021 void eqPlotWidget::paintEvent(QPaintEvent *e) 0022 { 0023 KPlotWidget::paintEvent(e); 0024 0025 QPainter p; 0026 p.begin(this); 0027 0028 modCalcEquinox *mc = (modCalcEquinox *)(parent()->parent()->parent()->parent()); 0029 KStarsDateTime dt(QDate(mc->Year->value(), 1, 1), QTime(0, 0, 0)); 0030 long double jd0 = dt.djd(); //save JD on Jan 1st 0031 0032 QPointF pSpring = mapToWidget(QPointF(mc->dSpring.djd() - jd0 - 4, -28.0)); 0033 QPointF pSummer = mapToWidget(QPointF(mc->dSummer.djd() - jd0 - 4, -28.0)); 0034 QPointF pAutumn = mapToWidget(QPointF(mc->dAutumn.djd() - jd0 - 4, -28.0)); 0035 QPointF pWinter = mapToWidget(QPointF(mc->dWinter.djd() - jd0 - 4, -28.0)); 0036 0037 p.setPen(Qt::yellow); 0038 QFont f = p.font(); 0039 f.setPointSize(f.pointSize() - 2); 0040 p.setFont(f); 0041 0042 p.save(); 0043 p.translate(leftPadding() + pSpring.x(), topPadding() + pSpring.y()); 0044 p.rotate(-90); 0045 p.drawText(0, 0, i18n("Vernal equinox:")); 0046 p.drawText(0, 14, QLocale().toString(mc->dSpring, QLocale::LongFormat)); 0047 p.restore(); 0048 0049 p.save(); 0050 p.translate(leftPadding() + pSummer.x(), topPadding() + pSummer.y()); 0051 p.rotate(-90); 0052 p.drawText(0, 0, i18n("Summer solstice:")); 0053 p.drawText(0, 14, QLocale().toString(mc->dSummer, QLocale::LongFormat)); 0054 p.restore(); 0055 0056 p.save(); 0057 p.translate(leftPadding() + pAutumn.x(), topPadding() + pAutumn.y()); 0058 p.rotate(-90); 0059 p.drawText(0, 0, i18n("Autumnal equinox:")); 0060 p.drawText(0, 14, QLocale().toString(mc->dAutumn, QLocale::LongFormat)); 0061 p.restore(); 0062 0063 p.save(); 0064 p.translate(leftPadding() + pWinter.x(), topPadding() + pWinter.y()); 0065 p.rotate(-90); 0066 p.drawText(0, 0, i18n("Winter solstice:")); 0067 p.drawText(0, 14, QLocale().toString(mc->dWinter, QLocale::LongFormat)); 0068 p.restore(); 0069 0070 //Draw month labels along top axis 0071 p.setPen(Qt::white); 0072 p.save(); 0073 p.translate(leftPadding(), topPadding()); 0074 double y = mc->Plot->dataRect().bottom() + 1.5; 0075 for (int i = 0; i < 12; i++) 0076 { 0077 QPoint c; 0078 if (i < 11) 0079 { 0080 c = mc->Plot->mapToWidget(QPointF(0.5 * (mc->dmonth(i) + mc->dmonth(i + 1)), y)).toPoint(); 0081 } 0082 else 0083 { 0084 c = mc->Plot->mapToWidget(QPointF(0.5 * (mc->dmonth(i) + mc->Plot->dataRect().right()), y)).toPoint(); 0085 } 0086 QRect r(-16, -8, 32, 16); 0087 r.moveCenter(c); 0088 QLocale locale; 0089 p.drawText(r, Qt::AlignCenter, locale.monthName(i + 1, QLocale::ShortFormat)); 0090 } 0091 p.restore(); 0092 p.end(); 0093 }