MCPcopy Create free account
hub / github.com/antvis/F2Native / UpdateRange

Method UpdateRange

core/graphics/interaction/InteractionContext.cpp:102–123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102bool interaction::InteractionContext::UpdateRange(std::array<double, 2> newRange) {
103 double rangeStart = newRange[0];
104 double rangeEnd = newRange[1];
105
106 rangeStart = fmax(0, rangeStart);
107 rangeEnd = fmin(1, rangeEnd);
108
109 std::size_t valueSize = values_.size();
110 std::size_t valueStart = static_cast<std::size_t>(valueSize * rangeStart);
111 std::size_t valueEnd = fmin(static_cast<std::size_t>(valueSize * rangeEnd), valueSize - 1);
112
113 // chart_->GetLogTracer()->trace("UpdateRange range: %lu", (valueEnd - valueStart));
114
115 if((valueEnd - valueStart) < minCount_ || (valueEnd - valueStart) > maxCount_) {
116 return false;
117 }
118 range_ = {rangeStart, rangeEnd};
119 // 从原始数据里截取需要显示的数据
120 auto newValue = JsonArraySlice(values_, valueStart, valueEnd);
121
122 return this->Repaint(newValue, valueStart, valueEnd);
123}
124
125bool interaction::InteractionContext::Repaint(nlohmann::json &newValues, std::size_t valueStart, std::size_t valueEnd) {
126 const std::string &xField = this->chart_->GetXScaleField();

Callers 2

DoMoveMethod · 0.95
DoZoomMethod · 0.95

Calls 3

RepaintMethod · 0.95
JsonArraySliceFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected