/*Copyright © 2017 Hasan Yavuz ÖzderyaThis file is part of serialplot.serialplot is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.serialplot is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with serialplot. If not, see <http://www.gnu.org/licenses/>.*/#include <math.h>#include "framebufferseries.h"FrameBufferSeries::FrameBufferSeries(FrameBuffer* buffer){xAsIndex = true;_xmin = 0;_xmax = 1;_buffer = buffer;int_index_start = 0;int_index_end = _buffer->size();}void FrameBufferSeries::setXAxis(bool asIndex, double xmin, double xmax){xAsIndex = asIndex;_xmin = xmin;_xmax = xmax;}size_t FrameBufferSeries::size() const{return int_index_end - int_index_start;}QPointF FrameBufferSeries::sample(size_t i) const{i += int_index_start;if (xAsIndex){return QPointF(i, _buffer->sample(i));}else{return QPointF(i * (_xmax - _xmin) / _buffer->size() + _xmin, _buffer->sample(i));}}QRectF FrameBufferSeries::boundingRect() const{if (xAsIndex){return _buffer->boundingRect();}else{auto rect = _buffer->boundingRect();rect.setLeft(_xmin);rect.setRight(_xmax);return rect;}}void FrameBufferSeries::setRectOfInterest(const QRectF& rect){if (xAsIndex){int_index_start = floor(rect.left())-1;int_index_end = ceil(rect.right())+1;}else{double xsize = _xmax - _xmin;size_t bsize = _buffer->size();int_index_start = floor(bsize * (rect.left()-_xmin) / xsize)-1;int_index_end = ceil(bsize * (rect.right()-_xmin) / xsize)+1;}int_index_start = std::max(int_index_start, 0);int_index_end = std::min((int) _buffer->size(), int_index_end);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。