mirror of
https://github.com/gradio-app/gradio.git
synced 2024-12-27 02:30:17 +08:00
1419538ea7
* asd * changes * fix everything * cleanup * add changeset * fix casing * lockfile * fix casing * fix ci, enable linting * fix test * add changeset * add changeset * delete changeset * fix dirs * fix casing * fix notebooks * fix casing * fix casing * fix casing * fix casing * fix casing * fix casing * fix casing * fix casing --------- Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
25 lines
970 B
TypeScript
25 lines
970 B
TypeScript
export const get_coordinates_of_clicked_image = (
|
|
evt: MouseEvent
|
|
): [number, number] | null => {
|
|
let image = evt.currentTarget as HTMLImageElement;
|
|
|
|
const imageRect = image.getBoundingClientRect();
|
|
const xScale = image.naturalWidth / imageRect.width;
|
|
const yScale = image.naturalHeight / imageRect.height;
|
|
if (xScale > yScale) {
|
|
const displayed_height = image.naturalHeight / xScale;
|
|
const y_offset = (imageRect.height - displayed_height) / 2;
|
|
var x = Math.round((evt.clientX - imageRect.left) * xScale);
|
|
var y = Math.round((evt.clientY - imageRect.top - y_offset) * xScale);
|
|
} else {
|
|
const displayed_width = image.naturalWidth / yScale;
|
|
const x_offset = (imageRect.width - displayed_width) / 2;
|
|
var x = Math.round((evt.clientX - imageRect.left - x_offset) * yScale);
|
|
var y = Math.round((evt.clientY - imageRect.top) * yScale);
|
|
}
|
|
if (x < 0 || x >= image.naturalWidth || y < 0 || y >= image.naturalHeight) {
|
|
return null;
|
|
}
|
|
return [x, y];
|
|
};
|