@abasb75/dicom-parser 0.0.0-test23 → 0.0.1-a
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 +13 -77
- package/{types.d.ts → dist/index.d.mts} +66 -27
- package/dist/index.d.ts +137 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/package.json +22 -32
- package/Dataset.d.ts +0 -48
- package/Dataset.js +0 -558
- package/Loader.d.ts +0 -8
- package/Loader.js +0 -105
- package/Parser.d.ts +0 -33
- package/Parser.js +0 -317
- package/Tag.d.ts +0 -17
- package/Tag.js +0 -128
- package/Value.d.ts +0 -15
- package/Value.js +0 -220
- package/enums/TagsDictionary.d.ts +0 -8
- package/enums/TagsDictionary.js +0 -3612
- package/enums/TransferSyntax.d.ts +0 -17
- package/enums/TransferSyntax.js +0 -17
- package/enums/ValueRepresentations.d.ts +0 -2
- package/enums/ValueRepresentations.js +0 -2
- package/enums/index.d.ts +0 -12
- package/enums/index.js +0 -9
- package/index.d.ts +0 -10
- package/index.js +0 -49
- package/tsconfig.tsbuildinfo +0 -1
- package/types.js +0 -1
- package/utils/PaletteColor.d.ts +0 -10
- package/utils/PaletteColor.js +0 -151
- package/utils/PixelData.d.ts +0 -14
- package/utils/PixelData.js +0 -285
package/utils/PixelData.js
DELETED
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
var PixelData = /** @class */ (function () {
|
|
38
|
-
function PixelData() {
|
|
39
|
-
}
|
|
40
|
-
Object.defineProperty(PixelData, "get", {
|
|
41
|
-
enumerable: false,
|
|
42
|
-
configurable: true,
|
|
43
|
-
writable: true,
|
|
44
|
-
value: function (dataset_1) {
|
|
45
|
-
return __awaiter(this, arguments, void 0, function (dataset, frame) {
|
|
46
|
-
var pixelData;
|
|
47
|
-
if (frame === void 0) { frame = 0; }
|
|
48
|
-
return __generator(this, function (_a) {
|
|
49
|
-
pixelData = PixelData._getixelDataViews(dataset, frame);
|
|
50
|
-
return [2 /*return*/, pixelData];
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
Object.defineProperty(PixelData, "_getixelDataViews", {
|
|
56
|
-
enumerable: false,
|
|
57
|
-
configurable: true,
|
|
58
|
-
writable: true,
|
|
59
|
-
value: function (dataset, frameIndex) {
|
|
60
|
-
var _a;
|
|
61
|
-
var pixelDataElement = dataset.tags['0x7FE00010'] || dataset.tags['0x7FE00008'] || dataset.tags['0x7FE00009'];
|
|
62
|
-
if (!pixelDataElement) {
|
|
63
|
-
throw new Error("dicom has not pixels");
|
|
64
|
-
}
|
|
65
|
-
var numberOfFrames = dataset.pixelModule.numberOfFrames || 1;
|
|
66
|
-
if (pixelDataElement.valueLength === 0xFFFFFFFF) {
|
|
67
|
-
return PixelData._encapsulatePixelDatas(dataset, pixelDataElement, frameIndex);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
var _b = dataset === null || dataset === void 0 ? void 0 : dataset.pixelModule, columns = _b.columns, rows = _b.rows, samplesPerPixel = _b.samplesPerPixel, bitsAllocated = _b.bitsAllocated;
|
|
71
|
-
var frameLen = 0;
|
|
72
|
-
if ((_a = dataset.pixelModule) === null || _a === void 0 ? void 0 : _a.numberOfFrames) {
|
|
73
|
-
frameLen = pixelDataElement.valueLength / numberOfFrames;
|
|
74
|
-
}
|
|
75
|
-
else if (columns && rows && samplesPerPixel && bitsAllocated) {
|
|
76
|
-
var bytesAllocated = PixelData.bitToByte(bitsAllocated);
|
|
77
|
-
frameLen = rows * columns * bytesAllocated * samplesPerPixel;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
frameLen = pixelDataElement.valueLength / numberOfFrames;
|
|
81
|
-
}
|
|
82
|
-
frameLen = Math.min(frameLen, pixelDataElement.valueLength);
|
|
83
|
-
var offset = pixelDataElement.offset + (frameLen * frameIndex);
|
|
84
|
-
return new DataView(dataset.dataView.buffer.slice(offset, offset + frameLen));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
Object.defineProperty(PixelData, "_encapsulatePixelDatas", {
|
|
89
|
-
enumerable: false,
|
|
90
|
-
configurable: true,
|
|
91
|
-
writable: true,
|
|
92
|
-
value: function (dataset, pixelDataElement, frameIndex) {
|
|
93
|
-
if (!dataset.basicOffsetTable) {
|
|
94
|
-
dataset.basicOffsetTable = PixelData._makeBasicOffsetTable(dataset, pixelDataElement);
|
|
95
|
-
}
|
|
96
|
-
if (!dataset.basicOffsetTable || dataset.basicOffsetTable.length - 1 < frameIndex) {
|
|
97
|
-
throw new Error("not frame index found.");
|
|
98
|
-
}
|
|
99
|
-
var offset = dataset.basicOffsetTable[frameIndex];
|
|
100
|
-
var nextFrameOffset = dataset.basicOffsetTable.length > frameIndex + 1 ? dataset.basicOffsetTable[frameIndex + 1] : -1;
|
|
101
|
-
var fragments = [];
|
|
102
|
-
while (true) {
|
|
103
|
-
if (nextFrameOffset > 0 && offset >= nextFrameOffset) {
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
var group = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
107
|
-
offset += 2;
|
|
108
|
-
var element = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
109
|
-
offset += 2;
|
|
110
|
-
if (group !== 0xFFFE || element !== 0xE000) {
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
var len = dataset.dataView.getUint32(offset, dataset.littleEndian);
|
|
114
|
-
offset += 4;
|
|
115
|
-
fragments.push(dataset.dataView.buffer.slice(offset, offset + len));
|
|
116
|
-
offset += len;
|
|
117
|
-
}
|
|
118
|
-
if (fragments.length < 1) {
|
|
119
|
-
throw new Error("image not created");
|
|
120
|
-
}
|
|
121
|
-
var buffer = fragments[0];
|
|
122
|
-
for (var i = 1; i < fragments.length; i++) {
|
|
123
|
-
buffer = PixelData._concatArrayBuffers(buffer, fragments[i]);
|
|
124
|
-
}
|
|
125
|
-
return new DataView(buffer);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
Object.defineProperty(PixelData, "_concatArrayBuffers", {
|
|
129
|
-
enumerable: false,
|
|
130
|
-
configurable: true,
|
|
131
|
-
writable: true,
|
|
132
|
-
value: function (buffer1, buffer2) {
|
|
133
|
-
var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
|
|
134
|
-
tmp.set(new Uint8Array(buffer1), 0);
|
|
135
|
-
tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
|
|
136
|
-
return tmp.buffer;
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
;
|
|
140
|
-
Object.defineProperty(PixelData, "_makeBasicOffsetTable", {
|
|
141
|
-
enumerable: false,
|
|
142
|
-
configurable: true,
|
|
143
|
-
writable: true,
|
|
144
|
-
value: function (dataset, pixelDataElement) {
|
|
145
|
-
var offset = pixelDataElement.offset;
|
|
146
|
-
var group = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
147
|
-
offset += 2;
|
|
148
|
-
var element = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
149
|
-
offset += 2;
|
|
150
|
-
if (group !== 0xFFFE && element !== 0xE000) {
|
|
151
|
-
throw new Error("is not basic table");
|
|
152
|
-
}
|
|
153
|
-
var len = dataset.dataView.getUint32(offset, dataset.littleEndian);
|
|
154
|
-
offset += 4;
|
|
155
|
-
var basicOffsetTable = [];
|
|
156
|
-
var basicOffsetIndex = offset + len;
|
|
157
|
-
if (len > 0) {
|
|
158
|
-
for (var i = 0; i < len; i += 4) {
|
|
159
|
-
basicOffsetTable.push(basicOffsetIndex + dataset.dataView.getUint16(offset, dataset.littleEndian));
|
|
160
|
-
offset += 4;
|
|
161
|
-
}
|
|
162
|
-
return basicOffsetTable;
|
|
163
|
-
}
|
|
164
|
-
var basicOffsetTableElement = dataset.tags['0x7FE00001'];
|
|
165
|
-
if (basicOffsetTableElement && basicOffsetTableElement.valueLength > 0) {
|
|
166
|
-
for (var i = 0; i < len; i += 4) {
|
|
167
|
-
offset = basicOffsetTableElement.offset;
|
|
168
|
-
basicOffsetTable.push(basicOffsetIndex + dataset.dataView.getUint16(offset, dataset.littleEndian));
|
|
169
|
-
offset += 4;
|
|
170
|
-
}
|
|
171
|
-
return basicOffsetTable;
|
|
172
|
-
}
|
|
173
|
-
var numberOfFrames = dataset.pixelModule.numberOfFrames || 1;
|
|
174
|
-
if (numberOfFrames === 1) {
|
|
175
|
-
return [basicOffsetIndex];
|
|
176
|
-
}
|
|
177
|
-
var fragments = this._makeFragments(dataset, basicOffsetIndex);
|
|
178
|
-
if (fragments.length === numberOfFrames) {
|
|
179
|
-
return fragments.map(function (fragment) { return fragment.offset; });
|
|
180
|
-
}
|
|
181
|
-
return PixelData._makeBasicOfsetTableForJPEGImages(dataset, fragments);
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
Object.defineProperty(PixelData, "_makeBasicOfsetTableForJPEGImages", {
|
|
185
|
-
enumerable: false,
|
|
186
|
-
configurable: true,
|
|
187
|
-
writable: true,
|
|
188
|
-
value: function (dataset, fragments) {
|
|
189
|
-
var basicOffsetTable = [];
|
|
190
|
-
for (var i = 0; i < fragments.length; i++) {
|
|
191
|
-
var fragment = fragments[i];
|
|
192
|
-
if (PixelData._isJPEG(fragment.offset + 8, dataset.dataView)
|
|
193
|
-
|| PixelData._isJPEG2000(fragment.offset + 8, dataset.dataView)) {
|
|
194
|
-
basicOffsetTable.push(fragment.offset);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
return basicOffsetTable;
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
Object.defineProperty(PixelData, "_isJPEG", {
|
|
201
|
-
enumerable: false,
|
|
202
|
-
configurable: true,
|
|
203
|
-
writable: true,
|
|
204
|
-
value: function (position, dataView) {
|
|
205
|
-
var magic1 = dataView.getUint8(position);
|
|
206
|
-
var magic2 = dataView.getUint8(position + 1);
|
|
207
|
-
if (magic1 === 0xFF && magic2 === 0xD8) {
|
|
208
|
-
return true;
|
|
209
|
-
}
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
Object.defineProperty(PixelData, "_isJPEG2000", {
|
|
214
|
-
enumerable: false,
|
|
215
|
-
configurable: true,
|
|
216
|
-
writable: true,
|
|
217
|
-
value: function (position, dataView) {
|
|
218
|
-
var magics2 = [0xFF, 0x4F, 0xFF, 0x51];
|
|
219
|
-
for (var i = 0; i < magics2.length; i++) {
|
|
220
|
-
var finded = dataView.getUint8(position + i);
|
|
221
|
-
if (finded !== magics2[i]) {
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
else if (i === magics2.length - 1) {
|
|
225
|
-
return true;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
var magics = [0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A];
|
|
229
|
-
for (var i = 0; i < magics.length; i++) {
|
|
230
|
-
var finded = dataView.getInt8(position + i);
|
|
231
|
-
if (finded !== magics[i]) {
|
|
232
|
-
break;
|
|
233
|
-
}
|
|
234
|
-
else if (i === magics2.length - 1) {
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return false;
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
Object.defineProperty(PixelData, "_makeFragments", {
|
|
242
|
-
enumerable: false,
|
|
243
|
-
configurable: true,
|
|
244
|
-
writable: true,
|
|
245
|
-
value: function (dataset, basicOffsetIndex) {
|
|
246
|
-
var fragments = [];
|
|
247
|
-
var offset = basicOffsetIndex;
|
|
248
|
-
var dataView = dataset.dataView;
|
|
249
|
-
while (true) {
|
|
250
|
-
if (offset >= dataView.byteLength) {
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
var group = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
254
|
-
offset += 2;
|
|
255
|
-
var element = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
256
|
-
offset += 2;
|
|
257
|
-
if (group !== 0xFFFE || element !== 0xE000) {
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
260
|
-
var len = dataset.dataView.getUint16(offset, dataset.littleEndian);
|
|
261
|
-
offset += 4;
|
|
262
|
-
var fragment = {
|
|
263
|
-
offset: offset - 8,
|
|
264
|
-
len: len,
|
|
265
|
-
};
|
|
266
|
-
fragments.push(fragment);
|
|
267
|
-
offset += len;
|
|
268
|
-
}
|
|
269
|
-
return fragments;
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
Object.defineProperty(PixelData, "bitToByte", {
|
|
273
|
-
enumerable: false,
|
|
274
|
-
configurable: true,
|
|
275
|
-
writable: true,
|
|
276
|
-
value: function (bit) {
|
|
277
|
-
if (bit <= 8) {
|
|
278
|
-
return bit / 8;
|
|
279
|
-
}
|
|
280
|
-
return Math.ceil(bit / 8);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
return PixelData;
|
|
284
|
-
}());
|
|
285
|
-
export default PixelData;
|