@@ -4,7 +4,8 @@ import {rand} from "./internal/math/rand";
4
4
import { Point } from "./internal/math/geometry" ;
5
5
import { rad } from "./internal/math/unit" ;
6
6
import { smooth } from "./internal/svg/smooth" ;
7
- import { render } from "./internal/svg/render" ;
7
+ import { renderEditable } from "./internal/svg/render" ;
8
+ import { XmlElement } from "./internal/xml" ;
8
9
9
10
export interface BlobOptions {
10
11
// Bounding box dimensions.
@@ -34,8 +35,14 @@ export interface BlobOptions {
34
35
guides ?: boolean ;
35
36
}
36
37
37
- // Generates a random rounded shape.
38
+ // Generates an svg document string containing a randomized rounded shape.
38
39
const blobs = ( opt : BlobOptions ) : string => {
40
+ return editable ( opt ) . render ( ) ;
41
+ } ;
42
+
43
+ // Generates an editable data structure which can be rendered to an svg document
44
+ // containing a randomized rounded shape.
45
+ export const editable = ( opt : BlobOptions ) : XmlElement => {
39
46
// Random number generator.
40
47
const rgen = rand ( opt . seed || String ( Date . now ( ) ) ) ;
41
48
@@ -74,7 +81,7 @@ const blobs = (opt: BlobOptions): string => {
74
81
strength : ( ( 4 / 3 ) * Math . tan ( rad ( angle / 4 ) ) ) / Math . sin ( rad ( angle / 2 ) ) ,
75
82
} ) ;
76
83
77
- return render ( smoothed , {
84
+ return renderEditable ( smoothed , {
78
85
closed : true ,
79
86
width : opt . size ,
80
87
height : opt . size ,
@@ -87,3 +94,4 @@ const blobs = (opt: BlobOptions): string => {
87
94
} ;
88
95
89
96
export default blobs ;
97
+ export { IXml , XmlElement } from "./internal/xml" ;
0 commit comments