[Rwp] Plug-in hot spots
James Teh
jamie at nvaccess.org
Tue Mar 8 23:49:42 EST 2016
Hi plug-in hot spot creators (HSC, AutoHotkey, whatever),
As I've watched discussion about creation of hot spots for plug-ins and
associated problems, I've been starting to wonder about why they aren't
done in a way which makes them more reliable across different
configurations. I don't have much experience in this area, so there may
well be a good reason and I'm just not seeing it. So, I'd appreciate
some thoughts on the below.
In the following discussion, let's assume we're dealing with simple hot
spots; i.e. spots which don't change such as the program browser button
in Dimension Pro, the load button in SFZ, etc. I realise there are many
cases where this isn't the case, but that's beyond the scope of what I'm
getting at here.
As I understand it, there are two main problems that cause basic hot
spots to be unreliable:
1. Different screen resolutions/DPI settings. If hot spots are created
for one screen configuration, they sometimes don't work on other
configurations.
I notice that even though some hot spots use relative coordinates,
they're still absolute as far as the window is concerned. That is, they
don't account for the window being a different size, only the window
being in a different starting position. So, why not use width and height
fractions? So, if the coordinate is half way across the width of the
window, you would store 0.5 instead of an absolute value like 200. This
way, if the window shrinks to half size, you can still calculate the
correct coordinates. In practice, some windows probably don't resize
everything in direct proportion, but I would have thought this would be
more rare than not.
2. Different applications. Hot spots created for Sonar don't work in
REAPER and vice versa. Even in REAPER, hot spots created for bridged
don't work in non-bridged.
From what I've seen, even hot spots that are relative are calculated
relative to the top level window. The problem is that the top level
window is part of the host (e.g. REAPER), not the plug-in. That means
it's going to be different for every host. So, why not calculate the
coordinates relative to the window for the plug-in itself? The plug-in
should render exactly the same way no matter where it's hosted.
Therefore, if coordinates are all relative to the plug-in window, they
will work the same regardless of the host used.
On a related note, I'd be interested to know whether it'd be worth
implementing some kind of basic hot spot support into OSARA. The
question is what kind of complexity is needed for the majority of
plug-ins. I know HSC has support for searching for colours, etc., but I
never quite grasped how this was applied in practice.
I'd appreciate any thoughts.
Jamie
--
James Teh
Executive Director, NV Access Limited
Ph +61 7 3149 3306
www.nvaccess.org
Facebook: http://www.facebook.com/NVAccess
Twitter: @NVAccess
SIP: jamie at nvaccess.org
More information about the RWP
mailing list