64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
/******************************************************************************
|
|
* Copyright (c) 2018(-2023) STMicroelectronics.
|
|
* All rights reserved.
|
|
*
|
|
* This file is part of the TouchGFX 4.21.2 distribution.
|
|
*
|
|
* This software is licensed under terms that can be found in the LICENSE file in
|
|
* the root directory of this software component.
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
*
|
|
*******************************************************************************/
|
|
|
|
#include <touchgfx/widgets/graph/GraphScroll.hpp>
|
|
|
|
namespace touchgfx
|
|
{
|
|
|
|
void GraphScrollData::clear()
|
|
{
|
|
DynamicDataGraph::clear();
|
|
current = 0;
|
|
}
|
|
|
|
int32_t GraphScrollData::indexToGlobalIndex(int16_t index) const
|
|
{
|
|
if (usedCapacity < maxCapacity)
|
|
{
|
|
return dataIndex(index);
|
|
}
|
|
return (dataCounter - maxCapacity) + index;
|
|
}
|
|
|
|
void GraphScrollData::beforeAddValue()
|
|
{
|
|
if (usedCapacity == maxCapacity)
|
|
{
|
|
invalidateAllXAxisPoints();
|
|
}
|
|
}
|
|
|
|
int16_t GraphScrollData::addValue(int value)
|
|
{
|
|
const bool graphFull = usedCapacity == maxCapacity;
|
|
const int16_t index = current++;
|
|
current %= maxCapacity;
|
|
if (index == usedCapacity)
|
|
{
|
|
usedCapacity++;
|
|
}
|
|
yValues[index] = value;
|
|
if (graphFull)
|
|
{
|
|
invalidateGraphArea();
|
|
invalidateAllXAxisPoints();
|
|
}
|
|
else
|
|
{
|
|
invalidateGraphPointAt(index);
|
|
}
|
|
return index;
|
|
}
|
|
|
|
} // namespace touchgfx
|