ProtoVis Peter Sikachev Institute of Computer Graphics and Algorithms Vienna University of Technology
Peter Sikachev 1 Overview Introduction Language Design Integration into VolumeShop Plugin Discussion
Peter Sikachev 2 Overview Introduction Language Design Integration into VolumeShop Plugin Discussion
Peter Sikachev 3 Tool Selection Criterias expressiveness (“Can I build it?”) efficiency (“How long will it take?”) accessibility (“Do I know how?”)
Peter Sikachev 4 High-level vs Low-level API’s OpenGL, Java2D, Processing Higher-level tools Flash, Piccolo Visualization Toolkits InfoVis Toolkit, Improvis, Prefuse, Flare Consumer software Excel, Google Spreadsheets
Peter Sikachev 5 High-level vs Low-level API’s Only imperative methods for primitives Higher-level tools Visualization Toolkits Consumer software
Peter Sikachev 6 High-level vs Low-level API’s Only imperative methods for primitives Higher-level tools Still no visualization abstractions Visualization Toolkits Consumer software
Peter Sikachev 7 High-level vs Low-level API’s Only imperative methods for primitives Higher-level tools Still no visualization abstractions Visualization Toolkits Customized vis → software engineering Even simple tasks might be hard to implement Consumer software
Peter Sikachev 8 High-level vs Low-level API’s Only imperative methods for primitives Higher-level tools Still no visualization abstractions Visualization Toolkits Customized vis → software engineering Even simple tasks might be hard to implement Consumer software Limited to what is in GUI
Peter Sikachev 9 Overview Introduction Language Design Integration into VolumeShop Plugin Discussion
Peter Sikachev 10 Marks Basic grammar primitive Generated once per associated datum Mapping visual properties (position, color etc)
Peter Sikachev 11 Panels Mark containers Marks replication
Peter Sikachev 12 Other Stuff Event handlers: special properties for adding interactivity Anchors: related marks, positioned Inside/nearby (e. g., labels)
Peter Sikachev 13 Example
Peter Sikachev 14 Example
Peter Sikachev 15 Example
Peter Sikachev 16 Example
Peter Sikachev 17 Example
Peter Sikachev 18 Example
Peter Sikachev 19 Example
Peter Sikachev 20 More Examples
Peter Sikachev 21 Overview Introduction Language Design Integration into VolumeShop Plugin Discussion
Peter Sikachev 22 Motivation Rich InfoVis sample gallery Independency from data generation Cheap interactivity via JavaScript
Peter Sikachev 23 Challenges Integration with Qt and VolumeShop Dual way data and event transfer GUI exporting (not discussed)
Peter Sikachev 24 Challenges Integration with Qt and VolumeShop Dual way data and event transfer GUI exporting (not discussed)
Peter Sikachev 25 Porting No stable C++ port Using QWebView Rendering an html page with JavaScript, running on it
Peter Sikachev 26 Challenges Integration with Qt and VolumeShop Dual way data and event transfer GUI exporting (not discussed)
Peter Sikachev 27 Data Transfers Update data visualized by ProtoVis Get feedback from ProtoVis event handlers
Peter Sikachev 28 Data Transfers Update data visualized by ProtoVis Get feedback from ProtoVis event handlers
Peter Sikachev 29 Data Transfers
Peter Sikachev 30 Data Transfers Update data visualized by ProtoVis Get feedback from ProtoVis event handlers
Peter Sikachev 31 Data Transfers
Peter Sikachev 32 Data Transfers Calling ProtoVis functions Using QWebFrame::addToJavaScriptWindowObject and QWebFrame::evaluateJavaScript Calling C++ functions from ProtoVis event handlers Introduce class, inheriting QObject with functions, defined as slots
Peter Sikachev 33 Event Handling Other plugins might need to know about the events, fired by ProtoVis Special events are fired for the shared resource (shader)
Peter Sikachev 34 Overview Introduction Language Design Integration into VolumeShop Plugin Discussion
Peter Sikachev 35 ProtoVis vs Others a) ProtoVis b) Processing c) Flare
Peter Sikachev 36 Personal Experience Suited for static data and static windows Can’t use convenient in-built conversions Data is transferred as a function Not for large datasets Prefilter data Might be not an issue in Java port Very convenient interaction Tricky in debugging Can use browser Data, coming from application
Peter Sikachev 37 Questions?