tav-media
Version:
Cross platform media editing framework
53 lines (52 loc) • 2.08 kB
JavaScript
export const measureText = (imageData) => {
const imageDataInt32Array = new Int32Array(imageData.data.buffer);
let left = getLeftPixel(imageDataInt32Array, imageData.width, imageData.height);
let top = getTopPixel(imageDataInt32Array, imageData.width, imageData.height);
let right = getRightPixel(imageDataInt32Array, imageData.width, imageData.height);
let bottom = getBottomPixel(imageDataInt32Array, imageData.width, imageData.height);
return { left, top, right, bottom };
};
export const getLeftPixel = (imageDataArray, width, height) => {
const verticalCount = imageDataArray.length / width;
const acrossCount = imageDataArray.length / height;
for (let i = 0; i < acrossCount; i++) {
for (let j = 0; j < verticalCount; j++) {
if (imageDataArray[i + j * width] !== 0)
return i;
}
}
return acrossCount;
};
export const getTopPixel = (imageDataArray, width, height) => {
const verticalCount = imageDataArray.length / width;
const acrossCount = imageDataArray.length / height;
for (let i = 0; i < verticalCount; i++) {
for (let j = 0; j < acrossCount; j++) {
if (imageDataArray[i * width + j] !== 0)
return i;
}
}
return verticalCount;
};
export const getRightPixel = (imageDataArray, width, height) => {
const verticalCount = imageDataArray.length / width;
const acrossCount = imageDataArray.length / height;
for (let i = acrossCount - 1; i > 0; i--) {
for (let j = verticalCount - 1; j > 0; j--) {
if (imageDataArray[i + width * j] !== 0)
return i;
}
}
return 0;
};
export const getBottomPixel = (imageDataArray, width, height) => {
const verticalCount = imageDataArray.length / width;
const acrossCount = imageDataArray.length / height;
for (let i = verticalCount - 1; i > 0; i--) {
for (let j = acrossCount - 1; j > 0; j--) {
if (imageDataArray[i * width + j] !== 0)
return i;
}
}
return 0;
};