34
Accelerating UI development

Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Accelerating UI development

Page 2: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

State of the industry

Page 3: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Product teams today

Graphical-minded engineerOne person does all

Page 4: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Serialized workflow that leads to product delays or shipping with suboptimal UI

Traditional workflow

Page 5: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Product teams today

Inside UI teamDesigners and developers together

Graphical-minded engineerOne person does all

Outsourced UI teamInterfaces with your team

Page 6: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Demo

Page 7: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Fundamentals

Page 8: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Connector

• Graphically define events and payload between UI and backend

• Export C/C++ headers for event definition to prevent version issues

• Quickly verify events and data in UI without any code or need to build a simulator

Page 9: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Communicating with the UI

Page 10: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Application DevelopmentStoryboard Designer

Export To Model

DESKTOP - Development

EMBEDDED TARGET - ExecutionTransfer model file and asset content (i.e images, fonts) to embedded target system.No Code Generation Performed

Interpret ModelStoryboard Engine (executable)

Page 11: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Parallel workflow

Parallel workflow streamlines work between roles

Page 12: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

About Crank Software

Page 13: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard• Runtime Engine Model• Event Driven • Enforces UI architecture best practices

Architecture and Scalability

Adopt a clean architecture, separating the UI from the backend

Page 14: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

OpenGL ES Support

• Fully accelerated OpenGL ES graphics pipeline

• Combine and animate 3D models within 2D UI elements

• Built in 3D screen transitions• Support for custom shaders

Page 15: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Insight and Testing

Storyboard is completely event driven and this makes testing a much simpler process. To assist in the effort even further Storyboard provides some helpful plugins including :

• Event Capture / Playback • Screen Capture• Performance Tracing• Debug Logging

Page 16: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Why Storyboard is different

Built exclusively for embedded systems to drive performance and enhance user experience

Supports designers and engineers equally with functionality and workflow

Embraces design change and eases iterative development

Page 17: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Suite

Page 18: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

The designer’s assets are pulled directly into Storyboard and ready to apply movement and behavior

Pulling in assets - Storyboard

Page 19: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

• Photoshop content can be brought directly into Storyboard

• All content from the PSD is applied to the model within seconds

• Hierarchy• Naming• Position• Fonts• Visibility

• Designers are left right where they left off in Photoshop with a very familiar layout

Photoshop import

Page 20: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Application Architecture

Page 21: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Application Container for the entire user interface and is a broker for all visual user interaction

Storyboard Application Architecture

Screen Visible area on display. Only one screen is visible at a time.

Layer One or more layers are composited to make up a screen. Layers can be used on more than one screen and may map directly to hardware

Control A clipped area that renders content (ie images, text, fill color). Rendering is performed using render extension pluginsEach component can have data and actions associated with it

Application

Data

Action(s)

Screen/Layers

Data

Action(s)

ControlsActions Name Text Font Image ...

Page 22: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Demo

Page 23: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Iterative Design• Design change is inevitable and leads to richer user experience• Update designs as often as required with Photoshop Re-import functionality

Page 24: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

• Compare the UI model the same as source code

• Structured presentation matches design structure

• See all attribute changes with a comparison view

• Merge all content or cherry pick individual changes

Graphical compare

Page 25: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Demo

Page 26: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Scalable• Optimized for multiple embedded platforms• From MCUs to high-performance MPUs, designed to maximize efficiency

Page 27: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Scalability

Page 28: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Target Deployment Decision Tree

OS?

Load From File System?

Draw ImagesFrom Flash?

Exe DistributionModel → Filesystem Assets → FilesystemRaw Images → RAMPlugins → DynamicLauncher → Executable

RT ExecutiveFreeRTOS/MQX/UCOS/ThreadX

Full OS (RTOS/Desktop)Linux/QNX/Windows/WinCE/MacOS

SDK DistributionModel → FilesystemAssets → FilesystemRaw Images → RAMPlugins → StaticLauncher → C Function

SDK DistributionModel → Code Assets → CodeRaw Images → FlashPlugins → StaticLauncher → C Function

No (ie SBVFS)Yes

SDK DistributionModel → Code Assets → CodeRaw Images → RAMPlugins → StaticLauncher → C Function

YesNo

High RAM, Low Flash/Storage usage

No Recompile on Model Change Recompile on Model Change

Low RAM, High Flash usage

No Recompile on Option Change Recompile on Engine Option Change

Copyright Crank Software Inc. 2018

Page 29: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Engine: process(sbengine)

Model*.gapp

Assets.lua,.png,.ttf

Timer plugin (*.so)

Animation plugin (*.so)

Lua plugin (*.so)

Render plugin (*.so)

Content Distribution● Model stored in filesystem● Assets stored in filesystem● Plugins loaded dynamically as shared objects from filesystem (*.dll, *.so)● Images decoded from compressed format to display format in RAM

Executable Distribution: Windows/Linux/QNX/MacOS/WinCE

OtherProcessesOtherProcessesOtherProcessesOtherProcessesOtherProcessesOtherSystemProcesses ...

Page 30: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Engine: task(sbengine_task)Model

*.gapp

Assets.lua,.png,.ttf

Timer plugin (*.a)

Animation plugin (*.a)

Lua plugin (*.a)

Render plugin (*.a)

Content Distribution● Model stored in filesystem● Assets stored in filesystem● Plugins linked to sbengine_task; sbengine_task linked into system image● Images decoded from compressed format to display format in RAM

SDK Distribution: FreeRTOS/MQX/UCOS/ThreadX/… WITH Filesystem

BSP

main()… driver init… os init… sbengine_task

Other tasks ...

Page 31: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Storyboard Engine: task(sbengine_task)

sbengine_model.h

Model- char sb_model = [...]

Assets- sbvfs_get_resource_roots()

Timer plugin (*.a)

Animation plugin (*.a)

Lua plugin (*.a)

Render plugin (*.a)

Content Distribution● Model stored in code: global variable● Assets stored in code: Storyboard Virtual Filesystem (sbvfs)● Plugins linked to sbengine_task; sbengine_task linked into system image● Images:

○ Stored in flash compressed (smaller storage) and decoded to RAM○ Stored in flash decoded (larger storage) and used in place (may be slower)

SDK Distribution: FreeRTOS/MQX/UCOS/ThreadX/… NO Filesystem

BSP

main()… driver init… os init… sbengine_task

Other tasks ...

Page 32: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Demo Target

Page 33: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

How is Storyboard Different?

Designer Oriented

IterativeDesign

Team Collaboration

Built for Embedded

Page 34: Accelerating UI development · Storyboard Engine: task Model (sbengine_task) *.gapp Assets.lua,.png,.ttf Timer plugin (*.a) Animation plugin (*.a) Lua plugin (*.a) Render plugin (*.a)

Q & A