public override void OnDraw() { GetRenderer().Clear(new RGBA_Doubles(1, 1, 1, 1)); GetRenderer().Rasterizer.SetVectorClipBox(M.Zero <T>(), M.Zero <T>(), width(), height()); m_Controller.FastRender(m_SuperFast.status()); m_Controller.Render(GetRenderer()); //m_SuperFast.Render(GetRenderer()); base.OnDraw(); }
public override void OnDraw() { base.OnDraw(); if (m_ShowFrameRate) { T GraphOffsetY = M.New <T>(-105); if (m_ShowPotentialDrawsBudgetGraph.status()) { IAffineTransformMatrix <T> Position = MatrixFactory <T> .NewTranslation(M.Zero <T>(), GraphOffsetY); m_PotentialDrawsBudgetGraph.Draw(Position, GetRenderer()); } if (m_ShowPotentialUpdatesBudgetGraph.status()) { IAffineTransformMatrix <T> Position = MatrixFactory <T> .NewTranslation(M.Zero <T>(), GraphOffsetY); m_PotentialUpdatesBudgetGraph.Draw(Position, GetRenderer()); } if (m_ShowActualDrawsBudgetGraph.status()) { IAffineTransformMatrix <T> Position = MatrixFactory <T> .NewTranslation(M.Zero <T>(), GraphOffsetY); m_ActualDrawsBudgetGraph.Draw(Position, GetRenderer()); } } }
public override void OnDraw() { FormatRGB pf = new FormatRGB(rbuf_window(), new BlenderBGR()); FormatGray pfr = new FormatGray(rbuf_window(), new BlenderGray(), 3, 2); FormatGray pfg = new FormatGray(rbuf_window(), new BlenderGray(), 3, 1); FormatGray pfb = new FormatGray(rbuf_window(), new BlenderGray(), 3, 0); FormatClippingProxy clippingProxy = new FormatClippingProxy(pf); FormatClippingProxy clippingProxyRed = new FormatClippingProxy(pfr); FormatClippingProxy clippingProxyGreen = new FormatClippingProxy(pfg); FormatClippingProxy clippingProxyBlue = new FormatClippingProxy(pfb); RasterizerScanlineAA <T> ras = new RasterizerScanlineAA <T>(); ScanlinePacked8 sl = new ScanlinePacked8(); clippingProxy.Clear(m_UseBlackBackground.status() ? new RGBA_Doubles(0, 0, 0) : new RGBA_Doubles(1, 1, 1)); RGBA_Bytes FillColor = m_UseBlackBackground.status() ? new RGBA_Bytes(255, 255, 255, (uint)(m_alpha.value().ToInt())) : new RGBA_Bytes(0, 0, 0, (uint)(m_alpha.value().ToInt())); VertexSource.Ellipse <T> er = new AGG.VertexSource.Ellipse <T>(width().Divide(2).Subtract(0.87 * 50), height().Divide(2).Subtract(0.5 * 50), M.New <T>(100), M.New <T>(100), 100); ras.AddPath(er); Renderer <T> .RenderSolid(clippingProxyRed, ras, sl, FillColor); VertexSource.Ellipse <T> eg = new AGG.VertexSource.Ellipse <T>(width().Divide(2).Add(0.87 * 50), height().Divide(2).Subtract(0.5 * 50), M.New <T>(100), M.New <T>(100), 100); ras.AddPath(eg); Renderer <T> .RenderSolid(clippingProxyGreen, ras, sl, FillColor); //renderer_scanlines.render_scanlines_aa_solid(ras, sl, rbg, new gray8(0, unsigned(m_alpha.Value()))); VertexSource.Ellipse <T> eb = new AGG.VertexSource.Ellipse <T>(width().Divide(2), height().Divide(2).Add(50), M.New <T>(100), M.New <T>(100), 100); ras.AddPath(eb); Renderer <T> .RenderSolid(clippingProxyBlue, ras, sl, FillColor); //renderer_scanlines.render_scanlines_aa_solid(ras, sl, rbb, new gray8(0, unsigned(m_alpha.Value()))); //m_alpha.Render(ras, sl, clippingProxy); //m_UseBlackBackground.Render(ras, sl, clippingProxy); base.OnDraw(); }
public lion_outline_application(PixelFormats format, ERenderOrigin RenderOrigin) : base(format, RenderOrigin) { m_width_slider = new AGG.UI.SliderWidget <T>(5, 5, 150, 12); m_scanline = new AGG.UI.cbox_ctrl <T>(160, 5, "Use Scanline Rasterizer"); m_scanline.status(true); parse_lion(); AddChild(m_width_slider); m_width_slider.SetTransform(MatrixFactory <T> .NewIdentity(VectorDimension.Two)); m_width_slider.range(0.0, 4.0); m_width_slider.value(1.0); m_width_slider.label("Width {0:F2}"); AddChild(m_scanline); m_scanline.SetTransform(MatrixFactory <T> .NewIdentity(VectorDimension.Two)); }
public override void OnDraw() { int width = (int)rbuf_window().Width; int height = (int)rbuf_window().Height; IPixelFormat pixf = new FormatRGB(rbuf_window(), new BlenderBGR()); FormatClippingProxy clippingProxy = new FormatClippingProxy(pixf); clippingProxy.Clear(new RGBA_Doubles(1, 1, 1)); IAffineTransformMatrix <T> mtx = MatrixFactory <T> .NewIdentity(VectorDimension.Two); mtx.Translate(MatrixFactory <T> .CreateVector2D(g_base_dx.Negative(), g_base_dy.Negative())); mtx.Scale(g_scale); mtx.RotateAlong(MatrixFactory <T> .CreateVector2D(0, 0), g_angle.Add(Math.PI).ToDouble()); mtx.Shear(MatrixFactory <T> .CreateVector2D(g_skew_x.Divide(1000.0), g_skew_y.Divide(1000.0))); mtx.Translate(MatrixFactory <T> .CreateVector2D(width / 2, height / 2)); if (m_scanline.status()) { g_rasterizer.SetVectorClipBox(0, 0, width, height); ConvStroke <T> stroke = new ConvStroke <T>(g_path); stroke.Width = m_width_slider.value(); stroke.LineJoin = LineJoin.RoundJoin; ConvTransform <T> trans = new ConvTransform <T>(stroke, mtx); Renderer <T> .RenderSolidAllPaths(clippingProxy, g_rasterizer, g_scanline, trans, g_colors, g_path_idx, g_npaths); } else { /* * double w = m_width_slider.Value() * mtx.scale(); * * line_profile_aa profile = new line_profile_aa(w, new gamma_none()); * renderer_outline_aa ren = new renderer_outline_aa(rb, profile); * rasterizer_outline_aa ras = new rasterizer_outline_aa(ren); * * conv_transform trans = new conv_transform(g_path, mtx); * * ras.render_all_paths(trans, g_colors, g_path_idx, g_npaths); */ } base.OnDraw(); }
public override void OnDraw() { GammaLut gamma = new GammaLut(m_gamma.value().ToDouble()); IBlender NormalBlender = new BlenderBGRA(); IBlender GammaBlender = new BlenderGammaBGRA(gamma); FormatRGBA pixf = new FormatRGBA(rbuf_window(), NormalBlender); FormatClippingProxy clippingProxy = new FormatClippingProxy(pixf); clippingProxy.Clear(m_white_on_black.status() ? new RGBA_Doubles(0, 0, 0) : new RGBA_Doubles(1, 1, 1)); RasterizerScanlineAA <T> ras = new RasterizerScanlineAA <T>(); ScanlinePacked8 sl = new ScanlinePacked8(); Ellipse <T> e = new Ellipse <T>(); // TODO: If you drag the control circles below the bottom of the window we get an exception. This does not happen in AGG. // It needs to be debugged. Turning on clipping fixes it. But standard agg works without clipping. Could be a bigger problem than this. //ras.clip_box(0, 0, width(), height()); // Render two "control" circles e.Init(m_x[0], m_y[0], M.New <T>(3), M.New <T>(3), 16); ras.AddPath(e); Renderer <T> .RenderSolid(clippingProxy, ras, sl, new RGBA_Bytes(127, 127, 127)); e.Init(m_x[1], m_y[1], M.New <T>(3), M.New <T>(3), 16); ras.AddPath(e); Renderer <T> .RenderSolid(clippingProxy, ras, sl, new RGBA_Bytes(127, 127, 127)); T d = m_offset.value(); // Creating a rounded rectangle RoundedRect <T> r = new RoundedRect <T>(m_x[0].Add(d), m_y[0].Add(d), m_x[1].Add(d), m_y[1].Add(d), m_radius.value()); r.NormalizeRadius(); // Drawing as an outline if (!m_DrawAsOutlineCheckBox.status()) { ConvStroke <T> p = new ConvStroke <T>(r); p.Width = M.One <T>(); ras.AddPath(p); } else { ras.AddPath(r); } pixf.Blender = GammaBlender; Renderer <T> .RenderSolid(clippingProxy, ras, sl, m_white_on_black.status()?new RGBA_Bytes(1, 1, 1) : new RGBA_Bytes(0, 0, 0)); // this was in the original demo, but it does nothing because we changed the blender not the gamma function. //ras.gamma(new gamma_none()); // so let's change the blender instead pixf.Blender = NormalBlender; // Render the controls //m_radius.Render(ras, sl, clippingProxy); //m_gamma.Render(ras, sl, clippingProxy); //m_offset.Render(ras, sl, clippingProxy); //m_white_on_black.Render(ras, sl, clippingProxy); //m_DrawAsOutlineCheckBox.Render(ras, sl, clippingProxy); base.OnDraw(); }