Giter VIP home page Giter VIP logo

ultralight's Introduction

Website | Chat on Discord! | Browse C++ API | Browse C API | Support Docs | Twitter

๐ŸŽฎ Discord Chat

Got a question about Ultralight? Chat with us on Discord!

โญ About

Ultralight makes it easy for C/C++ developers to seamlessly integrate web-content into games and desktop apps.

Use our lightweight, high-performance renderer to display HTML/JS/CSS on a variety of platforms and hardware targets.

Key Features

1. โšก Modern HTML/JS/CSS Support:
Based on WebKit, Ultralight enjoys many of the same cutting-edge web features as Apple's Safari browser, simplifying development and reducing production costs.
2. โœจ Powerful and Lightweight:
Thanks to its highly-customizable CPU and GPU renderers, Ultralight offers developers unprecedented control over performance and memory usage-- making it the go-to choice for users who demand speed in constrained environments.
3. ๐Ÿงฉ Cross-Platform Compatibility:
With support for Windows, macOS, Linux, Xbox, PS4, and PS5 (and ARM64 coming in 1.4), Ultralight ensures your content displays smoothly and consistently on a wide range of platforms and hardware targets.
4. ๐Ÿ” Deep C/C++ and JavaScript Integration:
Ultralight facilitates seamless C/C++ and JavaScript integration through direct access to the JavaScriptCore API. Expose native state to web pages, extend JavaScript classes, define C/C++ callbacks, and more.
5. ๐Ÿ”ง Low-Level Customization:
Ultralight allows developers the ability to override platform-specific functionality-- granting control over such things as file-system access, clipboard management, font loading, and more to suit the unique needs of each target environment.

๐Ÿ‘พ For Game Developers

Developed in collaboration with top AAA game studios, Ultralight is engineered to display high-performance web-content across a diverse set of hardware targets and game engine environments.

Choose between our CPU renderer for fast, reliable rendering or our customizable GPU renderer for unparalleled animation performance.

โ†’ Learn more by visiting our Game Integration Guide.

๐Ÿ–ฅ๏ธ For Desktop-App Developers

Get the best of both worlds-- save time by building your front-end with HTML/CSS/JS while retaining the power and performance of C/C++.

Embed the renderer directly within your existing run loop or leverage our AppCore framework to do all the heavy lifting for you, offering convenient native window management and accelerated rendering.

โ†’ Learn more by visiting our Desktop App Guide.

๐Ÿ›๏ธ Architecture

Ultralight is a platform-agnostic port of WebKit for games and desktop apps.

Portions of the library are open-source, here's how the library is laid out:

Description License Source Code
UltralightCore Low-level graphics renderer Proprietary (Available with license)
WebCore HTML layout engine (WebKit fork) LGPL/BSD ultralight-ux/WebCore
Ultralight View, compositor, and event logic Proprietary (Avaiable with license)
AppCore โœจ Optional, desktop app runtime LGPL ultralight-ux/AppCore

๐Ÿš€ Dual High-Performance Renderers

We offer two different renderers for integration into a variety of target environments.

โ‡๏ธ CPU Renderer โœณ๏ธ GPU Renderer
  • Fast, lightweight, and easy to integrate.
  • Renders to a 32-bit BGRA pixel buffer.
  • Based on Skia, accelerated via multi-threaded SIMD.
  • See the Game Integration Guide for more info.
  • High-performance, customizable, and portable.
  • Renders on the GPU to a texture.
  • Accelerated via tesselated geometry and pixel shaders.
  • See Using a Custom GPUDriver for more info.

๐Ÿ”’ Licensing

It's easy to license Ultralight in projects big and small.

๐Ÿ˜ Free License ๐Ÿ‘‘ Commercial License
  • Free for non-commercial use.
  • Free for commercial use by indie companies (< $100K annual revenue).
  • Full SDK available for all users, download and try now.
  • See LICENSE.txt for more info.
  • Paid licenses for commercial use.
  • Enterprise licensing, custom contracts, and volume discounts available.
  • Performance tools, extra configurations, and source code.
  • See our website for more info.

๐Ÿ‘€ Getting the Latest SDK

You can get the latest SDK for each platform below (contact us for Xbox, PS4, and PS5):

Getting Archived Binaries for a Specific Commit

Pre-built binares are uploaded to the following S3 buckets every commit:

๐Ÿ› ๏ธ Building the Samples

To build the samples in this repo, please follow the instructions here.

โ„น๏ธ Useful Links

