UNPKG

dotting

Version:

Dotting is a pixel art editor component library for react

153 lines (152 loc) 4.38 kB
import { DottingDataLayer } from "../../helpers/DottingDataLayer"; export interface Coord { x: number; y: number; } export interface Dimensions { width: number; height: number; } export type ButtonDimensions = Coord & Dimensions; export type PanZoom = { scale: number; offset: Coord; }; export type PixelData = { color: string; }; export interface ImageDownloadOptions { isGridVisible?: boolean; type: "png" | "svg"; } export type DottingData = Map<number, Map<number, PixelData>>; export interface PixelModifyItem { rowIndex: number; columnIndex: number; color: string; } export interface ColorChangeItem extends PixelModifyItem { previousColor: string; } export declare enum CanvasEvents { DATA_CHANGE = "dataChange", GRID_CHANGE = "gridChange", STROKE_END = "strokeEnd", BRUSH_CHANGE = "brushChange", HOVER_PIXEL_CHANGE = "hoverPixelChange", LAYER_CHANGE = "layerChange", CANVAS_INFO_CHANGE = "canvasInfoChange" } export declare enum BrushTool { DOT = "DOT", ERASER = "ERASER", PAINT_BUCKET = "PAINT_BUCKET", SELECT = "SELECT", NONE = "NONE", LINE = "LINE", RECTANGLE = "RECTANGLE", RECTANGLE_FILLED = "RECTANGLE_FILLED", ELLIPSE = "ELLIPSE", ELLIPSE_FILLED = "ELLIPSE_FILLED" } export interface CanvasDelta { modifiedPixels: Array<PixelModifyItem>; addedOrDeletedRows?: Array<{ isDelete: boolean; index: number; }>; addedOrDeletedColumns?: Array<{ isDelete: boolean; index: number; }>; } export type CanvasDataChangeParams = { isLocalChange: boolean; data: DottingData; layerId: string; delta?: CanvasDelta; }; export type CanvasDataChangeHandler = (params: CanvasDataChangeParams) => void; export type CanvasGridChangeParams = { dimensions: { columnCount: number; rowCount: number; }; indices: { topRowIndex: number; bottomRowIndex: number; leftColumnIndex: number; rightColumnIndex: number; }; }; export type CanvasGridChangeHandler = (params: CanvasGridChangeParams) => void; export type CanvasStrokeEndParams = { strokedPixels: Array<ColorChangeItem>; strokeTool: BrushTool; }; export type CanvasStrokeEndHandler = (params: CanvasStrokeEndParams) => void; export type CanvasBrushChangeParams = { brushColor: string; brushTool: BrushTool; brushPattern: Array<Array<BRUSH_PATTERN_ELEMENT>>; }; export type CanvasBrushChangeHandler = (params: CanvasBrushChangeParams) => void; export type CanvasHoverPixelChangeParams = { indices: { rowIndex: number; columnIndex: number; } | null; }; export type CanvasHoverPixelChangeHandler = (params: CanvasHoverPixelChangeParams) => void; export type LayerChangeParams = { layers: Array<DottingDataLayer>; currentLayer: DottingDataLayer; }; export type LayerChangeHandler = (params: LayerChangeParams) => void; export type CanvasInfoChangeParams = { panZoom: PanZoom; topLeftCornerOffset: Coord; topRightCornerOffset: Coord; bottomLeftCornerOffset: Coord; bottomRightCornerOffset: Coord; gridSquareSize: number; }; export type CanvasInfoChangeHandler = (params: CanvasInfoChangeParams) => void; export type GridIndices = { topRowIndex: number; bottomRowIndex: number; leftColumnIndex: number; rightColumnIndex: number; }; export type SelectAreaRange = { startWorldPos: Coord; endWorldPos: Coord; startPixelIndex: Omit<PixelModifyItem, "color">; endPixelIndex: Omit<PixelModifyItem, "color">; }; export declare enum BRUSH_PATTERN_ELEMENT { FILL = 1, EMPTY = 0 } export interface LayerProps { id: string; data: Array<Array<PixelModifyItem>>; } export type LayerDataForHook = { id: string; isVisible: boolean; data: Array<Array<PixelModifyItem>>; }; export type AddGridIndicesParams = { rowIndices: Array<number>; columnIndices: Array<number>; data?: Array<PixelModifyItem>; layerId?: string; isLocalChange?: boolean; }; export type DeleteGridIndicesParams = { rowIndices: Array<number>; columnIndices: Array<number>; layerId?: string; isLocalChange?: boolean; };