MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / rotate_gesture_frames

Function rotate_gesture_frames

packages/server/src/main/input_helpers.rs:117–150  ·  view source on GitHub ↗
(
    bridge: &NativeBridge,
    udid: &str,
    request: RotateGestureRequest,
)

Source from the content-addressed store, hash-verified

115}
116
117fn rotate_gesture_frames(
118 bridge: &NativeBridge,
119 udid: &str,
120 request: RotateGestureRequest,
121) -> Result<Vec<MultiTouchFrame>, crate::error::AppError> {
122 if request.radius < 0.0 {
123 return Err(crate::error::AppError::bad_request(
124 "Rotate gesture radius must be non-negative.",
125 ));
126 }
127 let (width, height) = gesture_surface_size(bridge, udid, request.normalized);
128 let center_x = request.center_x.unwrap_or(width / 2.0);
129 let center_y = request.center_y.unwrap_or(height / 2.0);
130 let count = request.steps.max(2);
131 let mut frames = Vec::with_capacity(count as usize);
132 for step in 0..count {
133 let t = if count == 1 {
134 1.0
135 } else {
136 f64::from(step) / f64::from(count - 1)
137 };
138 let angle = (request.degrees * t).to_radians();
139 let unit_x = angle.cos();
140 let unit_y = angle.sin();
141 let p1x = center_x - unit_x * request.radius;
142 let p1y = center_y - unit_y * request.radius;
143 let p2x = center_x + unit_x * request.radius;
144 let p2y = center_y + unit_y * request.radius;
145 let (x1, y1) = resolve_touch_point(bridge, udid, p1x, p1y, request.normalized)?;
146 let (x2, y2) = resolve_touch_point(bridge, udid, p2x, p2y, request.normalized)?;
147 frames.push(MultiTouchFrame { x1, y1, x2, y2 });
148 }
149 Ok(frames)
150}
151
152fn gesture_surface_size(bridge: &NativeBridge, udid: &str, normalized: bool) -> (f64, f64) {
153 if normalized {

Callers 2

mainFunction · 0.85
run_batch_stepFunction · 0.85

Calls 3

gesture_surface_sizeFunction · 0.85
resolve_touch_pointFunction · 0.85
maxMethod · 0.80

Tested by

no test coverage detected