Hi Renaud,

 

Yes, I use Spec with the Morphic graphical library and with the calculation 
that you described, I got the correct answer for the coordinates within the 
Morph representing the image (Form). Because I was using an autoscaling image, 
I had then to do one more step by scaling the local coordinates according to 
the scale of the image, but that was very easy. 

 

Thanks!

 

Kind regards,

Mikael

 

 

Från: Renaud de Villemeur via Pharo-users [mailto:pharo-users@lists.pharo.org] 
Skickat: den 5 mars 2025 02:13
Till: Any question about pharo is welcome
Kopia: Any question about pharo is welcome; Renaud de Villemeur
Ämne: [Pharo-users] Re: Converting global coordinates from a mouse event

 

Hi Mikael

 

I assume you use spec with the Morphic underlying graphical library. 

 

In your presenter: 

- `anEvent position` will give you the event position in the global world 
coordinate.

- `self adapter widget position.` will give you the top left corner underlying 
Morph position in the global world coordinate.

 

`anEvent position - self adapter widget position` should give you the position 
you're looking for.

 

Renaud

 

Mar 3, 2025, 03:17 by mikael.sv...@fridhem.org:

I have a presenter that is a subclass of SpPresenterWithModel and it contains, 
among other things, an ImagePresenter with an autoscaling image (a Form). I 
want to capture mouse clicks on the image and get the coordinate of the click 
relative to the upper left corner of the Form.

 

My #initializePresenter method looks like this:

initializePresenter

                           image := self newImage

                                                       image: self emptyImage;

                                                       autoScale: true.

                           image eventHandler whenMouseDownDo: [ :event |

                                                                                
  self handleMouseDown: event].

 

This works, and the #handleMouseDown: method is run whenever the mouse is 
pressed on the ImagePresenter, but the MouseButtonEvent reports global 
coordinates and I can’t find out how to convert these to coordinates relative 
to the Form that the ImagePresenter holds. I have googled and found answers to 
similar old questions, but nothing that seems to apply to Spec2.

 

There must be a very simple solution to this, it’s just that I can’t seem to 
find it.

 

Kind regards,

Mikael

 

Reply via email to