tests_dicom_binaryPixGenerator.js
/**
* BinaryPixGenerator: generates binary pixel data.
*/
export class BinaryPixGenerator {
#numberOfColumns;
#numberOfRows;
#numberOfFrames;
#minI;
#minJ;
#maxI;
#maxJ;
/**
* @param {object} options The generator options.
*/
constructor(options) {
this.#numberOfColumns = options.numberOfColumns;
this.#numberOfRows = options.numberOfRows;
this.#numberOfFrames = options.numberOfFrames;
const borderI = Math.ceil(this.#numberOfColumns * 0.5);
const borderJ = Math.ceil(this.#numberOfRows * 0.5);
this.#minI = borderI;
this.#minJ = borderJ;
this.#maxI = this.#numberOfColumns - borderI;
this.#maxJ = this.#numberOfRows - borderJ;
}
/**
* @param {number[]} pixelBuffer The buffer.
*/
generate(pixelBuffer /*, sliceNumber*/) {
let offset = 0;
for (let f = 0; f < this.#numberOfFrames; ++f) {
for (let j = 0; j < this.#numberOfRows; ++j) {
for (let i = 0; i < this.#numberOfColumns; ++i) {
pixelBuffer[offset] = this.#getValue(i, j);
++offset;
}
}
}
}
/**
* @param {number} i The column index.
* @param {number} j The row index.
* @returns {number} The value.
*/
#getValue = (i, j) => {
const inRange = i >= this.#minI && i < this.#maxI &&
j >= this.#minJ && j < this.#maxJ;
return inRange ? 1 : 0;
};
};