@syncfusion/ej2-pdf-export 24.1.41 → 24.2.3

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 (164) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/ej2-pdf-export.min.js +2 -2
  3. package/dist/ej2-pdf-export.umd.min.js +2 -2
  4. package/dist/ej2-pdf-export.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-pdf-export.es2015.js +157 -28
  6. package/dist/es6/ej2-pdf-export.es2015.js.map +1 -1
  7. package/dist/es6/ej2-pdf-export.es5.js +157 -28
  8. package/dist/es6/ej2-pdf-export.es5.js.map +1 -1
  9. package/dist/global/ej2-pdf-export.min.js +2 -2
  10. package/dist/global/ej2-pdf-export.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +6 -6
  13. package/src/implementation/graphics/pdf-graphics.d.ts +35 -0
  14. package/src/implementation/graphics/pdf-graphics.js +157 -29
  15. package/dist/ts/implementation/actions/action.ts +0 -76
  16. package/dist/ts/implementation/actions/uri-action.ts +0 -52
  17. package/dist/ts/implementation/annotations/action-link-annotation.ts +0 -43
  18. package/dist/ts/implementation/annotations/annotation-collection.ts +0 -159
  19. package/dist/ts/implementation/annotations/annotation.ts +0 -241
  20. package/dist/ts/implementation/annotations/document-link-annotation.ts +0 -118
  21. package/dist/ts/implementation/annotations/link-annotation.ts +0 -32
  22. package/dist/ts/implementation/annotations/pdf-text-web-link.ts +0 -265
  23. package/dist/ts/implementation/annotations/uri-annotation.ts +0 -86
  24. package/dist/ts/implementation/collections/dictionary.ts +0 -150
  25. package/dist/ts/implementation/collections/object-object-pair/dictionary.ts +0 -125
  26. package/dist/ts/implementation/collections/utils.ts +0 -38
  27. package/dist/ts/implementation/document/automatic-fields/automatic-field-info-collection.ts +0 -39
  28. package/dist/ts/implementation/document/automatic-fields/automatic-field-info.ts +0 -108
  29. package/dist/ts/implementation/document/automatic-fields/automatic-field.ts +0 -127
  30. package/dist/ts/implementation/document/automatic-fields/composite-field.ts +0 -76
  31. package/dist/ts/implementation/document/automatic-fields/multiple-value-field.ts +0 -37
  32. package/dist/ts/implementation/document/automatic-fields/page-count-field.ts +0 -75
  33. package/dist/ts/implementation/document/automatic-fields/pdf-numbers-convertor.ts +0 -157
  34. package/dist/ts/implementation/document/automatic-fields/pdf-page-number-field.ts +0 -82
  35. package/dist/ts/implementation/document/automatic-fields/pdf-template-value-pair.ts +0 -60
  36. package/dist/ts/implementation/document/automatic-fields/single-value-field.ts +0 -48
  37. package/dist/ts/implementation/document/pdf-catalog.ts +0 -65
  38. package/dist/ts/implementation/document/pdf-document-base.ts +0 -180
  39. package/dist/ts/implementation/document/pdf-document-template.ts +0 -310
  40. package/dist/ts/implementation/document/pdf-document.ts +0 -342
  41. package/dist/ts/implementation/document/pdf-viewer-preferences.ts +0 -578
  42. package/dist/ts/implementation/drawing/pdf-drawing.ts +0 -218
  43. package/dist/ts/implementation/general/enum.ts +0 -21
  44. package/dist/ts/implementation/general/functions/pdf-function.ts +0 -66
  45. package/dist/ts/implementation/general/functions/pdf-sampled-function.ts +0 -63
  46. package/dist/ts/implementation/general/pdf-cache-collection.ts +0 -97
  47. package/dist/ts/implementation/general/pdf-collection.ts +0 -41
  48. package/dist/ts/implementation/general/pdf-destination.ts +0 -170
  49. package/dist/ts/implementation/graphics/brushes/enum.ts +0 -237
  50. package/dist/ts/implementation/graphics/brushes/pdf-blend.ts +0 -294
  51. package/dist/ts/implementation/graphics/brushes/pdf-brush.ts +0 -68
  52. package/dist/ts/implementation/graphics/brushes/pdf-brushes.ts +0 -2438
  53. package/dist/ts/implementation/graphics/brushes/pdf-color-blend.ts +0 -295
  54. package/dist/ts/implementation/graphics/brushes/pdf-gradient-brush.ts +0 -311
  55. package/dist/ts/implementation/graphics/brushes/pdf-linear-gradient-brush.ts +0 -406
  56. package/dist/ts/implementation/graphics/brushes/pdf-radial-gradient-brush.ts +0 -290
  57. package/dist/ts/implementation/graphics/brushes/pdf-solid-brush.ts +0 -107
  58. package/dist/ts/implementation/graphics/brushes/pdf-tiling-brush.ts +0 -304
  59. package/dist/ts/implementation/graphics/constants.ts +0 -31
  60. package/dist/ts/implementation/graphics/enum.ts +0 -413
  61. package/dist/ts/implementation/graphics/figures/arc.ts +0 -133
  62. package/dist/ts/implementation/graphics/figures/base/draw-element.ts +0 -59
  63. package/dist/ts/implementation/graphics/figures/base/element-layouter.ts +0 -260
  64. package/dist/ts/implementation/graphics/figures/base/fill-element.ts +0 -72
  65. package/dist/ts/implementation/graphics/figures/base/graphics-element.ts +0 -34
  66. package/dist/ts/implementation/graphics/figures/base/pdf-shape-element.ts +0 -69
  67. package/dist/ts/implementation/graphics/figures/base/shape-layouter.ts +0 -276
  68. package/dist/ts/implementation/graphics/figures/base/text-layouter.ts +0 -205
  69. package/dist/ts/implementation/graphics/figures/ellipse-part.ts +0 -76
  70. package/dist/ts/implementation/graphics/figures/enum.ts +0 -80
  71. package/dist/ts/implementation/graphics/figures/layout-element.ts +0 -132
  72. package/dist/ts/implementation/graphics/figures/path.ts +0 -646
  73. package/dist/ts/implementation/graphics/figures/pdf-template.ts +0 -205
  74. package/dist/ts/implementation/graphics/figures/rectangle-area.ts +0 -108
  75. package/dist/ts/implementation/graphics/figures/text-element.ts +0 -445
  76. package/dist/ts/implementation/graphics/fonts/enum.ts +0 -385
  77. package/dist/ts/implementation/graphics/fonts/pdf-font-metrics.ts +0 -248
  78. package/dist/ts/implementation/graphics/fonts/pdf-font.ts +0 -316
  79. package/dist/ts/implementation/graphics/fonts/pdf-standard-font-metrics-factory.ts +0 -606
  80. package/dist/ts/implementation/graphics/fonts/pdf-standard-font.ts +0 -243
  81. package/dist/ts/implementation/graphics/fonts/pdf-string-format.ts +0 -474
  82. package/dist/ts/implementation/graphics/fonts/pdf-true-type-font.ts +0 -165
  83. package/dist/ts/implementation/graphics/fonts/rtl/rtl-bidirectional.ts +0 -958
  84. package/dist/ts/implementation/graphics/fonts/rtl/rtl-text-shape.ts +0 -374
  85. package/dist/ts/implementation/graphics/fonts/rtl-renderer.ts +0 -255
  86. package/dist/ts/implementation/graphics/fonts/string-layouter.ts +0 -617
  87. package/dist/ts/implementation/graphics/fonts/string-tokenizer.ts +0 -275
  88. package/dist/ts/implementation/graphics/fonts/ttf-OS2-Table.ts +0 -206
  89. package/dist/ts/implementation/graphics/fonts/ttf-apple-cmap-sub-table.ts +0 -18
  90. package/dist/ts/implementation/graphics/fonts/ttf-cmap-sub-table.ts +0 -18
  91. package/dist/ts/implementation/graphics/fonts/ttf-cmap-table.ts +0 -14
  92. package/dist/ts/implementation/graphics/fonts/ttf-glyph-header.ts +0 -26
  93. package/dist/ts/implementation/graphics/fonts/ttf-glyph-info.ts +0 -35
  94. package/dist/ts/implementation/graphics/fonts/ttf-head-table.ts +0 -94
  95. package/dist/ts/implementation/graphics/fonts/ttf-horizontal-header-table.ts +0 -56
  96. package/dist/ts/implementation/graphics/fonts/ttf-loca-table.ts +0 -10
  97. package/dist/ts/implementation/graphics/fonts/ttf-long-hor-metric.ts +0 -14
  98. package/dist/ts/implementation/graphics/fonts/ttf-metrics.ts +0 -106
  99. package/dist/ts/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.ts +0 -58
  100. package/dist/ts/implementation/graphics/fonts/ttf-name-record.ts +0 -33
  101. package/dist/ts/implementation/graphics/fonts/ttf-name-table.ts +0 -22
  102. package/dist/ts/implementation/graphics/fonts/ttf-post-table.ts +0 -42
  103. package/dist/ts/implementation/graphics/fonts/ttf-reader.ts +0 -1254
  104. package/dist/ts/implementation/graphics/fonts/ttf-table-info.ts +0 -26
  105. package/dist/ts/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.ts +0 -26
  106. package/dist/ts/implementation/graphics/fonts/unicode-true-type-font.ts +0 -577
  107. package/dist/ts/implementation/graphics/images/byte-array.ts +0 -137
  108. package/dist/ts/implementation/graphics/images/image-decoder.ts +0 -439
  109. package/dist/ts/implementation/graphics/images/pdf-bitmap.ts +0 -110
  110. package/dist/ts/implementation/graphics/images/pdf-image.ts +0 -132
  111. package/dist/ts/implementation/graphics/pdf-color.ts +0 -478
  112. package/dist/ts/implementation/graphics/pdf-graphics.ts +0 -2429
  113. package/dist/ts/implementation/graphics/pdf-margins.ts +0 -124
  114. package/dist/ts/implementation/graphics/pdf-pen.ts +0 -370
  115. package/dist/ts/implementation/graphics/pdf-resources.ts +0 -300
  116. package/dist/ts/implementation/graphics/pdf-transformation-matrix.ts +0 -246
  117. package/dist/ts/implementation/graphics/pdf-transparency.ts +0 -93
  118. package/dist/ts/implementation/graphics/unit-convertor.ts +0 -96
  119. package/dist/ts/implementation/input-output/big-endian-writer.ts +0 -121
  120. package/dist/ts/implementation/input-output/cross-table.ts +0 -21
  121. package/dist/ts/implementation/input-output/enum.ts +0 -16
  122. package/dist/ts/implementation/input-output/pdf-cross-table.ts +0 -524
  123. package/dist/ts/implementation/input-output/pdf-dictionary-properties.ts +0 -571
  124. package/dist/ts/implementation/input-output/pdf-main-object-collection.ts +0 -194
  125. package/dist/ts/implementation/input-output/pdf-operators.ts +0 -363
  126. package/dist/ts/implementation/input-output/pdf-stream-writer.ts +0 -681
  127. package/dist/ts/implementation/input-output/pdf-writer.ts +0 -88
  128. package/dist/ts/implementation/pages/enum.ts +0 -201
  129. package/dist/ts/implementation/pages/page-added-event-arguments.ts +0 -39
  130. package/dist/ts/implementation/pages/pdf-document-page-collection.ts +0 -180
  131. package/dist/ts/implementation/pages/pdf-page-base.ts +0 -181
  132. package/dist/ts/implementation/pages/pdf-page-layer-collection.ts +0 -348
  133. package/dist/ts/implementation/pages/pdf-page-layer.ts +0 -271
  134. package/dist/ts/implementation/pages/pdf-page-settings.ts +0 -192
  135. package/dist/ts/implementation/pages/pdf-page-size.ts +0 -162
  136. package/dist/ts/implementation/pages/pdf-page-template-element.ts +0 -663
  137. package/dist/ts/implementation/pages/pdf-page.ts +0 -235
  138. package/dist/ts/implementation/pages/pdf-section-collection.ts +0 -187
  139. package/dist/ts/implementation/pages/pdf-section-page-collection.ts +0 -61
  140. package/dist/ts/implementation/pages/pdf-section-templates.ts +0 -96
  141. package/dist/ts/implementation/pages/pdf-section.ts +0 -644
  142. package/dist/ts/implementation/primitives/pdf-array.ts +0 -386
  143. package/dist/ts/implementation/primitives/pdf-boolean.ts +0 -119
  144. package/dist/ts/implementation/primitives/pdf-dictionary.ts +0 -513
  145. package/dist/ts/implementation/primitives/pdf-name.ts +0 -218
  146. package/dist/ts/implementation/primitives/pdf-number.ts +0 -165
  147. package/dist/ts/implementation/primitives/pdf-reference.ts +0 -430
  148. package/dist/ts/implementation/primitives/pdf-stream.ts +0 -306
  149. package/dist/ts/implementation/primitives/pdf-string.ts +0 -397
  150. package/dist/ts/implementation/structured-elements/grid/layout/grid-layouter.ts +0 -2027
  151. package/dist/ts/implementation/structured-elements/grid/pdf-grid-cell.ts +0 -1193
  152. package/dist/ts/implementation/structured-elements/grid/pdf-grid-column.ts +0 -206
  153. package/dist/ts/implementation/structured-elements/grid/pdf-grid-row.ts +0 -470
  154. package/dist/ts/implementation/structured-elements/grid/pdf-grid.ts +0 -853
  155. package/dist/ts/implementation/structured-elements/grid/styles/pdf-borders.ts +0 -240
  156. package/dist/ts/implementation/structured-elements/grid/styles/style.ts +0 -424
  157. package/dist/ts/implementation/structured-elements/tables/light-tables/enum.ts +0 -16
  158. package/dist/ts/interfaces/i-pdf-cache.ts +0 -23
  159. package/dist/ts/interfaces/i-pdf-changable.ts +0 -17
  160. package/dist/ts/interfaces/i-pdf-clonable.ts +0 -12
  161. package/dist/ts/interfaces/i-pdf-primitives.ts +0 -45
  162. package/dist/ts/interfaces/i-pdf-true-type-font.ts +0 -48
  163. package/dist/ts/interfaces/i-pdf-wrapper.ts +0 -13
  164. package/dist/ts/interfaces/i-pdf-writer.ts +0 -29
