protected void InitializeUltralight() { // setup logging LoggerLogMessageCallback cb = LoggerCallback; Ultralight.SetLogger(new Logger { LogMessage = cb }); using var cfg = new Config(); var cachePath = Path.Combine(AssetDirectory, "Cache"); cfg.SetCachePath(cachePath); var resourcePath = Path.Combine(AssetDirectory, "resources"); cfg.SetResourcePath(resourcePath); cfg.SetUseGpuRenderer(false); cfg.SetEnableImages(true); cfg.SetEnableJavaScript(true); AppCore.EnablePlatformFontLoader(); AppCore.EnablePlatformFileSystem(AssetDirectory); _renderer = new Renderer(cfg); }
public static unsafe void Main(string[] args) { // setup logging LoggerLogMessageCallback cb = LoggerCallback; Ultralight.PlatformSetLogger(new Logger { LogMessage = cb }); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Ansi.WindowsConsole.TryEnableVirtualTerminalProcessing(); } if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { NativeLibrary.SetDllImportResolver(typeof(Ultralight).Assembly, (name, assembly, path) => name switch { "Ultralight" => NativeLibrary.Load("libUltralight.dylib"), "AppCore" => NativeLibrary.Load("libAppCore.dylib"), "WebCore" => NativeLibrary.Load("libWebCore.dylib"), _ => default });
public static unsafe void Main(string[] args) { // setup logging LoggerLogMessageCallback cb = LoggerCallback; Ultralight.SetLogger(new Logger { LogMessage = cb }); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.OutputEncoding = Encoding.UTF8; Ansi.WindowsConsole.TryEnableVirtualTerminalProcessing(); } var asmPath = typeof(DemoProgram).Assembly.Location; var asmDir = Path.GetDirectoryName(asmPath) !; var tempDir = Path.GetTempPath(); // find a place to stash instance storage string storagePath; do { storagePath = Path.Combine(tempDir, Guid.NewGuid().ToString()); } while (Directory.Exists(storagePath) || File.Exists(storagePath)); var cfg = Config.Create(); { var cachePath = String.Create(Path.Combine(storagePath, "Cache")); cfg->SetCachePath(cachePath); cachePath->Destroy(); } { var resourcePath = String.Create(Path.Combine(asmDir, "resources")); cfg->SetResourcePath(resourcePath); resourcePath->Destroy(); } cfg->SetUseGpuRenderer(false); cfg->SetEnableImages(true); cfg->SetEnableJavaScript(false); AppCore.EnablePlatformFontLoader(); { var assetsPath = String.Create(Path.Combine(asmDir, "assets")); AppCore.EnablePlatformFileSystem(assetsPath); assetsPath->Destroy(); } var renderer = Renderer.Create(cfg); var sessionName = String.Create("Demo"); var session = Session.Create(renderer, false, sessionName); var view = View.Create(renderer, 640, 480, false, session, false); { var htmlString = String.Create("<i>Loading...</i>"); Console.WriteLine($"Loading HTML: {htmlString->Read()}"); view->LoadHtml(htmlString); htmlString->Destroy(); } var loaded = false; view->SetFinishLoadingCallback((data, caller, frameId, isMainFrame, url) => { Console.WriteLine($"Loading Finished, URL: 0x{(ulong) url:X8} {url->Read()}"); loaded = true; }, null); while (!loaded) { Ultralight.Update(renderer); Ultralight.Render(renderer); } /* * { * var surface = view->GetSurface(); * var bitmap = surface->GetBitmap(); * var pixels = bitmap->LockPixels(); * RenderAnsi<Bgra32>(pixels, bitmap->GetWidth(), bitmap->GetHeight(), bitmap->GetBpp()); * Console.WriteLine(); * bitmap->UnlockPixels(); * bitmap->SwapRedBlueChannels(); * //bitmap->WritePng("Loading.png"); * } */ loaded = false; { var urlString = String.Create("file:///index.html"); Console.WriteLine($"Loading URL: {urlString->Read()}"); view->LoadUrl(urlString); urlString->Destroy(); } while (!loaded) { //Ultralight.Update(renderer); renderer->Update(); //Ultralight.Render(renderer); renderer->Render(); } { var urlStrPtr = view->GetUrl(); Console.WriteLine($"After Loaded View GetURL: 0x{(ulong) urlStrPtr:X8} {urlStrPtr->Read()}"); } { var surface = view->GetSurface(); var bitmap = surface->GetBitmap(); var pixels = bitmap->LockPixels(); RenderAnsi <Bgra32>(pixels, bitmap->GetWidth(), bitmap->GetHeight()); bitmap->UnlockPixels(); bitmap->SwapRedBlueChannels(); //bitmap->WritePng("Loaded.png"); } view->Destroy(); session->Destroy(); renderer->Destroy(); cfg->Destroy(); try { Directory.Delete(storagePath, true); } catch { /* ok */ } //Console.WriteLine("Press any key to exit."); //Console.ReadKey(true); }
public static void Main(string[] args) { // setup logging LoggerLogMessageCallback cb = LoggerCallback; Ultralight.SetLogger(new Logger { LogMessage = cb }); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.OutputEncoding = Encoding.UTF8; Ansi.WindowsConsole.TryEnableVirtualTerminalProcessing(); } var asmPath = new Uri(typeof(DemoProgram).Assembly.CodeBase !).LocalPath; var asmDir = Path.GetDirectoryName(asmPath) !; var tempDir = Path.GetTempPath(); // find a place to stash instance storage string storagePath; do { storagePath = Path.Combine(tempDir, Guid.NewGuid().ToString()); } while (Directory.Exists(storagePath) || File.Exists(storagePath)); { using var cfg = new Config(); var cachePath = Path.Combine(storagePath, "Cache"); cfg.SetCachePath(cachePath); var resourcePath = Path.Combine(asmDir, "resources"); cfg.SetResourcePath(resourcePath); cfg.SetUseGpuRenderer(false); cfg.SetEnableImages(true); cfg.SetEnableJavaScript(false); AppCore.EnablePlatformFontLoader(); { var assetsPath = Path.Combine(asmDir, "assets"); AppCore.EnablePlatformFileSystem(assetsPath); } using var renderer = new Renderer(cfg); var sessionName = "Demo"; using var session = new Session(renderer, false, sessionName); using var view = new View(renderer, 640, 480, false, session); { var htmlString = "<i>Loading...</i>"; Console.WriteLine($"Loading HTML: {htmlString}"); view.LoadHtml(htmlString); } var loaded = false; view.SetFinishLoadingCallback((data, caller, frameId, isMainFrame, url) => { Console.WriteLine($"Loading Finished, URL: {url}"); loaded = true; }, default); while (!loaded) { renderer.Update(); renderer.Render(); } loaded = false; { var urlString = "file:///index.html"; Console.WriteLine($"Loading URL: {urlString}"); view.LoadUrl(urlString); } while (!loaded) { renderer.Update(); renderer.Render(); } { var urlStr = view.GetUrl(); Console.WriteLine($"After Loaded View GetURL: {urlStr}"); } { var surface = view.GetSurface(); var bitmap = surface.GetBitmap(); var pixels = bitmap.LockPixels(); RenderAnsi <Bgra32>(pixels, bitmap.GetWidth(), bitmap.GetHeight(), 2, borderless: true); bitmap.UnlockPixels(); //bitmap.SwapRedBlueChannels(); //bitmap.WritePng("Loaded.png"); } } try { Directory.Delete(storagePath, true); } catch { /* ok */ } if (!Environment.UserInteractive || Console.IsInputRedirected) { return; } Console.Write("Press any key to exit."); Console.ReadKey(true); Console.WriteLine(); }