Link URL
Join our Discord! https://chat.ultralig.ht
Docs / Getting Started https://docs.ultralig.ht
Browse C++ API https://ultralig.ht/api/cpp/1_3_0/
Browse C API https://ultralig.ht/api/c/1_3_0/
Follow Us on Twitter https://twitter.com/ultralight_ux

ultralight's People

Contributors

adamjs avatar lkingsford avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ultralight's Issues

View Component & Transparent Background

Summarize the Issue
View component does not support transparent background.

Steps to Reproduce
Create not full-screen View & Load page that contain body / html / * with transparent background attribute, in result will be white background in anyway.

Example:

Platform Info:

  • OS: Windows
  • SDK: 0.9.*
  • GPU: GL / DirectX

Windows SDK sample doesn't work under Parallels 13.3.2 (on Mac)

This is from SDK 0.9 I tried to run Browser sample on win10 under parallels.

It complains about not being able to create a texture and then crashes.

void GPUDriverD3D11::CreateTexture(uint32_t texture_id,
  Ref<Bitmap> bitmap) {

...

 if (FAILED(hr)) {
    MessageBox(nullptr,
      L"GPUDriverD3D11::CreateTexture, unable to create texture.", L"Error", MB_OK);
  }
ย  Name Value Type
ย  hr E_INVALIDARG One or more arguments are invalid. HRESULT
texture_entry (0x0000000000000000 , 0x0000000000000000 ) std::pair<Microsoft::WRL::ComPtr,Microsoft::WRL::ComPtr > &
ย  texture_id 1 unsigned int

Here's the debug output:

D3D11 ERROR: ID3D11Device::CreateTexture2D: CheckFeatureSupport() API with D3D11_FEATURE_D3D11_OPTIONS2 must report support for MapOnDefaultTextures for a D3D11_USAGE_DEFAULT Texture Resource to have CPUAccessFlags set. CPUAccessFlags are currently set to: D3D11_CPU_ACCESS_READ (0), D3D11_CPU_ACCESS_WRITE (1). MapOnDefaultBuffers is (false). [ STATE_CREATION ERROR #98: CREATETEXTURE2D_INVALIDCPUACCESSFLAGS]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEBE8.
D3D11 ERROR: ID3D11Device::CreateTexture2D: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #104: CREATETEXTURE2D_INVALIDARG_RETURN]
The thread 0x254c has exited with code 0 (0x0).
The thread 0x20d0 has exited with code 0 (0x0).
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: A ShaderResourceView cannot be created from a NULL Resource. [ STATE_CREATION ERROR #129: CREATESHADERRESOURCEVIEW_INVALIDRESOURCE]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEE98.
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #131: CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateTexture2D: CheckFeatureSupport() API with D3D11_FEATURE_D3D11_OPTIONS2 must report support for MapOnDefaultTextures for a D3D11_USAGE_DEFAULT Texture Resource to have CPUAccessFlags set. CPUAccessFlags are currently set to: D3D11_CPU_ACCESS_READ (0), D3D11_CPU_ACCESS_WRITE (1). MapOnDefaultBuffers is (false). [ STATE_CREATION ERROR #98: CREATETEXTURE2D_INVALIDCPUACCESSFLAGS]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEBE8.
D3D11 ERROR: ID3D11Device::CreateTexture2D: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #104: CREATETEXTURE2D_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: A ShaderResourceView cannot be created from a NULL Resource. [ STATE_CREATION ERROR #129: CREATESHADERRESOURCEVIEW_INVALIDRESOURCE]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEE98.
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #131: CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateTexture2D: CheckFeatureSupport() API with D3D11_FEATURE_D3D11_OPTIONS2 must report support for MapOnDefaultTextures for a D3D11_USAGE_DEFAULT Texture Resource to have CPUAccessFlags set. CPUAccessFlags are currently set to: D3D11_CPU_ACCESS_READ (0), D3D11_CPU_ACCESS_WRITE (1). MapOnDefaultBuffers is (false). [ STATE_CREATION ERROR #98: CREATETEXTURE2D_INVALIDCPUACCESSFLAGS]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEBE8.
D3D11 ERROR: ID3D11Device::CreateTexture2D: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #104: CREATETEXTURE2D_INVALIDARG_RETURN]
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: A ShaderResourceView cannot be created from a NULL Resource. [ STATE_CREATION ERROR #129: CREATESHADERRESOURCEVIEW_INVALIDRESOURCE]
Exception thrown at 0x00007FFBD4B5A388 in Browser.exe: Microsoft C++ exception: _com_error at memory location 0x000000C7285FEE98.
D3D11 ERROR: ID3D11Device::CreateShaderResourceView: Returning E_INVALIDARG, meaning invalid parameters were passed. [ STATE_CREATION ERROR #131: CREATESHADERRESOURCEVIEW_INVALIDARG_RETURN]
Exception thrown at 0x00007FFBB03D4979 (d3d11_3SDKLayers.dll) in Browser.exe: 0xC0000005: Access violation reading location 0x0000000000000000.

Mobile devices

Do you guys have any plans to support mobile devices (iOS and Android)?

Publish SDKs on GitHub so fixes can be sent via PR

In Browser project for macOS there are currently two bugs:

  • You can't press enter to go to a URL in the URL bar
  • No JavaScript errors are logged by default

You can log JavaScript errors like this (in case anyone else goes searching):

Tab.cc:43

    printf("%d (%d) [%d:%d] - %s: %s\n", source, level, line_number, column_number, source_id.utf8().data(), message.utf8().data());

Support WebSockets

Adding support for WebSockets enables the ability to build real-time web applications that can run on the desktop. This is very useful if you have a frontend that gets data from a WebSocket based source.

Enable Run-Time Type Information (RTTI)

We originally built binaries with RTTI disabled to keep in accordance with the default WebKit flags, but the space-savings are negligible on Windows (saves approximately 700 KB when disabled).

We should re-enable this flag to allow users to link against Ultralight in build environments that require RTTI.

Make GPUDrivers save / restore client state non-destructively

In the OpenGL driver at least, we modify several states (such as glUseProgram()) that modify the current GL state after GPUDriver::DrawGeometry() returns.

We should save / restore any modified GPU state for easier integration with existing GPU code.

Golang bindings

hi there, I saw that you are talking about adding additional findings for other languages. Are there any plans for golang? If not, please feel free to just close this ticket off.

Adding Callable C++ function from javascript with return value

Summarize the Issue
Samples provide do not compile with a function with return value does not compile
1>c:\users\robto\downloads\ultralight-master\ultralight-master\samples\browser\src\ui.cc(88): error C2593: 'operator =' is ambiguous
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(237): note: could be 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSPropertyValue &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(230): note: or 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSCallbackWithRetval &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(227): note: or 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSCallback &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\deps\framework\jshelpers.h(224): note: or 'framework::JSPropertyValue &framework::JSPropertyValue::operator =(const framework::JSValue &)'
1> c:\users\robto\downloads\ultralight-master\ultralight-master\samples\browser\src\ui.cc(88): note: while trying to match the argument list '(framework::JSPropertyValue, std::_Binder<std::_Unforced,const framework::JSValue (__thiscall UI::* )(const framework::JSObject &,const framework::JSArgs &),UI *const ,const std::_Ph<1> &,const std::_Ph<2> &>)'

Steps to Reproduce
add a callback with return value

Platform Info:

  • OS: [Windows 10]
  • SDK Version [latest downloaded 9/21/2018]
  • Microsoft Visual Studio 15

Document requirements to build/run samples

Is your feature request related to a problem? Please describe.
Once you download the SDK for Windows and try to build and run, there are a few things required that are not explicitly mentioned.

Describe the solution you'd like
Make a guide that explains clearly how to setup your environment in order to build and run the samples

This basically includes two things

GLFW Error: Requested OpenGL version 3.2, got version 3.0

Error:

marler8997@z620dev016:~/git/ultralight/build/samples/Browser$ ./Browser -h
GLFW Error: Requested OpenGL version 3.2, got version 3.0

Platform:

marler8997@z620dev016:~/git/ultralight/build/samples/Browser$ uname -a
Linux z620dev016 4.15.0-34-generic #37~16.04.1-Ubuntu SMP Tue Aug 28 10:44:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Browser Sample issue

Summarize the Issue
passing arg to c++ function crashes

Steps to Reproduce
run sample browser app - click on address input move cursor to end of string ( or enter new url ) press enter.

void UI::OnRequestChangeURL(const JSObject& obj, const JSArgs& args) {
if (args.size() == 1) {

  if (args[0].IsString() )
  {

-> ultralight::String url = args[0];

	  if (!tabs_.empty()) {
		  auto& tab = tabs_[active_tab_id_];
		  tab->view()->LoadURL(url);
	  }
  }

}
}

Platform Info:

  • OS: [Windows 10]
  • SDK Version [downloaded master - 9/21/2018]
  • Microsoft Visual Studio 15

Explore direct DOM access via C++ API

From a suggestion by derefr on Hacker News:

> > with most memory being allocated by the JavaScriptCore VM
If I'm writing a green-field HTML5 app, and I don't derive any benefit from Javascript, is the interface between Ultralight and JavaScriptCore clean enough to just rip out the JS support altogether, replacing it with something simpler?

I'm picturing:

1. I embed Ultralight into a process that exposes a simple script-loading API, ala the one in JSCore;

2. I write HTML with no <script> elements, just elements with onclick/ontouch/etc. handler attrs, where these handlers just contain a UUID;

3. Ultralight passes the "script code" (i.e. the UUID) to my trivial script-loading API, which simply looks up a native handler based on the provided UUID, and returns its function pointer;

4. Ultralight holds onto that function pointer and treats it just like a regular thunkable Javascript handler function pointer.

In other words, all the "dynamism" of the HTML would be handled by native, static code in my compiled binary, with the only thing being set up at runtime being the binding of DOM elements to those known-at-compile-time native handlers. The QML/XAML/NIB approach.

Instant crash

Summarize the Issue
Instant crash when opening a website

Steps to Reproduce
When I try to open https://forecastcycles.com using the Browser sample, the application crashes after the loading of the website ends.
Whereas while opening https://platform.forecastcycles.com which is a complex React app, the rendering is really good and the navigation goes on perfectly

Platform Info:

  • OS: Windows 10
  • SDK Version: 0.9

Support scrolling in `overflow: auto`

Is your feature request related to a problem? Please describe.

On relisten.net, we have a column-based interface that makes use of overflow-y: auto. These currently do not scroll at all.

Describe the solution you'd like

I would like those content areas to scroll with the same smoothness as a whole page scroll.

Describe alternatives you've considered

None.

Additional context

We are using CSS Flexbox for layout and perhaps that is affecting it.

Sample Browser.exe is not linking when compiling

Summarize the Issue
Linking of sample Browser.exe is not working

Steps to Reproduce
By simply build it in incompatible compiler to the libs delivered.

Platform Info:

  • OS: [e.g. Windows]
  • SDK Version [now]
  • GCC 8.1.0 (mingw-m64)

E:\dane\ultralight-master\build>make
[ 55%] Built target glfw
[ 58%] Linking CXX executable Browser.exe
CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text+0xef): undefi
ned reference to __imp__ZN10ultralight8Platform8instanceEv' CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text+0x24a): undef ined reference to __imp__ZN10ultralight8Renderer6CreateEv'
CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text+0x412): undef
ined reference to __imp__ZN10ultralight8Platform8instanceEv' CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text$_ZN10ultralig ht6ConfigC1Ev[_ZN10ultralight6ConfigC1Ev]+0x62): undefined reference to imp
ZN10ultralight8String16C1EPKc'
CMakeFiles\Browser.dir/objects.a(Browser.cc.obj):Browser.cc:(.text$_ZN10ultralig
ht6ConfigC1Ev[_ZN10ultralight6ConfigC1Ev]+0x7d): undefined reference to `imp
ZN10ultralight8String16C1EPKc'

Browser sample doesn't resize correctly on mac

screen shot 2018-08-10 at 1 04 26 pm

Looks like browser view is fixed size. Should resize to the size of the window.

Also, after resizing it often doesn't repaint and shows UI as resized image.

Mac 10.13.6, Mac Pro (Late 2013), AMD FirePro D300.

Support `WebAudio` APIs

Is your feature request related to a problem? Please describe.

I would like to use Ultralight for a webapp that plays music. We make use of the HTML5 audio tag and the WebAudio classes themselves. I'd say HTML5 audio tag is higher priority but it'd be nice to have both.

Describe the solution you'd like

  1. https://html.spec.whatwg.org/multipage/media.html#the-audio-element
  2. The WebAudio API as a whole is huge so I don't view this as a priority: https://www.w3.org/TR/webaudio/

Describe alternatives you've considered

None? There's no way to play audio.

Additional context
Add any other context or screenshots about the feature request here.

static build option.

there is no static build option ๐Ÿ‘Ž
so why should we use this black box library ?

even sample browser app crashing randomly.

Weird GPU artifacts + sites not rendering on GTX 1070 Ti (10.13.6)

Summarize the Issue
image

Sites are not rendering properly:

  • They have artifacts
  • Most text does not render

Log in Xcode:

objc[85844]: Class WebFileManagerDelegate is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore (0x7fffb0b27f78) and /Users/alecgorge/Library/Developer/Xcode/DerivedData/Browser-aeadycjcfqoiryfaxrdbtykvqdbg/Build/Products/Debug/Browser.app/Contents/MacOS/Browser (0x10003bb78). One of the two will be used. Which one is undefined.
2018-08-10 09:31:07.061937-0700 Browser[85844:10322124] [DYMTLInitPlatform] platform initialization successful
2018-08-10 09:31:07.177535-0700 Browser[85844:10322041] Metal GPU Frame Capture Enabled
2018-08-10 09:31:07.177820-0700 Browser[85844:10322041] Metal API Validation Enabled
2018-08-10 09:31:07.515603-0700 Browser[85844:10322121] MessageTracer: Falling back to default whitelist
TODO: Image::loadPlatformResource missingImage
2018-08-10 09:32:05.649231-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649264-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649275-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649283-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649292-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649301-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649310-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649318-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649328-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649337-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649345-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649353-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
2018-08-10 09:32:05.649362-0700 Browser[85844:10322041] Texture ID 6 doesn't exist.
PathImpl::IsPointFilled NOTIMPLEMENTED()
PathImpl::IsPointFilled NOTIMPLEMENTED()

Steps to Reproduce

Open the browser test project and go to any site

Platform Info:

  • GTX 1070 Ti
  • macOS 10.13.6
  • NVIDIA Alternate Graphics Drivers for macOS 387.10.10.10.40.105

Add OpenGL support

Majority of work on an OpenGL GPUDriver implementation has already been completed, need to just update framework code to use it via SDL or some other cross-platform GL host.

Python bindings

I see it has already been mentioned on the landing page.

Just opening this issue here, because I couldn't find one tracking the progress. :)

Overlay (View) scale support

Current version of Overlay (0.9.1) have scale option in constructor but in real not have effect in code & render.

Not so critical, but better create 'issue' for not forget about it's.

HTTP Public Key Pinning

Describe the solution you'd like
Create and expose an API to allow implementations to secure HTTPS requests against approved keys.

Describe alternatives you've considered
Using the LoadHTML to only load pages/content you've secured/verified - doesn't work with XHR.

Port to UWP (HoloLens support)

Should theoretically be possible to port Ultralight over to UWP since we have minimal reliance on WinAPI calls. Needs exploration.

Mouse hovering link sets cursor to kCursor_Hand then back do kCursor_Pointer (Browser sample)

In Browser sample, when hovering the mouse over a link, the cursor changes to kCursor_Hand and immediately back to kCursor_Pointer.

Steps to Reproduce

  • Slowly drag the mouse pointer to a link until you see a mouse cursor change
  • Observe the pointer change to the hand cursor
  • If you move the mouse cursor just a bit it will change to the pointer again

Looks like:

  • "onMouseEnter" -> sets cursor to hand
  • "onMouseOver" -> bug, sets back to pointer (default?)
  • "onMouseExit" -> resets
  • "onMouseEnter" (again) -> sets cursor to hand
  • ....

Platform Info:

  • OS: Windows 10
  • SDK Version 0.9.1

C# Bindings

Begin basic C# bindings (pinvoke wrapper for both Ultralight API + Framework API). This ticket depends on: #15

.NET Controls (such as WebBrowser Control replacement) are planned after this.

macOS/Xcode minimum version?

Summarize the Issue
Failed to load project at 'ultralight-sdk-0.9-mac-x64/Browser.xcodeproj', incompatible project version.

Platform Info:

  • OS: macOS 10.12.6
  • SDK Version: 0.9
  • Xcode: 9.2.

Active setTimeout callback causes a crash after releasing view

Summarize the Issue
If a page has an active setTimeout callback, after releasing the view object, Ultralight will crash (Somewhere in UltralightCore.dll, when calling ucrtbase.dll!_free_base(), according to my debugger)

Steps to Reproduce
I have the following JavaScript file:

var counter = 0;
function setTitle() {
  document.title = "Test page " + counter;
  counter += 1;
  setTimeout(setTitle, 1000);
}
setTitle();

When this script is loaded on the page, it will crash ultralight as soon as the view with that page on it is released.

Platform Info:

  • OS: Windows
  • 0.9.1

Reduce memory usage

So far, the Ultralight binary and codebase has been minimized (woohoo! 25% the size of the typical Electron/CEF distributable!) but runtime memory usage has been neglected despite many opportunities to do so.

Reduce runtime memory usage to the absolute minimum up to the point that doing so would reduce performance (and even then, allow users to configure this memory vs. performance trade-off).

Add CPU renderer

Implement a multi-threaded CPU-based driver that renders View to a pixel buffer.

Add DirectX 10 support

The app framework on Windows currently only supports DirectX 11.1. A DX10 port should be created so we can target more GPUs and VMs (Parallels on Mac only supports DX10.1, see #19).

Create Node.js bindings

Ideally the bindings should abstract as much of the native platform code as possible by way of the application framework to allow Electron-like usage.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.