@@ -1,406 +0,0 @@
1
- /**
2
- * PdfLinearGradientBrush.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 { PointF, Rectangle } from './../../drawing/pdf-drawing';
8
- import { PdfDictionary} from '../../primitives/pdf-dictionary';
9
- import { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';
10
- import { PdfBoolean } from '../../primitives/pdf-boolean';
11
- import { PdfArray } from './../../primitives/pdf-array';
12
- import { PdfNumber } from './../../primitives/pdf-number';
13
- import { PdfColorBlend } from './pdf-color-blend';
14
- import { PdfBlend } from './pdf-blend';
15
- import { PdfGradientBrush } from './pdf-gradient-brush';
16
- import { PdfExtend , PdfLinearGradientMode, ShadingType} from './enum';
17
- /**
18
- * `PdfLinearGradientBrush` Implements linear gradient brush by using PDF axial shading pattern.
19
- * @private
20
- */
21
- export class PdfLinearGradientBrush extends PdfGradientBrush {
22
- //Fields
23
- /**
24
- * Local variable to store the point start.
25
- * @private
26
- */
27
- private mPointStart: PointF;
28
- /**
29
- * Local variable to store the point end.
30
- */
31
- private mPointEnd: PointF;
32
- /**
33
- * Local variable to store the colours.
34
- */
35
- private mColours: PdfColor[];
36
- /**
37
- * Local variable to store the colour Blend.
38
- */
39
- private mColourBlend: PdfColorBlend;
40
- /**
41
- * Local variable to store the blend.
42
- * @private
43
- */
44
- private mBlend: PdfBlend;
45
- /**
46
- * Local variable to store the boundaries.
47
- * @private
48
- */
49
- private mBoundaries: Rectangle;
50
- /**
51
- * Local variable to store the dictionary properties.
52
- * @private
53
- */
54
- private mDictionaryProperties : DictionaryProperties = new DictionaryProperties();
55
- //Constructor
56
- /**
57
- * Initializes a new instance of the `PdfLinearGradientBrush` class.
58
- * @public
59
- */
60
- public constructor(point1: PointF, point2: PointF, color1: PdfColor, color2: PdfColor)
61
- /**
62
- * Initializes a new instance of the `PdfLinearGradientBrush` class.
63
- * @public
64
- */
65
- public constructor(rect: Rectangle, color1: PdfColor, color2: PdfColor, mode: PdfLinearGradientMode)
66
- /**
67
- * Initializes a new instance of the `PdfLinearGradientBrush` class.
68
- * @public
69
- */
70
- public constructor(rect: Rectangle, color1: PdfColor, color2: PdfColor, angle: number)
71
- /**
72
- * Initializes a new instance of the `PdfLinearGradientBrush` class.
73
- * @public
74
- */
75
- /* tslint:disable-next-line:max-line-length */
76
- public constructor(arg1: Rectangle|PdfColor|PointF, arg2: PointF|PdfColor, arg3 ?: PdfColor, arg4 ?: PdfColor|PdfLinearGradientMode|number) {
77
- super(new PdfDictionary());
78
- if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PdfColor && arg4 instanceof PdfColor) {
79
- this.initialize(arg3, arg4);
80
- this.mPointStart = arg1;
81
- this.mPointEnd = arg2;
82
- this.setPoints(this.mPointStart, this.mPointEnd);
83
- } else if (arg1 instanceof Rectangle) {
84
- this.initialize(arg2 as PdfColor, arg3);
85
- /* tslint:disable-next-line:max-line-length */
86
- if ((arg4 === PdfLinearGradientMode.BackwardDiagonal || arg4 === PdfLinearGradientMode.ForwardDiagonal || arg4 === PdfLinearGradientMode.Horizontal || arg4 === PdfLinearGradientMode.Vertical)) {
87
- this.mBoundaries = arg1 as Rectangle;
88
- switch (arg4) {
89
- case PdfLinearGradientMode.BackwardDiagonal:
90
- this.mPointStart = new PointF(arg1.right, arg1.top);
91
- this.mPointEnd = new PointF(arg1.left, arg1.bottom);
92
- break;
93
- case PdfLinearGradientMode.ForwardDiagonal:
94
- this.mPointStart = new PointF(arg1.left, arg1.top);
95
- this.mPointEnd = new PointF(arg1.right, arg1.bottom);
96
- break;
97
- case PdfLinearGradientMode.Horizontal:
98
- this.mPointStart = new PointF(arg1.left, arg1.top);
99
- this.mPointEnd = new PointF(arg1.right, arg1.top);
100
- break;
101
- case PdfLinearGradientMode.Vertical:
102
- this.mPointStart = new PointF(arg1.left, arg1.top);
103
- this.mPointEnd = new PointF(arg1.left, arg1.bottom);
104
- break;
105
- default:
106
- throw new Error('ArgumentException -- Unsupported linear gradient mode: ' + arg4 + ' mode');
107
- }
108
- this.setPoints(this.mPointStart, this.mPointEnd);
109
- } else if (typeof arg4 === 'number' && typeof arg4 !== 'undefined') {
110
- this.mBoundaries = arg1;
111
- arg4 = arg4 % 360;
112
- if ((arg4 === 0)) {
113
- this.mPointStart = new PointF(arg1.left, arg1.top);
114
- this.mPointEnd = new PointF(arg1.right, arg1.top);
115
- } else if ((arg4 === 90)) {
116
- this.mPointStart = new PointF(arg1.left, arg1.top);
117
- this.mPointEnd = new PointF(arg1.left, arg1.bottom);
118
- } else if ((arg4 === 180)) {
119
- this.mPointEnd = new PointF(arg1.left, arg1.top);
120
- this.mPointStart = new PointF(arg1.right, arg1.top);
121
- } else if ((arg4 === 270)) {
122
- this.mPointEnd = new PointF(arg1.left, arg1.top);
123
- this.mPointStart = new PointF(arg1.left, arg1.bottom);
124
- } else {
125
- let d2r: number = (Math.PI / 180);
126
- let radAngle: number = (arg4 * d2r);
127
- let k: number = Math.tan(radAngle);
128
- let x: number = (this.mBoundaries.left
129
- + ((this.mBoundaries.right - this.mBoundaries.left) / 2));
130
- let y: number = (this.mBoundaries.top
131
- + ((this.mBoundaries.bottom - this.mBoundaries.top) / 2));
132
- let centre: PointF = new PointF(x, y);
133
- x = (this.mBoundaries.width / (2 * (<number>(Math.cos(radAngle)))));
134
- y = (<number>((k * x)));
135
- x = (x + centre.x);
136
- y = (y + centre.y);
137
- let p1: PointF = new PointF(x, y);
138
- let cp1: PointF = this.subPoints(p1, centre);
139
- // P1 - P0
140
- let p: PointF = this.choosePoint(arg4);
141
- let coef: number = (this.mulPoints(this.subPoints(p, centre), cp1)
142
- / this.mulPoints(cp1, cp1));
143
- this.mPointEnd = this.addPoints(centre, this.mulPoint(cp1, coef));
144
- // Parametric line equation.
145
- this.mPointStart = this.addPoints(centre, this.mulPoint(cp1, (coef * -1)));
146
- }
147
- this.setPoints(this.mPointEnd, this.mPointStart);
148
- }
149
- }
150
- }
151
- /**
152
- * Initializes a new instance of the `PdfLinearGradientBrush` class.
153
- * @param color1 The starting color of the gradient.
154
- * @param color2 The end color of the gradient.
155
- */
156
- private initialize(color1: PdfColor, color2: PdfColor) : void {
157
- this.mColours = [ color1, color2];
158
- this.mColourBlend = new PdfColorBlend(2);
159
- this.mColourBlend.positions = [ 0, 1];
160
- this.mColourBlend.colors = this.mColours;
161
- this.initShading();
162
- }
163
- //Properties
164
- /**
165
- * Gets or sets a PdfBlend that specifies positions
166
- * and factors that define a custom falloff for the gradient.
167
- * @public
168
- */
169
- public get blend(): PdfBlend {
170
- return this.mBlend;
171
- }
172
- public set blend(value: PdfBlend) {
173
- if ((value == null)) {
174
- throw new Error('ArgumentNullException : Blend');
175
- }
176
- if ((this.mColours == null)) {
177
- throw new Error('NotSupportedException : There is no starting and ending colours specified.');
178
- }
179
- this.mBlend = value;
180
- // TODO: generate correct colour blend.
181
- this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);
182
- this.resetFunction();
183
- }
184
- /**
185
- * Gets or sets a ColorBlend that defines a multicolor linear gradient.
186
- * @public
187
- */
188
- public get interpolationColors(): PdfColorBlend {
189
- return this.mColourBlend;
190
- }
191
- public set interpolationColors(value: PdfColorBlend) {
192
- if ((value == null)) {
193
- throw new Error('ArgumentNullException : InterpolationColors');
194
- }
195
- this.mBlend = null;
196
- this.mColours = null;
197
- this.mColourBlend = value;
198
- this.resetFunction();
199
- }
200
- /**
201
- * Gets or sets the starting and ending colors of the gradient.
202
- * @public
203
- */
204
- public get linearColors(): PdfColor[] {
205
- return this.mColours;
206
- }
207
- public set linearColors(value: PdfColor[]) {
208
- if ((value == null)) {
209
- throw new Error('ArgumentNullException : LinearColors');
210
- }
211
- if ((value.length < 2)) {
212
- throw new Error('ArgumentException : The array is too small - LinearColors');
213
- }
214
- if ((this.mColours == null && typeof this.mColours === 'undefined')) {
215
- this.mColours = [value[0], value[1]];
216
- } else {
217
- this.mColours[0] = value[0];
218
- this.mColours[1] = value[1];
219
- }
220
- if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {
221
- // Set correct colour blend.
222
- this.mColourBlend = new PdfColorBlend(2);
223
- this.mColourBlend.colors = this.mColours;
224
- this.mColourBlend.positions = [0, 1];
225
- } else {
226
- this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);
227
- }
228
- this.resetFunction();
229
- }
230
- /**
231
- * Gets a rectangular region that defines the boundaries of the gradient.
232
- * @public
233
- */
234
- public get rectangle(): Rectangle {
235
- return this.mBoundaries;
236
- }
237
- /**
238
- * Gets or sets the value indicating whether the gradient should extend starting and ending points.
239
- * @public
240
- */
241
- public get extend(): PdfExtend {
242
- let result: PdfExtend = PdfExtend.None;
243
- let extend: PdfArray = (<PdfArray>(this.shading.items.getValue(this.mDictionaryProperties.extend)));
244
- if ((extend != null)) {
245
- let extStart: PdfBoolean = (<PdfBoolean>(extend.items(0)));
246
- let extEnd: PdfBoolean = (<PdfBoolean>(extend.items(1)));
247
- if (extStart.value) {
248
- result = (result | PdfExtend.Start);
249
- }
250
- if (extEnd.value) {
251
- result = (result | PdfExtend.End);
252
- }
253
- }
254
- return result;
255
- }
256
- public set extend(value: PdfExtend) {
257
- let extend: PdfArray = (<PdfArray>(this.shading.items.getValue(this.mDictionaryProperties.extend)));
258
- let extStart: PdfBoolean;
259
- let extEnd: PdfBoolean;
260
- if ((extend == null)) {
261
- extStart = new PdfBoolean(false);
262
- extEnd = new PdfBoolean(false);
263
- extend = new PdfArray();
264
- extend.add(extStart);
265
- extend.add(extEnd);
266
- this.shading.items.setValue(this.mDictionaryProperties.extend, extend);
267
- } else {
268
- extStart = (<PdfBoolean>(extend.items(0)));
269
- extEnd = (<PdfBoolean>(extend.items(1)));
270
- }
271
- // extStart.value = ((value && PdfExtend.Start) > 0);
272
- // extEnd.value = ((value && PdfExtend.End) > 0);
273
- }
274
- //Implementation
275
- /**
276
- * Adds two points to each other.
277
- * @param point1 The point1.
278
- * @param point2 The point2.
279
- */
280
- private addPoints(point1: PointF, point2: PointF): PointF {
281
- let x: number = (point1.x + point2.x);
282
- let y: number = (point1.y + point2.y);
283
- let result: PointF = new PointF(x, y);
284
- return result;
285
- }
286
- /**
287
- * Subs the second point from the first one.
288
- * @param point1 The point1.
289
- * @param point2 The point2.
290
- */
291
- private subPoints(point1: PointF, point2: PointF): PointF {
292
- let x: number = (point1.x - point2.x);
293
- let y: number = (point1.y - point2.y);
294
- let result: PointF = new PointF(x, y);
295
- return result;
296
- }
297
- /**
298
- * Makes scalar multiplication of two points.
299
- * @param point1 The point1.
300
- * @param point2 The point2.
301
- */
302
- private mulPoints(point1: PointF, point2: PointF): number {
303
- let result: number = ((point1.x * point2.x) + (point1.y * point2.y));
304
- return result;
305
- }
306
- /**
307
- * Multiplies the point by the value specified.
308
- * @param point The point1.
309
- * @param value The value.
310
- */
311
- private mulPoint(point: PointF, value: number): PointF {
312
- point.x = (point.x * value);
313
- point.y = (point.y * value);
314
- return point;
315
- }
316
- /**
317
- * Choose the point according to the angle.
318
- * @param angle The angle.
319
- */
320
- private choosePoint(angle: number): PointF {
321
- let point: PointF = new PointF(0, 0);
322
- // Choose the correct point.
323
- if ((angle < 90) && (angle > 0)) {
324
- point = new PointF(this.mBoundaries.right, this.mBoundaries.bottom);
325
- } else if ((angle < 180) && (angle > 90)) {
326
- point = new PointF(this.mBoundaries.left, this.mBoundaries.bottom);
327
- } else if ((angle < 270) && (angle > 180)) {
328
- point = new PointF(this.mBoundaries.left, this.mBoundaries.top);
329
- } else if (angle > 270) {
330
- point = new PointF(this.mBoundaries.right, this.mBoundaries.top);
331
- } else {
332
- throw new Error('PdfException - Internal error.');
333
- }
334
- return point;
335
- }
336
- /**
337
- * Sets the start and end points.
338
- * @param point1 The point1.
339
- * @param point2 The point2.
340
- */
341
- private setPoints(point1: PointF, point2: PointF) : void {
342
- let points: PdfArray = new PdfArray();
343
- points.add(new PdfNumber(point1.x));
344
- points.add(new PdfNumber(this.updateY(point1.y)));
345
- points.add(new PdfNumber(point2.x));
346
- points.add(new PdfNumber(this.updateY(point2.y)));
347
- this.shading.items.setValue(this.mDictionaryProperties.coords, points);
348
- }
349
- /**
350
- * Updates y co-ordinate.
351
- * @param y Y co-ordinate..
352
- */
353
- private updateY(y: number): number {
354
- if (y !== 0) {
355
- return -y;
356
- } else {
357
- return y;
358
- }
359
- }
360
- //Overrides
361
- /**
362
- * Initializes the shading dictionary.
363
- * @private
364
- */
365
- private initShading(): void {
366
- this.colorSpace = PdfColorSpace.Rgb;
367
- this.function = this.mColourBlend.getFunction(this.colorSpace);
368
- this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((<number>(ShadingType.Axial))));
369
- }
370
- //Overrides
371
- /**
372
- * Creates a new copy of a brush.
373
- * @public
374
- */
375
- public clone(): PdfBrush {
376
- let brush: PdfLinearGradientBrush = this;
377
- brush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));
378
- brush.shading = new PdfDictionary();
379
- brush.initShading();
380
- brush.setPoints(brush.mPointStart, brush.mPointEnd);
381
- if (brush !== null && brush instanceof PdfLinearGradientBrush) {
382
- if ((this.matrix != null && typeof this.matrix !== 'undefined')) {
383
- brush.matrix = this.matrix.clone();
384
- }
385
- }
386
- if ((this.mColours != null && typeof this.mColours !== 'undefined')) {
387
- brush.mColours = (<PdfColor[]>(this.mColours));
388
- }
389
- if ((this.blend != null && typeof this.blend !== 'undefined')) {
390
- brush.blend = this.blend.clonePdfBlend();
391
- } else if ((this.interpolationColors != null && typeof this.interpolationColors !== 'undefined')) {
392
- brush.interpolationColors = this.interpolationColors.cloneColorBlend();
393
- }
394
- brush.extend = this.extend;
395
- this.cloneBackgroundValue(brush);
396
- this.cloneAntiAliasingValue(brush);
397
- return brush;
398
- }
399
- /**
400
- * Resets the function.
401
- * @public
402
- */
403
- public resetFunction() : void {
404
- this.function = this.mColourBlend.getFunction(this.colorSpace);
405
- }
406
- }
@@ -1,290 +0,0 @@
1
- /**
2
- * PdfRadialGradientBrush.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 { PointF, RectangleF } from './../../drawing/pdf-drawing';
8
- import { PdfDictionary} from '../../primitives/pdf-dictionary';
9
- import { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';
10
- import { PdfBoolean } from '../../primitives/pdf-boolean';
11
- import { PdfArray } from './../../primitives/pdf-array';
12
- import { PdfNumber } from './../../primitives/pdf-number';
13
- import { PdfColorBlend } from './pdf-color-blend';
14
- import { PdfBlend } from './pdf-blend';
15
- import { PdfGradientBrush } from './pdf-gradient-brush';
16
- import { PdfExtend , ShadingType} from './enum';
17
- /**
18
- * `PdfRadialGradientBrush` Represent radial gradient brush.
19
- * @private
20
- */
21
- export class PdfRadialGradientBrush extends PdfGradientBrush {
22
- //Fields
23
- /**
24
- * Local varaible to store the point start.
25
- * @private
26
- */
27
- private mPointStart: PointF;
28
- /**
29
- * Local varaible to store the radius start.
30
- * @private
31
- */
32
- private mRadiusStart: number;
33
- /**
34
- * Local varaible to store the point End.
35
- * @private
36
- */
37
- private mPointEnd: PointF;
38
- /**
39
- * Local varaible to store the radius End.
40
- * @private
41
- */
42
- private mRadiusEnd: number;
43
- /**
44
- * Local varaible to store the colours.
45
- * @private
46
- */
47
- private mColour: PdfColor[];
48
- /**
49
- * Local varaible to store the colour blend.
50
- * @private
51
- */
52
- private mColourBlends: PdfColorBlend;
53
- /**
54
- * Local varaible to store the blend.
55
- * @private
56
- */
57
- private mBlend: PdfBlend;
58
- /**
59
- * Local varaible to store the boundaries.
60
- * @private
61
- */
62
- private mBoundaries: RectangleF;
63
- /**
64
- * Local varaible to store the dictionary properties.
65
- */
66
- private mDictionaryProperties : DictionaryProperties = new DictionaryProperties();
67
- //Constructor
68
- /**
69
- * Initializes a new instance of the `PdfRadialGradientBrush` class.
70
- * @public
71
- */
72
- /* tslint:disable-next-line:max-line-length */
73
- public constructor(centerStart: PointF, radiusStart: number, centerEnd: PointF, radiusEnd: number, colorStart: PdfColor, colorEnd: PdfColor) {
74
- super(new PdfDictionary());
75
- this.initialize(colorStart, colorEnd);
76
- if (radiusStart < 0) {
77
- throw new Error('ArgumentOutOfRangeException : radiusStart - The radius cannot be less then zero.');
78
- }
79
- if (radiusEnd < 0) {
80
- throw new Error('ArgumentOutOfRangeException : radiusEnd - The radius cannpt be less then zero.');
81
- }
82
- this.mPointEnd = centerEnd;
83
- this.mPointStart = centerStart;
84
- this.mRadiusStart = radiusStart;
85
- this.mRadiusEnd = radiusEnd;
86
- this.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);
87
- }
88
- /**
89
- * Initializes a new instance of the `PdfRadialGradientBrush` class.
90
- * @param color1 The color1.
91
- * @param color2 The color2.
92
- */
93
- private initialize(color1: PdfColor, color2: PdfColor) : void {
94
- this.mColour = [ color1, color2];
95
- this.mColourBlends = new PdfColorBlend(2);
96
- this.mColourBlends.positions = [ 0, 1];
97
- this.mColourBlends.colors = this.mColour;
98
- this.initShading();
99
- }
100
- //Properties
101
- /**
102
- * Gets or sets a PdfBlend that specifies positions and factors that define a custom falloff for the gradient.
103
- * @public
104
- */
105
- public get blend(): PdfBlend {
106
- return this.mBlend;
107
- }
108
- public set blend(value: PdfBlend) {
109
- if ((value == null)) {
110
- throw new Error('ArgumentNullException : Blend');
111
- }
112
- if ((this.mColour == null && typeof this.mColour === 'undefined')) {
113
- throw new Error('NotSupportedException : There is no starting and ending colours specified.');
114
- }
115
- this.mBlend = value;
116
- this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);
117
- this.resetFunction();
118
- }
119
- /**
120
- * Gets or sets a ColorBlend that defines a multicolor radial gradient.
121
- * @public
122
- */
123
- public get interpolationColors(): PdfColorBlend {
124
- return this.mColourBlends;
125
- }
126
- public set interpolationColors(value: PdfColorBlend) {
127
- if (value == null) {
128
- throw new Error('ArgumentNullException : InterpolationColors');
129
- }
130
- this.mBlend = null;
131
- this.mColour = null;
132
- this.mColourBlends = value;
133
- this.resetFunction();
134
- }
135
- /**
136
- * Gets or sets the starting and ending colors of the radial gradient.
137
- * @public
138
- */
139
- public get linearColors(): PdfColor[] {
140
- return this.mColour;
141
- }
142
- public set linearColors(value: PdfColor[]) {
143
- if ((value == null)) {
144
- throw new Error('ArgumentNullException : radial LinearColors');
145
- }
146
- if ((value.length < 2)) {
147
- throw new Error('ArgumentException : The array is too small LinearColors');
148
- }
149
- if ((this.mColour == null && typeof this.mColour === 'undefined')) {
150
- this.mColour = [value[0], value[1]];
151
- } else {
152
- this.mColour[0] = value[0];
153
- this.mColour[1] = value[1];
154
- }
155
- if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {
156
- // Set correct colour blend.
157
- this.mColourBlends = new PdfColorBlend(2);
158
- this.mColourBlends.colors = this.mColour;
159
- this.mColourBlends.positions = [0, 1];
160
- } else {
161
- this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);
162
- }
163
- this.resetFunction();
164
- }
165
- /**
166
- * Gets or sets the rectangle.
167
- * @public
168
- */
169
- public get rectangle(): RectangleF {
170
- return this.mBoundaries;
171
- }
172
- public set rectangle(value: RectangleF) {
173
- this.mBoundaries = value;
174
- this.bBox = PdfArray.fromRectangle(value);
175
- }
176
- /**
177
- * Gets or sets the value indicating whether the gradient
178
- * should extend starting and ending points.
179
- * @public
180
- */
181
- public get extend(): PdfExtend {
182
- let result1 : PdfExtend = PdfExtend.None;
183
- let extend1 : PdfArray = (<PdfArray>(this.shading.items.getValue(this.mDictionaryProperties.extend)));
184
- if (extend1 !== null && typeof extend1 !== 'undefined') {
185
- let extStart : PdfBoolean = (<PdfBoolean>(extend1.items(0)));
186
- let extEnd : PdfBoolean = (<PdfBoolean>(extend1.items(1)));
187
- if (extStart.value) {
188
- result1 = (result1 | PdfExtend.Start);
189
- }
190
- if (extEnd.value) {
191
- result1 = (result1 | PdfExtend.End);
192
- }
193
- }
194
- return result1;
195
- }
196
- public set extend(value: PdfExtend) {
197
- let extend : PdfArray = (<PdfArray>(this.shading.items.getValue(this.mDictionaryProperties.extend)));
198
- let extStart : PdfBoolean;
199
- let extEnd1 : PdfBoolean;
200
- if (extend == null && typeof extend === 'undefined') {
201
- extStart = new PdfBoolean(false);
202
- extEnd1 = new PdfBoolean(false);
203
- extend = new PdfArray();
204
- extend.add(extStart);
205
- extend.add(extEnd1);
206
- this.shading.items.setValue(this.mDictionaryProperties.extend, extend);
207
- } else {
208
- extStart = (<PdfBoolean>(extend.items(0)));
209
- extEnd1 = (<PdfBoolean>(extend.items(1)));
210
- }
211
- }
212
- //Implementation
213
- /**
214
- * Sets the points.
215
- * @param pointStart The point start.
216
- * @param pointEnd The point end.
217
- * @param radiusStart The radius start.
218
- * @param radiusEnd The radius end.
219
- */
220
- private setPoints(pointStart: PointF, pointEnd: PointF, radiusStart: number, radiusEnd: number) : void {
221
- let points: PdfArray = new PdfArray();
222
- points.add(new PdfNumber(pointStart.x));
223
- points.add(new PdfNumber(this.updateY(pointStart.y)));
224
- points.add(new PdfNumber(radiusStart));
225
- points.add(new PdfNumber(pointEnd.x));
226
- points.add(new PdfNumber(this.updateY(pointEnd.y)));
227
- if ((radiusStart !== radiusEnd)) {
228
- points.add(new PdfNumber(radiusEnd));
229
- } else {
230
- points.add(new PdfNumber(0));
231
- }
232
- this.shading.items.setValue(this.mDictionaryProperties.coords, points);
233
- }
234
- /**
235
- * Update y co-ordinate.
236
- * @param y Y co-ordinate.
237
- */
238
- private updateY(y: number): number {
239
- if (y !== 0) {
240
- return -y;
241
- } else {
242
- return y;
243
- }
244
- }
245
- /**
246
- * Initializess the shading dictionary.
247
- * @private
248
- */
249
- private initShading(): void {
250
- this.colorSpace = PdfColorSpace.Rgb;
251
- this.function = this.mColourBlends.getFunction(this.colorSpace);
252
- this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((<number>(ShadingType.Radial))));
253
- }
254
- //Overrides
255
- /**
256
- * Creates a new copy of a brush.
257
- * @public
258
- */
259
- public clone(): PdfBrush {
260
- let rBrush: PdfRadialGradientBrush = this;
261
- rBrush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));
262
- rBrush.shading = new PdfDictionary();
263
- rBrush.initShading();
264
- rBrush.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);
265
- if ( rBrush instanceof PdfRadialGradientBrush) {
266
- if ((this.matrix !== null && typeof this.matrix !== 'undefined')) {
267
- rBrush.matrix = this.matrix.clone();
268
- }
269
- }
270
- if ((this.mColour !== null && typeof this.mColour !== 'undefined')) {
271
- rBrush.mColour = (<PdfColor[]>(this.mColour));
272
- }
273
- if ((this.blend !== null && typeof this.blend !== 'undefined')) {
274
- rBrush.blend = this.blend.clonePdfBlend();
275
- } else if ((this.interpolationColors !== null && typeof this.interpolationColors !== 'undefined')) {
276
- rBrush.interpolationColors = this.interpolationColors.cloneColorBlend();
277
- }
278
- rBrush.extend = this.extend;
279
- this.cloneBackgroundValue(rBrush);
280
- this.cloneAntiAliasingValue(rBrush);
281
- return rBrush;
282
- }
283
- /**
284
- * Resets the function.
285
- * @public
286
- */
287
- public resetFunction() : void {
288
- this.function = this.mColourBlends.getFunction(this.colorSpace);
289
- }
290
- }