| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Copyright (C) 2016 The Qt Company Ltd.
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
- .pragma library
- function renderSmoothedLine(ctx, trace, renderPos) {
- if (!trace)
- return renderPos
- if (renderPos >= trace.length)
- return renderPos
- // Fetch points and draw the initial "dot"
- var points, tp
- if (renderPos === 0) {
- points = trace.points()
- tp = points[renderPos++]
- ctx.beginPath()
- ctx.moveTo(tp.x, tp.y)
- ctx.lineTo(tp.x, tp.y + 0.000001)
- ctx.stroke()
- } else {
- points = trace.points(renderPos - 1)
- }
- // Draw smoothed line using quadratic curve
- var i = 1
- if (i + 1 < points.length) {
- var pt1, pt2
- if (renderPos === 1) {
- tp = points[i - 1]
- } else {
- pt1 = points[i - 1]
- pt2 = points[i]
- tp = Qt.point((pt1.x + pt2.x) / 2, (pt1.y + pt2.y) / 2)
- }
- ctx.beginPath()
- ctx.moveTo(tp.x, tp.y)
- while (i + 1 < points.length) {
- pt1 = points[i++]
- pt2 = points[i]
- tp = Qt.point((pt1.x + pt2.x) / 2, (pt1.y + pt2.y) / 2)
- ctx.quadraticCurveTo(pt1.x, pt1.y, tp.x, tp.y)
- ctx.moveTo(tp.x, tp.y)
- }
- ctx.stroke()
- }
- // Draw the remainder of the line
- if (trace.final) {
- if (i < points.length) {
- tp = points[i - 1]
- ctx.beginPath()
- ctx.moveTo(tp.x, tp.y)
- tp = points[i++]
- ctx.lineTo(tp.x, tp.y)
- ctx.stroke()
- }
- }
- return renderPos + i - 1
- }
|