import { SERIALIZE_TO_IPC_FN } from './core'; /** * A size represented in logical pixels. * Logical pixels are scaled according to the window's DPI scale. * Most browser APIs (i.e. `MouseEvent`'s `clientX`) will return logical pixels. * * For logical-pixel-based position, see {@linkcode LogicalPosition}. * * @since 2.0.0 */ declare class LogicalSize { readonly type = "Logical"; width: number; height: number; constructor(width: number, height: number); constructor(object: { Logical: { width: number; height: number; }; }); constructor(object: { width: number; height: number; }); /** * Converts the logical size to a physical one. * @example * ```typescript * import { LogicalSize } from '@tauri-apps/api/dpi'; * import { getCurrentWindow } from '@tauri-apps/api/window'; * * const appWindow = getCurrentWindow(); * const factor = await appWindow.scaleFactor(); * const size = new LogicalSize(400, 500); * const physical = size.toPhysical(factor); * ``` * * @since 2.0.0 */ toPhysical(scaleFactor: number): PhysicalSize; [SERIALIZE_TO_IPC_FN](): { width: number; height: number; }; toJSON(): { width: number; height: number; }; } /** * A size represented in physical pixels. * * Physical pixels represent actual screen pixels, and are DPI-independent. * For high-DPI windows, this means that any point in the window on the screen * will have a different position in logical pixels {@linkcode LogicalSize}. * * For physical-pixel-based position, see {@linkcode PhysicalPosition}. * * @since 2.0.0 */ declare class PhysicalSize { readonly type = "Physical"; width: number; height: number; constructor(width: number, height: number); constructor(object: { Physical: { width: number; height: number; }; }); constructor(object: { width: number; height: number; }); /** * Converts the physical size to a logical one. * @example * ```typescript * import { getCurrentWindow } from '@tauri-apps/api/window'; * const appWindow = getCurrentWindow(); * const factor = await appWindow.scaleFactor(); * const size = await appWindow.innerSize(); // PhysicalSize * const logical = size.toLogical(factor); * ``` */ toLogical(scaleFactor: number): LogicalSize; [SERIALIZE_TO_IPC_FN](): { width: number; height: number; }; toJSON(): { width: number; height: number; }; } /** * A size 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::Size` 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::Size` * * So instead of * ```typescript * import { invoke } from '@tauri-apps/api/core'; * import { LogicalSize, PhysicalSize } from '@tauri-apps/api/dpi'; * * const size: LogicalSize | PhysicalSize = someFunction(); // where someFunction returns either LogicalSize or PhysicalSize * const validSize = size instanceof LogicalSize * ? { Logical: { width: size.width, height: size.height } } * : { Physical: { width: size.width, height: size.height } } * await invoke("do_something_with_size", { size: validSize }); * ``` * * You can just use {@linkcode Size} * ```typescript * import { invoke } from '@tauri-apps/api/core'; * import { LogicalSize, PhysicalSize, Size } from '@tauri-apps/api/dpi'; * * const size: LogicalSize | PhysicalSize = someFunction(); // where someFunction returns either LogicalSize or PhysicalSize * const validSize = new Size(size); * await invoke("do_something_with_size", { size: validSize }); * ``` * * @since 2.1.0 */ declare class Size { size: LogicalSize | PhysicalSize; constructor(size: LogicalSize | PhysicalSize); toLogical(scaleFactor: number): LogicalSize; toPhysical(scaleFactor: number): PhysicalSize; [SERIALIZE_TO_IPC_FN](): { [x: string]: { width: number; height: number; }; }; toJSON(): { [x: string]: { width: number; height: number; }; }; } /** * A position represented in logical pixels. * For an explanation of what logical pixels are, see description of {@linkcode LogicalSize}. * * @since 2.0.0 */ declare class LogicalPosition { readonly type = "Logical"; x: number; y: number; constructor(x: number, y: number); constructor(object: { Logical: { x: number; y: number; }; }); constructor(object: { x: number; y: number; }); /** * Converts the logical position to a physical one. * @example * ```typescript * import { LogicalPosition } from '@tauri-apps/api/dpi'; * import { getCurrentWindow } from '@tauri-apps/api/window'; * * const appWindow = getCurrentWindow(); * const factor = await appWindow.scaleFactor(); * const position = new LogicalPosition(400, 500); * const physical = position.toPhysical(factor); * ``` * * @since 2.0.0 */ toPhysical(scaleFactor: number): PhysicalPosition; [SERIALIZE_TO_IPC_FN](): { x: number; y: number; }; toJSON(): { x: number; y: number; }; } /** * A position represented in physical pixels. * * For an explanation of what physical pixels are, see description of {@linkcode PhysicalSize}. * * @since 2.0.0 */ declare class PhysicalPosition { readonly type = "Physical"; x: number; y: number; constructor(x: number, y: number); constructor(object: { Physical: { x: number; y: number; }; }); constructor(object: { x: number; y: number; }); /** * Converts the physical position to a logical one. * @example * ```typescript * import { PhysicalPosition } from '@tauri-apps/api/dpi'; * import { getCurrentWindow } from '@tauri-apps/api/window'; * * const appWindow = getCurrentWindow(); * const factor = await appWindow.scaleFactor(); * const position = new PhysicalPosition(400, 500); * const physical = position.toLogical(factor); * ``` * * @since 2.0.0 */ toLogical(scaleFactor: number): LogicalPosition; [SERIALIZE_TO_IPC_FN](): { x: number; y: number; }; toJSON(): { x: number; y: number; }; } /** * 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 * ```typescript * import { invoke } from '@tauri-apps/api/core'; * import { LogicalPosition, PhysicalPosition } from '@tauri-apps/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} * ```typescript * import { invoke } from '@tauri-apps/api/core'; * import { LogicalPosition, PhysicalPosition, Position } from '@tauri-apps/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 }); * ``` * * @since 2.1.0 */ declare class Position { position: LogicalPosition | PhysicalPosition; constructor(position: LogicalPosition | PhysicalPosition); toLogical(scaleFactor: number): LogicalPosition; toPhysical(scaleFactor: number): PhysicalPosition; [SERIALIZE_TO_IPC_FN](): { [x: string]: { x: number; y: number; }; }; toJSON(): { [x: string]: { x: number; y: number; }; }; } export { LogicalPosition, LogicalSize, Size, PhysicalPosition, PhysicalSize, Position };