gradio/js/image/shared/utils.ts
pngwn 1419538ea7
Refactor component directories (#5074)
* 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>
2023-08-03 23:01:18 +01:00

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];
};