private void BuildFX() { Effects.InitAll(Device); _fx = Effects.ColorFX; _tech = _fx.ColorTech; }
public ColorMatrixFilter(ColorMatrix matrix = null) { if (matrix != null) { ColorEffect.Matrix = matrix; ColorEffect.UpdateShaderMatrix(); } }
internal void UpdateImage() { if (Table == null) { return; } Bitmap bm = new Bitmap(1, Scanlines); int counter = 0; foreach (HDMATableEntry entry in Table) { if (entry.ValueType == TableValueType.End) { break; } if (entry.ValueType == TableValueType.Single) { for (int y = counter; y < counter + entry.Scanlines - 0x80 && y < Scanlines; y++) { for (int x = 0; x < bm.Width; x++) { bm.SetPixel(x, y, Color.FromArgb( ColorEffect.HasFlag(ColorHDMAValues.Red) ? (entry.Values[y] & 0x1F) * 8 : 0, ColorEffect.HasFlag(ColorHDMAValues.Green) ? (entry.Values[y] & 0x1F) * 8 : 0, ColorEffect.HasFlag(ColorHDMAValues.Blue) ? (entry.Values[y] & 0x1F) * 8 : 0)); } } counter += entry.Scanlines - 0x80; } else if (entry.ValueType == TableValueType.db) { for (int y = counter; y < counter + entry.Scanlines && y < Scanlines; y++) { for (int x = 0; x < bm.Width; x++) { bm.SetPixel(x, y, Color.FromArgb( ColorEffect.HasFlag(ColorHDMAValues.Red) ? (entry.Values[0] & 0x1F) * 8 : 0, ColorEffect.HasFlag(ColorHDMAValues.Green) ? (entry.Values[0] & 0x1F) * 8 : 0, ColorEffect.HasFlag(ColorHDMAValues.Blue) ? (entry.Values[0] & 0x1F) * 8 : 0)); } } counter += entry.Scanlines; } else { //fixme exception throw new HDMAException(); } } Bitmap retImg = new Bitmap(256, Scanlines); using (TextureBrush brush = new TextureBrush(bm, WrapMode.Tile)) using (Graphics gr = Graphics.FromImage(retImg)) gr.FillRectangle(brush, 0, 0, retImg.Width, retImg.Height); EffectImage = retImg; }
public BoundarySystem(GraphicsDevice device, EffectFactory effectFactory, IComponentContainer <DebugInfo> components, IComponentContainer <Bounds> bounds) { this.Device = device; this.Components = components; this.Bounds = bounds; this.Effect = effectFactory.Construct <ColorEffect>(); this.Bound = new BoundsDrawer3D(device); this.Quad = new BoundsDrawer2D(device); }
public BoundarySystem(GraphicsDevice device, EffectFactory effectFactory, IComponentContainer <DebugInfo> debugInfos, IList <IComponentContainer> containers) : base(debugInfos, containers) { this.Device = device; this.Effect = effectFactory.Construct <ColorEffect>(); this.Bounds = new BoundsDrawer3D(device); this.Quad = new BoundsDrawer2D(device); }
public LineSystem(GraphicsDevice device, EffectFactory effectFactory, IComponentContainer <DebugLine> components) { this.Device = device; this.Components = components; this.Effect = effectFactory.Construct <ColorEffect>(); this.vertices = new VertexPosition[0]; this.indices = new short[0]; }
/// <summary> /// Update the control /// </summary> /// <param name="gameTime">Time since last update</param> public virtual void Update(GameTime gameTime) { if (this.FadeEffect != null) { FadeEffect.Apply(gameTime); } if (this.ColorEffect != null) { ColorEffect.Apply(gameTime); } }
public static ColorMatrix GetColorMatrixBlend(this ColorEffect effect, ColorEffect blendEffect, float ratio) { var a = GetColorMatrixElements(effect, 1.0f); var b = GetColorMatrixElements(blendEffect, 1.0f); for (var x = 0; x < 5; x++) { for (var y = 0; y < 5; y++) { a[x][y] = a[x][y] * (1.0f - ratio) + b[x][y] * ratio; } } return(new ColorMatrix(a)); }
public static float[][] GetColorMatrixElements(this ColorEffect effect, float alpha) { switch (effect) { case ColorEffect.Grayscale: return(new float[][] { new float[] { .3f, .3f, .3f, 0, 0 }, new float[] { .59f, .59f, .59f, 0, 0 }, new float[] { .11f, .11f, .11f, 0, 0 }, new float[] { 0, 0, 0, alpha, 0 }, new float[] { 0, 0, 0, 0, 1 } }); case ColorEffect.Sepia: return(new float[][] { new float[] { 0.393f, 0.349f, 0.272f, 0, 0 }, new float[] { 0.769f, 0.686f, 0.534f, 0, 0 }, new float[] { 0.189f, 0.168f, 0.131f, 0, 0 }, new float[] { 0, 0, 0, alpha, 0 }, new float[] { 0, 0, 0, 0, 1 } }); case ColorEffect.IntenseColor: return(new float[][] { new float[] { 2.0f, -.5f, -.5f, 0.0f, 0.0f }, new float[] { -.5f, 2.0f, -.5f, 0.0f, 0.0f }, new float[] { -.5f, -.5f, 2.0f, 0.0f, 0.0f }, new float[] { 0.0f, 0.0f, 0.0f, alpha, 0.0f }, new float[] { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } }); default: return(new float[][] { new float[] { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }, new float[] { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f }, new float[] { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f }, new float[] { 0.0f, 0.0f, 0.0f, alpha, 0.0f }, new float[] { 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } }); } }
/// <summary> /// /// </summary> /// <param name="channel"></param> /// <param name="table"></param> /// <returns></returns> public override string Code(int Channel, HDMATable Table, bool SA1) { string tablename = ""; if (ColorEffect.HasFlag(ColorHDMAValues.Red)) { tablename += "Red"; } if (ColorEffect.HasFlag(ColorHDMAValues.Green)) { tablename += "Green"; } if (ColorEffect.HasFlag(ColorHDMAValues.Blue)) { tablename += "Blue"; } return(ColorHDMA.Code(Channel, Table, SA1, "." + tablename + "Table")); }
public SkullDemo(IntPtr hInstance) : base(hInstance) { _vb = null; _ib = null; _fx = null; _tech = null; //_fxWVP = null; _inputLayout = null; _wireframeRS = null; _skullIndexCount = 0; _theta = 1.5f * MathF.PI; _phi = 0.1f * MathF.PI; _radius = 20.0f; MainWindowCaption = "Skull Demo"; _lastMousePos = new Point(0, 0); _view = Matrix.Identity; _proj = Matrix.Identity; _skullWorld = Matrix.Translation(0.0f, -2.0f, 0.0f); }
/// <summary> /// config the snapshot /// </summary> /// <param name="wb">WhiteBalance</param> /// <param name="ev">explosure value</param> /// <param name="contrast">Contrast</param> /// <param name="ce">ColorEffect</param> /// <param name="sharp">Sharpness</param> /// <returns>True if succeed</returns> public bool ConfigSnapshot(WhiteBalance wb, EV ev, Contrast contrast, ColorEffect ce, Sharpness sharp) { byte[] writeBuffer = new byte[5]; writeBuffer[0] = (byte)wb; writeBuffer[1] = (byte)ev; writeBuffer[2] = (byte)contrast; writeBuffer[3] = (byte)ce; writeBuffer[4] = (byte)sharp; CreatCommand(5, CMD_SNAPSHOT_CONFIG); CreatCommand(writeBuffer); SendCommand(id_cmd); SendCommand(para_cmd); if (!ReceiveACK(CMD_SNAPSHOT_CONFIG, 100)) { return(false); } return(true); }
/// <summary> /// Changes the hue of the image. Typical values are in the range(-1, 1). /// </summary> public void AdjustHue(float hue) { ColorEffect.Matrix.AdjustHue(hue); ColorEffect.UpdateShaderMatrix(); SetRequiresRedraw(); }
/// <summary> /// Changes the brightness. Typical values are in the range(-1, 1). Values above zero will make the /// image brighter, values below zero will make it darker. /// </summary> public void AdjustBrightness(float brightness) { ColorEffect.Matrix.AdjustBrightness(brightness); ColorEffect.UpdateShaderMatrix(); SetRequiresRedraw(); }
/// <summary> /// Changes the contrast. Typical values are in the range(-1, 1). Values above zero will raise, /// values below zero will reduce the contrast. /// </summary> public void AdjustContrast(float contrast) { ColorEffect.Matrix.AdjustContrast(contrast); ColorEffect.UpdateShaderMatrix(); SetRequiresRedraw(); }
/// <summary> /// Changes the saturation. Typical values are in the range(-1, 1). Values above zero will raise, /// values below zero will reduce the saturation. '-1' will produce a grayscale image. /// </summary> public void AdjustSaturation(float saturation) { ColorEffect.Matrix.AdjustSaturation(saturation); ColorEffect.UpdateShaderMatrix(); SetRequiresRedraw(); }
/// <summary> /// Inverts the colors of the filtered objects. /// </summary> public void Invert() { ColorEffect.Matrix.Invert(); ColorEffect.UpdateShaderMatrix(); SetRequiresRedraw(); }
/// <summary> /// /// </summary> internal void UseCollection() { //http://www.codeproject.com/Articles/20018/Gradients-made-easy List <ColorPosition> _list = new List <ColorPosition>(ColorsPositions); if (_list.Count < 2) { return; } _list.Sort(); if (_list[0].Position != 0) { _list.Insert(0, new ColorPosition(0, 0)); } if (_list[_list.Count - 1].Position < Scanlines) { _list.Add(new ColorPosition(Scanlines, 0)); } List <float> positions = new List <float>(); //positions.Add(0.0f); int maxpos = _list.Max(cp => cp.Position); foreach (ColorPosition cp in _list) { positions.Add((float)cp.Position / (float)maxpos); } //positions.Add(1.0f); List <float> factors = new List <float>(); //factors.Add(0.0f); foreach (ColorPosition cp in _list) { factors.Add((float)cp.Value8Bit / 248.0f); } //factors.Add(1.0f); Bitmap bm = new Bitmap(1, maxpos); using (Graphics g = Graphics.FromImage(bm)) { Rectangle r = new Rectangle(0, 0, bm.Width, maxpos); using (LinearGradientBrush lgb = new LinearGradientBrush(r, Color.FromArgb(_list.Min(cp => cp.Orignal8Bit), 0, 0), Color.FromArgb(_list.Max(cp => cp.Orignal8Bit), 0, 0), 90.0f)) { Blend blend = new Blend(); blend.Factors = factors.ToArray(); blend.Positions = positions.ToArray(); lgb.Blend = blend; g.FillRectangle(lgb, r); } } byte Compare = (byte)(bm.GetPixel(0, 0).R / 8); Table = new HDMATable(); for (int y = 0, scan = 1; y < maxpos; y++, scan++) { byte fivebit = (byte)(bm.GetPixel(0, y).R / 8); if (Compare != fivebit || scan >= 0x80 || y == maxpos - 1) { Table.Add(new HDMATableEntry(TableValueType.db, (byte)scan, (byte)((byte)ColorEffect | Compare))); Compare = fivebit; scan = 0; } //fixme for (int x = 0; x < bm.Width; x++) { bm.SetPixel(x, y, Color.FromArgb( ColorEffect.HasFlag(ColorHDMAValues.Red) ? fivebit * 8 : 0, ColorEffect.HasFlag(ColorHDMAValues.Green) ? fivebit * 8 : 0, ColorEffect.HasFlag(ColorHDMAValues.Blue) ? fivebit * 8 : 0)); } } Table.Add(HDMATableEntry.End); Bitmap retImg = new Bitmap(256, maxpos); using (TextureBrush brush = new TextureBrush(bm, WrapMode.Tile)) using (Graphics gr = Graphics.FromImage(retImg)) gr.FillRectangle(brush, 0, 0, retImg.Width, retImg.Height); bm.Dispose(); EffectImage = retImg; }
public bool IsTouchDelay() => default; // 0x00B0A4A0-0x00B0A5A0 public void SetColorEffect(ColorEffect eColorEffect) { } // 0x00B0A5A0-0x00B0A5B0
public void HandleTouch(TouchStatus status, UserInteractionState?userInteractionState = null) { if (IsCanceled || _effect == null) { return; } if (_effect?.IsDisabled ?? true) { return; } _effect.HandleTouch(status); if (userInteractionState.HasValue) { _effect.HandleUserInteraction(userInteractionState.Value); } if (!_effect.NativeAnimation) { return; } if (_longTapStarted && !_tapCompleted) { return; } var control = _effect.Control; var nativeView = Platform.GetOrCreateRenderer(control)?.NativeView as Widget; if (nativeView == null) { return; } if (status == TouchStatus.Started) { var startColor = nativeView.BackgroundColor; if (startColor.IsDefault) { return; } var endColor = _effect.NativeAnimationColor.ToNative();; if (endColor.IsDefault) { startColor = EColor.FromRgba(startColor.R, startColor.G, startColor.B, startColor.A / 2); endColor = startColor; } Transit transit = new Transit { Repeat = 1, Duration = .2 }; var colorEffect = new ColorEffect(startColor, endColor); colorEffect.EffectEnded += (s, e) => { transit?.Dispose(); }; transit.Objects.Add(nativeView); transit.AddEffect(colorEffect); transit.Go(.2); } }
private void DrawServerEntry(ServerInfo currentEntry) { ColorEffect.StartPaintingServer(currentEntry); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[0])); if (GUILayout.Button("▶")) { if (currentEntry.Password) { _selectedServerId = currentEntry.Id; } else { NetworkServerList.IntroduceToServer(currentEntry.Id); Display = false; } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[1])); if (currentEntry.Password) { GUILayout.Label(KeyIcon, GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[1])); } else { GUILayout.Label("", GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[1])); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[2])); GUILayout.Label(new GUIContent($"{currentEntry.Country}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[2])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[3])); GUILayout.Label(new GUIContent($"{currentEntry.DedicatedServer}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[3])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[4])); GUILayout.Label(new GUIContent($"{currentEntry.DisplayedPing}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[4])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[5])); GUILayout.Label(new GUIContent($"{currentEntry.PlayerCount}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[5])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[6])); GUILayout.Label(new GUIContent($"{currentEntry.MaxPlayers}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[6])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[7])); GUILayout.Label(new GUIContent($"{(GameMode)currentEntry.GameMode}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[7])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[8])); GUILayout.Label(new GUIContent($"{(WarpMode)currentEntry.WarpMode}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[8])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[9])); GUILayout.Label(new GUIContent($"{(TerrainQuality)currentEntry.TerrainQuality}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[9])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[10])); GUILayout.Label(new GUIContent($"{currentEntry.Cheats}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[10])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[11])); GUILayout.Label(new GUIContent($"{currentEntry.ServerName}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[11])); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[12])); if (!string.IsNullOrEmpty(currentEntry.Website)) { if (GUILayout.Button(new GUIContent(currentEntry.WebsiteText), GetCorrectHyperlinkLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[12]))) { Application.OpenURL(currentEntry.Website); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MinWidth(HeaderGridSize[13])); GUILayout.Label(new GUIContent($"{currentEntry.Description}"), GetCorrectLabelStyle(currentEntry), GUILayout.MinWidth(HeaderGridSize[13])); GUILayout.EndHorizontal(); ColorEffect.StopPaintingServer(); }
public static ColorMatrix GetColorMatrix(this ColorEffect effect, float alpha = 1.0f) { return(new ColorMatrix(effect.GetColorMatrixElements(alpha))); }
/// <summary> /// Concatenates the current matrix with another one. /// </summary> public void ConcatColorMatrix(ColorMatrix colorMatrix) { ColorEffect.Matrix.ConcatColorMatrix(colorMatrix); ColorEffect.UpdateShaderMatrix(); SetRequiresRedraw(); }
private void Start() { dM = this.gameObject.GetComponent <DialogueManager>(); cE = this.gameObject.GetComponent <ColorEffect>(); wE = this.gameObject.GetComponent <WaveEffect>(); }
public void HandleTouch(TouchStatus status, TouchInteractionStatus?touchInteractionStatus = null) { if (IsCanceled || effect == null) { return; } if (effect?.IsDisabled ?? true) { return; } if (touchInteractionStatus == TouchInteractionStatus.Started) { effect?.HandleUserInteraction(TouchInteractionStatus.Started); touchInteractionStatus = null; } effect.HandleTouch(status); if (touchInteractionStatus.HasValue) { effect.HandleUserInteraction(touchInteractionStatus.Value); } if (!effect.NativeAnimation) { return; } if (longTapStarted && !tapCompleted) { return; } var control = effect.Element; if (!(Platform.GetOrCreateRenderer(control)?.NativeView is Widget nativeView)) { return; } if (status == TouchStatus.Started) { var startColor = nativeView.BackgroundColor; if (startColor.IsDefault) { return; } var endColor = effect.NativeAnimationColor.ToNative(); if (endColor.IsDefault) { startColor = EColor.FromRgba(startColor.R, startColor.G, startColor.B, startColor.A / 2); endColor = startColor; } var transit = new Transit { Repeat = 1, Duration = .2 }; var colorEffect = new ColorEffect(startColor, endColor); colorEffect.EffectEnded += (s, e) => { transit?.Dispose(); }; transit.Objects.Add(nativeView); transit.AddEffect(colorEffect); transit.Go(.2); } }
public static extern bool MagGetColorEffect(IntPtr hwnd, ref ColorEffect pEffect);