forked from terrylinla/react-native-sketch-canvas
-
Notifications
You must be signed in to change notification settings - Fork 14
/
index.d.ts
179 lines (155 loc) · 4.93 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import * as React from 'react'
import {
ViewProperties,
StyleProp,
ViewStyle
} from "react-native"
type ImageType = 'png' | 'jpg'
type Size = {
width: number
height: number
}
type PathData = {
id: number
color: string
width: number
data: string[]
}
type Path = {
drawer?: string
size: Size
path: PathData
}
type CanvasText = {
text: string
font?: string
fontSize?: number
fontColor?: string
overlay?: 'TextOnSketch' | 'SketchOnText'
anchor: { x: number, y: number }
position: { x: number, y: number }
coordinate?: 'Absolute' | 'Ratio'
/**
* If your text is multiline, `alignment` can align shorter lines with left/center/right.
*/
alignment?: 'Left' | 'Center' | 'Right'
/**
* If your text is multiline, `lineHeightMultiple` can adjust the space between lines.
*/
lineHeightMultiple?: number
}
export interface SavePreference {
folder: string
filename: string
transparent: boolean
imageType: ImageType
includeImage?: boolean
includeText?: boolean
cropToImageSize?: boolean
}
export interface LocalSourceImage {
path: string
directory?: string
mode?: 'AspectFill' | 'AspectFit' | 'ScaleToFill'
}
export interface SketchCanvasProps {
style?: StyleProp<ViewStyle>
strokeColor?: string
strokeWidth?: number
user?: string
text?: CanvasText[]
localSourceImage?: LocalSourceImage
touchEnabled?: boolean
/**
* Android Only: Provide a Dialog Title for the Image Saving PermissionDialog. Defaults to empty string if not set
*/
permissionDialogTitle?: string
/**
* Android Only: Provide a Dialog Message for the Image Saving PermissionDialog. Defaults to empty string if not set
*/
permissionDialogMessage?: string
onStrokeStart?: () => void
onStrokeChanged?: () => void
onStrokeEnd?: (path: Path) => void
onSketchSaved?: (result: boolean, path: string) => void
onPathsChange?: (pathsCount: number) => void
}
export class SketchCanvas extends React.Component<SketchCanvasProps & ViewProperties> {
clear(): void
undo(): number
addPath(data: Path): void
deletePath(id: number): void
/**
* @param imageType "png" or "jpg"
* @param includeImage Set to `true` to include the image loaded from `LocalSourceImage`
* @param includeText Set to `true` to include the text drawn from `Text`.
* @param cropToImageSize Set to `true` to crop output image to the image loaded from `LocalSourceImage`
*/
save(imageType: ImageType, transparent: boolean, folder: string, filename: string, includeImage: boolean, includeText: boolean, cropToImageSize: boolean): void
getPaths(): Path[]
/**
* @param imageType "png" or "jpg"
* @param includeImage Set to `true` to include the image loaded from `LocalSourceImage`
* @param includeText Set to `true` to include the text drawn from `Text`.
* @param cropToImageSize Set to `true` to crop output image to the image loaded from `LocalSourceImage`
*/
getBase64(imageType: ImageType, transparent: boolean, includeImage: boolean, includeText: boolean, cropToImageSize: boolean, callback: (error: any, result?: string) => void): void
static MAIN_BUNDLE: string
static DOCUMENT: string
static LIBRARY: string
static CACHES: string
}
export interface RNSketchCanvasProps {
containerStyle?: StyleProp<ViewStyle>
canvasStyle?: StyleProp<ViewStyle>
onStrokeStart?: () => void
onStrokeChanged?: () => void
onStrokeEnd?: (path: Path) => void
onClosePressed?: () => void
onUndoPressed?: (id: number) => void
onClearPressed?: () => void
onPathsChange?: (pathsCount: number) => void
user?: string
closeComponent?: JSX.Element,
eraseComponent?: JSX.Element,
undoComponent?: JSX.Element,
clearComponent?: JSX.Element,
saveComponent?: JSX.Element,
strokeComponent?: (color: string) => JSX.Element
strokeSelectedComponent?: (color: string, index: number, changed: boolean) => JSX.Element
strokeWidthComponent?: (width: number) => JSX.Element
strokeColors?: {color: string}[]
defaultStrokeIndex?: number
defaultStrokeWidth?: number
minStrokeWidth?: number
maxStrokeWidth?: number
strokeWidthStep?: number
/**
* @param imageType "png" or "jpg"
* @param includeImage default true
* @param cropToImageSize default false
*/
savePreference?: () => {folder: string, filename: string, transparent: boolean, imageType: ImageType, includeImage?: boolean, includeText?: boolean, cropToImageSize?: boolean}
onSketchSaved?: (result: boolean, path: string) => void
text?: CanvasText[]
/**
* {
* path: string,
* directory: string,
* mode: 'AspectFill' | 'AspectFit' | 'ScaleToFill'
* }
*/
localSourceImage?: LocalSourceImage
}
export default class RNSketchCanvas extends React.Component<RNSketchCanvasProps & ViewProperties> {
clear(): void
undo(): number
addPath(data: Path): void
deletePath(id: number): void
save(): void
nextStrokeWidth(): void
static MAIN_BUNDLE: string
static DOCUMENT: string
static LIBRARY: string
static CACHES: string
}