public static void Start() { PixelFarm.Platforms.StorageService.RegisterProvider(s_LocalStorageProvider); //--------------------------------------------------- PixelFarm.CpuBlit.MemBitmapExtensions.DefaultMemBitmapIO = new YourImplementation.ImgCodecMemBitmapIO(); //PixelFarm.CpuBlit.MemBitmapExtensions.DefaultMemBitmapIO = new PixelFarm.Drawing.WinGdi.GdiBitmapIO(); if (!GLFWPlatforms.Init()) { System.Diagnostics.Debug.WriteLine("can't init glfw"); return; } bool useMyGLFWForm = true; if (!useMyGLFWForm) { GlFwForm form1 = new GlFwForm(800, 600, "PixelFarm on GLfw and GLES2"); MyApp glfwApp = new MyApp(); form1.SetDrawFrameDelegate(e => glfwApp.UpdateViewContent(e)); } else { MyGLFWForm form1 = new MyGLFWForm(800, 600, "PixelFarm on GLfw and GLES2"); MyApp glfwApp = new MyApp(); form1.SetDrawFrameDelegate(e => glfwApp.UpdateViewContent(e)); } GlfwApp.RunMainLoop(); }
public static void Start(string[] args) { if (!Glfw.Init()) { Console.WriteLine("can't init glfw"); return; } //1. load cef before OLE init (eg init winform) *** //see more detail ... MyCef3InitEssential if (!MyCef3InitEssential.LoadAndInitCef3(args)) { return; } //------------------------------------------ //1. if this is main UI process //the code go here, and we just start //winform app as usual //2. if this is other process //mean this process is finish and will terminate soon. //so we do noting, just exit! //(***please note that //*** we call ShutDownCef3 only in main thread ***) if (!MyCef3InitEssential.IsInMainProcess) { MyCef3InitEssential.ClearRemainingCefMsg(); return; } //------------------------------------------ ///////////////////////////////////////////// //this code is run only in main process //------------------------------------------ GlFwForm glfwForm = GlfwApp.CreateGlfwForm(800, 600, "Native CefBrowser, Press any key to start browse the web"); ////--------------- Form f1 = Form.CreateFromNativeWindowHwnd(glfwForm.Handle); f1.Width = glfwForm.Width; f1.Height = glfwForm.Height; //Glfw.SetWindowSizeCallback(glWindow, (GlfwWindowPtr wnd, int width, int height) => //{ // //change window size here //}); AddWbControlToMainWindow(f1); while (!GlfwApp.ShouldClose()) { MyCef3InitEssential.CefDoMessageLoopWork(); Glfw.PollEvents(); } ///////////////////////////////////////////// MyCef3InitEssential.ClearRemainingCefMsg(); MyCef3InitEssential.ShutDownCef3(); ///////////////////////////////////////////// Glfw.Terminate(); }
public static void Start() { if (!GLFWPlatforms.Init()) { Console.WriteLine("can't init"); return; } GlFwForm form1 = new GlFwForm( 800, 600, "PixelFarm on GLfw and OpenGLES2"); //---------------- //this not need if we use glfwcontext for opentk // new OpenTK.Graphics.ES20.GL().LoadEntryPoints(); //---------------- //var demo = new OpenTkEssTest.T52_HelloTriangle2(); //var demo = new OpenTkEssTest.T107_SampleDrawImage(); //var demo = new OpenTkEssTest.T107_SampleDrawImage(); var demoContext = new Mini.GLDemoContext(800, 600); demoContext.LoadDemo(new OpenTkEssTest.T108_LionFill()); ////var demo = new OpenTkEssTest.T107_SampleDrawImage(); form1.SetDrawFrameDelegate(e => { demoContext.Render(); //demo.Render(); }); //--------------------------------- GlFwForm f2 = new GlFwForm(800, 600, "Form2"); f2.SetDrawFrameDelegate(e => { //simple draw GL.ClearColor(0, 1, 1, 1); }); GlfwApp.RunMainLoop(); demoContext.Close(); }
static void Main() { YourImplementation.LocalFileStorageProvider file_storageProvider = new YourImplementation.LocalFileStorageProvider(""); PixelFarm.Platforms.StorageService.RegisterProvider(file_storageProvider); YourImplementation.FrameworkInitGLES.SetupDefaultValues(); //2.2 Icu Text Break info //test Typography's custom text break, //check if we have that data? //------------------------------------------- string icu_datadir = YourImplementation.RelativePathBuilder.SearchBackAndBuildFolderPath(System.IO.Directory.GetCurrentDirectory(), "HtmlRenderer", @"..\Typography\Typography.TextBreak\icu62\brkitr"); if (!System.IO.Directory.Exists(icu_datadir)) { throw new System.NotSupportedException("dic"); } var dicProvider = new Typography.TextBreak.IcuSimpleTextFileDictionaryProvider() { DataDir = icu_datadir }; Typography.TextBreak.CustomBreakerBuilder.Setup(dicProvider); PixelFarm.CpuBlit.MemBitmapExtensions.DefaultMemBitmapIO = new ImgCodecMemBitmapIO(); //PixelFarm.CpuBlit.MemBitmapExtensions.DefaultMemBitmapIO = new PixelFarm.Drawing.WinGdi.GdiBitmapIO(); if (!PixelFarm.GLFWPlatforms.Init()) { System.Diagnostics.Debug.WriteLine("can't init glfw"); return; } LayoutFarm.Demo_MixHtml mix1 = new LayoutFarm.Demo_MixHtml(); var myApp = new MyApp(mix1); myApp.CreateMainForm(800, 600); GlfwApp.RunMainLoop(); }
public static void Start() { if (!GLFWPlatforms.Init()) { Console.WriteLine("can't init"); } Glfw.SwapInterval(1); GlFwForm form1 = GlfwApp.CreateGlfwForm( 800, 600, "PixelFarm on GLfw and OpenGLES2"); form1.MakeCurrent(); //------------------------------------ //*** GLFWPlatforms.CreateGLESContext(); //------------------------------------ form1.Activate(); //---------------- //this not need if we use glfwcontext for opentk // new OpenTK.Graphics.ES20.GL().LoadEntryPoints(); //---------------- //var demo = new OpenTkEssTest.T52_HelloTriangle2(); //var demo = new OpenTkEssTest.T107_SampleDrawImage(); //var demo = new OpenTkEssTest.T107_SampleDrawImage(); var demo = new OpenTkEssTest.T108_LionFill(); demo.Width = 800; demo.Height = 600; demo.InitGLProgram(); //var demo = new OpenTkEssTest.T107_SampleDrawImage(); //demo.Width = 800; //demo.Height = 600; //-------------------------------------------------------------------------------- GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(1, 1, 1, 1); //-------------------------------------------------------------------------------- //setup viewport size //set up canvas int ww_w = 800; int ww_h = 600; int max = Math.Max(ww_w, ww_h); //GL.Viewport(0, 0, 800, 600); GL.Viewport(0, 0, max, max); //-------------------------------------------------------------------------------- form1.SetDrawFrameDelegate(() => { demo.Render(); }); //--------------------------------- GlFwForm f2 = GlfwApp.CreateGlfwForm( 800, 600, "Form 2"); f2.MakeCurrent(); f2.Activate(); GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(1, 1, 1, 1); //GL.Viewport(0, 0, 800, 600); GL.Viewport(0, 0, max, max); //--------------------------------- f2.SetDrawFrameDelegate(() => { GL.ClearColor(0, 1, 1, 1); }); while (!GlfwApp.ShouldClose()) { //--------------- //render phase and swap GlfwApp.UpdateWindowsFrame(); /* Poll for and process events */ Glfw.PollEvents(); } demo.Close(); Glfw.Terminate(); }
public static void Start() { if (!Glfw.Init()) { Console.WriteLine("can't init glfw"); return; } //--------------------------------------------------- //specific OpenGLES *** Glfw.WindowHint(WindowHint.GLFW_CLIENT_API, (int)OpenGLAPI.OpenGLESAPI); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_CREATION_API, (int)OpenGLContextCreationAPI.GLFW_EGL_CONTEXT_API); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_VERSION_MAJOR, 2); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_VERSION_MINOR, 0); //--------------------------------------------------- Glfw.SwapInterval(1); GlFwForm form1 = GlfwApp.CreateGlfwForm( 800, 600, "PixelFarm + Skia on GLfw and OpenGLES2"); form1.MakeCurrent(); //------------------------------------ //*** GLFWPlatforms.CreateGLESContext(); //------------------------------------ form1.Activate(); int ww_w = 800; int ww_h = 600; int max = Math.Max(ww_w, ww_h); canvasGL2d = PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvasGL2d(max, max); //------------------------------------ GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(1, 1, 1, 1); //-------------------------------------------------------------------------------- //setup viewport size //set up canvas needUpdateContent = true; //GL.Viewport(0, 0, 800, 600); GL.Viewport(0, 0, max, max); FormRenderUpdateEventArgs formRenderUpdateEventArgs = new FormRenderUpdateEventArgs(); formRenderUpdateEventArgs.form = form1; form1.SetDrawFrameDelegate(() => { if (needUpdateContent) { UpdateViewContent(formRenderUpdateEventArgs); } canvasGL2d.Clear(Color.Blue); canvasGL2d.DrawImage(glBmp, 0, 600); }); while (!GlfwApp.ShouldClose()) { //--------------- //render phase and swap GlfwApp.UpdateWindowsFrame(); /* Poll for and process events */ Glfw.PollEvents(); } Glfw.Terminate(); }
public static void Start(string[] args) { if (!Glfw.Init()) { Console.WriteLine("can't init glfw"); return; } //this is designed for cef UI process. //this process starts before any subprocess. //so before load anything we should check // if essential libs are available //------------------------------------------ LibFolderManager.CheckNativeLibs(); //------------------------------------------ MyCef3InitEssential.SkipPreRun(true); //------------------------------------------ //1. load cef before OLE init (eg init winform) *** //see more detail ... MyCef3InitEssential if (!MyCef3InitEssential.LoadAndInitCef3(args)) { return; } //------------------------------------------ //1. if this is main UI process //the code go here, and we just start //winform app as usual //2. if this is other process //mean this process is finish and will terminate soon. //so we do noting, just exit! //(***please note that //*** we call ShutDownCef3 only in main thread ***) if (!MyCef3InitEssential.IsInMainProcess) { MyCef3InitEssential.ClearRemainingCefMsg(); return; } //------------------------------------------ ///////////////////////////////////////////// //this code is run only in main process //------------------------------------------ GlFwForm glfwForm = GlfwApp.CreateGlfwForm( 800, 600, "Native CefBrowser, Press any key to start browse the web"); ////--------------- MyFormWrapper formMain = new MyFormWrapper(glfwForm.Handle); //add cef-browser into glfw form cefBrowser = new MyCefBrowser( formMain, 0, 0, 800, 600, "about:blank", false); // //Form f1 = Form.CreateFromNativeWindowHwnd2(glfwForm.Handle); //f1.Width = glfwForm.Width; //f1.Height = glfwForm.Height; //Glfw.SetWindowSizeCallback(glWindow, (GlfwWindowPtr wnd, int width, int height) => //{ // //change window size here //}); //AddWbControlToMainWindow(f1); bool isCreated = false; while (!GlfwApp.ShouldClose()) { //gl if (!isCreated) { if (cefBrowser.IsBrowserCreated) { cefBrowser.NavigateTo("https://html5test.com"); isCreated = true; } } MyCef3InitEssential.CefDoMessageLoopWork(); Glfw.PollEvents(); } ///////////////////////////////////////////// MyCef3InitEssential.ClearRemainingCefMsg(); MyCef3InitEssential.ShutDownCef3(); //(***please note that //*** we call ShutDownCef3 only in main thread ***) Glfw.Terminate(); }
public static void Start() { //--------------------------------------------------- //register image loader Mini.DemoHelper.RegisterImageLoader(LoadImage); PixelFarm.Platforms.StorageService.RegisterProvider(file_storageProvider); //--------------------------------------------------- if (!Glfw.Init()) { Console.WriteLine("can't init glfw"); return; } //--------------------------------------------------- //specific OpenGLES *** Glfw.WindowHint(WindowHint.GLFW_CLIENT_API, (int)OpenGLAPI.OpenGLESAPI); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_CREATION_API, (int)OpenGLContextCreationAPI.GLFW_EGL_CONTEXT_API); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_VERSION_MAJOR, 2); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_VERSION_MINOR, 0); //--------------------------------------------------- Glfw.SwapInterval(1); GlFwForm form1 = GlfwApp.CreateGlfwForm( 800, 600, "PixelFarm + Skia on GLfw and OpenGLES2"); form1.MakeCurrent(); //------------------------------------ //*** GLFWPlatforms.CreateGLESContext(); //------------------------------------ form1.Activate(); int ww_w = 800; int ww_h = 600; int max = Math.Max(ww_w, ww_h); //------------------------------------ GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(1, 1, 1, 1); //-------------------------------------------------------------------------------- //setup viewport size //set up canvas GL.Viewport(0, 0, max, max); FormRenderUpdateEventArgs formRenderUpdateEventArgs = new FormRenderUpdateEventArgs(); formRenderUpdateEventArgs.form = form1; GlfwGLES2 glfwApp = new GlfwGLES2(); form1.SetDrawFrameDelegate(() => { glfwApp.UpdateViewContent(formRenderUpdateEventArgs); }); while (!GlfwApp.ShouldClose()) { //--------------- //render phase and swap GlfwApp.UpdateWindowsFrame(); /* Poll for and process events */ Glfw.PollEvents(); } Glfw.Terminate(); }
public static void Start() { if (!Glfw.Init()) { Console.WriteLine("can't init glfw"); return; } //--------------------------------------------------- //specific OpenGLES *** Glfw.WindowHint(WindowHint.GLFW_CLIENT_API, (int)OpenGLAPI.OpenGLESAPI); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_CREATION_API, (int)OpenGLContextCreationAPI.GLFW_EGL_CONTEXT_API); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_VERSION_MAJOR, 2); Glfw.WindowHint(WindowHint.GLFW_CONTEXT_VERSION_MINOR, 0); //--------------------------------------------------- Glfw.SwapInterval(1); GlFwForm form1 = GlfwApp.CreateGlfwForm( 800, 600, "PixelFarm + Skia on GLfw and OpenGLES2"); form1.MakeCurrent(); //------------------------------------ //*** GLFWPlatforms.CreateGLESContext(); //------------------------------------ form1.Activate(); int ww_w = 800; int ww_h = 600; int max = Math.Max(ww_w, ww_h); canvasGL2d = PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvasGL2d(max, max); //------------------------------------ GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.ClearColor(1, 1, 1, 1); //-------------------------------------------------------------------------------- //setup viewport size //set up canvas needUpdateContent = true; //GL.Viewport(0, 0, 800, 600); GL.Viewport(0, 0, max, max); FormRenderUpdateEventArgs formRenderUpdateEventArgs = new FormRenderUpdateEventArgs(); formRenderUpdateEventArgs.form = form1; LayoutFarm.Ease.EaseHost.StartGraphicsHost(); var rootgfx = new MyRootGraphic( LayoutFarm.UI.UIPlatformWinNeutral.platform, LayoutFarm.UI.UIPlatformWinNeutral.platform.GetIFonts(), ww_w, ww_h); var surfaceViewportControl = new LayoutFarm.UI.WinNeutral.UISurfaceViewportControl(); surfaceViewportControl.InitRootGraphics(rootgfx, rootgfx.TopWinEventPortal, InnerViewportKind.GL); //lion fill sample OpenTkEssTest.T108_LionFill lionFill = new OpenTkEssTest.T108_LionFill(); lionFill.Init2(canvasGL2d); GLCanvasPainter painter1 = lionFill.Painter; var myCanvasGL = new PixelFarm.Drawing.GLES2.MyGLCanvas(painter1, 0, 0, 800, 600); //(PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvas(0, 0, 800, 600, canvasGL2d, painter1); surfaceViewportControl.SetupCanvas(myCanvasGL); SampleViewport viewport = new LayoutFarm.SampleViewport(surfaceViewportControl); HtmlHost htmlHost; htmlHost = HtmlHostCreatorHelper.CreateHtmlHost(viewport, null, null); ////================================================== //html box HtmlBox lightHtmlBox = new HtmlBox(htmlHost, 800, 50); { lightHtmlBox.SetLocation(50, 450); viewport.AddContent(lightHtmlBox); //light box can't load full html //all light boxs of the same lightbox host share resource with the host string html = @"<div>OK1</div><div>OK2</div>"; //if you want to use full html-> use HtmlBox instead lightHtmlBox.LoadHtmlString(html); } form1.SetDrawFrameDelegate(() => { //render each frame if (needUpdateContent) { UpdateViewContent(formRenderUpdateEventArgs); } canvasGL2d.Clear(Color.White); //canvasGL2d.DrawRect(0, 0, 200, 200); ////canvasGL2d.DrawImage(glBmp, 0, 600); //int tmp_x = lightHtmlBox.Left; //int tmp_y = lightHtmlBox.Top; //myCanvasGL.SetCanvasOrigin(tmp_x, tmp_y); canvasGL2d.SmoothMode = CanvasSmoothMode.No; //--------- //flip y axis for html box (and other UI) canvasGL2d.FlipY = true; lightHtmlBox.CurrentPrimaryRenderElement.DrawToThisCanvas( myCanvasGL, new Rectangle(0, 0, 800, 600)); canvasGL2d.FlipY = false; //myCanvasGL.SetCanvasOrigin(tmp_x, -tmp_y); //lion use canvas coordinate system lionFill.TestRender(); //surfaceViewportControl.PaintMe(canvasGL2d); }); while (!GlfwApp.ShouldClose()) { //--------------- //render phase and swap GlfwApp.UpdateWindowsFrame(); /* Poll for and process events */ Glfw.PollEvents(); } Glfw.Terminate(); }