@syncfusion/ej2-pdf-export 20.1.47 → 20.1.55

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.
Files changed (153) hide show
  1. package/dist/ej2-pdf-export.umd.min.js +1 -1
  2. package/dist/global/ej2-pdf-export.min.js +1 -1
  3. package/dist/global/index.d.ts +1 -1
  4. package/package.json +6 -6
  5. package/dist/ts/implementation/actions/action.ts +0 -76
  6. package/dist/ts/implementation/actions/uri-action.ts +0 -52
  7. package/dist/ts/implementation/annotations/action-link-annotation.ts +0 -43
  8. package/dist/ts/implementation/annotations/annotation-collection.ts +0 -159
  9. package/dist/ts/implementation/annotations/annotation.ts +0 -241
  10. package/dist/ts/implementation/annotations/document-link-annotation.ts +0 -118
  11. package/dist/ts/implementation/annotations/link-annotation.ts +0 -32
  12. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +0 -265
  13. package/dist/ts/implementation/annotations/uri-annotation.ts +0 -86
  14. package/dist/ts/implementation/collections/dictionary.ts +0 -150
  15. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +0 -125
  16. package/dist/ts/implementation/collections/utils.ts +0 -38
  17. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +0 -39
  18. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +0 -108
  19. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +0 -127
  20. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +0 -76
  21. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +0 -37
  22. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +0 -75
  23. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +0 -157
  24. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +0 -82
  25. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +0 -60
  26. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +0 -48
  27. package/dist/ts/implementation/document/pdf-catalog.ts +0 -52
  28. package/dist/ts/implementation/document/pdf-document-base.ts +0 -166
  29. package/dist/ts/implementation/document/pdf-document-template.ts +0 -310
  30. package/dist/ts/implementation/document/pdf-document.ts +0 -342
  31. package/dist/ts/implementation/drawing/pdf-drawing.ts +0 -218
  32. package/dist/ts/implementation/general/enum.ts +0 -21
  33. package/dist/ts/implementation/general/functions/pdf-function.ts +0 -66
  34. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +0 -62
  35. package/dist/ts/implementation/general/pdf-cache-collection.ts +0 -97
  36. package/dist/ts/implementation/general/pdf-collection.ts +0 -41
  37. package/dist/ts/implementation/general/pdf-destination.ts +0 -170
  38. package/dist/ts/implementation/graphics/brushes/enum.ts +0 -237
  39. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +0 -294
  40. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +0 -68
  41. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +0 -2438
  42. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +0 -295
  43. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +0 -311
  44. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +0 -406
  45. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +0 -290
  46. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +0 -107
  47. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +0 -304
  48. package/dist/ts/implementation/graphics/constants.ts +0 -31
  49. package/dist/ts/implementation/graphics/enum.ts +0 -413
  50. package/dist/ts/implementation/graphics/figures/arc.ts +0 -133
  51. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +0 -59
  52. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +0 -260
  53. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +0 -72
  54. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +0 -34
  55. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +0 -69
  56. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +0 -276
  57. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +0 -205
  58. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +0 -76
  59. package/dist/ts/implementation/graphics/figures/enum.ts +0 -80
  60. package/dist/ts/implementation/graphics/figures/layout-element.ts +0 -132
  61. package/dist/ts/implementation/graphics/figures/path.ts +0 -646
  62. package/dist/ts/implementation/graphics/figures/pdf-template.ts +0 -205
  63. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +0 -108
  64. package/dist/ts/implementation/graphics/figures/text-element.ts +0 -445
  65. package/dist/ts/implementation/graphics/fonts/enum.ts +0 -385
  66. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +0 -248
  67. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +0 -316
  68. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +0 -606
  69. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +0 -243
  70. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +0 -474
  71. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +0 -165
  72. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +0 -958
  73. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +0 -374
  74. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +0 -255
  75. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +0 -617
  76. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +0 -275
  77. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +0 -206
  78. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +0 -18
  79. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +0 -18
  80. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +0 -14
  81. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +0 -26
  82. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +0 -35
  83. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +0 -94
  84. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +0 -56
  85. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +0 -10
  86. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +0 -14
  87. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +0 -106
  88. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +0 -58
  89. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +0 -33
  90. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +0 -22
  91. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +0 -42
  92. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +0 -1254
  93. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +0 -26
  94. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +0 -26
  95. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +0 -577
  96. package/dist/ts/implementation/graphics/images/byte-array.ts +0 -137
  97. package/dist/ts/implementation/graphics/images/image-decoder.ts +0 -437
  98. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +0 -110
  99. package/dist/ts/implementation/graphics/images/pdf-image.ts +0 -132
  100. package/dist/ts/implementation/graphics/pdf-color.ts +0 -478
  101. package/dist/ts/implementation/graphics/pdf-graphics.ts +0 -2424
  102. package/dist/ts/implementation/graphics/pdf-margins.ts +0 -124
  103. package/dist/ts/implementation/graphics/pdf-pen.ts +0 -370
  104. package/dist/ts/implementation/graphics/pdf-resources.ts +0 -300
  105. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +0 -246
  106. package/dist/ts/implementation/graphics/pdf-transparency.ts +0 -93
  107. package/dist/ts/implementation/graphics/unit-convertor.ts +0 -96
  108. package/dist/ts/implementation/input-output/big-endian-writer.ts +0 -121
  109. package/dist/ts/implementation/input-output/cross-table.ts +0 -21
  110. package/dist/ts/implementation/input-output/enum.ts +0 -16
  111. package/dist/ts/implementation/input-output/pdf-cross-table.ts +0 -524
  112. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +0 -515
  113. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +0 -194
  114. package/dist/ts/implementation/input-output/pdf-operators.ts +0 -363
  115. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +0 -681
  116. package/dist/ts/implementation/input-output/pdf-writer.ts +0 -88
  117. package/dist/ts/implementation/pages/enum.ts +0 -201
  118. package/dist/ts/implementation/pages/page-added-event-arguments.ts +0 -39
  119. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +0 -180
  120. package/dist/ts/implementation/pages/pdf-page-base.ts +0 -181
  121. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +0 -348
  122. package/dist/ts/implementation/pages/pdf-page-layer.ts +0 -271
  123. package/dist/ts/implementation/pages/pdf-page-settings.ts +0 -192
  124. package/dist/ts/implementation/pages/pdf-page-size.ts +0 -162
  125. package/dist/ts/implementation/pages/pdf-page-template-element.ts +0 -659
  126. package/dist/ts/implementation/pages/pdf-page.ts +0 -235
  127. package/dist/ts/implementation/pages/pdf-section-collection.ts +0 -187
  128. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +0 -61
  129. package/dist/ts/implementation/pages/pdf-section-templates.ts +0 -96
  130. package/dist/ts/implementation/pages/pdf-section.ts +0 -644
  131. package/dist/ts/implementation/primitives/pdf-array.ts +0 -386
  132. package/dist/ts/implementation/primitives/pdf-boolean.ts +0 -119
  133. package/dist/ts/implementation/primitives/pdf-dictionary.ts +0 -513
  134. package/dist/ts/implementation/primitives/pdf-name.ts +0 -218
  135. package/dist/ts/implementation/primitives/pdf-number.ts +0 -165
  136. package/dist/ts/implementation/primitives/pdf-reference.ts +0 -430
  137. package/dist/ts/implementation/primitives/pdf-stream.ts +0 -336
  138. package/dist/ts/implementation/primitives/pdf-string.ts +0 -397
  139. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +0 -2027
  140. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +0 -1189
  141. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +0 -206
  142. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +0 -470
  143. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +0 -853
  144. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +0 -240
  145. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +0 -424
  146. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +0 -16
  147. package/dist/ts/interfaces/i-pdf-cache.ts +0 -23
  148. package/dist/ts/interfaces/i-pdf-changable.ts +0 -17
  149. package/dist/ts/interfaces/i-pdf-clonable.ts +0 -12
  150. package/dist/ts/interfaces/i-pdf-primitives.ts +0 -45
  151. package/dist/ts/interfaces/i-pdf-true-type-font.ts +0 -48
  152. package/dist/ts/interfaces/i-pdf-wrapper.ts +0 -13
  153. package/dist/ts/interfaces/i-pdf-writer.ts +0 -29
