Announcing Version 1.6.2

We are very proud to announce the official release of Awesomium v1.6.2! This major release includes fixes for 15 bugs and adds 10 new features.

There’s been a ton of great changes to our framework lately, I’ll give a quick summary of the top 8 below.

Top 8 New Changes

1. Updated .NET Wrapper

Microsoft .NET Logo

Resident .NET guru, Perikles C. Stephanidis, has recently rewritten AwesomiumSharp (our open-source .NET wrapper) from the ground up! The API is now much cleaner and more elegant, and comes with ample documentation.

What’s more, the wrapper now includes a Drag-and-Drop, Standalone WPF Control that handles all the basic embedding tasks for you (mouse/keyboard input, rendering, resizing, cursors, focusing, etc.). Please see Windows.Controls.WebControl for more information.

TabbedWPFSample Screenshot

There’s also several new, beautiful sample applications, including a full Chrome-like browser built with the new WebControl (try the TabbedWPFSample here).

To get started with the new API, make sure to check out the new .NET tutorial here.

2. Updated Unity3D Wrapper

Web-Pages inside Unity3D using Awesomium

Unity3D 3.4 introduced a new, faster method to upload texture-data (SetPixels32) so we re-wrote our Unity3D Wrapper (UnityAwe) to take advantage of it.

The result is that web-pages displayed within Unity run at least 4x faster.

We also fixed a few related bugs (crash at shutdown, threading issues, etc.) and created a new example script that demonstrates how to integrate custom HTML and expose properties/callbacks to the web-page. (Just drag-and-drop the Example_CustomHTML script to any GameObject).

For more information, see our Unity tutorial.

3. Linux Support

Linux Penguin Logo

We have officially added Linux support to this release! We now offer 32-bit and 64-bit builds of Awesomium for Linux.

4. IME Widget Support

IME Widget screenshot

Awesomium is now being used in many Korean, Chinese, and Japanese games and so we decided to add support for IME (input-method-editor) widgets to allow proper input of Asian languages!

The API is designed so that you can use your own IME Widget to pass compositions to the WebView. To be notified when you should display your IME Widget, you should handle the OnUpdateIME callback (see the WebViewListener class). For more information, please see the following API methods:

  • WebView.activateIME
  • WebView.setIMEComposition
  • WebView.confirmIMEComposition
  • WebView.cancelIMEComposition
  • WebViewListener.onUpdateIME

5. In-Page Find

In-Page Find Screenshot

You can now search the text of any web-page (highlight keywords, iterate through results, etc.) by using in-page find! Please see the following API methods:

  • WebView.find
  • WebView.stopFind
  • WebView.onGetFindResults

6. In-Page Translation

We’ve added in-page translation to Awesomium (just like Google Chrome). You can request a page to be translated via WebView.translatePage. All translation is handled online via Google Translate’s API.

7. Single-Process Mode

Awesomium is, by default, a multi-process library— each WebView and plugin is rendered in a sandboxed child-process.

Some users have requested a way to disable this for varying reasons, so we’ve added an experimental “single-process mode” to Awesomium (see the WebCoreConfig).

This mode is Windows-only at the moment and Flash plugins and do not work.

8. Custom Child-Process (Bypass AwesomiumProcess.exe)

We use AwesomiumProcess.exe by default to launch the child-process renderer (there’s actually no real code within the process, all the renderer code is within Awesomium.dll).

Some users expressed interest in using their own executable to launch the child-process renderer (so that all processes in the Task Manager show up as the main executable’s name, like Google Chrome).

We added a method to our API that allows you to do this, here’s some example code that demonstrates how to modify your executable’s main entry point so that it is used to launch all child-processes for Awesomium:

int main(int argc, char** argv)
{
	if(Awesomium::isChildProcess(GetModuleHandle(0)))
		return Awesomium::ChildProcessMain(GetModuleHandle(0));
		
	// Continue normal main method below.

	Awesomium::WebCoreConfig config;
	
	// You can specify "self" as a shortcut to 
	// the path of this executable.
	config.setChildProcessPath(L"self");
	
	Awesomium::WebCore webCore(config);
	
	// This will spawn a new child instance of your executable
	// which will be handled by ChildProcessMain above.
	WebView* webView = webCore.createWebView(512, 512);
	
	// Rest of your application goes here.
	
	return 0;
}

New Tutorials

We also have some new tutorials to accompany this release!

Google's Web-Page Thumbnail

Check out Capturing Web-Pages with C for an in-depth look into using Awesomium for web-page capture. This is a great introduction for users who are interested in generating thumbnails or full-page renders of websites. If you ever wondered how Google captures those little preview images on its search page, this is how.

Conclusion

We hope you enjoy this new release! This is our most stable, well-rounded release in the entire lifetime of the 1.6 branch so we’re very excited to see what you guys will do with it.

Regarding future development, there’s been a lot of great updates to Chromium lately (HTML5 Video, WebGL, etc) and we’re now incorporating those changes into the 1.7 branch of Awesomium. Stay tuned for a new experimental release of that branch soon!

Also read...

Comments

  1. Awesome! We’ve upgraded and tested some of the new features, this is a good release and implements some features we have been looking forward to.

    The upgrade process took just about 10 minutes to get things rolling.

    Thanks

    Reply
  2. @ Tsahi, working on it for the next release. :D

    @ JinYoung, awesome, I’m glad you like it!

    @ Amir, we do have limited support for touch events in our AwesomiumSharp wrapper; we pass all single-touch events as mouse clicks to the WebView. It’s up to your application to interpret and handle more complex gestures.

    Reply

Leave a Reply to JinYoung Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>