UNPKG

photoeditorsdk

Version:

The most comprehensive photo editor SDK for HTML5

215 lines (214 loc) 5.58 kB
import { Float2 } from '../../common/float2'; import { SerializableCustomStickerAsset, SerializableColor } from './appSerializableState'; export interface SerializationColor { rgba: SerializableColor; } type NormalizedNumber = number; type PositiveNumber = number; export interface ImageSchema { type?: string; data?: string; width: number; height: number; } export interface MetaSchema { platform: 'html5'; version: string; createdAt: string; } export interface FilterOperationOptions { intensity: NormalizedNumber; identifier: string; } export interface FiltersOperation { type: 'filter'; options: FilterOperationOptions; } export interface RadialFocusOperationOptions { start: Float2; end: Float2; gradientRadius: PositiveNumber; blurRadius: PositiveNumber; } export interface RadialFocusOperation { type: 'radial'; options: RadialFocusOperationOptions; } export interface GaussianFocusOperationOptions { blurRadius: PositiveNumber; } export interface GaussianFocusOperation { type: 'gaussian'; options: GaussianFocusOperationOptions; } export interface MirroredFocusOperationOptions { start: Float2; end: Float2; size: PositiveNumber; blurRadius: PositiveNumber; gradientSize: PositiveNumber; } export interface MirroredFocusOperation { type: 'mirrored'; options: MirroredFocusOperationOptions; } export interface LinearFocusOperationOptions { start: Float2; end: Float2; blurRadius: PositiveNumber; } export interface LinearFocusOperation { type: 'linear'; options: LinearFocusOperationOptions; } export type FocusOptions = RadialFocusOperation | MirroredFocusOperation | LinearFocusOperation | GaussianFocusOperation; export interface FocusOperation { type: 'focus'; options: FocusOptions; } export interface AdjustmentsOperationOptions { brightness: number; saturation: number; contrast: number; exposure: number; shadows: number; highlights: number; clarity: number; gamma: number; whites: number; blacks: number; temperature: number; sharpness: number; } export interface AdjustmentsOperation { type: 'adjustments'; options: AdjustmentsOperationOptions; } export interface TransformOperationOptions { start: Float2; end: Float2; dimensions?: Float2; rotation: number; meta?: { identifier?: string; [key: string]: any; }; } export interface TransformOperation { type: 'transform'; options: TransformOperationOptions; } export interface OrientationOperationOptions { rotation: number; flipVertically: boolean; flipHorizontally: boolean; } export interface OrientationOperation { type: 'orientation'; options: OrientationOperationOptions; } export interface OverlayOperationOptions { identifier: string; intensity: NormalizedNumber; blendMode: string; } export interface OverlayOperation { type: 'overlay'; options: OverlayOperationOptions; } export interface FrameOperationOptions { identifier: string; alpha: NormalizedNumber; size: PositiveNumber; tintColor: SerializationColor; } export interface FrameOperation { type: 'frame'; options: FrameOperationOptions; } export interface StickerOperationOptions { identifier: string; dimensions: Float2; position: Float2; flipVertically: boolean; flipHorizontally: boolean; tintMode?: string; tintColor?: SerializationColor; rotation?: number; alpha?: NormalizedNumber; } export interface StickerOperation { type: 'sticker'; options: StickerOperationOptions; } export interface TextOperationOptions { text: string; fontSize: PositiveNumber; lineHeight: number; fontIdentifier: string; alignment: string; color: SerializationColor; backgroundColor?: SerializationColor; position: Float2; rotation?: number; maxWidth: PositiveNumber; flipVertically: boolean; flipHorizontally: boolean; } export interface TextOperation { type: 'text'; options: TextOperationOptions; } interface BrushPath { points: Float2[]; brush: { size: PositiveNumber; color: SerializationColor; hardness: NormalizedNumber; }; } export interface BrushOperationOptions { paths: BrushPath[]; } export interface BrushOperation { type: 'brush'; options: BrushOperationOptions; } export interface TextDesignOperationOptions { text: string; identifier: string; width: PositiveNumber; inverted: boolean; seed: number; color: SerializationColor; position: Float2; rotation?: number; flipVertically: boolean; flipHorizontally: boolean; padding?: PositiveNumber; } export interface TextDesignOperation { type: 'textdesign'; options: TextDesignOperationOptions; } export type SpriteOptions = FrameOperation | OverlayOperation | StickerOperation | TextOperation | BrushOperation | TextDesignOperation; export interface SpriteOperation { type: 'sprite'; options: { sprites: SpriteOptions[]; }; } export type Operation = FiltersOperation | AdjustmentsOperation | FocusOperation | SpriteOperation | TransformOperation | OrientationOperation; export interface AssetLibraryInterface { assets: { stickers: SerializableCustomStickerAsset[]; }; } export interface SerialisationSchema { version: string; image: ImageSchema; meta: MetaSchema; operations: Operation[]; assetLibrary?: AssetLibraryInterface; } export {};