void Gradient::addColorStop(const Gradient::ColorStop& stop) { if (m_stops.isEmpty()) { m_stopsSorted = true; } else { m_stopsSorted = m_stopsSorted && compareStops(m_stops.last(), stop); } m_stops.append(stop); m_cachedShader.reset(); }
void Gradient::addColorStop(const Gradient::ColorStop& stop) { if (m_stops.isEmpty()) { m_stopsSorted = true; } else { m_stopsSorted = m_stopsSorted && compareStops(m_stops.last(), stop); } m_stops.append(stop); m_gradient = nullptr; }
void Gradient::sortStopsIfNecessary() { if (m_stopsSorted) return; m_stopsSorted = true; if (!m_stops.size()) return; // Shortcut for the ideal case (ordered 2-stop gradient) if (m_stops.size() == 2 && compareStops(*m_stops.begin(), *m_stops.end())) return; std::stable_sort(m_stops.begin(), m_stops.end(), compareStops); }