Progress with ROOT on iPad.. iOS from programmers POV: iOS is Unix, but... No X11 (no gVirtualX, no ROOT's GUI). No custom shared libraries (only system.

Slides:



Advertisements
Similar presentations
Välkommen till Sommarkollo Introduce XNA Game Studio Express Make A Game!
Advertisements

FireMonkey Deep Dive The Next Generation of Business Application Development.
Essentials of Interactive Computer Graphics: Concepts and Implementation K. Sung, P. Shirley, S. Baer Intro and Chapter 1 Goals Give student some idea.
Sketchify Tutorial Graphics and Animation in Sketchify sketchify.sf.net Željko Obrenović
Friday, August 29, 2014 CSCI 351 – Mobile Applications Development.
Ch 1 Intro to Graphics page 1CS 367 First Day Agenda Best course you have ever had (survey) Info Cards Name, , Nickname C / C++ experience, EOS experience.
SE320: Introduction to Computer Games Week 8: Game Programming Gazihan Alankus.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
ARIA + HTML5 Steve Faulkner & Hans Hillen. DIVING IN TO SOME HTML5 Details/summary Dialog Spin button slider ARIA rules HTML/ARIA validation Tools.
Platforms for Learning in Computer Science July 28, 2005.
Moving ROOT Forward Balancing between stability and innovation Fons Rademakers CERN ACAT’11, 8-Sept, 2011, Brunel Univ., U.K..
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
Week 4-5 Java Programming. Loops What is a loop? Loop is code that repeats itself a certain number of times There are two types of loops: For loop Used.
Sept 11, 2003ROOT Day1, Suzanne Panacek39 ROOT An object oriented HEP analysis framework. Day 1.
ROOT An object oriented HEP analysis framework.. Computing in Physics Physics = experimental science =>Experiments (e.g. at CERN) Planning phase Physics.
CS413: Java Programming language Applications Applets
CS 480/680 Computer Graphics Course Overview Dr. Frederick C Harris, Jr. Fall 2012.
- Circle markers produced by TAsimage: They do not match was is produced on screen. The line width is too thick. Some other markers need to be tune a bit.
-Problem with the Fill Color/Style on PS: 2 problems pending. Need to be fixed soon. Working on it. -Make some “session capture”: To show some “Typical.
BUILDING RICH MEDIA ELEMENTS. Design Decisions Based on Design Specification  Following the design specification will ensure that the application is.
CS378 - Mobile Computing App Project Overview. App Project Teams of 2 or 3 students Develop an Android application of your choosing subject to instructor.
Bertrand Bellenot ROOT Users Workshop Mar ROOT GUI Builder Status & Plans ROOT & External GUI World MFC, FOX, Qt, PVSS… Snapshot of the Future.
JRN 302: Introduction to Graphics and Visual Communication - Raster and Vector Files Tuesday, 9/8/15.
Introduction to Matlab & Data Analysis
CARLSON SOFTWARE CONFERENCE DANIEL V. SYPERSMA VICTOR GRAPHICS.
OpenGL Shading Language (Advanced Computer Graphics) Ernest Tatum.
CSC 461: Lecture 41 CSC461: Lecture 4 Introduction to OpenGL Objectives: Development of the OpenGL API OpenGL Architecture -- OpenGL as a state machine.
THttpServer class Sergey Linev (GSI). Some history Development was inspired by JSRootIO why not achieve similar functionality with online ROOT application?
Advanced Computer Graphics Depth & Stencil Buffers / Rendering to Textures CO2409 Computer Graphics Week 19.
3461A Readings from the Swing Tutorial. 3461A Overview  The follow is the Table of Contents from the trail “Creating a GUI with JFC/Swing” in the “The.
Object Oriented Software Development 9. Creating Graphical User Interfaces.
1 Introduction to Computer Graphics SEN Introduction to OpenGL Graphics Applications.
Folio3 IPhone Training Session 1 Presenter: Imam Raza.
ROOT Team Meeting October 1 st 2010 GUI thinking and testing ideas OpenGL GUI Root Team meeting 01/10/2010.
CS 480/680 Intro Dr. Frederick C Harris, Jr. Fall 2014.
به نام خدا تنظیم کننده : فرانه حدادی استاد : مهندس زمانیان تابستان 92.
Using Xcode A Beginner’s Tutorial Erin Green. This tutorial will walk you through Xcode, a software development tool for Apple’s iOS applications – We.
Making Python Pretty!. How to Use This Presentation… Download a copy of this presentation to your ‘Computing’ folder. Follow the code examples, and put.
Introduction to Processing. 2 What is processing? A simple programming environment that was created to make it easier to develop visually oriented applications.
1 Creating Windows GUIs with Visual Studio. 2 Creating the Project New Project Visual C++ Projects Windows Forms Application Give the Project a Name and.
ROOT’s graphics on iOS. ROOT’s graphics (general scheme):
Image Synthesis Rabie A. Ramadan, PhD 4. 2 Review Questions Q1: What are the two principal tasks required to create an image of a three-dimensional scene?
Computer Graphics: Programming, Problem Solving, and Visual Communication Steve Cunningham California State University Stanislaus and Grinnell College.
Graphics Concepts CS 2302, Fall /17/20142 Drawing in Android.
QPE A Graphical Editor for Modeling using Queueing Petri Nets Christofer Dutz.
Monday, August 31, 2012 CSCI 333 – Systems Programming.
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
GTK+
S.Linev: Go4 - J.Adamczewski, H.G.Essel, S.Linev ROOT 2005 New development in Go4.
GLAST 1 Event Display VRVS meeting Glast software collaboration Pisa experience with ROOT N Lumb and G Spandre INFN-Pisa.
1 G4UIRoot Isidro González ALICE ROOT /10/2002.
LCG AA Meeting 30 June 2004 Ilka Antcheva Graphics User Interface in ROOT.
Customizing Share Document Previews Will Abson Senior Integrations Engineer and Share Extras Project Lead
丁建文 國立高雄應用科大資管系副教授 兼任計網中心軟體發展組組長 跨平台行動應用軟體開發技術 : HTML5 & Mobile JavaScript Framework 暨南大學.
Lesson 1 – Getting Started with App Inventor
The New Drawing Core State-of-the-Art Vector Graphic With OpenOffice.org Armin Le Grand, Sun Microsystems Herbert Duerr, Sun Microsystems Thorsten Behrens,
CS 501: Software Engineering Fall 1999 Lecture 23 Design for Usability I.
GUI plans of work Revisit (reimplement) a new TreeViewer, possibly based on something like Viewpoints (see next slide) (
Chapter 2: Operating-System Structures
Goals Give student some idea what this class is about
Prototyping.
Introduction to OpenGL
OpenGL: (for DEV may be…)
CSCI 351 – Mobile Applications Development
.NET and .NET Core 7. XAML Pan Wuming 2017.
3D applications in Delphi
Computer Graphics Introduction to Shaders
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
Introduction to OpenGL
Presentation transcript:

Progress with ROOT on iPad.

iOS from programmers POV: iOS is Unix, but... No X11 (no gVirtualX, no ROOT's GUI). No custom shared libraries (only system libraries), only static libraries for user (no CINT???). All ROOT is one static libROOT.a. Objective-C/Objective-C++ to create native GUI. Rich set of libraries and frameworks: CoreGraphics, CoreFoundations, CoreText, CoreAnimation, UIKit, GLES, etc. etc. Very specific GUI, different from Windows/X11/MacOS X. Fingers instead of mouse, touches instead of clicks, no cursor!

iOS, Mac OS, GLES related tasks: Port ROOT's non-GUI graphics to iOS Write ROOT-based native applications for iOS: a) demo of ROOT's graphics on iOS; b) browser for ROOT's files; c) components to support users, who want to develope for iOS with ROOT. Port our OpenGL code to GLES Native VirtualX back-end for Mac OS X HPC: head coupled perspective and its application for our Eve and OpenGL code

1. ROOT's non-GUI graphics (June): Mainly based on TVirtualPad interface (gPad). TPad/TCanvas internally calls TVirtualPadPainter methods (X11/Win32 GDI/OpenGL under the hood). To port it you can: re- implement TVirtualPad or extend TPad and implement TVirtualPadPainter for specific platform. I: implemented IOSPad: to keep the code as simple and clean as possible (TPad is already difficult to support); to add iOS- specific algorithms and extensions (not required in standard pad); to avoid TCanvas loop (TPad is a base for TCanvas, but it strongly depends on TCanvas (!!!). So IOSPad is responsible for primitive management and coordinate conversions, it also accepts all calls from the graphical primitives. implemented IOSPainter to do actual painting.

Graphics: implementation 2D graphics on iOS can be done by GLES or Quartz 2D (UIKit also). GLES has several problems:  No tesselation (required to draw polygons and render text)  No text rendering  No built-in anti-alisaing for lines and polygons. Quartz 2D:  Very rich 2D API (paths, strokes, blending, gradients, etc.)  Advanced text rendering  No problems with any polygons  Anti-aliasing  Can draw to a window, to bitmap, to PDF (the same code).  etc. etc. So we decided to use Quartz 2D.

The first version (middle of June) worked in iOS simulator:

With CoreText (font metrics were improved, screenshots from real device)

Problems(2D graphics): Quartz (so cool) has nothing to work with font metrics (required by all ROOT's text primitives - labels, titles, pavestats etc. So text is now done by CoreText framework (and attributed strings from CoreFoundation framework). There is no Symbols font, used by ROOT. Custom fonts do not work for me at the moment (to be investigated) and they are very slow the first time you try to use such font (probably, iOS is doing some caching). Metrics are still not ideal. Optimize fill patterns (use bitmaps).

2. GUI on iOS - tools: UIKit (Cocoa Touch) - object oriented libraries, written in Objective-C, to be used from Objective-C or Objective-C++ (mixture of C++ and Obj-C). Model-view-controller pattern everywhere, reference counting everywhere. _VERY_ strange method names :) and memory management of stone age :) InterfaceBuilder to create user interface (Apple's analogue for QT-builder or ROOT's GUI builder, _VERY_ unusuall :) ). Mixture of CoreGraphics, CoreFoundation, QuartzCore and etc. libraries (unfortunately, you can not limit yourself with one UIKit, you have to use all this zoo of libraries).

Application on iOS consits of: UIApplication Run loop (done by UIKit) Window One or several controller objects Views, managed by controllers (views are rectangular areas, roughly speaking similar to TPad, but they contain not TObjects, but other views - widgets or sub-views).

The first application: 'Tutorials'

"Tutorials": Split-view based application. Has several demos (something like demos.C from $ROOTSYS/tutorials) Supports zooming and scrolling (pinch gesture, taps, pan) Supports picking (initial version) Has editor prototype - in a popover window. 3D objects can be rotated with pan gesture Different animations. Mainly is a testbed for different features.

Problems: picking ROOT's picking requires very high precision, pixels and you are not able to pick a histogram. Touches are very different from click - actual touch coordinates are always different ( pixels) from what you expect.

Picking from IOSPad POV:

Extensions to Pad to visualize picking:

ROOT browser for iPad: Based on navigation controller and view hierarchie: top view to open/close select ROOT files (using TFile and TWebFile) view with file contents (with thumbnails for objects, contained in a file) detailed object view with IOSPad to draw object and editor to modify its properties (potentially with fit panel and etc.). This application is a simplified iOS mixture of TCanvas (with editor) and TBrowser (1% of TBrowser, of course :))

RootFileController and its view:

FileContents controller and its view:

ROOTObjectController and its view:

Editor (iOS version of gedit): first versions

Editor (current version)

Problems to solve: UIScrollView is not good enough and works incorrectly for my browser. I have to develop a custom scroll-view. Work with files: big files, error handling, big number of objects, etc. Custom widgets and controls required for editors. Many editors to implement (I have only editors for TAttLine, TAttFill, TPad. Bugs :)

3. GLES (now only plans and estimation) GLES is a sibling of OpenGL, but it's very different from OpenGL 1.5 (Matevz estimate our OpenGL usage as it's a version 1.5): no fixed pipeline, it has to be written in GLSL (shaders). No display lists, no immediate mode (glVertex calls), we have to use vertex arrays or vertex buffer objects everywhere. GL painters for histograms I'll port easily, it will not take more than 3 weeks. Eve/GL-viewer part will be more complex.

4. VirtualX back-end for Mac OS X At the moment I can not estimate the time required. Will be Cocoa based (Objective-C++), since alternative - Carbon - is obsolete and deprecated (and there is no 64-bit version). Will reuse the code for iOS (since it's also Cocoa and Objective-C + Quartz and CoreXXX libraries).

5. HCP Main complexity is in (as I understand) pattern recognition methods and computer vision: using frontal camera (on iPad, or laptop, or external camera) a program has to trace head position in space and adjust perspective of 3D picture accordingly. I do not know at the moment, how difficult it is.