UNPKG

jsdk-offical

Version:

JSDK is the most comprehensive TypeScript framework, like JDK.

77 lines (68 loc) 2.35 kB
/** * @project JSDK * @license MIT * @website https://github.com/fengboyue/jsdk * * @version 2.7.0 * @author Frank.Feng */ module JS { export namespace util { export type ImageFrame = { src: string | HTMLImageElement, w: number, h: number, x: number, y: number } export type ImageFrameOffsets = { ox: number, oy: number, split?: number, axis: 'x' | '-x' | 'y' | '-y', total: number } export type ImageFrameOffset = [number, number]; export type ImageFrameSet = { src: string | HTMLImageElement, w: number, h: number, items: Array<ImageFrameOffset> | ImageFrameOffsets } /** * Image Helper */ export class Images { static parseFrames(frames: ImageFrameSet): ImageFrame[] { let frs: ImageFrame[] = [], items = frames.items, isA = Types.isArray(items), len = isA ? (<Array<any>>items).length : (<ImageFrameOffsets>items).total; for (let i = 0; i < len; i++) { let x: number, y: number; if (isA) { x = (<Array<any>>items)[0]; y = (<Array<any>>items)[1]; } else { let offs = <ImageFrameOffsets>items, axis = offs.axis, sign = axis.startsWith('-') ? -1 : 1; x = axis.endsWith('x') ? (offs.ox + sign * i * (frames.w + (offs.split || 0))) : offs.ox; y = axis.endsWith('y') ? (offs.oy + sign * i * (frames.h + (offs.split || 0))) : offs.oy; } frs.push({ src: frames.src, w: frames.w, h: frames.h, x: x, y: y }) } return frs } } } } import ImageFrame = JS.util.ImageFrame; import ImageFrameOffsets = JS.util.ImageFrameOffsets; import ImageFrameOffset = JS.util.ImageFrameOffset; import ImageFrameSet = JS.util.ImageFrameSet; import Images = JS.util.Images;