[Development] Touch Points Update

Francisco Ortega franciscoraulortega at gmail.com
Sat Jun 8 19:06:20 CEST 2013


Hello all,

I spoke to Oliver Wolf this past Monday (6/3/2013) and a few other members
(#qt-labs) about the qtbase/src/plugins/platforms dealing with Touch. Like
always, everyone is extremely helpful.

I started talking about Windows having a few additional data members for a
given touch point. Most importantly, I spoke about the unsigned long ID
given by windows, which is not the same. Without going into much
explanation here, I spoke in IRC that I used that unique ID to store touch
points to a database to later reply them. The current id for a windows app
running Qt does not does the same, since it can go from 0,1,2... and later
0,1,2,3 in the same moment. As most of you may guess, I could do something
to fix this for me.

However, I was thinking at a larger scale. Therefore, I went and check the
three platforms that I have accessed to. Windows, Linux (Debian 7), and Mac
OS X 10.8. Windows is the only platform that I know well.

With the search, I found that Linux and MacOSX has what is already given by
Qt. x,y,state. Linux also has a timestamp, which I didn't no see in
QTouchEvents::TouchPoint (in linux is under time, but I think is a
timestamp). Windows has the timestamp as well.

Windows also has Cx,Cy which is the contact area. Not the most useful data
at least with my Multi-Touch monitors (3M) because it gives me two
values... but nevertheless, a value that is no there.

With all this preamble, I would like to get to the meet of the change that
I will submit and see if it gets reviewed. First, let me tell you what I
discarded. I hope your feedback about all.

(First ideas, that I decided not to go for)

1) Returning a void * to a platform structure, it is not a good idea, so is
out.
2) Changing the current id (int) to unsigned long can have multiple
unintended consequences to current code, that is best not to do it. So is
out.
3) setting the platform id (windows) to the int by moding with a "MAX_INT"
does not feel right  to me.

What I will change in the code and submit when ready is the following:

1) Create an interface to used a platformSpecificData() that will be the
same across all Operating Systems. For example, say that we have
data.cxfor mac os x. Then this will simply be 0, the data.flags will
specify if
the data is available.

I hope to receive feedback. I'm not sure if I can do it this month, since I
have to submit a paper to a conference, but I will try. if not next week.
Because the change may be more significant, is probably that even if review
and accept it, it will take a while to make it to the stable release.
However, I think this is the best option.

Once again, I thank you for all the feedback and continue support here and
in Irc.

Other contributions in the future that I hope to be involved is the "Leap
Motion" which I will be getting soon and some MEMS that I have already
received. I like input and please consider me for any work you may need.

Thanks,
Francisco


Francisco R. Ortega
Ph.D. Candidate in Computer Science
Florida International University
http://www.FranciscoRaulOrtega.com
"No me quieras por que gane, necesito que me quieras para ganar" -- Marcelo
Bielsa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20130608/78e31c7c/attachment.html>


More information about the Development mailing list