/// <summary> /// Create a label renderer. /// </summary> /// <param name="maxCharCount">Max char count to display for this label. Careful to set this value because greater <paramref name="maxCharCount"/> means more space ocupied in GPU nemory.</param> /// <param name="labelHeight">Label height(in pixels)</param> /// <param name="fontTexture">Use which font to render text?</param> /// <returns></returns> public static LabelRenderer Create(int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { if (fontTexture == null) { fontTexture = FontTexture.Default; } var model = new TextModel(maxCharCount); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.frag"), ShaderType.FragmentShader); var map = new AttributeMap(); map.Add("in_Position", TextModel.strPosition); map.Add("in_UV", TextModel.strUV); var blendState = new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.One); var renderer = new LabelRenderer(model, shaderCodes, map, blendState); renderer.blendState = blendState; renderer.fontTexture = fontTexture; renderer.LabelHeight = labelHeight; return renderer; }
/// <summary> /// Create a label renderer. /// </summary> /// <param name="maxCharCount">Max char count to display for this label. Careful to set this value because greater <paramref name="maxCharCount"/> means more space ocupied in GPU nemory.</param> /// <param name="labelHeight">Label height(in pixels)</param> /// <param name="fontTexture">Use which font to render text?</param> /// <returns></returns> public static LabelRenderer Create(int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { if (fontTexture == null) { fontTexture = FontTexture.Default; } var model = new TextModel(maxCharCount); var shaderCodes = new ShaderCode[2]; shaderCodes[0] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.vert"), ShaderType.VertexShader); shaderCodes[1] = new ShaderCode(ManifestResourceLoader.LoadTextFile( @"Resources\Label.frag"), ShaderType.FragmentShader); var provider = new ShaderCodeArray(shaderCodes); var map = new AttributeMap(); map.Add("in_Position", TextModel.strPosition); map.Add("in_UV", TextModel.strUV); var blendState = new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.One); var renderer = new LabelRenderer(model, provider, map, blendState); renderer.blendState = blendState; renderer.fontTexture = fontTexture; renderer.LabelHeight = labelHeight; return(renderer); }
private void Start() { raycaster = GlobalObject.Get <TerrainRaycaster>(); labelRenderer = GlobalObject.Get <LabelRenderer>(); terrain = GlobalObject.Get <TerrainManager>(); mainCam = GetComponentInChildren <Camera>(); Yrotation = transform.rotation.eulerAngles.x; }
private void Form_Load(object sender, EventArgs e) { { var camera = new Camera( new vec3(0, 0, 5), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var rotator = new SatelliteManipulater(); rotator.Bind(camera, this.glCanvas1); this.scene = new Scene(camera, this.glCanvas1); this.scene.ClearColor = Color.SkyBlue; this.glCanvas1.Resize += this.scene.Resize; } { const int gridsPer2Unit = 20; const int scale = 2; var ground = GroundRenderer.Create(new GroundModel(gridsPer2Unit * scale)); ground.Scale = new vec3(scale, scale, scale); var obj = new SceneObject(); obj.Renderer = ground; this.scene.RootObject.Children.Add(obj); } { SimpleRenderer movableRenderer = SimpleRenderer.Create(new Teapot()); movableRenderer.RotationAxis = new vec3(0, 1, 0); movableRenderer.Scale = new vec3(0.1f, 0.1f, 0.1f); this.movableRenderer = movableRenderer; SceneObject obj = movableRenderer.WrapToSceneObject(); this.scene.RootObject.Children.Add(obj); } { BillboardRenderer billboardRenderer = BillboardRenderer.Create(new BillboardModel()); SceneObject obj = billboardRenderer.WrapToSceneObject(new UpdateBillboardPosition(movableRenderer)); this.scene.RootObject.Children.Add(obj); } { LabelRenderer labelRenderer = LabelRenderer.Create(); labelRenderer.Text = "Teapot - CSharpGL"; SceneObject obj = labelRenderer.WrapToSceneObject(new UpdateLabelPosition(movableRenderer)); this.scene.RootObject.Children.Add(obj); } { var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, new Padding(3, 3, 3, 3), new Size(128, 128)); this.scene.RootUI.Children.Add(uiAxis); } { var frmPropertyGrid = new FormProperyGrid(this.scene); frmPropertyGrid.Show(); } { var frmPropertyGrid = new FormProperyGrid(this.glCanvas1); frmPropertyGrid.Show(); } { this.scene.Start(); } }
protected override void DoUpdate() { if (this.renderer == null) { this.renderer = this.BindingObject.Renderer as LabelRenderer; } //this.transform.Position = this.TargetTransform.Position + new vec3(0, 1, 0); vec3 worldPosition = this.TargetRenderer.WorldPosition + new vec3(0, 0.3f, 0); this.renderer.WorldPosition = worldPosition; }
public static NamedWellRenderer Create(WellModel model, Color wellColor, string name = "", int maxCharCount = 64, int labelHeight = 32, IFontTexture fontTexture = null) { WellRenderer well = WellRenderer.Create(model); well.WellColor = wellColor; LabelRenderer label = new LabelRenderer(maxCharCount, labelHeight, fontTexture); label.Text = name; var renderer = new NamedWellRenderer(well, label); return(renderer); }
protected override void DoUpdate(double elapsedTime) { if (this.renderer == null) { this.renderer = this.BindingObject.Renderer as LabelRenderer; } //this.transform.Position = this.TargetTransform.Position + new vec3(0, 1, 0); vec3 worldPosition = this.TargetRenderer.Position + new vec3(0, 0.3f, 0); this.renderer.SetPosition(worldPosition); }
protected override void DoRender(RenderEventArgs arg) { { WellRenderer renderer = this.wellRenderer; if (renderer != null) { renderer.Render(arg); } } { LabelRenderer renderer = this.nameRenderer; if (renderer != null) { renderer.Render(arg); } } }
protected override void DoInitialize() { { WellRenderer renderer = this.wellRenderer; if (renderer != null) { renderer.Initialize(); } } { LabelRenderer renderer = this.nameRenderer; if (renderer != null) { renderer.Initialize(); } } }
protected override void DisposeUnmanagedResources() { { WellRenderer renderer = this.wellRenderer; if (renderer != null) { renderer.Dispose(); } } { LabelRenderer renderer = this.nameRenderer; if (renderer != null) { renderer.Dispose(); } } base.DisposeUnmanagedResources(); }
private void Form_Load(object sender, EventArgs e) { { this.glCanvas1.ShowSystemCursor = false; } { var camera = new Camera( new vec3(0, 0, 1), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var rotator = new SatelliteManipulater(); rotator.Bind(camera, this.glCanvas1); this.rotator = rotator; this.scene = new Scene(camera, this.glCanvas1); this.glCanvas1.Resize += this.scene.Resize; } { var labelRenderer = new LabelRenderer(1000, 640); labelRenderer.Text = "LABEL 1"; labelRenderer.Initialize(); labelRenderer.SetPosition(new vec3(1, 0, 0)); SceneObject obj = labelRenderer.WrapToSceneObject("label 1"); this.scene.RootObject.Children.Add(obj); this.blendSwitch1 = labelRenderer.SwitchList.Find(x => x is BlendSwitch) as BlendSwitch; this.labelRenderer1 = labelRenderer; } { var labelRenderer = new LabelRenderer(1000, 640); labelRenderer.Text = "LABEL 2"; labelRenderer.Initialize(); labelRenderer.SetPosition(new vec3(-1, 0, 0)); SceneObject obj = labelRenderer.WrapToSceneObject("label 2"); this.scene.RootObject.Children.Add(obj); this.blendSwitch2 = labelRenderer.SwitchList.Find(x => x is BlendSwitch) as BlendSwitch; this.labelRenderer2 = labelRenderer; } }
/// <summary> /// renders well pipeline(several cylinders) /// </summary> /// <param name="model"></param> /// <param name="shaderCodes"></param> /// <param name="propertyNameMap"></param> /// <param name="switches"></param> private NamedWellRenderer(WellRenderer wellRenderer, LabelRenderer nameRenderer) { //this.ModelMatrix = mat4.identity(); this.wellRenderer = wellRenderer; this.nameRenderer = nameRenderer; }
/// <summary> /// Renders the supplied Label_t as XAML. /// </summary> /// <param name="control">Label_t to render.</param> public void Visit(Label_t control) { LabelRenderer.Render(_writer, control); }
public static void Init() { CheckBoxRenderer.InitRenderer(); LabelRenderer.InitRenderer(); CheckBoxCellRenderer.Init(); }
public LabelRendererTests() { _labelRenderer = new LabelRenderer(); }
protected override CSharpGL.Tuple <WellRenderer, LabelRenderer> Convert(vec3 originalWorldPosition, TracyEnergy.Simba.Data.Keywords.impl.WellSpecs wellspec, TracyEnergy.Simba.Data.Keywords.impl.WellCompatCollection wellCompatList) { int locI = wellspec.Li; int locJ = wellspec.Lj; //if compat has position ,use compat List <WellCompat> segments = null; if (wellCompatList != null) { segments = wellCompatList.GetWellSegments(wellspec.WellName); } if (segments != null && segments.Count > 0) { locI = segments[0].PosI; locJ = segments[0].PosJ; } if (!this.grid.DataSource.IsSliceBlock(locI, locJ)) { return(null); } vec3 h1 = this.grid.DataSource.PointFLT(locI, locJ, 1); vec3 h2 = this.grid.DataSource.PointBRT(locI, locJ, 1); vec3 d0 = h2 - h1; float L = (float)d0.length(); d0 = d0.normalize(); vec3 vec = d0 * (L * 0.5f); vec3 comp1 = CenterOfLine(h1, h2);; //地层完井段的起始点 //vec3 minCord = this.grid.FlipTransform * this.grid.SourceActiveBounds.Min; vec3 minCord = this.grid.DataSource.SourceActiveBounds.Min; vec3 maxCord = this.grid.DataSource.SourceActiveBounds.Max; Rectangle3D rectSrc = new Rectangle3D(minCord, maxCord); vec3 modelTop = new vec3(comp1.x, comp1.y, rectSrc.Max.z); float mdx = rectSrc.SizeX; float mdy = rectSrc.SizeY; float mdz = rectSrc.SizeZ; float xyextend = System.Math.Max(mdx, mdy); //XY平面的最大边长 float extHeight; //延长线段 if (mdz < 0.1f * xyextend) //z很小 { extHeight = 0.1f * xyextend; } else if (mdz < 0.2f * xyextend) { extHeight = mdz * 0.5f; } else if (mdz < 0.3f * xyextend) { extHeight = mdz * 0.25f; } else if (mdz < 0.4f * xyextend) { extHeight = mdz * 0.2f; } else { extHeight = 0.2f * mdz; } //地表坐标 vec3 direction = new vec3(0, 0, 1.0f); vec3 head = modelTop + direction * extHeight; //确定井的半径 float wellRadius; #region decide the well radius if (mdx < mdy) { if (mdy * 0.5f >= mdx) //长方形的模型 { int n = this.grid.DataSource.NX; if (n >= 10) { wellRadius = (mdx / n) * 0.5f; } else { wellRadius = (mdx / n) * 0.35f; } } else { int n = this.grid.DataSource.NX; if (n >= 10) { n = 10; wellRadius = (mdx / n) * 0.5f; } else { wellRadius = (mdx / n) * 0.35f; } } } else if (mdx == mdy) { int n = Math.Min(this.grid.DataSource.NX, this.grid.DataSource.NY); if (n >= 10) { n = 10; wellRadius = (mdx / n) * 0.85f; } else { wellRadius = (mdx / n) * 0.5f; } } else { if (mdx * 0.5f >= mdy) { int n = this.grid.DataSource.NY; if (n > 10) { n = 10; wellRadius = (mdy / n) * 0.5f; } else { wellRadius = (mdy / n) * 0.35f; } } else { int n = this.grid.DataSource.NY; if (n > 10) { n = 10; wellRadius = (mdx / n) * 0.5f; } else { wellRadius = (mdx / n) * 0.35f; } } } #endregion Fluid fluid = FluidConverter.Convert(wellspec.Fluid); Color pipeColor = MapFluidToColor(fluid); Color textColor = Color.White; List <vec3> wellPath = new List <vec3>(); wellPath.Add(head); wellPath.Add(modelTop); #region start decide the trajery of the well { int lastI = locI; int lastJ = locJ; int lastK = -1; vec3 lastvec3 = comp1; int segCount = segments.Count; for (int i = 0; i < segCount; i++) { WellCompat compseg = segments[i]; int compI = compseg.PosI; int compJ = compseg.PosJ; int compK1 = compseg.K1; int compK2 = compseg.K2; if (compK1 == compK2)//同一网格上 { if ((lastI != compI) || (lastJ != compJ) || (lastK != compK1)) { vec3 s1 = this.grid.DataSource.PointFLT(compI, compJ, compK1); vec3 s2 = this.grid.DataSource.PointBRT(compI, compJ, compK1); vec3 point = CenterOfLine(s1, s2); wellPath.Add(point); lastI = compI; lastJ = compJ; lastK = compK1; } } else //compK1 != compK2 { //k1 coord if ((lastI != compI) || (lastJ != compJ) || (lastK != compK1)) { vec3 s1 = this.grid.DataSource.PointFLT(compI, compJ, compK1); vec3 s2 = this.grid.DataSource.PointBRT(compI, compJ, compK1); vec3 point = CenterOfLine(s1, s2); wellPath.Add(point); } lastI = compI; lastJ = compJ; lastK = compK1; if ((lastI != compI) || (lastJ != compJ) || (lastK != compK2)) { vec3 s1 = this.grid.DataSource.PointFLT(compI, compJ, compK2); vec3 s2 = this.grid.DataSource.PointBRT(compI, compJ, compK2); vec3 point = CenterOfLine(s1, s2); wellPath.Add(point); } lastI = compI; lastJ = compJ; lastK = compK2; } }//end for var model = new WellModel(wellPath, wellRadius); //NamedWellRenderer renderer = NamedWellRenderer.Create(model, pipeColor, wellspec.WellName, 12); WellRenderer wellRenderer = WellRenderer.Create(model); wellRenderer.WellColor = pipeColor; LabelRenderer labelRenderer = new LabelRenderer(64, 64); labelRenderer.Text = wellspec.WellName; var result = new CSharpGL.Tuple <WellRenderer, LabelRenderer>(wellRenderer, labelRenderer); return(result); } #endregion }
public async Task ReusingFrameRendererDoesCauseOverlapWithPreviousContent() { ContentPage page = new ContentPage(); Frame frame1 = new Frame() { Content = new Label() { Text = "I am frame 1" } }; page.Content = frame1; await page.Dispatcher.DispatchAsync(() => { using (var pageRenderer = GetRenderer(page)) using (var renderer = GetRenderer(frame1)) { var frameRenderer = GetRenderer(frame1); Frame frame2 = new Frame() { Content = new Label() { Text = "I am frame 2" } }; frameRenderer.SetElement(frame2); Assert.AreEqual(1, frameRenderer.NativeView.Subviews.Length); Assert.AreEqual(1, frameRenderer.NativeView.Subviews[0].Subviews.Length); #pragma warning disable CS0612 // Type or member is obsolete #pragma warning disable CS0618 // Type or member is obsolete LabelRenderer labelRenderer = null; #pragma warning restore CS0618 // Type or member is obsolete #pragma warning restore CS0612 // Type or member is obsolete var view = frameRenderer.NativeView; Assert.AreEqual(1, view.Subviews.Length); while (labelRenderer == null) { view = view.Subviews[0]; Assert.AreEqual(1, view.Subviews.Length); #pragma warning disable CS0612 // Type or member is obsolete #pragma warning disable CS0618 // Type or member is obsolete labelRenderer = view as LabelRenderer; #pragma warning restore CS0618 // Type or member is obsolete #pragma warning restore CS0612 // Type or member is obsolete } var uILabel = (UILabel)labelRenderer.NativeView.Subviews[0]; Assert.AreEqual("I am frame 2", uILabel.Text); Frame frameWithButton = new Frame() { Content = new Button() { Text = "I am a Button" } }; frameRenderer.SetElement(frameWithButton); var uiButton = (UIButton)frameRenderer.NativeView.Subviews[0].Subviews[0].Subviews[0]; Assert.AreEqual("I am a Button", uiButton.Title(UIControlState.Normal)); } }); }
private void Form_Load(object sender, EventArgs e) { { var camera = new Camera( new vec3(0, 0, 5), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, this.glCanvas1.Width, this.glCanvas1.Height); var rotator = new SatelliteManipulater(); rotator.Bind(camera, this.glCanvas1); this.scene = new Scene(camera, this.glCanvas1); this.glCanvas1.Resize += this.scene.Resize; } { const int gridsPer2Unit = 20; const int scale = 2; var ground = GroundRenderer.Create(new GroundModel(gridsPer2Unit * scale)); ground.Scale = scale; //ground.Initialize(); //this.ground = ground; var obj = new SceneObject(); obj.Renderer = ground; this.scene.RootObject.Children.Add(obj); } //MovableRenderer movableRenderer; { movableRenderer = MovableRenderer.Create(new Teapot()); //movableRenderer.Initialize(); movableRenderer.Scale = 0.1f; var obj = new SceneObject(); obj.Renderer = movableRenderer; this.scene.RootObject.Children.Add(obj); } { BillboardRenderer billboardRenderer = BillboardRenderer.GetRenderer(new BillboardModel()); //billboardRenderer.Initialize(); var obj = new SceneObject(); obj.Renderer = billboardRenderer; var updatePosition = new UpdateBillboardPosition(movableRenderer); obj.ScriptList.Add(updatePosition); this.scene.RootObject.Children.Add(obj); } { var labelRenderer = new LabelRenderer(); labelRenderer.Initialize(); labelRenderer.Text = "Teapot - CSharpGL"; SceneObject obj = labelRenderer.WrapToSceneObject(new UpdateLabelPosition(movableRenderer)); this.scene.RootObject.Children.Add(obj); } { var uiAxis = new UIAxis(AnchorStyles.Left | AnchorStyles.Bottom, new Padding(3, 3, 3, 3), new Size(128, 128), -100, 100); //uiAxis.Initialize(); this.scene.UIRoot.Children.Add(uiAxis); } { var frmPropertyGrid = new FormProperyGrid(this.scene); frmPropertyGrid.Show(); } { var frmPropertyGrid = new FormProperyGrid(this.glCanvas1); frmPropertyGrid.Show(); } { this.scene.Start(); } }
public async Task ReusingFrameRendererDoesCauseOverlapWithPreviousContent() { await Device.InvokeOnMainThreadAsync(() => { ContentPage page = new ContentPage(); Frame frame1 = new Frame() { Content = new Label() { Text = "I am frame 1" } }; page.Content = frame1; using (var pageRenderer = GetRenderer(page)) using (var renderer = GetRenderer(frame1)) { var frameRenderer = GetRenderer(frame1); Frame frame2 = new Frame() { Content = new Label() { Text = "I am frame 2" } }; frameRenderer.SetElement(frame2); Assert.AreEqual(1, frameRenderer.NativeView.Subviews.Length); Assert.AreEqual(1, frameRenderer.NativeView.Subviews[0].Subviews.Length); LabelRenderer labelRenderer = null; var view = frameRenderer.NativeView; Assert.AreEqual(1, view.Subviews.Length); while (labelRenderer == null) { view = view.Subviews[0]; Assert.AreEqual(1, view.Subviews.Length); labelRenderer = view as LabelRenderer; } var uILabel = (UILabel)labelRenderer.NativeView.Subviews[0]; Assert.AreEqual("I am frame 2", uILabel.Text); Frame frameWithButton = new Frame() { Content = new Button() { Text = "I am a Button" } }; frameRenderer.SetElement(frameWithButton); var uiButton = (UIButton)frameRenderer.NativeView.Subviews[0].Subviews[0].Subviews[0]; Assert.AreEqual("I am a Button", uiButton.Title(UIControlState.Normal)); } }); }
public LogHandler(ILogHandler original, LabelRenderer renderer) { labelRenderer = renderer; this.original = original; }