@@ -1,295 +0,0 @@
1
- /**
2
- * PdfColorBlend.ts class for EJ2-PDF
3
- */
4
- import { PdfColorSpace } from './../enum';
5
- import { PdfColor } from './../pdf-color';
6
- import { PdfBrush } from './pdf-brush';
7
- import { PdfFunction } from './../../general/functions/pdf-function';
8
- import { PdfSampledFunction} from './../../general/functions/pdf-sampled-function';
9
- import { PdfBlend } from './pdf-blend';
10
- /**
11
- * `PdfColorBlend` Represents the arrays of colors and positions used for
12
- * interpolating color blending in a multicolor gradient.
13
- * @private
14
- */
15
- export class PdfColorBlend extends PdfBlend {
16
- //Fields
17
- /**
18
- * Array of colors.
19
- * @private
20
- */
21
- private mcolors: PdfColor[];
22
- /**
23
- * Local variable to store the brush.
24
- */
25
- private mbrush: PdfBrush;
26
- //Constructor
27
- /**
28
- * Initializes a new instance of the `PdfColorBlend` class.
29
- * @public
30
- */
31
- public constructor()
32
- /**
33
- * Initializes a new instance of the `PdfColorBlend` class.
34
- * @public
35
- */
36
- public constructor(count: number)
37
- public constructor(count?: number) {
38
- super();
39
- if (typeof count === 'number') {
40
- super(count);
41
- }
42
- }
43
- //Properties
44
- /**
45
- * Gets or sets the array of colors.
46
- * @public
47
- */
48
- public get colors(): PdfColor[] {
49
- return this.mcolors;
50
- }
51
- public set colors(value: PdfColor[]) {
52
- if ((value == null)) {
53
- throw new Error('ArgumentNullException : Colors');
54
- }
55
- this.mcolors = value;
56
- }
57
- //Implementation
58
- /**
59
- * Gets the function.
60
- * @param colorSpace The color space.
61
- * @public
62
- */
63
- public getFunction(colorSpace: PdfColorSpace): PdfFunction {
64
- let domain: number[] = [ 0, 1];
65
- let colourComponents: number = this.getColorComponentsCount(colorSpace);
66
- let maxComponentValue: number = this.getMaxComponentValue(colorSpace);
67
- let range: number[] = this.setRange(colourComponents, maxComponentValue);
68
- let func: PdfSampledFunction = null;
69
- if ((this.mbrush == null && typeof this.mbrush === 'undefined')) {
70
- let sizes: number[] = [1];
71
- let samplesCount: number;
72
- let step: number = 1;
73
- if (this.positions.length === 2) {
74
- samplesCount = 2;
75
- } else {
76
- let positions: number[] = this.positions;
77
- let intervals: number[] = this.getIntervals(positions);
78
- let gcd: number = this.gcd(intervals);
79
- step = gcd;
80
- samplesCount = ((<number>((1 / gcd))) + 1);
81
- }
82
- sizes[0] = samplesCount;
83
- let samples: number[] = this.getSamplesValues(colorSpace, samplesCount, maxComponentValue, step);
84
- func = new PdfSampledFunction(domain, range, sizes, samples);
85
- return func;
86
- }
87
- return func;
88
- }
89
- /**
90
- * 'cloneColorBlend' Clones this instance.
91
- * @public
92
- */
93
- public cloneColorBlend(): PdfColorBlend {
94
- let cBlend: PdfColorBlend = this;
95
- if ((this.mcolors != null && typeof this.mcolors !== 'undefined')) {
96
- cBlend.colors = (<PdfColor[]>(this.mcolors));
97
- }
98
- if ((this.positions != null && typeof this.positions !== 'undefined')) {
99
- cBlend.positions = (<number[]>(this.positions));
100
- }
101
- return cBlend;
102
- }
103
- /**
104
- * Sets the range.
105
- * @param colourComponents The colour components.
106
- * @param maxValue The max value.
107
- */
108
- private setRange(colourComponents: number, maxValue: number): number[] {
109
- let range: number[] = [(colourComponents * 2)];
110
- for (let i: number = 0; (i < colourComponents); ++i) {
111
- range[(i * 2)] = 0;
112
- range[((i * 2) + 1)] = 1;
113
- }
114
- return range;
115
- }
116
- /**
117
- * Calculates the color components count according to colour space.
118
- * @param colorSpace The color space.
119
- */
120
- private getColorComponentsCount(colorSpace: PdfColorSpace): number {
121
- let count: number = 0;
122
- switch (colorSpace) {
123
- case PdfColorSpace.Rgb:
124
- count = 3;
125
- break;
126
- case PdfColorSpace.Cmyk:
127
- count = 4;
128
- break;
129
- case PdfColorSpace.GrayScale:
130
- count = 1;
131
- break;
132
- default:
133
- throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');
134
- }
135
- return count;
136
- }
137
- /**
138
- * Gets samples values for specified colour space.
139
- * @param colorSpace The color space.
140
- * @param sampleCount The sample count.
141
- * @param maxComponentValue The max component value.
142
- * @param step The step.
143
- */
144
- private getSamplesValues(colorSpace: PdfColorSpace, sampleCount: number, maxComponentValue: number, step: number): number[] {
145
- let values: number[];
146
- switch (colorSpace) {
147
- case PdfColorSpace.GrayScale:
148
- values = this.getGrayscaleSamples(sampleCount, maxComponentValue, step);
149
- break;
150
- case PdfColorSpace.Cmyk:
151
- values = this.getCmykSamples(sampleCount, maxComponentValue, step);
152
- break;
153
- case PdfColorSpace.Rgb:
154
- values = this.getRgbSamples(sampleCount, maxComponentValue, step);
155
- break;
156
- default:
157
- throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');
158
- }
159
- return values;
160
- }
161
- /**
162
- * Gets the grayscale samples.
163
- * @param sampleCount The sample count.
164
- * @param maxComponentValue The max component value.
165
- * @param step The step.
166
- */
167
- private getGrayscaleSamples(sampleCount: number, maxComponentValue: number, step: number): number[] {
168
- let values: number[] = [(sampleCount * 2)];
169
- for (let i: number = 0; (i < sampleCount); ++i) {
170
- let color: PdfColor = this.getNextColor(i, step, PdfColorSpace.GrayScale);
171
- let index: number = (i * 2);
172
- }
173
- return values;
174
- }
175
- /**
176
- * Gets the RGB samples.
177
- * @param sampleCount The sample count.
178
- * @param maxComponentValue The max component value.
179
- * @param step The step.
180
- */
181
- private getRgbSamples(sampleCount: number, maxComponentValue: number, step: number): number[] {
182
- let values: number[] = [(sampleCount * 3)];
183
- for (let i: number = 0; (i < sampleCount); ++i) {
184
- let color: PdfColor = this.getNextColor(i, step, PdfColorSpace.Rgb);
185
- let index: number = (i * 3);
186
- values[index] = color.r;
187
- values[(index + 1)] = color.g;
188
- values[(index + 2)] = color.b;
189
- }
190
- return values;
191
- }
192
- /**
193
- * Gets the CMYK samples.
194
- * @param sampleCount The sample count.
195
- * @param maxComponentValue The max component value.
196
- * @param step The step.
197
- */
198
- private getCmykSamples(sampleCount: number, maxComponentValue: number, step: number): number[] {
199
- let values: number[] = [(sampleCount * 4)];
200
- for (let i: number = 0; (i < sampleCount); i++) {
201
- let color: PdfColor = this.getNextColor(i, step, PdfColorSpace.Cmyk);
202
- let index: number = (i * 4);
203
- values[index] = (<number>((color.c * maxComponentValue)));
204
- values[(index + 1)] = (<number>((color.m * maxComponentValue)));
205
- values[(index + 2)] = (<number>((color.y * maxComponentValue)));
206
- values[(index + 3)] = (<number>((color.k * maxComponentValue)));
207
- }
208
- return values;
209
- }
210
- /**
211
- * Calculates the color that should be at the specified index.
212
- * @param index The index.
213
- * @param step The step.
214
- * @param colorSpace The color space.
215
- */
216
- private getNextColor(index: number, step: number, colorSpace: PdfColorSpace): PdfColor {
217
- let position: number = (step * index);
218
- let indexHi: number;
219
- let indexLow: number;
220
- let result : { indexLow : number, indexHi : number} = this.getIndices(position, indexLow, indexHi);
221
- indexLow = result.indexLow;
222
- indexHi = result.indexHi;
223
- let color: PdfColor;
224
- if (indexLow === indexHi) {
225
- color = this.mcolors[indexLow];
226
- } else {
227
- let positionLow: number = this.positions[indexLow];
228
- let positionHi: number = this.positions[indexHi];
229
- let colorLow: PdfColor = this.mcolors[indexLow];
230
- let colorHi: PdfColor = this.mcolors[indexHi];
231
- let t: number = ((position - positionLow) / (positionHi - positionLow));
232
- color = this.interpolate(t, colorLow, colorHi, colorSpace);
233
- }
234
- return color;
235
- }
236
- /**
237
- * Gets the indices.
238
- * @param position The position.
239
- * @param indexLow The index low.
240
- * @param indexHi The index hi.
241
- */
242
- private getIndices(position: number, indexLow: number, indexHi: number) : { indexLow : number, indexHi : number} {
243
- let positions: number[] = this.positions;
244
- indexLow = 0;
245
- indexHi = 0;
246
- for (let i: number = 0; (i < this.mcolors.length); ++i) {
247
- let currPos: number = positions[i];
248
- if ((currPos === position)) {
249
- indexHi = i;
250
- indexLow = i;
251
- break;
252
- } else if ((currPos > position)) {
253
- indexHi = i;
254
- break;
255
- }
256
- indexLow = i;
257
- indexHi = i;
258
- }
259
- return { indexLow : indexLow, indexHi : indexHi };
260
- }
261
- /**
262
- * Calculates the max component value.
263
- * @param colorSpace The color space.
264
- */
265
- private getMaxComponentValue(colorSpace: PdfColorSpace) : number {
266
- let result: number = 0;
267
- switch (colorSpace) {
268
- case PdfColorSpace.Cmyk:
269
- case PdfColorSpace.Rgb:
270
- result = 255;
271
- break;
272
- case PdfColorSpace.GrayScale:
273
- result = 65535;
274
- break;
275
- default:
276
- throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + 'colorSpace');
277
- }
278
- return result;
279
- }
280
- /**
281
- * Gets an intervals array from the positions array.
282
- * @param positions The positions array.
283
- */
284
- private getIntervals(positions: number[]): number[] {
285
- let count: number = positions.length;
286
- let intervals: number[] = [(count - 1)];
287
- let prev: number = positions[0];
288
- for (let i: number = 1; (i < count); ++i) {
289
- let v: number = positions[i];
290
- intervals[(i - 1)] = (v - prev);
291
- prev = v;
292
- }
293
- return intervals;
294
- }
295
- }
@@ -1,311 +0,0 @@
1
- /**
2
- * PdfGradientBrush.ts class for EJ2-PDF
3
- */
4
- import { PdfStreamWriter } from './../../input-output/pdf-stream-writer';
5
- import { GetResourceEventHandler } from './../pdf-graphics';
6
- import { PdfColorSpace } from './../enum';
7
- import { PdfColor } from './../pdf-color';
8
- import { PdfBrush } from './pdf-brush';
9
- import { IPdfWrapper } from '../../../interfaces/i-pdf-wrapper';
10
- import { PdfDictionary} from '../../primitives/pdf-dictionary';
11
- import { PdfTransformationMatrix } from './../pdf-transformation-matrix';
12
- import { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';
13
- import { PdfBoolean } from './../../primitives/pdf-boolean';
14
- import { PdfArray } from './../../primitives/pdf-array';
15
- import { PdfName } from '../../primitives/pdf-name';
16
- import { PdfNumber} from '../../primitives/pdf-number';
17
- import { PdfReferenceHolder } from '../../primitives/pdf-reference';
18
- import { IPdfPrimitive } from './../../../interfaces/i-pdf-primitives';
19
- import { PdfFunction } from './../../general/functions/pdf-function';
20
- import { PdfResources } from './../pdf-resources';
21
- /**
22
- * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,
23
- * ellipses, pies, polygons, and paths.
24
- * @private
25
- */
26
- export abstract class PdfGradientBrush extends PdfBrush implements IPdfWrapper {
27
- // Fields
28
- /**
29
- * Local variable to store the background color.
30
- * @private
31
- */
32
- private mbackground : PdfColor = new PdfColor(255, 255, 255);
33
- /**
34
- * Local variable to store the stroking color.
35
- * @private
36
- */
37
- private mbStroking : boolean = false;
38
- /**
39
- * Local variable to store the dictionary.
40
- * @private
41
- */
42
- private mpatternDictionary : PdfDictionary;
43
- /**
44
- * Local variable to store the shading.
45
- * @private
46
- */
47
- private mshading : PdfDictionary;
48
- /**
49
- * Local variable to store the Transformation Matrix.
50
- * @private
51
- */
52
- private mmatrix: PdfTransformationMatrix;
53
- /**
54
- * Local variable to store the colorSpace.
55
- * @private
56
- */
57
- private mcolorSpace: PdfColorSpace;
58
- /**
59
- * Local variable to store the function.
60
- * @private
61
- */
62
- private mfunction: PdfFunction = null;
63
- /**
64
- * Local variable to store the DictionaryProperties.
65
- * @private
66
- */
67
- private dictionaryProperties : DictionaryProperties = new DictionaryProperties();
68
- //Constructor
69
- /**
70
- * Initializes a new instance of the `PdfGradientBrush` class.
71
- * @public
72
- */
73
- /* tslint:disable-next-line:max-line-length */
74
- public constructor(shading: PdfDictionary) {
75
- super();
76
- this.mpatternDictionary = new PdfDictionary();
77
- this.mpatternDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pattern));
78
- this.mpatternDictionary.items.setValue(this.dictionaryProperties.patternType, new PdfNumber(2));
79
- this.shading = shading;
80
- this.colorSpace = PdfColorSpace.Rgb;
81
- }
82
- //Properties
83
- /**
84
- * Gets or sets the background color of the brush.
85
- * @public
86
- */
87
- public get background(): PdfColor {
88
- return this.mbackground;
89
- }
90
- public set background(value: PdfColor) {
91
- this.mbackground = value;
92
- let sh: PdfDictionary = this.shading;
93
- if (value.isEmpty) {
94
- sh.remove(this.dictionaryProperties.background);
95
- } else {
96
- sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));
97
- }
98
- }
99
- /**
100
- * Gets or sets a value indicating whether use anti aliasing algorithm.
101
- * @public
102
- */
103
- public get antiAlias(): boolean {
104
- let sh: PdfDictionary = this.shading;
105
- let aa: PdfBoolean = (<PdfBoolean>(sh.items.getValue(this.dictionaryProperties.antiAlias)));
106
- return aa.value;
107
- }
108
- public set antiAlias(value: boolean) {
109
- let sh: PdfDictionary = this.shading;
110
- let aa: PdfBoolean = (<PdfBoolean>(sh.items.getValue(this.dictionaryProperties.antiAlias)));
111
- if ((aa == null && typeof aa === 'undefined')) {
112
- aa = new PdfBoolean(value);
113
- sh.items.setValue(this.dictionaryProperties.antiAlias, aa);
114
- } else {
115
- aa.value = value;
116
- }
117
- }
118
- /**
119
- * Gets or sets the function of the brush.
120
- * @protected
121
- */
122
- protected get function(): PdfFunction {
123
- return this.mfunction;
124
- }
125
- protected set function(value: PdfFunction) {
126
- this.mfunction = value;
127
- if (value != null && typeof value !== 'undefined') {
128
- this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));
129
- } else {
130
- this.shading.remove(this.dictionaryProperties.function);
131
- }
132
- }
133
- /**
134
- * Gets or sets the boundary box of the brush.
135
- * @protected
136
- */
137
- protected get bBox(): PdfArray {
138
- let sh: PdfDictionary = this.shading;
139
- let box: PdfArray = (<PdfArray>(sh.items.getValue(this.dictionaryProperties.bBox)));
140
- return box;
141
- }
142
- protected set bBox(value: PdfArray) {
143
- let sh: PdfDictionary = this.shading;
144
- if (value == null && typeof value === 'undefined') {
145
- sh.remove(this.dictionaryProperties.bBox);
146
- } else {
147
- sh.items.setValue(this.dictionaryProperties.bBox, value);
148
- }
149
- }
150
- /**
151
- * Gets or sets the color space of the brush.
152
- * @public
153
- */
154
- public get colorSpace(): PdfColorSpace {
155
- return this.mcolorSpace;
156
- }
157
- public set colorSpace(value: PdfColorSpace) {
158
- let colorSpace: IPdfPrimitive = this.shading.items.getValue(this.dictionaryProperties.colorSpace);
159
- if ((value !== this.mcolorSpace) || (colorSpace == null)) {
160
- this.mcolorSpace = value;
161
- let csValue: string = this.colorSpaceToDeviceName(value);
162
- this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));
163
- }
164
- }
165
- /**
166
- * Gets or sets a value indicating whether this PdfGradientBrush is stroking.
167
- * @public
168
- */
169
- public get stroking(): boolean {
170
- return this.mbStroking;
171
- }
172
- public set stroking(value: boolean) {
173
- this.mbStroking = value;
174
- }
175
- /**
176
- * Gets the pattern dictionary.
177
- * @protected
178
- */
179
- protected get patternDictionary(): PdfDictionary {
180
- if (this.mpatternDictionary == null) {
181
- this.mpatternDictionary = new PdfDictionary();
182
- }
183
- return this.mpatternDictionary;
184
- }
185
- /**
186
- * Gets or sets the shading dictionary.
187
- * @protected
188
- */
189
- protected get shading(): PdfDictionary {
190
- return this.mshading;
191
- }
192
- protected set shading(value: PdfDictionary) {
193
- if (value == null) {
194
- throw new Error('ArgumentNullException : Shading');
195
- }
196
- if (value !== this.mshading) {
197
- this.mshading = value;
198
- this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));
199
- }
200
- }
201
- /**
202
- * Gets or sets the transformation matrix.
203
- * @public
204
- */
205
- public get matrix(): PdfTransformationMatrix {
206
- return this.mmatrix;
207
- }
208
- public set matrix(value: PdfTransformationMatrix) {
209
- if (value == null) {
210
- throw new Error('ArgumentNullException : Matrix');
211
- }
212
- if (value !== this.mmatrix) {
213
- this.mmatrix = value.clone();
214
- let m: PdfArray = new PdfArray(this.mmatrix.matrix.elements);
215
- this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);
216
- }
217
- }
218
- //Overrides
219
- /**
220
- * Monitors the changes of the brush and modify PDF state respectfully.
221
- * @param brush The brush.
222
- * @param streamWriter The stream writer.
223
- * @param getResources The get resources delegate.
224
- * @param saveChanges if set to true the changes should be saved anyway.
225
- * @param currentColorSpace The current color space.
226
- */
227
- /* tslint:disable-next-line:max-line-length */
228
- public monitorChanges(brush: PdfBrush, streamWriter: PdfStreamWriter, getResources: GetResourceEventHandler, saveChanges: boolean, currentColorSpace: PdfColorSpace): boolean {
229
- let diff: boolean = false;
230
- if (brush instanceof PdfGradientBrush) {
231
- if ((this.colorSpace !== currentColorSpace)) {
232
- this.colorSpace = currentColorSpace;
233
- this.resetFunction();
234
- }
235
- // Set the /Pattern colour space.
236
- streamWriter.setColorSpace('Pattern', this.mbStroking);
237
- // Set the pattern for non-stroking operations.
238
- let resources : PdfResources = getResources.getResources();
239
- let name: PdfName = resources.getName(this);
240
- streamWriter.setColourWithPattern(null, name, this.mbStroking);
241
- diff = true;
242
- }
243
- return diff;
244
- }
245
- /**
246
- * Resets the changes, which were made by the brush.
247
- * In other words resets the state to the initial one.
248
- * @param streamWriter The stream writer.
249
- */
250
- public resetChanges(streamWriter: PdfStreamWriter): void {
251
- // Unable reset.
252
- }
253
- //Implementation
254
- /**
255
- * Converts colorspace enum to a PDF name.
256
- * @param colorSpace The color space enum value.
257
- */
258
- private colorSpaceToDeviceName(colorSpace: PdfColorSpace): string {
259
- let result: string;
260
- switch (colorSpace) {
261
- case PdfColorSpace.Rgb:
262
- result = 'DeviceRGB';
263
- break;
264
- }
265
- return result;
266
- }
267
- /**
268
- * Resets the pattern dictionary.
269
- * @param dictionary A new pattern dictionary.
270
- */
271
- protected resetPatternDictionary(dictionary: PdfDictionary) : void {
272
- this.mpatternDictionary = dictionary;
273
- }
274
- /**
275
- * Resets the function.
276
- */
277
- public abstract resetFunction() : void;
278
- /**
279
- * Clones the anti aliasing value.
280
- * @param brush The brush.
281
- */
282
- protected cloneAntiAliasingValue(brush: PdfGradientBrush) : void {
283
- if ((brush == null)) {
284
- throw new Error('ArgumentNullException : brush');
285
- }
286
- let sh: PdfDictionary = this.shading;
287
- let aa: PdfBoolean = (<PdfBoolean>(sh.items.getValue(this.dictionaryProperties.antiAlias)));
288
- if ((aa != null)) {
289
- brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));
290
- }
291
- }
292
- /**
293
- * Clones the background value.
294
- * @param brush The brush.
295
- */
296
- protected cloneBackgroundValue(brush: PdfGradientBrush) : void {
297
- let background: PdfColor = this.background;
298
- if (!background.isEmpty) {
299
- brush.background = background;
300
- }
301
- }
302
- /* tslint:enable */
303
- // IPdfWrapper Members
304
- /**
305
- * Gets the `element`.
306
- * @private
307
- */
308
- public get element() : IPdfPrimitive {
309
- return this.patternDictionary;
310
- }
311
- }