Changeset View
Changeset View
Standalone View
Standalone View
kstars/fitsviewer/fitsview.cpp
Show First 20 Lines • Show All 889 Lines • ▼ Show 20 Line(s) | 876 | { | |||
---|---|---|---|---|---|
890 | foreach (auto const &starCenter, imageData->getStarCenters()) | 890 | foreach (auto const &starCenter, imageData->getStarCenters()) | ||
891 | { | 891 | { | ||
892 | int const w = std::round(starCenter->width) * scale; | 892 | int const w = std::round(starCenter->width) * scale; | ||
893 | 893 | | |||
894 | // Draw a circle around the detected star. | 894 | // Draw a circle around the detected star. | ||
895 | // SEP coordinates are in the center of pixels, and Qt at the boundary. | 895 | // SEP coordinates are in the center of pixels, and Qt at the boundary. | ||
896 | const double xCoord = starCenter->x - 0.5; | 896 | const double xCoord = starCenter->x - 0.5; | ||
897 | const double yCoord = starCenter->y - 0.5; | 897 | const double yCoord = starCenter->y - 0.5; | ||
898 | const int xc = std::round((xCoord - starCenter->width / 2.0f) * scale); | ||||
899 | const int yc = std::round((yCoord - starCenter->width / 2.0f) * scale); | ||||
900 | const int hw = w / 2; | ||||
901 | | ||||
902 | BahtinovEdge* bEdge = dynamic_cast<BahtinovEdge*>(starCenter); | ||||
903 | if (bEdge != nullptr) | ||||
904 | { | ||||
905 | // Draw lines of diffraction pattern | ||||
906 | painter->setPen(QPen(Qt::red, scaleSize(2))); | ||||
907 | painter->drawLine(bEdge->line[0].x1() * scale, bEdge->line[0].y1() * scale, | ||||
908 | bEdge->line[0].x2() * scale, bEdge->line[0].y2() * scale); | ||||
909 | painter->setPen(QPen(Qt::green, scaleSize(2))); | ||||
910 | painter->drawLine(bEdge->line[1].x1() * scale, bEdge->line[1].y1() * scale, | ||||
911 | bEdge->line[1].x2() * scale, bEdge->line[1].y2() * scale); | ||||
912 | painter->setPen(QPen(Qt::darkGreen, scaleSize(2))); | ||||
913 | painter->drawLine(bEdge->line[2].x1() * scale, bEdge->line[2].y1() * scale, | ||||
914 | bEdge->line[2].x2() * scale, bEdge->line[2].y2() * scale); | ||||
915 | | ||||
916 | // Draw center circle | ||||
917 | painter->setPen(QPen(Qt::white, scaleSize(2))); | ||||
918 | painter->drawEllipse(xc, yc, w, w); | ||||
919 | | ||||
920 | // Draw offset circle | ||||
921 | double factor = 15.0; | ||||
922 | QPointF offsetVector = (bEdge->offset - QPointF(starCenter->x, starCenter->y)) * factor; | ||||
923 | int const xo = std::round((starCenter->x + offsetVector.x() - starCenter->width / 2.0f) * scale); | ||||
924 | int const yo = std::round((starCenter->y + offsetVector.y() - starCenter->width / 2.0f) * scale); | ||||
925 | painter->setPen(QPen(Qt::red, scaleSize(2))); | ||||
926 | painter->drawEllipse(xo, yo, w, w); | ||||
927 | | ||||
928 | // Draw line between center circle and offset circle | ||||
929 | painter->setPen(QPen(Qt::red, scaleSize(2))); | ||||
930 | painter->drawLine(xc + hw, yc + hw, xo + hw, yo + hw); | ||||
931 | } | ||||
932 | else | ||||
933 | { | ||||
898 | const double radius = starCenter->HFR > 0 ? 2.0f * starCenter->HFR * scale : w; | 934 | const double radius = starCenter->HFR > 0 ? 2.0f * starCenter->HFR * scale : w; | ||
899 | painter->drawEllipse(QPointF(xCoord * scale, yCoord * scale), radius, radius); | 935 | painter->drawEllipse(QPointF(xCoord * scale, yCoord * scale), radius, radius); | ||
936 | } | ||||
900 | 937 | | |||
901 | if (showStarsHFR) | 938 | if (showStarsHFR) | ||
902 | { | 939 | { | ||
903 | int const x1 = std::round((xCoord - starCenter->width / 2.0f) * scale); | | |||
904 | int const y1 = std::round((yCoord - starCenter->width / 2.0f) * scale); | | |||
905 | | ||||
906 | // Ask the painter how large will the HFR text be | 940 | // Ask the painter how large will the HFR text be | ||
907 | QString const hfr = QString("%1").arg(starCenter->HFR, 0, 'f', 2); | 941 | QString const hfr = QString("%1").arg(starCenter->HFR, 0, 'f', 2); | ||
908 | if (!drawHFR(painter, hfr, x1 + w + 5, y1 + w / 2)) | 942 | if (!drawHFR(painter, hfr, xc + w + 5, yc + w / 2)) | ||
909 | { | 943 | { | ||
910 | // Try a few more time with smaller fonts; | 944 | // Try a few more time with smaller fonts; | ||
911 | for (int i = 0; i < 10; ++i) | 945 | for (int i = 0; i < 10; ++i) | ||
912 | { | 946 | { | ||
913 | const double tempFontSize = painterFont.pointSizeF() - 2; | 947 | const double tempFontSize = painterFont.pointSizeF() - 2; | ||
914 | if (tempFontSize <= 0) break; | 948 | if (tempFontSize <= 0) break; | ||
915 | painterFont.setPointSizeF(tempFontSize); | 949 | painterFont.setPointSizeF(tempFontSize); | ||
916 | painter->setFont(painterFont); | 950 | painter->setFont(painterFont); | ||
917 | if (drawHFR(painter, hfr, x1 + w + 5, y1 + w / 2)) | 951 | if (drawHFR(painter, hfr, xc + w + 5, yc + w / 2)) | ||
918 | break; | 952 | break; | ||
919 | } | 953 | } | ||
920 | // Reset the font size. | 954 | // Reset the font size. | ||
921 | painterFont.setPointSize(fontSize); | 955 | painterFont.setPointSize(fontSize); | ||
922 | painter->setFont(painterFont); | 956 | painter->setFont(painterFont); | ||
923 | } | 957 | } | ||
924 | } | 958 | } | ||
925 | } | 959 | } | ||
▲ Show 20 Lines • Show All 1003 Lines • Show Last 20 Lines |