UNPKG

@yume-chan/scrcpy

Version:
35 lines 1.6 kB
import { getInt16 } from "@yume-chan/no-data-view"; import Struct, { NumberFieldDefinition } from "@yume-chan/struct"; import { ScrcpyControlMessageType } from "../../control/index.js"; import { clamp } from "../1_16/index.js"; export const ScrcpySignedFloatNumberVariant = { size: 2, signed: true, deserialize(array, littleEndian) { const value = getInt16(array, 0, littleEndian); // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/server/src/main/java/com/genymobile/scrcpy/Binary.java#L34 return value === 0x7fff ? 1 : value / 0x8000; }, serialize(dataView, offset, value, littleEndian) { // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/app/src/util/binary.h#L65 value = clamp(value, -1, 1); value = value === 1 ? 0x7fff : value * 0x8000; dataView.setInt16(offset, value, littleEndian); }, }; const ScrcpySignedFloatFieldDefinition = new NumberFieldDefinition(ScrcpySignedFloatNumberVariant); export const ScrcpyInjectScrollControlMessage1_25 = new Struct() .uint8("type", ScrcpyControlMessageType.InjectScroll) .uint32("pointerX") .uint32("pointerY") .uint16("screenWidth") .uint16("screenHeight") .field("scrollX", ScrcpySignedFloatFieldDefinition) .field("scrollY", ScrcpySignedFloatFieldDefinition) .int32("buttons"); export class ScrcpyScrollController1_25 { serializeScrollMessage(message) { return ScrcpyInjectScrollControlMessage1_25.serialize(message); } } //# sourceMappingURL=scroll.js.map