@hadi77ir/pdfme-svg 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/dist/applyparseattributes.d.ts +6 -0
- package/dist/applyparseattributes.d.ts.map +1 -0
- package/dist/applyparseattributes.js +333 -0
- package/dist/applyparseattributes.js.map +1 -0
- package/dist/context/attributestate.d.ts +34 -0
- package/dist/context/attributestate.d.ts.map +1 -0
- package/dist/context/attributestate.js +109 -0
- package/dist/context/attributestate.js.map +1 -0
- package/dist/context/context.d.ts +59 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +46 -0
- package/dist/context/context.js.map +1 -0
- package/dist/context/referenceshandler.d.ts +15 -0
- package/dist/context/referenceshandler.d.ts.map +1 -0
- package/dist/context/referenceshandler.js +31 -0
- package/dist/context/referenceshandler.js.map +1 -0
- package/dist/context/stylesheets.d.ts +13 -0
- package/dist/context/stylesheets.d.ts.map +1 -0
- package/dist/context/stylesheets.js +163 -0
- package/dist/context/stylesheets.js.map +1 -0
- package/dist/context/textmeasure.d.ts +19 -0
- package/dist/context/textmeasure.d.ts.map +1 -0
- package/dist/context/textmeasure.js +93 -0
- package/dist/context/textmeasure.js.map +1 -0
- package/dist/context/viewport.d.ts +6 -0
- package/dist/context/viewport.d.ts.map +1 -0
- package/dist/context/viewport.js +7 -0
- package/dist/context/viewport.js.map +1 -0
- package/dist/fill/ColorFill.d.ts +10 -0
- package/dist/fill/ColorFill.d.ts.map +1 -0
- package/dist/fill/ColorFill.js +10 -0
- package/dist/fill/ColorFill.js.map +1 -0
- package/dist/fill/Fill.d.ts +14 -0
- package/dist/fill/Fill.d.ts.map +1 -0
- package/dist/fill/Fill.js +2 -0
- package/dist/fill/Fill.js.map +1 -0
- package/dist/fill/GradientFill.d.ts +11 -0
- package/dist/fill/GradientFill.d.ts.map +1 -0
- package/dist/fill/GradientFill.js +37 -0
- package/dist/fill/GradientFill.js.map +1 -0
- package/dist/fill/PatternFill.d.ts +11 -0
- package/dist/fill/PatternFill.d.ts.map +1 -0
- package/dist/fill/PatternFill.js +67 -0
- package/dist/fill/PatternFill.js.map +1 -0
- package/dist/fill/parseFill.d.ts +4 -0
- package/dist/fill/parseFill.d.ts.map +1 -0
- package/dist/fill/parseFill.js +61 -0
- package/dist/fill/parseFill.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +232 -0
- package/dist/index.js.map +1 -0
- package/dist/jspdf-shim.d.ts +132 -0
- package/dist/jspdf-shim.d.ts.map +1 -0
- package/dist/jspdf-shim.js +744 -0
- package/dist/jspdf-shim.js.map +1 -0
- package/dist/jspdf.d.ts +2 -0
- package/dist/jspdf.d.ts.map +1 -0
- package/dist/jspdf.js +2 -0
- package/dist/jspdf.js.map +1 -0
- package/dist/markerlist.d.ts +24 -0
- package/dist/markerlist.d.ts.map +1 -0
- package/dist/markerlist.js +47 -0
- package/dist/markerlist.js.map +1 -0
- package/dist/nodes/anchor.d.ts +6 -0
- package/dist/nodes/anchor.d.ts.map +1 -0
- package/dist/nodes/anchor.js +15 -0
- package/dist/nodes/anchor.js.map +1 -0
- package/dist/nodes/circle.d.ts +11 -0
- package/dist/nodes/circle.d.ts.map +1 -0
- package/dist/nodes/circle.js +17 -0
- package/dist/nodes/circle.js.map +1 -0
- package/dist/nodes/clippath.d.ts +10 -0
- package/dist/nodes/clippath.d.ts.map +1 -0
- package/dist/nodes/clippath.js +48 -0
- package/dist/nodes/clippath.js.map +1 -0
- package/dist/nodes/containernode.d.ts +8 -0
- package/dist/nodes/containernode.d.ts.map +1 -0
- package/dist/nodes/containernode.js +13 -0
- package/dist/nodes/containernode.js.map +1 -0
- package/dist/nodes/ellipse.d.ts +9 -0
- package/dist/nodes/ellipse.d.ts.map +1 -0
- package/dist/nodes/ellipse.js +14 -0
- package/dist/nodes/ellipse.js.map +1 -0
- package/dist/nodes/ellipsebase.d.ts +14 -0
- package/dist/nodes/ellipsebase.d.ts.map +1 -0
- package/dist/nodes/ellipsebase.js +30 -0
- package/dist/nodes/ellipsebase.js.map +1 -0
- package/dist/nodes/geometrynode.d.ts +19 -0
- package/dist/nodes/geometrynode.d.ts.map +1 -0
- package/dist/nodes/geometrynode.js +213 -0
- package/dist/nodes/geometrynode.js.map +1 -0
- package/dist/nodes/gradient.d.ts +28 -0
- package/dist/nodes/gradient.d.ts.map +1 -0
- package/dist/nodes/gradient.js +87 -0
- package/dist/nodes/gradient.js.map +1 -0
- package/dist/nodes/graphicsnode.d.ts +4 -0
- package/dist/nodes/graphicsnode.d.ts.map +1 -0
- package/dist/nodes/graphicsnode.js +4 -0
- package/dist/nodes/graphicsnode.js.map +1 -0
- package/dist/nodes/group.d.ts +8 -0
- package/dist/nodes/group.d.ts.map +1 -0
- package/dist/nodes/group.js +11 -0
- package/dist/nodes/group.js.map +1 -0
- package/dist/nodes/image.d.ts +23 -0
- package/dist/nodes/image.d.ts.map +1 -0
- package/dist/nodes/image.js +152 -0
- package/dist/nodes/image.js.map +1 -0
- package/dist/nodes/line.d.ts +13 -0
- package/dist/nodes/line.d.ts.map +1 -0
- package/dist/nodes/line.js +30 -0
- package/dist/nodes/line.js.map +1 -0
- package/dist/nodes/lineargradient.d.ts +7 -0
- package/dist/nodes/lineargradient.d.ts.map +1 -0
- package/dist/nodes/lineargradient.js +15 -0
- package/dist/nodes/lineargradient.js.map +1 -0
- package/dist/nodes/marker.d.ts +11 -0
- package/dist/nodes/marker.d.ts.map +1 -0
- package/dist/nodes/marker.js +70 -0
- package/dist/nodes/marker.js.map +1 -0
- package/dist/nodes/nonrenderednode.d.ts +11 -0
- package/dist/nodes/nonrenderednode.d.ts.map +1 -0
- package/dist/nodes/nonrenderednode.js +15 -0
- package/dist/nodes/nonrenderednode.js.map +1 -0
- package/dist/nodes/path.d.ts +12 -0
- package/dist/nodes/path.d.ts.map +1 -0
- package/dist/nodes/path.js +75 -0
- package/dist/nodes/path.js.map +1 -0
- package/dist/nodes/pattern.d.ts +11 -0
- package/dist/nodes/pattern.d.ts.map +1 -0
- package/dist/nodes/pattern.js +39 -0
- package/dist/nodes/pattern.js.map +1 -0
- package/dist/nodes/polygon.d.ts +6 -0
- package/dist/nodes/polygon.d.ts.map +1 -0
- package/dist/nodes/polygon.js +7 -0
- package/dist/nodes/polygon.js.map +1 -0
- package/dist/nodes/polyline.d.ts +6 -0
- package/dist/nodes/polyline.d.ts.map +1 -0
- package/dist/nodes/polyline.js +7 -0
- package/dist/nodes/polyline.js.map +1 -0
- package/dist/nodes/radialgradient.d.ts +7 -0
- package/dist/nodes/radialgradient.d.ts.map +1 -0
- package/dist/nodes/radialgradient.js +21 -0
- package/dist/nodes/radialgradient.js.map +1 -0
- package/dist/nodes/rect.d.ts +12 -0
- package/dist/nodes/rect.d.ts.map +1 -0
- package/dist/nodes/rect.js +50 -0
- package/dist/nodes/rect.js.map +1 -0
- package/dist/nodes/renderednode.d.ts +7 -0
- package/dist/nodes/renderednode.d.ts.map +1 -0
- package/dist/nodes/renderednode.js +43 -0
- package/dist/nodes/renderednode.js.map +1 -0
- package/dist/nodes/svg.d.ts +21 -0
- package/dist/nodes/svg.d.ts.map +1 -0
- package/dist/nodes/svg.js +175 -0
- package/dist/nodes/svg.js.map +1 -0
- package/dist/nodes/svgnode.d.ts +18 -0
- package/dist/nodes/svgnode.d.ts.map +1 -0
- package/dist/nodes/svgnode.js +30 -0
- package/dist/nodes/svgnode.js.map +1 -0
- package/dist/nodes/symbol.d.ts +10 -0
- package/dist/nodes/symbol.d.ts.map +1 -0
- package/dist/nodes/symbol.js +62 -0
- package/dist/nodes/symbol.js.map +1 -0
- package/dist/nodes/text.d.ts +13 -0
- package/dist/nodes/text.d.ts.map +1 -0
- package/dist/nodes/text.js +172 -0
- package/dist/nodes/text.js.map +1 -0
- package/dist/nodes/traverse.d.ts +15 -0
- package/dist/nodes/traverse.d.ts.map +1 -0
- package/dist/nodes/traverse.js +47 -0
- package/dist/nodes/traverse.js.map +1 -0
- package/dist/nodes/use.d.ts +15 -0
- package/dist/nodes/use.d.ts.map +1 -0
- package/dist/nodes/use.js +99 -0
- package/dist/nodes/use.js.map +1 -0
- package/dist/nodes/void.d.ts +11 -0
- package/dist/nodes/void.d.ts.map +1 -0
- package/dist/nodes/void.js +19 -0
- package/dist/nodes/void.js.map +1 -0
- package/dist/parse.d.ts +5 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +96 -0
- package/dist/parse.js.map +1 -0
- package/dist/svg2pdf.d.ts +10 -0
- package/dist/svg2pdf.d.ts.map +1 -0
- package/dist/svg2pdf.js +49 -0
- package/dist/svg2pdf.js.map +1 -0
- package/dist/textchunk.d.ts +36 -0
- package/dist/textchunk.d.ts.map +1 -0
- package/dist/textchunk.js +144 -0
- package/dist/textchunk.js.map +1 -0
- package/dist/utils/applyclippath.d.ts +6 -0
- package/dist/utils/applyclippath.d.ts.map +1 -0
- package/dist/utils/applyclippath.js +20 -0
- package/dist/utils/applyclippath.js.map +1 -0
- package/dist/utils/bbox.d.ts +6 -0
- package/dist/utils/bbox.d.ts.map +1 -0
- package/dist/utils/bbox.js +62 -0
- package/dist/utils/bbox.js.map +1 -0
- package/dist/utils/constants.d.ts +7 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +17 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/fonts.d.ts +14 -0
- package/dist/utils/fonts.d.ts.map +1 -0
- package/dist/utils/fonts.js +59 -0
- package/dist/utils/fonts.js.map +1 -0
- package/dist/utils/geometry.d.ts +11 -0
- package/dist/utils/geometry.d.ts.map +1 -0
- package/dist/utils/geometry.js +26 -0
- package/dist/utils/geometry.js.map +1 -0
- package/dist/utils/misc.d.ts +12 -0
- package/dist/utils/misc.d.ts.map +1 -0
- package/dist/utils/misc.js +26 -0
- package/dist/utils/misc.js.map +1 -0
- package/dist/utils/node.d.ts +9 -0
- package/dist/utils/node.d.ts.map +1 -0
- package/dist/utils/node.js +58 -0
- package/dist/utils/node.js.map +1 -0
- package/dist/utils/parsing.d.ts +13 -0
- package/dist/utils/parsing.d.ts.map +1 -0
- package/dist/utils/parsing.js +41 -0
- package/dist/utils/parsing.js.map +1 -0
- package/dist/utils/path.d.ts +39 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +86 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/rgbcolor.d.ts +15 -0
- package/dist/utils/rgbcolor.d.ts.map +1 -0
- package/dist/utils/rgbcolor.js +297 -0
- package/dist/utils/rgbcolor.js.map +1 -0
- package/dist/utils/text.d.ts +15 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +57 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/utils/transform.d.ts +5 -0
- package/dist/utils/transform.d.ts.map +1 -0
- package/dist/utils/transform.js +113 -0
- package/dist/utils/transform.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { parseFloats } from '../utils/parsing';
|
|
2
|
+
import { getAttribute, svgNodeAndChildrenVisible } from '../utils/node';
|
|
3
|
+
import { ContainerNode } from './containernode';
|
|
4
|
+
import { computeViewBoxTransform, parseTransform } from '../utils/transform';
|
|
5
|
+
import { Viewport } from '../context/viewport';
|
|
6
|
+
export class Svg extends ContainerNode {
|
|
7
|
+
isVisible(parentVisible, context) {
|
|
8
|
+
return svgNodeAndChildrenVisible(this, parentVisible, context);
|
|
9
|
+
}
|
|
10
|
+
async render(context) {
|
|
11
|
+
if (!this.isVisible(context.attributeState.visibility !== 'hidden', context)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const x = this.getX(context);
|
|
15
|
+
const y = this.getY(context);
|
|
16
|
+
const width = this.getWidth(context);
|
|
17
|
+
const height = this.getHeight(context);
|
|
18
|
+
context.pdf.saveGraphicsState();
|
|
19
|
+
let transform = context.transform;
|
|
20
|
+
if (this.element.hasAttribute('transform')) {
|
|
21
|
+
// SVG 2 allows transforms on SVG elements
|
|
22
|
+
// "The transform should be applied as if the ‘svg’ had a parent element with that transform set."
|
|
23
|
+
transform = context.pdf.matrixMult(
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
25
|
+
parseTransform(this.element.getAttribute('transform'), context), transform);
|
|
26
|
+
}
|
|
27
|
+
context.pdf.setCurrentTransformationMatrix(transform);
|
|
28
|
+
if (!context.withinUse &&
|
|
29
|
+
getAttribute(this.element, context.styleSheets, 'overflow') !== 'visible') {
|
|
30
|
+
// establish a new viewport
|
|
31
|
+
context.pdf
|
|
32
|
+
.rect(x, y, width, height)
|
|
33
|
+
.clip()
|
|
34
|
+
.discardPath();
|
|
35
|
+
}
|
|
36
|
+
await super.render(context.clone({
|
|
37
|
+
transform: context.pdf.unitMatrix,
|
|
38
|
+
viewport: context.withinUse ? context.viewport : new Viewport(width, height)
|
|
39
|
+
}));
|
|
40
|
+
context.pdf.restoreGraphicsState();
|
|
41
|
+
}
|
|
42
|
+
computeNodeTransform(context) {
|
|
43
|
+
return this.computeNodeTransformCore(context);
|
|
44
|
+
}
|
|
45
|
+
computeNodeTransformCore(context) {
|
|
46
|
+
if (context.withinUse) {
|
|
47
|
+
return context.pdf.unitMatrix;
|
|
48
|
+
}
|
|
49
|
+
const x = this.getX(context);
|
|
50
|
+
const y = this.getY(context);
|
|
51
|
+
const viewBox = this.getViewBox();
|
|
52
|
+
let nodeTransform;
|
|
53
|
+
if (viewBox) {
|
|
54
|
+
const width = this.getWidth(context);
|
|
55
|
+
const height = this.getHeight(context);
|
|
56
|
+
nodeTransform = computeViewBoxTransform(this.element, viewBox, x, y, width, height, context);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
nodeTransform = context.pdf.Matrix(1, 0, 0, 1, x, y);
|
|
60
|
+
}
|
|
61
|
+
return nodeTransform;
|
|
62
|
+
}
|
|
63
|
+
getWidth(context) {
|
|
64
|
+
if (this.width !== undefined) {
|
|
65
|
+
return this.width;
|
|
66
|
+
}
|
|
67
|
+
let width;
|
|
68
|
+
const parameters = context.svg2pdfParameters;
|
|
69
|
+
if (this.isOutermostSvg(context)) {
|
|
70
|
+
// special treatment for the outermost SVG element
|
|
71
|
+
if (parameters.width != null) {
|
|
72
|
+
// if there is a user defined width, use it
|
|
73
|
+
width = parameters.width;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// otherwise check if the SVG element defines the width itself
|
|
77
|
+
const widthAttr = getAttribute(this.element, context.styleSheets, 'width');
|
|
78
|
+
if (widthAttr) {
|
|
79
|
+
width = parseFloat(widthAttr);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// if not, check if we can figure out the aspect ratio from the viewBox attribute
|
|
83
|
+
const viewBox = this.getViewBox();
|
|
84
|
+
if (viewBox &&
|
|
85
|
+
(parameters.height != null || getAttribute(this.element, context.styleSheets, 'height'))) {
|
|
86
|
+
// if there is a viewBox and the height is defined, use the width that matches the height together with the aspect ratio
|
|
87
|
+
const aspectRatio = viewBox[2] / viewBox[3];
|
|
88
|
+
width = this.getHeight(context) * aspectRatio;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// if there is no viewBox use a default of 300 or the largest size that fits into the outer viewport
|
|
92
|
+
// at an aspect ratio of 2:1
|
|
93
|
+
width = Math.min(300, context.viewport.width, context.viewport.height * 2);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
const widthAttr = getAttribute(this.element, context.styleSheets, 'width');
|
|
100
|
+
width = widthAttr ? parseFloat(widthAttr) : context.viewport.width;
|
|
101
|
+
}
|
|
102
|
+
return (this.width = width);
|
|
103
|
+
}
|
|
104
|
+
getHeight(context) {
|
|
105
|
+
if (this.height !== undefined) {
|
|
106
|
+
return this.height;
|
|
107
|
+
}
|
|
108
|
+
let height;
|
|
109
|
+
const parameters = context.svg2pdfParameters;
|
|
110
|
+
if (this.isOutermostSvg(context)) {
|
|
111
|
+
// special treatment for the outermost SVG element
|
|
112
|
+
if (parameters.height != null) {
|
|
113
|
+
// if there is a user defined height, use it
|
|
114
|
+
height = parameters.height;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// otherwise check if the SVG element defines the height itself
|
|
118
|
+
const heightAttr = getAttribute(this.element, context.styleSheets, 'height');
|
|
119
|
+
if (heightAttr) {
|
|
120
|
+
height = parseFloat(heightAttr);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// if not, check if we can figure out the aspect ratio from the viewBox attribute
|
|
124
|
+
const viewBox = this.getViewBox();
|
|
125
|
+
if (viewBox) {
|
|
126
|
+
// if there is a viewBox, use the height that matches the width together with the aspect ratio
|
|
127
|
+
const aspectRatio = viewBox[2] / viewBox[3];
|
|
128
|
+
height = this.getWidth(context) / aspectRatio;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// if there is no viewBox use a default of 150 or the largest size that fits into the outer viewport
|
|
132
|
+
// at an aspect ratio of 2:1
|
|
133
|
+
height = Math.min(150, context.viewport.width / 2, context.viewport.height);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const heightAttr = getAttribute(this.element, context.styleSheets, 'height');
|
|
140
|
+
height = heightAttr ? parseFloat(heightAttr) : context.viewport.height;
|
|
141
|
+
}
|
|
142
|
+
return (this.height = height);
|
|
143
|
+
}
|
|
144
|
+
getX(context) {
|
|
145
|
+
if (this.x !== undefined) {
|
|
146
|
+
return this.x;
|
|
147
|
+
}
|
|
148
|
+
if (this.isOutermostSvg(context)) {
|
|
149
|
+
return (this.x = 0);
|
|
150
|
+
}
|
|
151
|
+
const xAttr = getAttribute(this.element, context.styleSheets, 'x');
|
|
152
|
+
return (this.x = xAttr ? parseFloat(xAttr) : 0);
|
|
153
|
+
}
|
|
154
|
+
getY(context) {
|
|
155
|
+
if (this.y !== undefined) {
|
|
156
|
+
return this.y;
|
|
157
|
+
}
|
|
158
|
+
if (this.isOutermostSvg(context)) {
|
|
159
|
+
return (this.y = 0);
|
|
160
|
+
}
|
|
161
|
+
const yAttr = getAttribute(this.element, context.styleSheets, 'y');
|
|
162
|
+
return (this.y = yAttr ? parseFloat(yAttr) : 0);
|
|
163
|
+
}
|
|
164
|
+
getViewBox() {
|
|
165
|
+
if (this.viewBox !== undefined) {
|
|
166
|
+
return this.viewBox;
|
|
167
|
+
}
|
|
168
|
+
const viewBox = this.element.getAttribute('viewBox');
|
|
169
|
+
return (this.viewBox = viewBox ? parseFloats(viewBox) : undefined);
|
|
170
|
+
}
|
|
171
|
+
isOutermostSvg(context) {
|
|
172
|
+
return context.svg2pdfParameters.element === this.element;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=svg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/nodes/svg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAE5E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAG9C,MAAM,OAAO,GAAI,SAAQ,aAAa;IACpC,SAAS,CAAC,aAAsB,EAAE,OAAgB;QAChD,OAAO,yBAAyB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,KAAK,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7E,OAAM;QACR,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAA;QAE/B,IAAI,SAAS,GAAW,OAAO,CAAC,SAAS,CAAA;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,0CAA0C;YAC1C,kGAAkG;YAElG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU;YAChC,oEAAoE;YACpE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAE,EAAE,OAAO,CAAC,EAChE,SAAS,CACV,CAAA;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAA;QAErD,IACE,CAAC,OAAO,CAAC,SAAS;YAClB,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,SAAS,EACzE,CAAC;YACD,2BAA2B;YAC3B,OAAO,CAAC,GAAG;iBACR,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;iBACzB,IAAI,EAAE;iBACN,WAAW,EAAE,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,CAAC,MAAM,CAChB,OAAO,CAAC,KAAK,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;YACjC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;SAC7E,CAAC,CACH,CAAA;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAA;IACpC,CAAC;IAED,oBAAoB,CAAC,OAAgB;QACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAES,wBAAwB,CAAC,OAAgB;QACjD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;QAC/B,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,aAAa,CAAA;QACjB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACtC,aAAa,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAC9F,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;IAGO,QAAQ,CAAC,OAAgB;QAC/B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAA;QACnB,CAAC;QAED,IAAI,KAAa,CAAA;QAEjB,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAA;QAC5C,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,kDAAkD;YAClD,IAAI,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBAC7B,2CAA2C;gBAC3C,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;YAC1B,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBAC1E,IAAI,SAAS,EAAE,CAAC;oBACd,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;gBAC/B,CAAC;qBAAM,CAAC;oBACN,iFAAiF;oBACjF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;oBACjC,IACE,OAAO;wBACP,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EACxF,CAAC;wBACD,wHAAwH;wBACxH,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;wBAC3C,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,WAAW,CAAA;oBAC/C,CAAC;yBAAM,CAAC;wBACN,oGAAoG;wBACpG,4BAA4B;wBAC5B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;YAC1E,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAA;QACpE,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;IAC7B,CAAC;IAGO,SAAS,CAAC,OAAgB;QAChC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;QAED,IAAI,MAAc,CAAA;QAElB,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAA;QAC5C,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,kDAAkD;YAClD,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC9B,4CAA4C;gBAC5C,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;YAC5B,CAAC;iBAAM,CAAC;gBACN,+DAA+D;gBAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;gBAC5E,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;gBACjC,CAAC;qBAAM,CAAC;oBACN,iFAAiF;oBACjF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;oBACjC,IAAI,OAAO,EAAE,CAAC;wBACZ,8FAA8F;wBAC9F,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;wBAC3C,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,WAAW,CAAA;oBAC/C,CAAC;yBAAM,CAAC;wBACN,oGAAoG;wBACpG,4BAA4B;wBAC5B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAC7E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC5E,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA;QACxE,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IAC/B,CAAC;IAGO,IAAI,CAAC,OAAgB;QAC3B,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,CAAC,CAAA;QACf,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACrB,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAGO,IAAI,CAAC,OAAgB;QAC3B,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,CAAC,CAAA;QACf,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACrB,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAGO,UAAU;QAChB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,OAAO,CAAA;QACrB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACpE,CAAC;IAEO,cAAc,CAAC,OAAgB;QACrC,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAA;IAC3D,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Context } from '../context/context';
|
|
2
|
+
import { Rect } from '../utils/geometry';
|
|
3
|
+
import { Matrix } from 'jspdf';
|
|
4
|
+
export declare abstract class SvgNode {
|
|
5
|
+
readonly element: Element;
|
|
6
|
+
readonly children: SvgNode[];
|
|
7
|
+
protected parent: SvgNode | null;
|
|
8
|
+
constructor(element: Element, children: SvgNode[]);
|
|
9
|
+
setParent(parent: SvgNode): void;
|
|
10
|
+
getParent(): SvgNode | null;
|
|
11
|
+
abstract render(parentContext: Context): Promise<void>;
|
|
12
|
+
abstract isVisible(parentHidden: boolean, context: Context): boolean;
|
|
13
|
+
getBoundingBox(context: Context): number[];
|
|
14
|
+
protected abstract getBoundingBoxCore(context: Context): Rect;
|
|
15
|
+
computeNodeTransform(context: Context): Matrix;
|
|
16
|
+
protected abstract computeNodeTransformCore(context: Context): Matrix;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=svgnode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svgnode.d.ts","sourceRoot":"","sources":["../../src/nodes/svgnode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAG5C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;gBAEpB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IAMjD,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIhC,SAAS,IAAI,OAAO,GAAG,IAAI;IAI3B,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtD,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAEpE,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE;IAO1C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAE7D,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAO9C,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CACtE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getAttribute } from '../utils/node';
|
|
2
|
+
import { parseTransform } from '../utils/transform';
|
|
3
|
+
export class SvgNode {
|
|
4
|
+
constructor(element, children) {
|
|
5
|
+
this.element = element;
|
|
6
|
+
this.children = children;
|
|
7
|
+
this.parent = null;
|
|
8
|
+
}
|
|
9
|
+
setParent(parent) {
|
|
10
|
+
this.parent = parent;
|
|
11
|
+
}
|
|
12
|
+
getParent() {
|
|
13
|
+
return this.parent;
|
|
14
|
+
}
|
|
15
|
+
getBoundingBox(context) {
|
|
16
|
+
if (getAttribute(this.element, context.styleSheets, 'display') === 'none') {
|
|
17
|
+
return [0, 0, 0, 0];
|
|
18
|
+
}
|
|
19
|
+
return this.getBoundingBoxCore(context);
|
|
20
|
+
}
|
|
21
|
+
computeNodeTransform(context) {
|
|
22
|
+
const nodeTransform = this.computeNodeTransformCore(context);
|
|
23
|
+
const transformString = getAttribute(this.element, context.styleSheets, 'transform');
|
|
24
|
+
if (!transformString)
|
|
25
|
+
return nodeTransform;
|
|
26
|
+
else
|
|
27
|
+
return context.pdf.matrixMult(nodeTransform, parseTransform(transformString, context));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=svgnode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svgnode.js","sourceRoot":"","sources":["../../src/nodes/svgnode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAInD,MAAM,OAAgB,OAAO;IAK3B,YAAY,OAAgB,EAAE,QAAmB;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,SAAS,CAAC,MAAe;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAMD,cAAc,CAAC,OAAgB;QAC7B,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC;YAC1E,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IAID,oBAAoB,CAAC,OAAgB;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAA;QAC5D,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACpF,IAAI,CAAC,eAAe;YAAE,OAAO,aAAa,CAAA;;YACrC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7F,CAAC;CAGF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Context } from '../context/context';
|
|
2
|
+
import { NonRenderedNode } from './nonrenderednode';
|
|
3
|
+
import { Matrix } from 'jspdf';
|
|
4
|
+
export declare class Symbol extends NonRenderedNode {
|
|
5
|
+
apply(parentContext: Context): Promise<void>;
|
|
6
|
+
getBoundingBoxCore(context: Context): number[];
|
|
7
|
+
isVisible(parentVisible: boolean, context: Context): boolean;
|
|
8
|
+
computeNodeTransformCore(context: Context): Matrix;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=symbol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../../src/nodes/symbol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAI5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,qBAAa,MAAO,SAAQ,eAAe;IACnC,KAAK,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BlD,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE;IAG9C,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAG5D,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAiCnD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { getAttribute, svgNodeAndChildrenVisible } from '../utils/node';
|
|
2
|
+
import { getBoundingBoxByChildren } from '../utils/bbox';
|
|
3
|
+
import { parseFloats } from '../utils/parsing';
|
|
4
|
+
import { computeViewBoxTransform } from '../utils/transform';
|
|
5
|
+
import { NonRenderedNode } from './nonrenderednode';
|
|
6
|
+
import { applyAttributes, parseAttributes } from '../applyparseattributes';
|
|
7
|
+
import { applyClipPath, getClipPathNode } from '../utils/applyclippath';
|
|
8
|
+
export class Symbol extends NonRenderedNode {
|
|
9
|
+
async apply(parentContext) {
|
|
10
|
+
if (!this.isVisible(parentContext.attributeState.visibility !== 'hidden', parentContext)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const context = parentContext.clone();
|
|
14
|
+
context.transform = context.pdf.unitMatrix;
|
|
15
|
+
parseAttributes(context, this);
|
|
16
|
+
const clipPathAttribute = getAttribute(this.element, context.styleSheets, 'clip-path');
|
|
17
|
+
const hasClipPath = clipPathAttribute && clipPathAttribute !== 'none';
|
|
18
|
+
if (hasClipPath) {
|
|
19
|
+
const clipNode = getClipPathNode(clipPathAttribute, this, context);
|
|
20
|
+
if (clipNode) {
|
|
21
|
+
if (clipNode.isVisible(true, context)) {
|
|
22
|
+
await applyClipPath(this, clipNode, context);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
applyAttributes(context, parentContext, this.element);
|
|
30
|
+
for (const child of this.children) {
|
|
31
|
+
await child.render(context);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getBoundingBoxCore(context) {
|
|
35
|
+
return getBoundingBoxByChildren(context, this);
|
|
36
|
+
}
|
|
37
|
+
isVisible(parentVisible, context) {
|
|
38
|
+
return svgNodeAndChildrenVisible(this, parentVisible, context);
|
|
39
|
+
}
|
|
40
|
+
computeNodeTransformCore(context) {
|
|
41
|
+
const x = parseFloat(getAttribute(this.element, context.styleSheets, 'x') || '0');
|
|
42
|
+
const y = parseFloat(getAttribute(this.element, context.styleSheets, 'y') || '0');
|
|
43
|
+
// TODO: implement refX/refY - this is still to do because common browsers don't seem to support the feature yet
|
|
44
|
+
// x += parseFloat(this.element.getAttribute("refX")) || 0; ???
|
|
45
|
+
// y += parseFloat(this.element.getAttribute("refY")) || 0; ???
|
|
46
|
+
const viewBox = this.element.getAttribute('viewBox');
|
|
47
|
+
if (viewBox) {
|
|
48
|
+
const box = parseFloats(viewBox);
|
|
49
|
+
const width = parseFloat(getAttribute(this.element, context.styleSheets, 'width') ||
|
|
50
|
+
getAttribute(this.element.ownerSVGElement, context.styleSheets, 'width') ||
|
|
51
|
+
viewBox[2]);
|
|
52
|
+
const height = parseFloat(getAttribute(this.element, context.styleSheets, 'height') ||
|
|
53
|
+
getAttribute(this.element.ownerSVGElement, context.styleSheets, 'height') ||
|
|
54
|
+
viewBox[3]);
|
|
55
|
+
return computeViewBoxTransform(this.element, box, x, y, width, height, context);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return context.pdf.Matrix(1, 0, 0, 1, x, y);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=symbol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../src/nodes/symbol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Context } from '../context/context';
|
|
2
|
+
import { GraphicsNode } from './graphicsnode';
|
|
3
|
+
import { Rect } from '../utils/geometry';
|
|
4
|
+
import { Matrix } from 'jspdf';
|
|
5
|
+
export declare class TextNode extends GraphicsNode {
|
|
6
|
+
private boundingBox;
|
|
7
|
+
private processTSpans;
|
|
8
|
+
protected renderCore(context: Context): Promise<void>;
|
|
9
|
+
isVisible(parentVisible: boolean, context: Context): boolean;
|
|
10
|
+
protected getBoundingBoxCore(context: Context): Rect;
|
|
11
|
+
protected computeNodeTransformCore(context: Context): Matrix;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/nodes/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAc5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAS9B,qBAAa,QAAS,SAAQ,YAAY;IACxC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,aAAa;cAwFL,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsH3D,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAI5D,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMpD,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAG7D"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { TextChunk } from '../textchunk';
|
|
2
|
+
import { defaultBoundingBox } from '../utils/bbox';
|
|
3
|
+
import { mapAlignmentBaseline, toPixels } from '../utils/misc';
|
|
4
|
+
import { getAttribute, nodeIs, svgNodeAndChildrenVisible } from '../utils/node';
|
|
5
|
+
import { consolidateSpaces, getTextRenderingMode, removeNewlines, replaceTabsBySpace, transformText, transformXmlSpace, trimLeft } from '../utils/text';
|
|
6
|
+
import { GraphicsNode } from './graphicsnode';
|
|
7
|
+
import { parseAttributes } from '../applyparseattributes';
|
|
8
|
+
export class TextNode extends GraphicsNode {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.boundingBox = [];
|
|
12
|
+
}
|
|
13
|
+
processTSpans(textNode, node, context, textChunks, currentTextSegment, trimInfo) {
|
|
14
|
+
const pdfFontSize = context.pdf.getFontSize();
|
|
15
|
+
const shouldPreserve = context.attributeState.xmlSpace === 'preserve' || context.attributeState.whiteSpace === 'pre';
|
|
16
|
+
let firstText = true, initialSpace = false;
|
|
17
|
+
for (let i = 0; i < node.childNodes.length; i++) {
|
|
18
|
+
const childNode = node.childNodes[i];
|
|
19
|
+
if (!childNode.textContent) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const textContent = childNode.textContent;
|
|
23
|
+
if (childNode.nodeName === '#text') {
|
|
24
|
+
let trimmedText = removeNewlines(textContent);
|
|
25
|
+
trimmedText = replaceTabsBySpace(trimmedText);
|
|
26
|
+
if (!shouldPreserve) {
|
|
27
|
+
trimmedText = consolidateSpaces(trimmedText);
|
|
28
|
+
// If first text in tspan and starts with a space
|
|
29
|
+
if (firstText && trimmedText.match(/^\s/)) {
|
|
30
|
+
initialSpace = true;
|
|
31
|
+
}
|
|
32
|
+
// No longer the first text if we've found a letter
|
|
33
|
+
if (trimmedText.match(/[^\s]/)) {
|
|
34
|
+
firstText = false;
|
|
35
|
+
}
|
|
36
|
+
// Consolidate spaces across different children
|
|
37
|
+
if (trimInfo.prevText.match(/\s$/)) {
|
|
38
|
+
trimmedText = trimLeft(trimmedText);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const transformedText = transformText(node, trimmedText, context);
|
|
42
|
+
currentTextSegment.add(node, transformedText, context);
|
|
43
|
+
trimInfo.prevText = textContent;
|
|
44
|
+
trimInfo.prevContext = context;
|
|
45
|
+
}
|
|
46
|
+
else if (nodeIs(childNode, 'title')) {
|
|
47
|
+
// ignore <title> elements
|
|
48
|
+
}
|
|
49
|
+
else if (nodeIs(childNode, 'tspan')) {
|
|
50
|
+
const tSpan = childNode;
|
|
51
|
+
const tSpanAbsX = tSpan.getAttribute('x');
|
|
52
|
+
if (tSpanAbsX !== null) {
|
|
53
|
+
const x = toPixels(tSpanAbsX, pdfFontSize);
|
|
54
|
+
currentTextSegment = new TextChunk(this, getAttribute(tSpan, context.styleSheets, 'text-anchor') ||
|
|
55
|
+
context.attributeState.textAnchor, x, 0);
|
|
56
|
+
textChunks.push({ type: 'y', chunk: currentTextSegment });
|
|
57
|
+
}
|
|
58
|
+
const tSpanAbsY = tSpan.getAttribute('y');
|
|
59
|
+
if (tSpanAbsY !== null) {
|
|
60
|
+
const y = toPixels(tSpanAbsY, pdfFontSize);
|
|
61
|
+
currentTextSegment = new TextChunk(this, getAttribute(tSpan, context.styleSheets, 'text-anchor') ||
|
|
62
|
+
context.attributeState.textAnchor, 0, y);
|
|
63
|
+
textChunks.push({ type: 'x', chunk: currentTextSegment });
|
|
64
|
+
}
|
|
65
|
+
const childContext = context.clone();
|
|
66
|
+
parseAttributes(childContext, textNode, tSpan);
|
|
67
|
+
this.processTSpans(textNode, tSpan, childContext, textChunks, currentTextSegment, trimInfo);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return initialSpace;
|
|
71
|
+
}
|
|
72
|
+
async renderCore(context) {
|
|
73
|
+
context.pdf.saveGraphicsState();
|
|
74
|
+
let xOffset = 0;
|
|
75
|
+
let charSpace = 0;
|
|
76
|
+
// If string starts with \s then for charSpace calculations
|
|
77
|
+
// need to treat it as if it contains one extra character
|
|
78
|
+
let lengthAdjustment = 1;
|
|
79
|
+
const pdfFontSize = context.pdf.getFontSize();
|
|
80
|
+
const textX = toPixels(this.element.getAttribute('x'), pdfFontSize);
|
|
81
|
+
const textY = toPixels(this.element.getAttribute('y'), pdfFontSize);
|
|
82
|
+
const dx = toPixels(this.element.getAttribute('dx'), pdfFontSize);
|
|
83
|
+
const dy = toPixels(this.element.getAttribute('dy'), pdfFontSize);
|
|
84
|
+
const textLength = parseFloat(this.element.getAttribute('textLength') || '0');
|
|
85
|
+
const visibility = context.attributeState.visibility;
|
|
86
|
+
// when there are no tspans draw the text directly
|
|
87
|
+
const tSpanCount = this.element.childElementCount;
|
|
88
|
+
if (tSpanCount === 0) {
|
|
89
|
+
const textContent = this.element.textContent || '';
|
|
90
|
+
const trimmedText = transformXmlSpace(textContent, context.attributeState);
|
|
91
|
+
const transformedText = transformText(this.element, trimmedText, context);
|
|
92
|
+
xOffset = context.textMeasure.getTextOffset(transformedText, context.attributeState);
|
|
93
|
+
if (textLength > 0) {
|
|
94
|
+
const defaultSize = context.textMeasure.measureTextWidth(transformedText, context.attributeState);
|
|
95
|
+
const shouldPreserve = context.attributeState.xmlSpace === 'preserve' || context.attributeState.whiteSpace === 'pre';
|
|
96
|
+
if (!shouldPreserve && textContent.match(/^\s/)) {
|
|
97
|
+
lengthAdjustment = 0;
|
|
98
|
+
}
|
|
99
|
+
charSpace = (textLength - defaultSize) / (transformedText.length - lengthAdjustment) || 0;
|
|
100
|
+
}
|
|
101
|
+
if (visibility === 'visible') {
|
|
102
|
+
const alignmentBaseline = context.attributeState.alignmentBaseline;
|
|
103
|
+
const textRenderingMode = getTextRenderingMode(context.attributeState);
|
|
104
|
+
context.pdf.text(transformedText, textX + dx - xOffset, textY + dy, {
|
|
105
|
+
baseline: mapAlignmentBaseline(alignmentBaseline),
|
|
106
|
+
angle: context.transform,
|
|
107
|
+
renderingMode: textRenderingMode === 'fill' ? void 0 : textRenderingMode,
|
|
108
|
+
charSpace: charSpace === 0 ? void 0 : charSpace
|
|
109
|
+
});
|
|
110
|
+
this.boundingBox = [
|
|
111
|
+
textX + dx - xOffset,
|
|
112
|
+
textY + dy + 0.1 * pdfFontSize,
|
|
113
|
+
context.textMeasure.measureTextWidth(transformedText, context.attributeState),
|
|
114
|
+
pdfFontSize
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// otherwise loop over tspans and position each relative to the previous one
|
|
120
|
+
const textChunks = [];
|
|
121
|
+
const currentTextSegment = new TextChunk(this, context.attributeState.textAnchor, textX + dx, textY + dy);
|
|
122
|
+
textChunks.push({ type: '', chunk: currentTextSegment });
|
|
123
|
+
const initialSpace = this.processTSpans(this, this.element, context, textChunks, currentTextSegment,
|
|
124
|
+
// Set prevText to ' ' so any spaces on left of <text> are trimmed
|
|
125
|
+
{ prevText: ' ', prevContext: context });
|
|
126
|
+
lengthAdjustment = initialSpace ? 0 : 1;
|
|
127
|
+
// Right trim the chunks (if required)
|
|
128
|
+
let trimRight = true;
|
|
129
|
+
for (let r = textChunks.length - 1; r >= 0; r--) {
|
|
130
|
+
if (trimRight) {
|
|
131
|
+
trimRight = textChunks[r].chunk.rightTrimText();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (textLength > 0) {
|
|
135
|
+
// Calculate the total 'default' width of this text element
|
|
136
|
+
let totalDefaultWidth = 0;
|
|
137
|
+
let totalLength = 0;
|
|
138
|
+
textChunks.forEach(({ chunk }) => {
|
|
139
|
+
chunk.measureText(context);
|
|
140
|
+
chunk.textMeasures.forEach(({ width, length }) => {
|
|
141
|
+
totalDefaultWidth += width;
|
|
142
|
+
totalLength += length;
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
charSpace = (textLength - totalDefaultWidth) / (totalLength - lengthAdjustment);
|
|
146
|
+
}
|
|
147
|
+
// Put the textchunks
|
|
148
|
+
textChunks.reduce((lastPositions, { type, chunk }) => {
|
|
149
|
+
if (type === 'x') {
|
|
150
|
+
chunk.setX(lastPositions[0]);
|
|
151
|
+
}
|
|
152
|
+
else if (type === 'y') {
|
|
153
|
+
chunk.setY(lastPositions[1]);
|
|
154
|
+
}
|
|
155
|
+
return chunk.put(context, charSpace);
|
|
156
|
+
}, [0, 0]);
|
|
157
|
+
}
|
|
158
|
+
context.pdf.restoreGraphicsState();
|
|
159
|
+
}
|
|
160
|
+
isVisible(parentVisible, context) {
|
|
161
|
+
return svgNodeAndChildrenVisible(this, parentVisible, context);
|
|
162
|
+
}
|
|
163
|
+
getBoundingBoxCore(context) {
|
|
164
|
+
return this.boundingBox.length > 0
|
|
165
|
+
? this.boundingBox
|
|
166
|
+
: defaultBoundingBox(this.element, context);
|
|
167
|
+
}
|
|
168
|
+
computeNodeTransformCore(context) {
|
|
169
|
+
return context.pdf.unitMatrix;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/nodes/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Context } from '../context/context';
|
|
2
|
+
import { Path } from '../utils/path';
|
|
3
|
+
import { GeometryNode } from './geometrynode';
|
|
4
|
+
import { SvgNode } from './svgnode';
|
|
5
|
+
import { Point } from '../utils/geometry';
|
|
6
|
+
import { Matrix } from 'jspdf';
|
|
7
|
+
export declare abstract class Traverse extends GeometryNode {
|
|
8
|
+
private readonly closed;
|
|
9
|
+
protected constructor(closed: boolean, node: Element, children: SvgNode[]);
|
|
10
|
+
protected getPath(context: Context): Path | null;
|
|
11
|
+
isVisible(parentVisible: boolean, context: Context): boolean;
|
|
12
|
+
protected computeNodeTransformCore(context: Context): Matrix;
|
|
13
|
+
static parsePointsString(string: string): Point[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=traverse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../src/nodes/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,8BAAsB,QAAS,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,SAAS,aAAa,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IAMzE,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IA2BhD,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAI5D,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAI5D,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE;CAUlD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Path } from '../utils/path';
|
|
2
|
+
import { svgNodeIsVisible } from '../utils/node';
|
|
3
|
+
import { GeometryNode } from './geometrynode';
|
|
4
|
+
import { parseFloats } from '../utils/parsing';
|
|
5
|
+
export class Traverse extends GeometryNode {
|
|
6
|
+
constructor(closed, node, children) {
|
|
7
|
+
super(true, node, children);
|
|
8
|
+
this.closed = closed;
|
|
9
|
+
}
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
getPath(context) {
|
|
12
|
+
if (!this.element.hasAttribute('points') || this.element.getAttribute('points') === '') {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
const points = Traverse.parsePointsString(this.element.getAttribute('points'));
|
|
17
|
+
const path = new Path();
|
|
18
|
+
if (points.length < 1) {
|
|
19
|
+
return path;
|
|
20
|
+
}
|
|
21
|
+
path.moveTo(points[0][0], points[0][1]);
|
|
22
|
+
for (let i = 1; i < points.length; i++) {
|
|
23
|
+
path.lineTo(points[i][0], points[i][1]);
|
|
24
|
+
}
|
|
25
|
+
if (this.closed) {
|
|
26
|
+
path.close();
|
|
27
|
+
}
|
|
28
|
+
return path;
|
|
29
|
+
}
|
|
30
|
+
isVisible(parentVisible, context) {
|
|
31
|
+
return svgNodeIsVisible(this, parentVisible, context);
|
|
32
|
+
}
|
|
33
|
+
computeNodeTransformCore(context) {
|
|
34
|
+
return context.pdf.unitMatrix;
|
|
35
|
+
}
|
|
36
|
+
static parsePointsString(string) {
|
|
37
|
+
const floats = parseFloats(string);
|
|
38
|
+
const result = [];
|
|
39
|
+
for (let i = 0; i < floats.length - 1; i += 2) {
|
|
40
|
+
const x = floats[i];
|
|
41
|
+
const y = floats[i + 1];
|
|
42
|
+
result.push([x, y]);
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=traverse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/nodes/traverse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAI9C,MAAM,OAAgB,QAAS,SAAQ,YAAY;IAGjD,YAAsB,MAAe,EAAE,IAAa,EAAE,QAAmB;QACvE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,6DAA6D;IACnD,OAAO,CAAC,OAAgB;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YACvF,OAAO,IAAI,CAAA;QACb,CAAC;QAED,aAAa;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;QAE9E,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QAEvB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,aAAsB,EAAE,OAAgB;QAChD,OAAO,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;IAES,wBAAwB,CAAC,OAAgB;QACjD,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,MAAc;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YACnB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACvB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Context } from '../context/context';
|
|
2
|
+
import { GraphicsNode } from './graphicsnode';
|
|
3
|
+
import { Matrix } from 'jspdf';
|
|
4
|
+
/**
|
|
5
|
+
* Draws the element referenced by a use node, makes use of pdf's XObjects/FormObjects so nodes are only written once
|
|
6
|
+
* to the pdf document. This highly reduces the file size and computation time.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Use extends GraphicsNode {
|
|
9
|
+
protected renderCore(context: Context): Promise<void>;
|
|
10
|
+
private static renderReferencedNode;
|
|
11
|
+
protected getBoundingBoxCore(context: Context): number[];
|
|
12
|
+
isVisible(parentVisible: boolean, context: Context): boolean;
|
|
13
|
+
protected computeNodeTransformCore(context: Context): Matrix;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../src/nodes/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAQ9B;;;GAGG;AACH,qBAAa,GAAI,SAAQ,YAAY;cACnB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;mBA6EtC,oBAAoB;IAsBzC,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE;IAIxD,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAI5D,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAG7D"}
|