MCPcopy Create free account
hub / github.com/ColorCop/ColorCop / ComputeHSV

Method ComputeHSV

ColorCop/ColorCopDlg.cpp:771–800  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

769}
770
771void CColorCopDlg::ComputeHSV(int red, int green, int blue,
772 double& outH, double& outS, double& outV) {
773 double rf = red / RGB_MAX_D;
774 double gf = green / RGB_MAX_D;
775 double bf = blue / RGB_MAX_D;
776
777 double maxv = std::max({rf, gf, bf});
778 double minv = std::min({rf, gf, bf});
779 double delta = maxv - minv;
780
781 // Value (0–100)
782 outV = maxv * 100.0;
783
784 // Saturation (0–100)
785 outS = (maxv == 0.0) ? 0.0 : (delta / maxv) * 100.0;
786
787 // Hue (0–360)
788 if (delta <= HSL_EPSILON) {
789 outH = 0.0;
790 } else if (maxv == rf) {
791 outH = 60.0 * fmod(((gf - bf) / delta), 6.0);
792 } else if (maxv == gf) {
793 outH = 60.0 * (((bf - rf) / delta) + HUE_SECTOR_GREEN);
794 } else {
795 outH = 60.0 * (((rf - gf) / delta) + HUE_SECTOR_BLUE);
796 }
797
798 if (outH < 0.0)
799 outH += 360.0;
800}
801
802void CColorCopDlg::RecalcZoom() {
803 ASSERT(m_MagLevel >= kMinZoom && m_MagLevel <= kMaxZoom);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected