mirror of
https://codeberg.org/icewind/ptouch-api.git
synced 2026-06-03 19:04:08 +02:00
position base
This commit is contained in:
parent
0c4bbbe3e4
commit
ddaa60d214
1 changed files with 28 additions and 3 deletions
31
web/label.js
31
web/label.js
|
|
@ -89,6 +89,15 @@ const addElementControls = (row) => {
|
|||
tag: 'td',
|
||||
classes: ['pos'],
|
||||
children: ['Position', {
|
||||
tag: 'select',
|
||||
events: {change: render},
|
||||
classes: ['pos_base'],
|
||||
children: [
|
||||
{tag: 'option', props: {value: 'left'}, children: ['Left']},
|
||||
{tag: 'option', props: {value: 'center'}, children: ['Center']},
|
||||
{tag: 'option', props: {value: 'right'}, children: ['Right']},
|
||||
],
|
||||
}, {
|
||||
tag: 'input',
|
||||
events: {input: render},
|
||||
classes: ['pos_x'],
|
||||
|
|
@ -135,7 +144,6 @@ const addTextElement = () => {
|
|||
events: {input: render},
|
||||
props: {
|
||||
type: 'text',
|
||||
focus: 'focused',
|
||||
}
|
||||
}]
|
||||
}]
|
||||
|
|
@ -143,6 +151,7 @@ const addTextElement = () => {
|
|||
|
||||
addElementControls(row);
|
||||
elementsTableBody.appendChild(row);
|
||||
row.querySelector('input').focus();
|
||||
};
|
||||
|
||||
const loadImage = (event) => {
|
||||
|
|
@ -213,6 +222,7 @@ const getElements = () => {
|
|||
size: parseInt(row.querySelector('.size input').value, 10),
|
||||
x: parseInt(row.querySelector('.pos_x').value, 10),
|
||||
y: parseInt(row.querySelector('.pos_y').value, 10),
|
||||
base: row.querySelector('.pos_base').value,
|
||||
});
|
||||
} else if (row.dataset.type === 'image') {
|
||||
elements.push({
|
||||
|
|
@ -221,6 +231,7 @@ const getElements = () => {
|
|||
size: parseInt(row.querySelector('.size input').value, 10),
|
||||
x: parseInt(row.querySelector('.pos_x').value, 10),
|
||||
y: parseInt(row.querySelector('.pos_y').value, 10),
|
||||
base: row.querySelector('.pos_base').value,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -242,18 +253,32 @@ const render = () => {
|
|||
renderCtx.font = `${element.size}px serif`;
|
||||
let textSize = renderCtx.measureText(element.text);
|
||||
let textHeight = textSize.fontBoundingBoxAscent - textSize.emHeightDescent;
|
||||
renderCtx.fillText(element.text, element.x, element.y + textHeight);
|
||||
renderCtx.fillText(element.text, calcX(element.base, element.x, textSize.width), element.y + textHeight);
|
||||
} else if (element.type === 'image' && element.image.naturalWidth > 0) {
|
||||
renderCtx.filter = 'grayscale() saturate(0%) brightness(70%) contrast(1000%)';
|
||||
if (textColor === 'white') {
|
||||
renderCtx.filter = renderCtx.filter + ' invert()';
|
||||
}
|
||||
let ratio = element.image.naturalWidth / element.image.naturalHeight;
|
||||
renderCtx.drawImage(element.image, element.x, element.y, element.size * ratio, element.size);
|
||||
let width = element.size * ratio;
|
||||
renderCtx.drawImage(element.image, calcX(element.base, element.x, width), element.y, width, element.size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const calcX = (base, x, width) => {
|
||||
let imageWidth = preview.width;
|
||||
console.log(base, x, width, imageWidth);
|
||||
switch (base) {
|
||||
case 'left':
|
||||
return x;
|
||||
case 'right':
|
||||
return (imageWidth - width) + x;
|
||||
case 'center':
|
||||
return ((imageWidth - width) / 2) + x;
|
||||
}
|
||||
}
|
||||
|
||||
const resize = () => {
|
||||
let width = parseInt(widthInput.value, 10);
|
||||
const pxPerMM = preview.height / tapeWidthMM;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue