GTK+ 4 Status Update. Matthias Clasen

Similar documents
The Past, Present, and Future of SWT

Vulkan: Architecture positive How Vulkan maps to PowerVR GPUs Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics.

Background Information About GTK+ and Related Libraries

EFL on Wayland. Rafael Antognolli October, 22th

Introduction to creating 3D UI with BeagleBoard. ESC-341 Presented by Diego Dompe

QtWayland. Creating Window Compositors with the QtWayland module

C SCI The X Window System Stewart Weiss

Moblin v2 SDK. Open Source Technology Center Presented by Bob Spencer

UI, Graphics & EFL. Carsten Haitzler Principal Engineer Samsung Electronics Korea Founder/Leader Enlightenment / EFL

CS193E Lecture 17. Multiple Document Windows OpenGL & Cocoa

Advanced Ambient Occlusion Methods for Modern Games

Designing Interactive Systems II

Visual HTML5. Human Information Interaction for Knowledge Extraction, Interaction, Utilization, Decision making HI-I-KEIUD

WPE WebKit. HTML5 user interfaces for embedded devices. Juan José Sánchez Penas Embedded Linux Conference Prague, October 2017

INTERNATIONALIZATION IN GVIM

What's new in GStreamer

CS450/550. Pipeline Architecture. Adapted From: Angel and Shreiner: Interactive Computer Graphics6E Addison-Wesley 2012

Simplifying Applications Use of Wall-Sized Tiled Displays. Espen Skjelnes Johnsen, Otto J. Anshus, John Markus Bjørndalen, Tore Larsen

WPE. Current Status & Future. Žan Doberšek.

Design Patterns IV. Alexei Khorev. 1 Structural Patterns. Structural Patterns. 2 Adapter Design Patterns IV. Alexei Khorev. Structural Patterns

Design Patterns IV Structural Design Patterns, 1

ArcGIS Runtime: Maximizing Performance of Your Apps. Will Jarvis and Ralf Gottschalk

Guile-GNOME: Atk. version , updated 9 December Bill Haneman Marc Mulcahy Padraig O Briain

CS 4300 Computer Graphics

WebKit GTK on (electronic) paper. Marco Barisione linux.conf.au 2009, Hobart

EFL at ELC 2016 A toolkit for developping efficient and attractive Uis on embedded devices

Review. Designing Interactive Systems II. Review. Base Window System. Apps UITK BWS GEL. 4-Layer Model Graphics and Event Library BWS GEL

CS230 : Computer Graphics Lecture 4. Tamar Shinar Computer Science & Engineering UC Riverside

Scintillating! A Modernized Text Editor for VA Smalltalk

The Wayland Display Server

Glamor Status Report. Keith Packard Open Source Technology Center Intel

User Guide. GLExpert NVIDIA Performance Toolkit

Real-Time Non- Photorealistic Rendering

Many rendering scenarios, such as battle scenes or urban environments, require rendering of large numbers of autonomous characters.

GLExpert NVIDIA Performance Toolkit

Object-Oriented Programming Design. Topic : Graphics Programming GUI Part I

Inside Biosphere3D The free digital globe from a developer prospect. Steffen Ernst

What's new in GTK+ 2.6

X11, X12, What next. And its companion: the ROOT GUI

Shrinath Shanbhag Senior Software Engineer Microsoft Corporation

McCLIM 0.01 user s manual. Robert Strandh

Theme System. Wisej Themes 1 OVERVIEW

What's new in GStreamer Land The last 2 years and the future

Rendering Objects. Need to transform all geometry then

CSS MOCK TEST CSS MOCK TEST III

Guile-GNOME: Atk. version , updated 2 September Bill Haneman Marc Mulcahy Padraig O Briain

CSC Graphics Programming. Budditha Hettige Department of Statistics and Computer Science

Experiences Developing a Wayland-Based Tizen IVI HMI. Ossama Othman

FLASH 5 PART II USER MANUAL

DEVELOPER DAY MONTRÉAL APRIL Copyright Khronos Group Page 1

Update on the open source browser space

Experiences Developing a Wayland Based IVI HMI. Ossama Othman 28 May 2013

Guile-GNOME: PangoCairo

View of the Google Drive of User root: His Google Drive contains a folder named Collaborative shared with 2 colleagues (Emmanuel and AllCases)

MultiTouch CornerStone Software Development. MultiTouch.fi, all rights reserved

Choosing free software graphical libraries for embedded devices

Quick Multitouch Apps using kivy and Python

Oct 26, 2017 The Complete Beginner?s Guide to Getting Started with Navigating, Modeling, Animating, Texturing, Lighting, Compositing and Rendering

Enhancing Traditional Rasterization Graphics with Ray Tracing. October 2015

... Output System Layers. Application 2. Application 1. Application 3. Swing. UIKit SWT. Window System. Operating System

Automatically generated type-safe GTK+ binding for Dylan

Moving Mobile Graphics Advanced Real-time Shadowing. Marius Bjørge ARM

Alexander Nyßen! itemis AG! Graphical Editing Framework Project Lead

Theme System: It allows modifying the site view and functionality. It includes images, stylesheet, template files and custom pages.

MPLAB Harmony Graphics Libraries Help

INDIAN LANGUAGE SUPPORT IN GNOME-TERMINAL. B.Tech Information Technology

Window Compositor Developer s Guide

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

Wayland IVI Extension

Artlantis training for new users

The Users Guide. and. API Reference

LPGPU2 Font Renderer App

Table of contents. Sliding Panels DMXzone.com

Achieving High-performance Graphics on Mobile With the Vulkan API


Google Map for Magento 2

David Talby March 21, 2006

Bonding with Pango Travis Griggs

The Shadow Rendering Technique Based on Local Cubemaps

Blis: Better Language for Image Stuff Project Proposal Programming Languages and Translators, Spring 2017

Vulkan and Animation 3/13/ &height=285&playerId=

How the Style Editor works

Vulkan Multipass mobile deferred done right

Cross-platform graphics with cairo

How GNOME Obsoleted its Enable Accessibility Setting. Alejandro Piñeiro

Qt + Maemo development

Embedded Linux UI Comparison. Tim Bird Senior Staff Software Engineer Sony Electronics

Reboot: Tizen Widget Framework. Hyun Ho, Kang Engineer Samsung Electronics. Copyright 2017 Samsung. All Rights Reserved.

Reinventing the Enlightenment Object System

A. Front Panel Design Lesson 4 Implementing a VI

Object Orientated Analysis and Design. Benjamin Kenwright

BORDERLESS AND BARRIER FREE

A Comparison between DirectFB and X11 Graphics Library

WebGL. Announcements. WebGL for Graphics Developers. WebGL for Web Developers. Homework 5 due Monday, 04/16. Final on Tuesday, 05/01

X and DPS. Juliusz Chroboczek. 27 February 2001, updated 30 October 2006

Lecture 11: Output 2. Fall UI Design and Implementation 1

API Background. Prof. George Wolberg Dept. of Computer Science City College of New York

Rendering. Converting a 3D scene to a 2D image. Camera. Light. Rendering. View Plane

STARCOUNTER. Technical Overview

Vulkan (including Vulkan Fast Paths)

Transcription:

GTK+ 4 Status Update Matthias Clasen

History 1998 1.0 2011 3.0 really the Gimp toolkit 1999 1.2 GObject 2002 2.0 client-side windows client-side decorations CSS touch, gestures GL rendering broadway, wayland Pango ATK cairo

Present 3.22 the final, stable 3.x series 3.90 since mid-2016 integrate GSK, fully GL/Vulkan based rendering build with meson modernize GDK APIs fully switch to event controllers composite widgets 4.0 2018?

Drawing in GTK+ 3 Label: hello world

Drawing in GTK+ 3 Label: hello world Create a cairo surface

Drawing in GTK+ 3 Label: hello world Call draw() on each widget

Drawing in GTK+ 3 Label: hello world Call draw functions to render CSS background, border, shadow

Drawing in GTK+ 3 Label: hello world Call Pango to render text

Drawing in GTK+ 3 Label: hello world Send the completed frame to the display server

Drawing in GTK+ 4 Label: hello world

Drawing in GTK+ 4 Container Shadow Color Label: hello world Call snapshot() on each widget to create render nodes

Drawing in GTK+ 4 Container Shadow Color Container Clip Shadow Border Label: hello world Create render nodes for CSS background, border, shadow

Drawing in GTK+ 4 Container Shadow Color Container Clip Shadow Border Label: hello world Shadow Glyphs Call snapshot functions to create render nodes for text

Drawing in GTK+ 4 Container OpColor Shadow Color Container OpLinearGradient OpBorder OpTexture OpInsetShadow Clip Shadow Border OpText Shadow Glyphs GSK translates render nodes into backend operations

Drawing in GTK+ 4 Texture Container OpColor OpColor Shadow Color Container OpLinearGradient OpBorder OpLinearGradient OpTexture OpInsetShadow Clip Shadow Border OpText Shadow Glyphs Glyph atlas Upload textures and use Pango to render glyphs

Drawing in GTK+ 4 OpColor OpLinearGradient OpBorder OpTexture OpInsetShadow OpText OpColor OpLinearGradient Send the render operations to the GPU

Render nodes in the Inspector

Input in GTK+ 3 X, Y Paned An event arrives

Input in GTK+ 3 X, Y Paned Route it by matching the window

Input in GTK+ 3 X, Y Paned ::button-press-event Emit event signals

Input in GTK+ 3 X, Y ::button-press-event Paned and propagate up

Input in GTK+ 4 X, Y Paned An event arrives

Input in GTK+ 4 X, Y Paned Route it by matching coordinates, top-down (capture)

Input in GTK+ 4 X, Y Paned and back up (bubble)

Input in GTK+ 4 X, Y Paned controller1 controller2 Pass the event to event controllers at each step

Composite Widgets in GTK+ 3 Custom drawing not the CSS box model Custom event handling Code duplication A spinbutton is an entry

Composite Widgets in GTK+ 4 Any widget can have children Widgets are close to CSS boxes Composition instead of subclassing A switch is composed of two labels a slider A spinbutton has an entry two buttons

What s done Vulkan renderer GL renderer New GDK apis Event controllers Composite widgets

What s left to do Write cool examples Complete API cleanups Expose shaders for applications Transformations for widgets Complicated widgets: treeview, textview

How you can help Write cool examples Port an application Convert custom widgets to new APIs Find what doesn t work, or is too complicated

Porting? Widgets are now visible by default gtk_box_pack_start/end has less arguments No more event->button

Heroes of GTK+ 4 Benjamin Otte Emmanuele Bassi Timm Bäder Carlos Garnacho Daniel Boles Alexander Larsson Chun-wei Fan Руслан Ижбулатов Jonas Ådahl

References GTK+ 4 roadmap: https://wiki.gnome.org/projects/gtk+/roadmap/gtk4 GTK+ sources: https://git.gnome.org/browse/gtk+/ GTK+ blog: https://blog.gtk.org/ GTK+ docs, migration guide: https://developer.gnome.org/gtk4/

Questions?

Thanks!