@@ -116,6 +116,7 @@ final class SquirrelView: NSView {
116
116
}
117
117
118
118
// Will triger - (void)drawRect:(NSRect)dirtyRect
119
+ // swiftlint:disable:next function_parameter_count
119
120
func drawView( candidateRanges: [ NSRange ] , hilightedIndex: Int , preeditRange: NSRange , highlightedPreeditRange: NSRange , canPageUp: Bool , canPageDown: Bool ) {
120
121
self . candidateRanges = candidateRanges
121
122
self . hilightedIndex = hilightedIndex
@@ -350,23 +351,14 @@ final class SquirrelView: NSView {
350
351
351
352
private extension SquirrelView {
352
353
// A tweaked sign function, to winddown corner radius when the size is small
353
- func sign( _ number: CGFloat ) -> CGFloat {
354
- if number >= 2 {
355
- return 1
356
- } else if number <= - 2 {
357
- return - 1
354
+ func sign( _ number: NSPoint ) -> NSPoint {
355
+ if number. length >= 2 {
356
+ return number / number. length
358
357
} else {
359
358
return number / 2
360
359
}
361
360
}
362
361
363
- func scale( _ value: CGFloat , multiplier: CGFloat , divider: CGFloat ) -> CGFloat {
364
- if abs ( value / divider) < 1e-3 {
365
- return multiplier / divider
366
- }
367
- return sign ( value / divider) * multiplier / value
368
- }
369
-
370
362
// Bezier cubic curve, which has continuous roundness
371
363
func drawSmoothLines( _ vertex: [ NSPoint ] , straightCorner: Set < Int > , alpha: CGFloat , beta rawBeta: CGFloat ) -> CGPath ? {
372
364
guard vertex. count >= 3 else {
@@ -380,17 +372,9 @@ private extension SquirrelView {
380
372
var control1 : NSPoint
381
373
var control2 : NSPoint
382
374
var target = previousPoint
383
- var diff = NSPoint ( x: point. x - previousPoint. x, y: point. y - previousPoint. y)
384
- var scaleFactor : CGFloat = 1
375
+ var diff = point - previousPoint
385
376
if straightCorner. isEmpty || !straightCorner. contains ( vertex. count- 1 ) {
386
- if vertex. count > 3 {
387
- target. x += sign ( diff. x / beta) * beta
388
- target. y += sign ( diff. y / beta) * beta
389
- } else { // triangle
390
- scaleFactor = min ( scale ( diff. x, multiplier: beta, divider: beta) , scale ( diff. y, multiplier: beta, divider: beta) )
391
- target. x += scaleFactor * diff. x
392
- target. y += scaleFactor * diff. y
393
- }
377
+ target += sign ( diff / beta) * beta
394
378
}
395
379
path. move ( to: target)
396
380
for i in 0 ..< vertex. count {
@@ -402,40 +386,18 @@ private extension SquirrelView {
402
386
path. addLine ( to: target)
403
387
} else {
404
388
control1 = point
405
- diff = NSPoint ( x: point. x - previousPoint. x, y: point. y - previousPoint. y)
406
-
407
- if vertex. count > 3 {
408
- target. x -= sign ( diff. x / beta) * beta
409
- target. y -= sign ( diff. y / beta) * beta
410
- control1. x -= sign ( diff. x / beta) * alpha
411
- control1. y -= sign ( diff. y / beta) * alpha
412
- } else { // triangle
413
- scaleFactor = min ( scale ( diff. x, multiplier: beta, divider: beta) , scale ( diff. y, multiplier: beta, divider: beta) )
414
- target. x -= scaleFactor * diff. x
415
- target. y -= scaleFactor * diff. y
416
- scaleFactor = min ( scale ( diff. x, multiplier: alpha, divider: beta) , scale ( diff. y, multiplier: alpha, divider: beta) )
417
- control1. x -= scaleFactor * diff. x
418
- control1. y -= scaleFactor * diff. y
419
- }
389
+ diff = point - previousPoint
390
+
391
+ target -= sign ( diff / beta) * beta
392
+ control1 -= sign ( diff / beta) * alpha
420
393
421
394
path. addLine ( to: target)
422
395
target = point
423
396
control2 = point
424
- diff = NSPoint ( x: nextPoint. x - point. x, y: nextPoint. y - point. y)
425
-
426
- if vertex. count > 3 {
427
- target. x += sign ( diff. x / beta) * beta
428
- target. y += sign ( diff. y / beta) * beta
429
- control2. x += sign ( diff. x / beta) * alpha
430
- control2. y += sign ( diff. y / beta) * alpha
431
- } else {
432
- scaleFactor = min ( scale ( diff. x, multiplier: beta, divider: beta) , scale ( diff. y, multiplier: beta, divider: beta) )
433
- target. x += scaleFactor * diff. x
434
- target. y += scaleFactor * diff. y
435
- scaleFactor = min ( scale ( diff. x, multiplier: alpha, divider: beta) , scale ( diff. y, multiplier: beta, divider: beta) )
436
- control2. x += scaleFactor * diff. x
437
- control2. y += scaleFactor * diff. y
438
- }
397
+ diff = nextPoint - point
398
+
399
+ target += sign ( diff / beta) * beta
400
+ control2 += sign ( diff / beta) * alpha
439
401
440
402
path. addCurve ( to: target, control1: control1, control2: control2)
441
403
}
@@ -611,10 +573,10 @@ private extension SquirrelView {
611
573
point = vertex [ i]
612
574
nextPoint = vertex [ ( i+ 1 ) % vertex. count]
613
575
newPoint = point
614
- displacement = direction ( diff: NSPoint ( x : point. x - previousPoint. x , y : point . y - previousPoint . y ) )
576
+ displacement = direction ( diff: point - previousPoint)
615
577
newPoint. x += by * displacement. x
616
578
newPoint. y += by * displacement. y
617
- displacement = direction ( diff: NSPoint ( x : nextPoint. x - point. x , y : nextPoint . y - point . y ) )
579
+ displacement = direction ( diff: nextPoint - point)
618
580
newPoint. x += by * displacement. x
619
581
newPoint. y += by * displacement. y
620
582
results [ i] = newPoint
@@ -651,6 +613,7 @@ private extension SquirrelView {
651
613
}
652
614
}
653
615
616
+ // swiftlint:disable:next large_tuple
654
617
func linearMultilineFor( body: NSRect , leading: NSRect , trailing: NSRect ) -> ( Array < NSPoint > , Array < NSPoint > , Set < Int > , Set < Int > ) {
655
618
let highlightedPoints , highlightedPoints2 : [ NSPoint ]
656
619
let rightCorners , rightCorners2 : Set < Int >
0 commit comments