Select one of the symbols to view example projects that use it.
 
Outline
#include <gui/graph_screen/GraphBelow.hpp>
GraphBelow::drawCanvasWidget(const Rect &) const
GraphBelow::getMinimalRectContainingIndices(int, int) const
Files
loading...
CodeScopeSTM32 Libraries and SamplesTouchGFXGui/gui/src/graph_screen/GraphBelow.cpp
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/** ****************************************************************************** * This file is part of the TouchGFX 4.10.0 distribution. * * @attention * * Copyright (c) 2018 STMicroelectronics. * All rights reserved. * * 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 <gui/graph_screen/GraphBelow.hpp> using namespace touchgfx; bool GraphBelow::drawCanvasWidget(const Rect& invalidatedArea) const { if (numPoints < 2) { // A graph line with a single (or not even a single) point is invisible return true; }if (numPoints < 2) { ... } int firstIndex = 0; int lastIndex = numPoints - 1; // We can skip the line from index if the left part of the line at index+1 is to the left of the invalidated area while (firstIndex < lastIndex && invalidatedArea.x > (widgetXindex(firstIndex+1) + lineWidth/2).to<int>()) { firstIndex++; }while (firstIndex < lastIndex && invalidatedArea.x > (widgetXindex(firstIndex+1) + lineWidth/2).to()) { ... } // We can skip the line from index if the left part of the line at index-1 is to the right of the invalidated area while (lastIndex > firstIndex && invalidatedArea.right() < (widgetXindex(lastIndex-1) - lineWidth/2).to<int>()) { lastIndex--; }while (lastIndex > firstIndex && invalidatedArea.right() < (widgetXindex(lastIndex-1) - lineWidth/2).to()) { ... } if (firstIndex < lastIndex) { Canvas canvas(this, invalidatedArea); canvas.moveTo(widgetXindex(firstIndex), widgetYindex(firstIndex)); for (int index = firstIndex + 1; index <= lastIndex; index++) { canvas.lineTo(widgetXindex(index), widgetYindex(index)); }for (int index = firstIndex + 1; index <= lastIndex; index++) { ... } canvas.lineTo(widgetXindex(lastIndex), widgetY(0)); canvas.lineTo(widgetXindex(firstIndex), widgetY(0)); // canvas.lineTo(widgetXindex(lastIndex), widgetY(bottom)); // canvas.lineTo(widgetXindex(firstIndex), widgetY(bottom)); return canvas.render(); }if (firstIndex < lastIndex) { ... } return true; ...} Rect GraphBelow::getMinimalRectContainingIndices(int firstIndex, int lastIndex) const { int minX = widgetXindex(firstIndex).to<int>(); int maxX = widgetXindex(lastIndex).to<int>(); int zeroY = widgetY(0).to<int>(); int firstY = widgetYindex(firstIndex).to<int>(); int minY = MIN(zeroY, firstY); int maxY = MAX(zeroY, firstY); for (int index = firstIndex+1; index <= lastIndex; index++) { int y = widgetYindex(index).to<int>(); minY = MIN(minY, y); maxY = MAX(maxY, y); }for (int index = firstIndex+1; index <= lastIndex; index++) { ... } return Rect(minX, minY, maxX - minX + 1, maxY - minY + 1); ...}