{"id":30936091,"url":"https://github.com/mkalten/tuio11_cpp","last_synced_at":"2025-09-10T16:05:25.465Z","repository":{"id":22919795,"uuid":"26268702","full_name":"mkalten/TUIO11_CPP","owner":"mkalten","description":"C++ TUIO 1.1 reference implementation","archived":false,"fork":false,"pushed_at":"2022-11-21T15:46:29.000Z","size":23205,"stargazers_count":26,"open_issues_count":5,"forks_count":29,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-07-31T22:57:55.010Z","etag":null,"topics":["c-plus-plus","library","tuio","tuio-client","tuio-simulator","tuio-tracker"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkalten.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-06T12:20:47.000Z","updated_at":"2024-06-12T00:27:49.000Z","dependencies_parsed_at":"2022-08-21T16:31:18.115Z","dependency_job_id":null,"html_url":"https://github.com/mkalten/TUIO11_CPP","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mkalten/TUIO11_CPP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkalten%2FTUIO11_CPP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkalten%2FTUIO11_CPP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkalten%2FTUIO11_CPP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkalten%2FTUIO11_CPP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkalten","download_url":"https://codeload.github.com/mkalten/TUIO11_CPP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkalten%2FTUIO11_CPP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274486428,"owners_count":25294473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","library","tuio","tuio-client","tuio-simulator","tuio-tracker"],"created_at":"2025-09-10T16:05:06.222Z","updated_at":"2025-09-10T16:05:25.456Z","avatar_url":"https://github.com/mkalten.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TUIO C++ Reference Implementation and Demo Applications\n\nCopyright (c) 2005-2017 [Martin Kaltenbrunner](http://modin.yuri.at/). \nThis software is part of \n[reacTIVision](http://reactivision.sourceforge.net/), an open source \nfiducial tracking and multi-touch framework based on computer vision. \nFor further information on the TUIO protocol and framework, please visit \n[TUIO.org](http://www.tuio.org/)\n\n## Demo Applications:\n\nThis package contains two demo applications which are able to receive \nTUIO messages from any TUIO enabled multitouch or object tracking \napplication.\n\n*   **TuioDump**: prints the TUIO events directly to the console\n*   **TuioDemo**: graphically displays the object and cursor states on \nthe screen\n*   **SimpleSimulator**: a simple TUIO simulator that demonstrates the \nuse of the TuioServer class\n\nYou can use these TUIO client and server demo applications for debugging \npurposes, and using them as a starting point for the development of you \nown open source C++ applications implementing the TUIO protocol.\n\nPressing F1 will toggle FullScreen mode within the TuioDemo,  \npressing ESC or closing the Window will end the application.  \nHitting the V key will print the received TUIO events to the console.\n\nDragging the mouse will generate TUIO cursor events within the \nSimpleSimulator.  \nPressing the SHIFT key while clicking, will produce \"sticky\" cursors.  \nPressing the CTRL key while clicking, will create \"joint\" cursors.  \nHitting the V key will print the generated TUIO events to the console.  \nHitting the R key will reset the SimpleSimulator.\n\nKeep in mind to make your graphics scalable for the varying screen and \nwindow resolutions. A reasonable TUIO application will run in fullscreen \nmode, although the windowed mode might be useful for debugging purposes \nor when working with the Simulator.\n\n## Application Programming Interface:\n\nFirst you need to create an instance of **TuioClient**. This class is \nlistening to TUIO messages on the specified port and generates higher \nlevel messages based on the object events. The method **connect(true)** \nwill start the TuioClient in a blocking mode, simply calling \n**connect()** will start the TuioClient in the background. Call \n**disconnect()** in order to stop listening to incoming TUIO messages.\n\nYour application needs to implement the **TuioListener** interface, and \nhas to be added to the TuioClient in order to receive TUIO callback \nmessages.\n\nA TuioListener needs to implement the following methods:\n\n*   **addTuioObject(TuioObject \\*tobj)** this is called when an object \nbecomes visible\n*   **removeTuioObject(TuioObject \\*tobj)** an object was removed from \nthe surface\n*   **updateTuioObject(TuioObject \\*tobj)** an object was moved on the \ntable surface\n\n*   **addTuioCursor(TuioCursor \\*tcur)** this is called when a new cursor \nis detected\n*   **removeTuioCursor(TuioCursor \\*tcur)** a cursor was removed from the \nsurface\n*   **updateTuioCursor(TuioCursor \\*tcur)** a cursor was moving on the \ntable surface\n\n*   **addTuioBlob(TuioBlob \\*tblb)** this is called when a new blob is \ndetected\n*   **removeTuioBlob(TuioBlob \\*tblb)** a blob was removed from the \nsurface\n*   **updateTuioBlob(TuioBlob \\*tblb)** a cursor was moving on the table \nsurface\n\n*   **refresh(TuioTime bundleTime)** this method is called after each \nbundle, use it to repaint your screen for example\n\nTypically you will need just the following code to start with:\n\n\u003cpre\u003eMyTuioListener listener; // defines a TuioListener\nTuioClient client(port); // creates the TuioClient\nclient.addTuioListener(\u0026listener); // registers the TuioListener\nclient.connect(); // starts the TuioClient\n\u003c/pre\u003e\n\nEach object or cursor is identified with aunique session ID, that is \nmaintained over its lifetime. Additionally each object carries fiducial \nID that corresponds to its attached fiducial marker number. The finger \nID of the cursor object is always a number in the range of all currently \ndetected cursor blobs.\n\nThe **TuioObject**, **TuioCursor** and **TuioBlob** references are \nupdated automatically by the TuioClient and are always referencing the \nsame instance over the object lifetime. All the TuioObject, TuioCursor \nand TuioBlob attributes are encapsulated and can be accessed with \nmethods such as **getX()**, **getY()** and **getAngle()** and so on. \nTuioObject, TuioCursor and TuioBlob also have some additional \nconvenience methods for the calculation of distances and angles between \nobjects. The **getPath()** method returns a Vector of TuioPoint \nrepresenting the movement path of the object.\n\nAlternatively the TuioClient class contains some methods for the polling \nof the current object and cursor state. There are methods which return \neither a list or individual object and cursor objects. The TuioObject, \nTuioCursor and TuioBlob classes have been added as a container which \nalso can be usedby external classes.\n\n*   **getTuioObjects()** returns a Vector\u003cTuioObject*\u003e of all currently \npresent TuioObjects\n*   **getTuioCursors()** returns a Vector\u003cTuioCursor*\u003e of all currently \npresent TuioCursors\n*   **getTuioBlobs()** returns a Vector\u003cTuioBlob*\u003e of all currently \npresent TuioCursors\n\n*   **getTuioObject(long s_id)** returns a TuioObject* or NULL depending \non its presence\n*   **getTuioCursor(long s_id)** returns a TuioCursor* or NULL depending \non its presence\n*   **getTuioBlob(long s_id)** returns a TuioBlob* or NULL depending on \nits presence\n\n## Building the Examples:\n\nThis package includes project files for Visual Studio and XCode as well \nas a simple Linux Makefile for building the example applications. The \nWin32 project already include the necessary libraries, to build the GUI \nexample on Linux make sure you have the SDL2, OpenGL and GLUT libraries \nand headers installed on your system, the latest version 2.0.5 is \nrecommended. On Mac OS X you need to install the SDL2 Framework to \n/Library/Frameworks.\n\n## License:\n\nThis library is free software; you can redistribute it and/or modify it \nunder the terms of the GNU Lesser General Public License as published by \nthe Free Software Foundation; either version 3.0 of the License, or (at \nyour option) any later version.\n\nThis library is distributed in the hope that it will be useful, but \nWITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser \nGeneral Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public License \nalong with this library; if not, write to the Free Software Foundation, \nInc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA\n\n## References:\n\nThis package uses the [oscpack](http://www.rossbencina.com/code/oscpack) \nOpenSound Control library, and the [SDL](http://www.libsdl.org/) \ngraphics library.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkalten%2Ftuio11_cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkalten%2Ftuio11_cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkalten%2Ftuio11_cpp/lists"}