Skip to content

Commit

Permalink
refactor: move command formatting to MouseEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
socsieng committed Jan 5, 2021
1 parent 3e0d973 commit 615e64b
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 29 deletions.
47 changes: 46 additions & 1 deletion Sources/SendKeysLib/MouseEventProcessor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ struct RawMouseEvent {
}
}

struct MouseEvent {
struct MouseEvent: CustomStringConvertible {
let eventType: MouseEventType
let button: MouseButton
let startPoint: CGPoint
let endPoint: CGPoint
let duration: TimeInterval

static let numberFormatter = createNumberFormatter()

init(eventType: MouseEventType, button: MouseButton, startPoint: CGPoint, endPoint: CGPoint, duration: TimeInterval) {
self.eventType = eventType
Expand All @@ -44,6 +46,49 @@ struct MouseEvent {
self.endPoint = endPoint
self.duration = duration
}

var description: String {
get {
switch eventType {
case .click:
var moveParts: [String] = []
var clickParts: [String] = []

moveParts.append(String(format: "%.0f,%.0f", endPoint.x, endPoint.y))

if duration > 0 {
moveParts.append(Self.numberFormatter.string(for: duration)!)
}

clickParts.append(button.description)

return "<m:\(moveParts.joined(separator: ":"))><m:\(clickParts.joined(separator: ":"))><\\>"
case .drag:
var parts: [String] = []

parts.append(String(format: "%.0f,%.0f,%.0f,%.0f", startPoint.x, startPoint.y, endPoint.x, endPoint.y))

if duration > 0 {
parts.append(Self.numberFormatter.string(for: duration)!)
}

parts.append(button.description)

return "<d:\(parts.joined(separator: ":"))><\\>"
}

}
}

static func createNumberFormatter() -> NumberFormatter {
let numberFormatter = NumberFormatter()

numberFormatter.usesSignificantDigits = true
numberFormatter.minimumSignificantDigits = 1
numberFormatter.maximumSignificantDigits = 3

return numberFormatter
}
}

class MouseEventProcessor {
Expand Down
29 changes: 1 addition & 28 deletions Sources/SendKeysLib/MousePosition.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,8 @@ class MousePosition: ParsableCommand {
var mode = OutputMode.coordinates

static let eventProcessor = MouseEventProcessor()
static var numberFormatter = NumberFormatter()

required init() {
MousePosition.numberFormatter.usesSignificantDigits = true
MousePosition.numberFormatter.minimumSignificantDigits = 1
MousePosition.numberFormatter.maximumSignificantDigits = 3
}

func run() {
Expand Down Expand Up @@ -89,30 +85,7 @@ class MousePosition: ParsableCommand {
command.printAndFlush(String(format: "%.0f,%.0f", mouseEvent.endPoint.x, mouseEvent.endPoint.y))
}
case .commands:
switch mouseEvent.eventType {
case .click:
command.printAndFlush(
String(
format: "<m:%.0f,%.0f:%@><m:%@><\\>",
mouseEvent.endPoint.x,
mouseEvent.endPoint.y,
MousePosition.numberFormatter.string(for: mouseEvent.duration)!,
mouseEvent.button.rawValue
)
)
case .drag:
command.printAndFlush(
String(
format: "<d:%.0f,%.0f,%.0f,%.0f:%@:%@><\\>",
mouseEvent.startPoint.x,
mouseEvent.startPoint.y,
mouseEvent.endPoint.x,
mouseEvent.endPoint.y,
MousePosition.numberFormatter.string(for: mouseEvent.duration)!,
mouseEvent.button.rawValue
)
)
}
command.printAndFlush(mouseEvent.description)
}
}

Expand Down

0 comments on commit 615e64b

Please # to comment.