public AbstractTopWindowBridge(RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot) { GlobalRootGraphic.CurrentRootGfx = rootgfx;//temp fix _topWinEventRoot = topWinEventRoot; _rootgfx = rootgfx; }
public void InitRootGraphics( RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot, InnerViewportKind innerViewportKind) { //1. this.rootgfx = rootgfx; this.topWinEventRoot = topWinEventRoot; this.innerViewportKind = innerViewportKind; switch (innerViewportKind) { case InnerViewportKind.GL: { ////temp not suppport //PixelFarm.Drawing.DrawingGL.CanvasGLPortal.Start(); bridge = new OpenGL.MyTopWindowBridgeOpenGL(rootgfx, topWinEventRoot); bridge.BindWindowControl(this); //var view = new OpenGL.GpuOpenGLSurfaceView(); //view.Width = 800; //view.Height = 600; ////view.Dock = DockStyle.Fill; //this.Controls.Add(view); ////--------------------------------------- //view.Bind(bridge); this.winBridge = bridge; } break; case InnerViewportKind.Skia: { //skiasharp *** var bridge = new Skia.MyTopWindowBridgeSkia(rootgfx, topWinEventRoot); //var view = new CpuSurfaceView(); //view.Dock = DockStyle.Fill; //this.Controls.Add(view); ////--------------------------------------- //view.Bind(bridge); this.winBridge = bridge; } break; case InnerViewportKind.GdiPlus: default: { throw new NotSupportedException(); //var bridge = new GdiPlus.MyTopWindowBridgeGdiPlus(rootgfx, topWinEventRoot); //var view = new CpuSurfaceView(); //view.Dock = DockStyle.Fill; //this.Controls.Add(view); ////--------------------------------------- //view.Bind(bridge); //this.winBridge = bridge; } break; } }
public void InitRootGraphics( RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot, InnerViewportKind innerViewportKind) { //1. this.rootgfx = rootgfx; this.topWinEventRoot = topWinEventRoot; this.innerViewportKind = innerViewportKind; switch (innerViewportKind) { case InnerViewportKind.GL: { //temp not suppport throw new NotSupportedException(); //PixelFarm.Drawing.DrawingGL.CanvasGLPortal.Start(); //var bridge = new OpenGL.MyTopWindowBridgeOpenGL(rootgfx, topWinEventRoot); //var view = new OpenGL.GpuOpenGLSurfaceView(); //view.Width = 800; //view.Height = 600; ////view.Dock = DockStyle.Fill; //this.Controls.Add(view); ////--------------------------------------- //view.Bind(bridge); //this.winBridge = bridge; } break; case InnerViewportKind.Skia: { //skiasharp *** var bridge = new Skia.MyTopWindowBridgeSkia(rootgfx, topWinEventRoot); var view = new CpuSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; } break; case InnerViewportKind.GdiPlus: default: { var bridge = new GdiPlus.MyTopWindowBridgeGdiPlus(rootgfx, topWinEventRoot); var view = new CpuSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; } break; } }
public TopWindowBridgeWinForm(RootGraphic rootGraphic, ITopWindowEventRoot topWinEventRoot) { #if DEBUG if (!PixelFarm.Agg.ExternalImageService.HasExternalImgCodec) { PixelFarm.Agg.ExternalImageService.RegisterExternalImageEncodeDelegate(SaveImage); } #endif this.topWinEventRoot = topWinEventRoot; this.rootGraphic = rootGraphic; }
public MyTopWindowBridgeOpenGL(RootGraphic root, ITopWindowEventRoot topWinEventRoot) : base(root, topWinEventRoot) { GlobalRootGraphic.CurrentRootGfx = root; _rootgfx = root; _defaultCur = UIPlatform.CreateCursor(new CursorRequest("system:Default")); _IBeamCur = UIPlatform.CreateCursor(new CursorRequest("system:IBeam")); _pointerCur = UIPlatform.CreateCursor(new CursorRequest("system:Pointer")); _arrowCur = UIPlatform.CreateCursor(new CursorRequest("system:Arrow")); }
public void InitRootGraphics( RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot, InnerViewportKind innerViewportKind) { //1. this.rootgfx = rootgfx; this.topWinEventRoot = topWinEventRoot; this.innerViewportKind = innerViewportKind; switch (innerViewportKind) { case InnerViewportKind.GL: { PixelFarm.Drawing.DrawingGL.CanvasGLPortal.Start(); var bridge = new OpenGL.MyTopWindowBridgeOpenGL(rootgfx, topWinEventRoot); var view = new OpenGL.GpuOpenGLSurfaceView(); view.Width = 800; view.Height = 600; //view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; } break; case InnerViewportKind.GdiPlus: default: { var bridge = new GdiPlus.MyTopWindowBridgeGdiPlus(rootgfx, topWinEventRoot); var view = new GdiPlus.CpuGdiPlusSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; } break; } }
/// <summary> /// create new UIViewport based on this control's current platform /// </summary> /// <returns></returns> public UISurfaceViewportControl CreateNewOne(int w, int h, InnerViewportKind innerViewportKind) { //each viewport has its own root graphics UISurfaceViewportControl newViewportControl = new UISurfaceViewportControl(); newViewportControl.Size = new System.Drawing.Size(w, h); RootGraphic newRootGraphic = _rootgfx.CreateNewOne(w, h); ITopWindowEventRoot topEventRoot = null; if (newRootGraphic is ITopWindowEventRootProvider) { topEventRoot = ((ITopWindowEventRootProvider)newRootGraphic).EventRoot; } newViewportControl.InitRootGraphics( newRootGraphic,//new root topEventRoot, innerViewportKind); return(newViewportControl); }
static AbstractTopWindowBridge GetTopWindowBridge( InnerViewportKind innerViewportKind, RootGraphic rootgfx, ITopWindowEventRoot topWindowEventRoot) { switch (innerViewportKind) { default: throw new NotSupportedException(); case InnerViewportKind.GdiPlusOnGLES: case InnerViewportKind.AggOnGLES: case InnerViewportKind.GLES: return(new OpenGL.MyTopWindowBridgeOpenGL(rootgfx, topWindowEventRoot)); case InnerViewportKind.PureAgg: return(new GdiPlus.MyTopWindowBridgeAgg(rootgfx, topWindowEventRoot)); //bridge to agg case InnerViewportKind.GdiPlus: return(new GdiPlus.MyTopWindowBridgeGdiPlus(rootgfx, topWindowEventRoot)); } }
public MyTopWindowBridgeOpenGL(RootGraphic root, ITopWindowEventRoot topWinEventRoot) : base(root, topWinEventRoot) { }
Stack <UIFocusEventArgs> _focusEventStack = new Stack <UIFocusEventArgs>(); //resuable public TopWindowBridgeWinForm(RootGraphic rootGraphic, ITopWindowEventRoot topWinEventRoot) { _topWinEventRoot = topWinEventRoot; _rootGraphic = rootGraphic; }
public TopWindowBridgeWinForm(RootGraphic rootGraphic, ITopWindowEventRoot topWinEventRoot) { this.topWinEventRoot = topWinEventRoot; this.rootGraphic = rootGraphic; }
public void InitRootGraphics(RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot, InnerViewportKind innerViewportKind, IGpuOpenGLSurfaceView nativeWindow, AbstractTopWindowBridge bridge) { //create a proper bridge**** _rootgfx = rootgfx; _topWinEventRoot = topWinEventRoot; _innerViewportKind = innerViewportKind; _viewport = nativeWindow; _winBridge = bridge; nativeWindow.SetSize(rootgfx.Width, rootgfx.Height); switch (innerViewportKind) { case InnerViewportKind.GdiPlusOnGLES: case InnerViewportKind.AggOnGLES: case InnerViewportKind.GLES: { _winBridge.OnHostControlLoaded(); try { nativeWindow.MakeCurrent(); } catch (Exception ex) { } int w = nativeWindow.Width; int h = nativeWindow.Height; int max = Math.Max(w, h); _pcx = PixelFarm.DrawingGL.GLPainterCore.Create(max, max, w, h, true); _glPainter = new GLPainter(); _glPainter.BindToPainterCore(_pcx); if (PixelFarm.Drawing.GLES2.GLES2Platform.TextService != null) { var printer = new GLBitmapGlyphTextPrinter(_glPainter, PixelFarm.Drawing.GLES2.GLES2Platform.TextService); _glPainter.TextPrinter = printer; } else { //warn....! } //canvasPainter.SmoothingMode = PixelFarm.Drawing.SmoothingMode.HighQuality; //---------------------- //1. win gdi based //var printer = new WinGdiFontPrinter(canvas2d, view.Width, view.Height); //canvasPainter.TextPrinter = printer; //---------------------- //2. raw vxs //var printer = new PixelFarm.Drawing.Fonts.VxsTextPrinter(canvasPainter); //canvasPainter.TextPrinter = printer; //---------------------- //3. agg texture based font texture //_glPainter.TextPrinter = new CpuBlitTextSpanPrinter2(_glPainter, 400, 50, PixelFarm.Drawing.GLES2.GLES2Platform.TextService); //TODO: review this again! //3 var drawboard = new PixelFarm.Drawing.GLES2.MyGLDrawBoard(_glPainter); _glPainter.SetDrawboard(drawboard); _drawboard = drawboard; //{ //in mixed mode //GDI+ on GLES, Agg on GLES we provide a software rendering layer too PixelFarm.Drawing.DrawBoard cpuDrawBoard = null; // CreateSoftwareDrawBoard(view.Width, view.Height, innerViewportKind); drawboard.SetCpuBlitDrawBoardCreator(() => cpuDrawBoard ?? (cpuDrawBoard = CreateSoftwareDrawBoard(w, h, innerViewportKind))); //} ((OpenGL.MyTopWindowBridgeOpenGL)_winBridge).SetCanvas(drawboard); } break; } }
public void InitRootGraphics( RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot, InnerViewportKind innerViewportKind) { //create a proper bridge**** _rootgfx = rootgfx; _topWinEventRoot = topWinEventRoot; _innerViewportKind = innerViewportKind; switch (innerViewportKind) { #if GL_ENABLE case InnerViewportKind.GdiPlusOnGLES: case InnerViewportKind.AggOnGLES: case InnerViewportKind.GLES: { //temp not suppport var bridge = new OpenGL.MyTopWindowBridgeOpenGL(rootgfx, topWinEventRoot); var view = new OpenGL.GpuOpenGLSurfaceView(); view.Width = rootgfx.Width; view.Height = rootgfx.Height; _gpuSurfaceViewUserControl = view; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); _winBridge = bridge; //--------------------------------------- IntPtr hh1 = view.Handle; //force real window handle creation view.MakeCurrent(); int max = Math.Max(view.Width, view.Height); _pcx = GLPainterContext.Create(max, max, view.Width, view.Height, true); _glPainter = new GLPainter(); _glPainter.BindToPainterContext(_pcx); _glPainter.TextPrinter = new GLBitmapGlyphTextPrinter(_glPainter, PixelFarm.Drawing.GLES2.GLES2Platform.TextService); //canvasPainter.SmoothingMode = PixelFarm.Drawing.SmoothingMode.HighQuality; //---------------------- //1. win gdi based //var printer = new WinGdiFontPrinter(canvas2d, view.Width, view.Height); //canvasPainter.TextPrinter = printer; //---------------------- //2. raw vxs //var printer = new PixelFarm.Drawing.Fonts.VxsTextPrinter(canvasPainter); //canvasPainter.TextPrinter = printer; //---------------------- //3. agg texture based font texture //var printer = new AggTextSpanPrinter(canvasPainter, 400, 50); //printer.HintTechnique = Typography.Rendering.HintTechnique.TrueTypeInstruction_VerticalOnly; //printer.UseSubPixelRendering = true; //canvasPainter.TextPrinter = printer; //3 var myGLCanvas1 = new PixelFarm.Drawing.GLES2.MyGLDrawBoard(_glPainter); //{ //in mixed mode //GDI+ on GLES, Agg on GLES we provide a software rendering layer too PixelFarm.Drawing.DrawBoard cpuDrawBoard = CreateSoftwareDrawBoard(view.Width, view.Height, innerViewportKind); myGLCanvas1.SetCpuBlitDrawBoardCreator(() => cpuDrawBoard); //} bridge.SetCanvas(myGLCanvas1); } break; #endif case InnerViewportKind.PureAgg: { var bridge = new GdiPlus.MyTopWindowBridgeAgg(rootgfx, topWinEventRoot); //bridge to agg var view = new CpuSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); _winBridge = bridge; } break; case InnerViewportKind.GdiPlus: default: { var bridge = new GdiPlus.MyTopWindowBridgeGdiPlus(rootgfx, topWinEventRoot); //bridge with GDI+ var view = new CpuSurfaceView(); view.Size = new System.Drawing.Size(rootgfx.Width, rootgfx.Height); this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); _winBridge = bridge; } break; #if __SKIA__ case InnerViewportKind.Skia: { //skiasharp *** var bridge = new Skia.MyTopWindowBridgeSkia(rootgfx, topWinEventRoot); var view = new CpuSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); _winBridge = bridge; } break; #endif } }
public MyTopWindowBridgeGdiPlus(RootGraphic root, ITopWindowEventRoot topWinEventRoot) : base(root, topWinEventRoot) { }
public void InitRootGraphics( RootGraphic rootgfx, ITopWindowEventRoot topWinEventRoot, InnerViewportKind innerViewportKind) { //create a proper bridge**** this.rootgfx = rootgfx; this.topWinEventRoot = topWinEventRoot; this.innerViewportKind = innerViewportKind; switch (innerViewportKind) { case InnerViewportKind.GL: { //temp not suppport //TODO: review here //PixelFarm.Drawing.DrawingGL.CanvasGLPortal.Start(); var bridge = new OpenGL.MyTopWindowBridgeOpenGL(rootgfx, topWinEventRoot); var view = new OpenGL.GpuOpenGLSurfaceView(); view.Width = 800; view.Height = 600; openGLSurfaceView = view; //view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; //--------------------------------------- view.SetGLPaintHandler(HandleGLPaint); hh1 = view.Handle; //force real window handle creation view.MakeCurrent(); //int max = Math.Max(this.Width, this.Height); int max = Math.Max(view.Width, view.Height); canvas2d = PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvasGL2d(max, max); //--------------- //canvas2d.FlipY = true;// //--------------- canvasPainter = new GLCanvasPainter(canvas2d, max, max); //canvasPainter.SmoothingMode = PixelFarm.Drawing.SmoothingMode.HighQuality; //---------------------- //1. win gdi based //var printer = new WinGdiFontPrinter(canvas2d, view.Width, view.Height); //canvasPainter.TextPrinter = printer; //---------------------- //2. raw vxs //var printer = new PixelFarm.Drawing.Fonts.VxsTextPrinter(canvasPainter); //canvasPainter.TextPrinter = printer; //---------------------- //3. agg texture based font texture //var printer = new AggTextSpanPrinter(canvasPainter, 400, 50); //printer.HintTechnique = Typography.Rendering.HintTechnique.TrueTypeInstruction_VerticalOnly; //printer.UseSubPixelRendering = true; //canvasPainter.TextPrinter = printer; var printer = new GLBmpGlyphTextPrinter(canvasPainter, YourImplementation.BootStrapOpenGLES2.myFontLoader); canvasPainter.TextPrinter = printer; // //var myGLCanvas1 = new PixelFarm.Drawing.GLES2.MyGLCanvas(canvasPainter, 0, 0, view.Width, view.Height); var myGLCanvas1 = new PixelFarm.Drawing.GLES2.MyGLCanvas(canvasPainter, 0, 0, view.Width, view.Height); bridge.SetCanvas(myGLCanvas1); } break; #if __SKIA__ case InnerViewportKind.Skia: { //skiasharp *** var bridge = new Skia.MyTopWindowBridgeSkia(rootgfx, topWinEventRoot); var view = new CpuSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; } break; #endif case InnerViewportKind.GdiPlus: default: { var bridge = new GdiPlus.MyTopWindowBridgeGdiPlus(rootgfx, topWinEventRoot); var view = new CpuSurfaceView(); view.Dock = DockStyle.Fill; this.Controls.Add(view); //--------------------------------------- view.Bind(bridge); this.winBridge = bridge; } break; } }
public TopWindowBridge(RootGraphic rootGraphic, ITopWindowEventRoot topWinEventRoot) { this.topWinEventRoot = topWinEventRoot; this.rootGraphic = rootGraphic; }
public MyGlfwTopWindowBridge(RootGraphic root, ITopWindowEventRoot topWinEventRoot) : base(root, topWinEventRoot) { }