protected override void CreatePassiveTexture(Clutter.CairoTexture texture, int with_state) { texture.Clear(); Cairo.Context context = texture.Create(); double lwidth = 1; double hlwidth = lwidth * 0.5; //Draw outline rectangles: DrawSmallCovers(context, texture.Width, texture.Height, lwidth); //Draw play icon: context.MoveTo((texture.Width - lwidth) * 0.5, 0.3 * (texture.Height - lwidth)); context.LineTo((texture.Width - lwidth) * 0.5, texture.Height - hlwidth); context.LineTo(texture.Width - hlwidth, 0.65 * (texture.Height - lwidth)); context.ClosePath(); context.LineWidth = lwidth; double sat = (with_state == 0 ? 0.4 : (with_state == 1 ? 0.6 : 0.8)); context.SetSourceRGBA(sat, sat, sat, 1.0); context.FillPreserve(); context.SetSourceRGB(1.0, 1.0, 1.0); context.Stroke(); ((IDisposable)context.Target).Dispose(); ((IDisposable)context).Dispose(); }
protected override void CreateActiveTexture(Clutter.CairoTexture texture, int with_state) { texture.Clear(); Cairo.Context context = texture.Create(); double lwidth = 1; double hlwidth = lwidth * 0.5; //Draw outline rectangles: DrawSmallCovers(context, texture.Width, texture.Height, lwidth); //Draw stop icon: double dim = Math.Min(texture.Width * 0.6 - hlwidth, texture.Height * 0.6 - hlwidth); context.Rectangle(texture.Width * 0.4, texture.Height * 0.4, dim, dim); context.LineWidth = lwidth; double sat = (with_state == 0 ? 0.4 : (with_state == 1 ? 0.6 : 0.8)); context.SetSourceRGBA(sat, sat, sat, 1.0); context.FillPreserve(); context.SetSourceRGB(1.0, 1.0, 1.0); context.Stroke(); ((IDisposable)context.Target).Dispose(); ((IDisposable)context).Dispose(); }
private void Render(Clutter.CairoTexture texture, int with_state, bool outwards) { texture.Clear(); Cairo.Context context = texture.Create(); double lwidth = 1; double hlwidth = lwidth * 0.5; //Draw outline rectangles: context.Rectangle(hlwidth, hlwidth, texture.Width - lwidth, texture.Height - lwidth); context.SetSourceRGB(1.0, 1.0, 1.0); context.LineWidth = lwidth; context.StrokePreserve(); double sat = (with_state == 0 ? 0.4 : (with_state == 1 ? 0.6 : 0.8)); context.SetSourceRGB(sat, sat, sat); context.Fill(); double dim = 4; context.MoveTo(-dim, 0); context.LineTo(outwards ? 0 : -dim, outwards ? 0 : dim); context.LineTo(0, dim); context.MoveTo(-dim, dim); context.LineTo(0, 0); context.ClosePath(); Cairo.Path arrow = context.CopyPath(); context.NewPath(); double margin = 2 + hlwidth; PointD center = new PointD(texture.Width * 0.5, texture.Height * 0.5); PointD transl = new PointD(center.X - margin, -(center.Y - margin)); context.LineWidth = lwidth; sat = (with_state == 1 ? 0.0 : 1.0); context.SetSourceRGB(sat, sat, sat); context.Translate(center.X, center.Y); for (int i = 0; i < 4; i++) { context.Rotate(Math.PI * 0.5 * i); context.Translate(transl.X, transl.Y); context.AppendPath(arrow); context.Stroke(); context.Translate(-transl.X, -transl.Y); } ((IDisposable)arrow).Dispose(); ((IDisposable)context.Target).Dispose(); ((IDisposable)context).Dispose(); }
protected override void CreateTexture(Clutter.CairoTexture texture, int with_state) { texture.Clear(); Cairo.Context context = texture.Create(); context.Translate(texture.Width * 0.5, texture.Height * 0.5); context.Arc(0, 0, (texture.Height - 1) * 0.5, 0, 2 * Math.PI); context.ClosePath(); context.SetSourceRGBA(1.0, 1.0, 1.0, with_state == 0 ? 0.3 : (with_state == 1 ? 0.5 : 0.7)); context.FillPreserve(); context.SetSourceRGB(1.0, 1.0, 1.0); context.LineWidth = 1; context.Stroke(); ((IDisposable)context.Target).Dispose(); ((IDisposable)context).Dispose(); }
protected override void CreateTexture(Clutter.CairoTexture texture, int with_state) { texture.Clear(); Cairo.Context context = texture.Create(); double lwidth = 1; double hlwidth = lwidth * 0.5; double rotation = Math.PI * (3 - (double)sense) * 0.5; PointD center = new PointD(texture.Width * 0.5, texture.Height * 0.5); //Set the correct orientation: context.Translate(center.X, center.Y); context.Rotate(rotation); context.Translate(-center.X, -center.Y); //Draw border: context.MoveTo(texture.Width * 0.5, hlwidth); context.ArcNegative(texture.Width, center.Y, (texture.Height - lwidth) / 2, 1.5 * Math.PI, 0.5 * Math.PI); context.LineTo(texture.Width * 0.5, texture.Height - hlwidth); context.Arc(texture.Width * 0.5, center.Y, (texture.Height - lwidth) / 2, 0.5 * Math.PI, 1.5 * Math.PI); context.ClosePath(); context.LineWidth = lwidth; context.SetSourceRGBA(1.0, 1.0, 1.0, with_state == 0 ? 0.4 : (with_state == 1 ? 0.6 : 0.8)); context.FillPreserve(); context.SetSourceRGB(1.0, 1.0, 1.0); context.Stroke(); //Draw arrow: context.MoveTo(center.X, center.Y - texture.Height * 0.25); context.LineTo(center.X - texture.Height * 0.25, center.Y); context.LineTo(center.X, center.Y + texture.Height * 0.25); context.LineWidth = lwidth * 1.5; context.SetSourceRGB(0.0, 0.0, 0.0); context.Stroke(); ((IDisposable)context.Target).Dispose(); ((IDisposable)context).Dispose(); }
private void Render(Clutter.CairoTexture texture, int with_state, bool outwards) { texture.Clear(); Cairo.Context context = texture.Create(); double alpha_f = with_state == 0 ? 0.5 : (with_state == 1 ? 0.8 : 1); double lwidth = 1; double hlwidth = lwidth * 0.5; context.LineWidth = lwidth; if (outwards) { context.MoveTo(texture.Width * 0.5 - texture.Height * 0.45, texture.Height * 0.9); context.CurveTo(texture.Width * 0.3, texture.Height, texture.Width * 0.6, texture.Height, texture.Width * 0.5 + texture.Height * 0.45, texture.Height * 0.9); context.ArcNegative(texture.Width * 0.5, texture.Height * 0.9, texture.Height * 0.45, 0, Math.PI); context.ClosePath(); Gradient g1 = new LinearGradient(0, texture.Height / 2, 0, texture.Height); g1.AddColorStop(0, new Cairo.Color(0.6, 0.6, 0.6, 1.0 * alpha_f)); g1.AddColorStop(1.0, new Cairo.Color(1.0, 1.0, 1.0, 1.0 * alpha_f)); context.Pattern = g1; context.FillPreserve(); context.SetSourceRGBA(1.0, 1.0, 1.0, 1.0 * alpha_f); context.Stroke(); ((IDisposable)g1).Dispose(); context.Arc(Width * 0.5, Height * 0.33 + lwidth, Height * 0.33, 0, Math.PI * 2); context.ClosePath(); context.Operator = Operator.Source; Gradient g2 = new RadialGradient(texture.Width * 0.5, texture.Height * 0.25, 0, texture.Width * 0.5, texture.Height * 0.25, texture.Width * 0.5); g2.AddColorStop(0, new Cairo.Color(1.0, 1.0, 1.0, 1.0 * alpha_f)); g2.AddColorStop(1.0, new Cairo.Color(0.6, 0.6, 0.6, 1.0 * alpha_f)); context.Pattern = g2; //context.SetSourceRGBA (1.0, 1.0, 1.0, 1.0*alpha_f); context.FillPreserve(); Gradient g3 = new LinearGradient(0, 0, 0, texture.Height * 0.5); g3.AddColorStop(0, new Cairo.Color(1.0, 1.0, 1.0, 1.0 * alpha_f)); g3.AddColorStop(1.0, new Cairo.Color(0, 0, 0, 1.0 * alpha_f)); context.Pattern = g3; //context.SetSourceRGBA (1.0, 1.0, 1.0, 1.0*alpha_f); context.Stroke(); ((IDisposable)g2).Dispose(); ((IDisposable)g3).Dispose(); } else { Cairo.PointD c = new Cairo.PointD(texture.Width * 0.5, texture.Height * 0.5); double max_r = Math.Min(c.X, c.Y) - hlwidth; context.Arc(c.X, c.Y, max_r, 0, Math.PI * 2); context.ArcNegative(c.X, c.Y, max_r * 0.25, Math.PI * 2, 0); context.ClosePath(); context.SetSourceRGBA(0.5, 0.5, 0.5, 1.0 * alpha_f); context.StrokePreserve(); Gradient g1 = new LinearGradient(0, texture.Height, texture.Width, 0); g1.AddColorStop(0, new Cairo.Color(1.0, 1.0, 1.0, 1.0 * alpha_f)); g1.AddColorStop(0.5, new Cairo.Color(0.7, 0.7, 0.7, 1.0 * alpha_f)); g1.AddColorStop(1, new Cairo.Color(0.9, 0.9, 0.9, 1.0 * alpha_f)); context.Pattern = g1; context.Fill(); ((IDisposable)g1).Dispose(); context.ArcNegative(c.X, c.Y, max_r * 0.25 + lwidth, Math.PI * 1.75, Math.PI * 0.75); context.Arc(c.X, c.Y, max_r, Math.PI * 0.75, Math.PI * 1.75); context.ClosePath(); Gradient g2 = new LinearGradient(c.X, c.Y, c.X * 0.35, c.Y * 0.35); g2.AddColorStop(0, new Cairo.Color(1.0, 1.0, 1.0, 1.0 * alpha_f)); g2.AddColorStop(1, new Cairo.Color(1.0, 1.0, 1.0, 0.0)); context.Pattern = g2; context.Fill(); ((IDisposable)g2).Dispose(); context.ArcNegative(c.X, c.Y, max_r * 0.25 + lwidth, Math.PI * 2, 0); context.Arc(c.X, c.Y, max_r * 0.45, 0, Math.PI * 2); context.SetSourceRGBA(1.0, 1.0, 1.0, 0.8 * alpha_f); context.Fill(); context.Arc(c.X, c.Y, max_r - lwidth, 0, Math.PI * 2); Gradient g3 = new LinearGradient(0, texture.Height, texture.Width, 0); g3.AddColorStop(0, new Cairo.Color(1.0, 1.0, 1.0, 0.0)); g3.AddColorStop(1, new Cairo.Color(0.9, 0.9, 0.9, 1.0 * alpha_f)); context.Pattern = g3; context.Stroke(); ((IDisposable)g3).Dispose(); } ((IDisposable)context.Target).Dispose(); ((IDisposable)context).Dispose(); }