@@ -4,7 +4,8 @@ import {rand} from "./internal/math/rand";
44import { Point } from "./internal/math/geometry" ;
55import { rad } from "./internal/math/unit" ;
66import { 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" ;
89
910export interface BlobOptions {
1011 // Bounding box dimensions.
@@ -34,8 +35,14 @@ export interface BlobOptions {
3435 guides ?: boolean ;
3536}
3637
37- // Generates a random rounded shape.
38+ // Generates an svg document string containing a randomized rounded shape.
3839const 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 => {
3946 // Random number generator.
4047 const rgen = rand ( opt . seed || String ( Date . now ( ) ) ) ;
4148
@@ -74,7 +81,7 @@ const blobs = (opt: BlobOptions): string => {
7481 strength : ( ( 4 / 3 ) * Math . tan ( rad ( angle / 4 ) ) ) / Math . sin ( rad ( angle / 2 ) ) ,
7582 } ) ;
7683
77- return render ( smoothed , {
84+ return renderEditable ( smoothed , {
7885 closed : true ,
7986 width : opt . size ,
8087 height : opt . size ,
@@ -87,3 +94,4 @@ const blobs = (opt: BlobOptions): string => {
8794} ;
8895
8996export default blobs ;
97+ export { IXml , XmlElement } from "./internal/xml" ;
0 commit comments