commit 5ea4cb0e54f91b407284e231e721900bc058aeee
parent 2d53acaea0a640a616f4212cc9152e476d5f1b48
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 27 May 2023 22:56:50 -0700
simplify code
Diffstat:
1 file changed, 18 insertions(+), 36 deletions(-)
diff --git a/pkg/captcha/image.go b/pkg/captcha/image.go
@@ -599,6 +599,12 @@ func (m *Image) getGradientColors(nbPoints int) []color.RGBA {
return gradColors
}
+func (m *Image) strokeCubicLine(p1, p2 Point, d float64) {
+ m.c.MoveTo(p1.GetX(), p1.GetY())
+ m.c.CubicTo(p1.GetX()+d, p1.GetY()+d, p2.GetX()-d, p2.GetY()-d, p2.GetX(), p2.GetY())
+ m.c.Stroke()
+}
+
func (m *Image) renderPath(points []Point) {
d := m.CubicDelta
@@ -618,16 +624,12 @@ func (m *Image) renderPath(points []Point) {
m.withState(func() {
m.c.SetLineWidth(4)
m.c.SetColor(color.RGBA{R: 15, G: 15, B: 15, A: 255})
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()+d, prev.GetY()+d, pt.GetX()-d, pt.GetY()-d, pt.GetX(), pt.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, d)
})
m.withState(func() {
m.c.SetLineWidth(1.5)
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()+d, prev.GetY()+d, pt.GetX()-d, pt.GetY()-d, pt.GetX(), pt.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, d)
})
}
})
@@ -651,23 +653,17 @@ func (m *Image) renderPath(points []Point) {
m.withState(func() {
m.c.SetLineWidth(4)
m.c.SetColor(color.RGBA{R: 15, G: 15, B: 15, A: 255})
- m.c.MoveTo(pt.GetX(), pt.GetY())
- m.c.CubicTo(pt.GetX()-d, pt.GetY()-d, prev.GetX()+d, prev.GetY()+d, prev.GetX(), prev.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(pt, prev, -d)
})
m.withState(func() {
m.c.SetDashOffset(4)
m.c.SetDash(30, 300)
- m.c.MoveTo(pt.GetX(), pt.GetY())
- m.c.CubicTo(pt.GetX()-d, pt.GetY()-d, prev.GetX()+d, prev.GetY()+d, prev.GetX(), prev.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(pt, prev, -d)
})
} else {
m.withState(func() {
- m.c.MoveTo(pt.GetX(), pt.GetY())
- m.c.CubicTo(pt.GetX()-d, pt.GetY()-d, prev.GetX()+d, prev.GetY()+d, prev.GetX(), prev.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(pt, prev, -d)
})
}
}
@@ -694,9 +690,7 @@ func (m *Image) renderFakePath(points []Point) {
m.c.SetStrokeStyle(grad)
m.withState(func() {
m.c.SetLineWidth(1)
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()-d, prev.GetY()-d, pt.GetX()+d, pt.GetY()+d, pt.GetX(), pt.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, -d)
})
}
})
@@ -708,12 +702,8 @@ func (m *Image) renderFakePath(points []Point) {
for i := 1; i < len(points); i++ {
prev := points[i-1]
pt := points[i]
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()-d, prev.GetY()-d, pt.GetX()+d, pt.GetY()+d, pt.GetX(), pt.GetY())
- m.c.Stroke()
- m.c.MoveTo(pt.GetX(), pt.GetY())
- m.c.CubicTo(pt.GetX()+d, pt.GetY()+d, prev.GetX()-d, prev.GetY()-d, prev.GetX(), prev.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, -d)
+ m.strokeCubicLine(pt, prev, d)
}
})
@@ -731,16 +721,12 @@ func (m *Image) renderFakePath(points []Point) {
m.withState(func() {
m.c.SetLineWidth(4)
m.c.SetColor(color.RGBA{R: 15, G: 15, B: 15, A: 255})
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()-d, prev.GetY()-d, pt.GetX()+d, pt.GetY()+d, pt.GetX(), pt.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, -d)
})
m.withState(func() {
m.c.SetLineWidth(1.5)
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()-d, prev.GetY()-d, pt.GetX()+d, pt.GetY()+d, pt.GetX(), pt.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, -d)
})
}
})
@@ -756,12 +742,8 @@ func (m *Image) renderFakePath(points []Point) {
grad := getGradient(prev, pt, gradColors, i)
m.c.SetStrokeStyle(grad)
- m.c.MoveTo(prev.GetX(), prev.GetY())
- m.c.CubicTo(prev.GetX()-d, prev.GetY()-d, pt.GetX()+d, pt.GetY()+d, pt.GetX(), pt.GetY())
- m.c.Stroke()
- m.c.MoveTo(pt.GetX(), pt.GetY())
- m.c.CubicTo(pt.GetX()+d, pt.GetY()+d, prev.GetX()-d, prev.GetY()-d, prev.GetX(), prev.GetY())
- m.c.Stroke()
+ m.strokeCubicLine(prev, pt, -d)
+ m.strokeCubicLine(pt, prev, d)
}
})
})