Skip to content

Position

Module @netwiv/api/dpi · Kind Class

import { Position } from '@netwiv/api/dpi';

A position represented either in physical or in logical pixels.

This type is basically a union type of {@linkcode LogicalSize} and {@linkcode PhysicalSize} but comes in handy when using tauri::Position in Rust as an argument to a command, as this class automatically serializes into a valid format so it can be deserialized correctly into tauri::Position

So instead of

import { invoke } from '@netwiv/api/core';
import { LogicalPosition, PhysicalPosition } from '@netwiv/api/dpi';
const position: LogicalPosition | PhysicalPosition = someFunction(); // where someFunction returns either LogicalPosition or PhysicalPosition
const validPosition = position instanceof LogicalPosition
? { Logical: { x: position.x, y: position.y } }
: { Physical: { x: position.x, y: position.y } }
await invoke("do_something_with_position", { position: validPosition });

You can just use {@linkcode Position}

import { invoke } from '@netwiv/api/core';
import { LogicalPosition, PhysicalPosition, Position } from '@netwiv/api/dpi';
const position: LogicalPosition | PhysicalPosition = someFunction(); // where someFunction returns either LogicalPosition or PhysicalPosition
const validPosition = new Position(position);
await invoke("do_something_with_position", { position: validPosition });
new Position(position: LogicalPosition | PhysicalPosition)
position: LogicalPosition | PhysicalPosition
toJSON(): { [x: string]: { x: number; y: number; }; }
toLogical(scaleFactor: number): LogicalPosition
toPhysical(scaleFactor: number): PhysicalPosition

Upstream since 2.1.0


Descriptions come from the pinned @tauri-apps/api@2.11.1 declarations (MIT OR Apache-2.0); imports are shown with @netwiv/api paths.