private void GenerateDropParticles(List <Tuple <BCPoint, NominoElement> > StartCoordinates, List <Tuple <BCPoint, NominoElement> > EndCoordinates) { for (int index = 0; index < StartCoordinates.Count; index++) { var Original = StartCoordinates[index]; var Drop = EndCoordinates[index]; Bitmap ColorSource = null; if (Original.Item2.Block is ImageBlock) { var casted = (Original.Item2.Block as ImageBlock); var ImageBase = casted._RotationImages[MathHelper.mod(casted.Rotation, casted._RotationImages.Length)]; ColorSource = new Bitmap(ImageBase); } for (float y = Original.Item1.Y; y < Drop.Item1.Y - 1; y++) { GenerateDropParticles(new BCPoint(Original.Item1.X, y), 30, () => new BCPoint(0f, (float)((rgen.NextDouble() * 0.2f) + 0.4f)), (xget, yget) => { var xposget = xget * ColorSource.Width; var yposget = yget * ColorSource.Height; var grabcolor = ColorSource.GetPixel((int)xposget, (int)yposget); return(grabcolor); }); } } }
internal override NativeElement ToNative(NativeElement element) { var native = EnsureDerived <NativeTextBlock>(element); if (native == null) { #if __ANDROID__ native = new NativeTextBlock(Rect.ToNative(), Font.ToNative(), Baseline); #elif __IOS__ native = new NativeTextBlock(Rect.ToNative(), Font.ToNative()); native.Baseline = (ushort)Baseline; #elif WINDOWS_PHONE_APP native = new NativeTextBlock(); native.Font = Font.ToNative(); native.Baseline = Baseline; #endif } native.AutoWidth = AutoWidth; native.BaselineAlignment = BaselineAlignment.ToNative(); if (Color != BandColor.Empty) { native.Color = Color.ToNative(); } native.ColorSource = ColorSource.ToNative(); return(base.ToNative(native)); }
public void Next_Returns_A_Color() { ColorSource source = new ColorSource(); var value = source.Next(null); Assert.IsFalse(value.IsEmpty); }
void OnColorSourceTapped(object sender, EventArgs e) { if (!(sender is BindableObject bindable) || !(bindable.BindingContext is ColorSource selectedColorSource)) { return; } if (SelectedColorSource == selectedColorSource) { return; } selectedColorSource.IsSelected = true; if (SelectedColorSource != null) { SelectedColorSource.IsSelected = false; } SelectedColorSource = selectedColorSource; SKColor.TryParse(SelectedColorSource.Color.ToHex(), out SKColor sKColor); _color = sKColor; _paint.Color = _color; }
private async void OnColorSourceClick(object sender, EventArgs e) { if (!(sender is BindableObject bindable) || !(bindable.BindingContext is ColorSource selectedColorSource)) { return; } if (_selectedColorSource == selectedColorSource) { return; } selectedColorSource.IsSelected = true; if (_selectedColorSource != null) { _selectedColorSource.IsSelected = false; } _selectedColorSource = selectedColorSource; if (!(sender is ContentView contentView) || !(contentView.Content is Image image)) { return; } image.Opacity = 0; await image.FadeTo(1, 600, Easing.CubicOut); image.Opacity = 1; }
void Awake() { if (instance != null) { throw new Exception("Only one color source instance should exist"); } instance = this; }
public StatusItemWindow(ColorDefinition definition, ColorSource source, NewOrEdit neworedit) { colorDefinition = definition; newOrEdit = neworedit; InitializeComponent(); this.Title = newOrEdit.ToString() + " " + source.ToString() + " Item"; groupBox.Header = source.ToString(); textBoxName.Text = colorDefinition.ParameterValue; buttonColor.Background = colorDefinition.BackgroundColor; }
public static SecondaryColorSource LerpInstantiate(ColorSource parent1, ColorSource parent2, float t, Transform parentTransform) { SecondaryColorSource lerpedColorSource = Instantiate(Resources.Load <SecondaryColorSource>("Secondary Color Source Template"), parentTransform); lerpedColorSource.Parent1 = parent1; lerpedColorSource.Parent2 = parent2; lerpedColorSource.LerpOnParents(t); return(lerpedColorSource); }
protected override void Initialize() { // Inputs InputSlot.CreateOrResetRequired <Topology>(ref topologyInputSlot, this); InputSlot.CreateOrResetRequired <IFaceAttribute <Color> >(ref faceColorsInputSlot, this); // Fields colorSource = ColorSource.Constant; constantColor = Color.black; blendWeight = 0.5f; // Outputs OutputSlot.CreateOrResetGrouped <IEdgeAttribute <Color> >(ref faceEdgeColorsOutputSlot, this, "Face Edge Colors", "Attributes"); }
public void RegisterColorSource(ColorSource colorSource) { if (colorSource is SecondaryColorSource) { return; } foreach (ColorSource otherColorSource in PrimaryColorSources) { SecondaryColorSources.Add(SecondaryColorSource.LerpInstantiate(colorSource, otherColorSource, 0.5F, this.transform)); } PrimaryColorSources.Add(colorSource); }
/// <summary> /// Constructor required by deserialization /// </summary> /// <param name="info">SerializationInfo</param> /// <param name="context">StreamingContext</param> public ColorDef(SerializationInfo info, StreamingContext context) { name = (string)info.GetValue("Name", typeof(string)); source = (ColorSource)info.GetValue("Source", typeof(ColorSource)); object dbg = info.GetValue("Color", typeof(object)); try { color = (Color)info.GetValue("Color", typeof(Color)); } catch (Exception e) { color = Color.Black; } }
protected override void Initialize() { // Inputs InputSlot.CreateOrResetRequired <Topology>(ref topologyInputSlot, this); InputSlot.CreateOrResetRequired <FaceGroupCollection>(ref faceGroupCollectionInputSlot, this); InputSlot.CreateOrResetRequired <IFaceAttribute <int> >(ref faceGroupIndicesInputSlot, this); // Fields colorSource = ColorSource.Constant; constantColor = Color.white; randomness.Initialize(this); // Outputs OutputSlot.CreateOrResetGrouped <IFaceGroupAttribute <Color> >(ref faceGroupColorsOutputSlot, this, "Face Group Colors", "Attributes"); OutputSlot.CreateOrResetGrouped <IFaceAttribute <Color> >(ref faceColorsOutputSlot, this, "Face Colors", "Attributes"); }
public ColorDef(string pName, Color pColor, ColorSource cs) { name = pName; color = pColor; source = cs; if (name == null) { switch (source) { case ColorSource.fromParent: name = CDfromParent.name; break; case ColorSource.fromStyle: name = CDfromStyle.name; break; //case ColorSource.fromLayer: name = CDfromLayer.name;break; } } }
private static ColorResult ConvertCMYK(ColorSpace resultSpace, ColorSource source) { ColorResult color; double c = source.component0; double m = source.component1; double y = source.component2; double k = source.component3; switch (resultSpace) { case ColorSpace.RGBSpace: RGB rgb = ColorConverter.CMYKtoRGB(c, m, y, k); color = new ColorResult(rgb.Red, rgb.Green, rgb.Blue); break; case ColorSpace.HSBSpace: HSB hsb = ColorConverter.CMYKtoHSB(c, m, y, k); color = new ColorResult(hsb.Hue, hsb.Saturation, hsb.Brightness); break; case ColorSpace.HSLSpace: HSL hsl = ColorConverter.CMYKtoHSL(c, m, y, k); color = new ColorResult(hsl.Hue, hsl.Saturation, hsl.Luminance); break; case ColorSpace.LabSpace: Lab lab = ColorConverter.CMYKtoLab(c, m, y, k); color = ScaleCIELabOutputRange(lab); break; case ColorSpace.XYZSpace: XYZ xyz = ColorConverter.CMYKtoXYZ(c, m, y, k); color = new ColorResult(xyz.X, xyz.Y, xyz.Z); break; case ColorSpace.GraySpace: color = new ColorResult(ColorConverter.CMYKtoRGB(c, m, y, k).GetIntensity(source.maxChannelValue)); break; default: throw new InvalidEnumArgumentException("Unsupported color space conversion", (int)resultSpace, typeof(ColorSpace)); } return(color); }
/// <summary> /// Select a color source /// </summary> /// <param name="src">The Color Source</param> /// <param name="regions">Rectangle array of regions</param> public void SetColorSource(Source src, Rectangle[] regions) { switch (src) { case Source.Screencap: source = new Screencap(serial); break; case Source.ScreencapThreaded: source = new ScreencapThread(serial, regions); break; default: System.Diagnostics.Debug.Print("Optie nog niet in busineslayer geimplementeerd"); break; } }
private static ColorResult ConvertHSL(ColorSpace resultSpace, ColorSource source) { ColorResult color; double h = source.component0; double s = source.component1; double l = source.component2; switch (resultSpace) { case ColorSpace.RGBSpace: RGB rgb = ColorConverter.HSLtoRGB(h, s, l); color = new ColorResult(rgb.Red, rgb.Green, rgb.Blue); break; case ColorSpace.CMYKSpace: CMYK cmyk = ColorConverter.HSLtoCMYK(h, s, l); color = new ColorResult(cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black); break; case ColorSpace.HSBSpace: HSB hsb = ColorConverter.HSLtoHSB(h, s, l); color = new ColorResult(hsb.Hue, hsb.Saturation, hsb.Brightness); break; case ColorSpace.LabSpace: Lab lab = ColorConverter.HSLToLab(h, s, l); color = ScaleCIELabOutputRange(lab); break; case ColorSpace.XYZSpace: XYZ xyz = ColorConverter.HSLtoXYZ(h, s, l); color = new ColorResult(xyz.X, xyz.Y, xyz.Z); break; case ColorSpace.GraySpace: color = new ColorResult(ColorConverter.HSLtoRGB(h, s, l).GetIntensity(source.maxChannelValue)); break; default: throw new InvalidEnumArgumentException(nameof(resultSpace), (int)resultSpace, typeof(ColorSpace)); } return(color); }
private static ColorResult ConvertRGB(ColorSpace resultSpace, ColorSource source) { ColorResult color; double red = source.component0; double green = source.component1; double blue = source.component2; switch (resultSpace) { case ColorSpace.CMYKSpace: CMYK cmyk = ColorConverter.RGBtoCMYK(red, green, blue); color = new ColorResult(cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black); break; case ColorSpace.GraySpace: color = new ColorResult(ColorConverter.GetRGBIntensity(red, green, blue, source.maxChannelValue)); break; case ColorSpace.HSBSpace: HSB hsb = ColorConverter.RGBtoHSB(red, green, blue); color = new ColorResult(hsb.Hue, hsb.Saturation, hsb.Brightness); break; case ColorSpace.HSLSpace: HSL hsl = ColorConverter.RGBtoHSL(red, green, blue); color = new ColorResult(hsl.Hue, hsl.Saturation, hsl.Luminance); break; case ColorSpace.LabSpace: Lab lab = ColorConverter.RGBtoLab(red, green, blue); color = ScaleCIELabOutputRange(lab); break; case ColorSpace.XYZSpace: XYZ xyz = ColorConverter.RGBtoXYZ(red, green, blue); color = new ColorResult(xyz.X, xyz.Y, xyz.Z); break; default: throw new InvalidEnumArgumentException("Unsupported color space conversion", (int)resultSpace, typeof(ColorSpace)); } return(color); }
private static ColorResult ConvertLAB(ColorSpace resultSpace, ColorSource source) { ColorResult color; double l = source.component0; double a = source.component1; double b = source.component2; switch (resultSpace) { case ColorSpace.RGBSpace: RGB rgb = ColorConverter.LabtoRGB(l, a, b); color = new ColorResult(rgb.Red, rgb.Green, rgb.Blue); break; case ColorSpace.CMYKSpace: CMYK cmyk = ColorConverter.LabtoCMYK(l, a, b); color = new ColorResult(cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black); break; case ColorSpace.HSBSpace: HSB hsb = ColorConverter.LabtoHSB(l, a, b); color = new ColorResult(hsb.Hue, hsb.Saturation, hsb.Brightness); break; case ColorSpace.HSLSpace: HSL hsl = ColorConverter.LabtoHSL(l, a, b); color = new ColorResult(hsl.Hue, hsl.Saturation, hsl.Luminance); break; case ColorSpace.XYZSpace: XYZ xyz = ColorConverter.LabtoXYZ(l, a, b); color = new ColorResult(xyz.X, xyz.Y, xyz.Z); break; case ColorSpace.GraySpace: color = new ColorResult(ColorConverter.LabtoRGB(l, a, b).GetIntensity(source.maxChannelValue)); break; default: throw new InvalidEnumArgumentException("Unsupported color space conversion", (int)resultSpace, typeof(ColorSpace)); } return(color); }
private static ColorResult ConvertXYZ(ColorSpace resultSpace, ColorSource source) { ColorResult color; double x = source.component0; double y = source.component1; double z = source.component2; switch (resultSpace) { case ColorSpace.RGBSpace: RGB rgb = ColorConverter.XYZtoRGB(x, y, z); color = new ColorResult(rgb.Red, rgb.Green, rgb.Blue); break; case ColorSpace.CMYKSpace: CMYK cmyk = ColorConverter.XYZtoCMYK(x, y, z); color = new ColorResult(cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black); break; case ColorSpace.HSBSpace: HSB hsb = ColorConverter.XYZtoHSB(x, y, z); color = new ColorResult(hsb.Hue, hsb.Saturation, hsb.Brightness); break; case ColorSpace.HSLSpace: HSL hsl = ColorConverter.XYZtoHSL(x, y, z); color = new ColorResult(hsl.Hue, hsl.Saturation, hsl.Luminance); break; case ColorSpace.LabSpace: Lab lab = ColorConverter.XYZtoLab(x, y, z); color = ScaleCIELabOutputRange(lab); break; case ColorSpace.GraySpace: color = new ColorResult(ColorConverter.XYZtoRGB(x, y, z).GetIntensity(source.maxChannelValue)); break; default: throw new InvalidEnumArgumentException("Unsupported color space conversion", (int)resultSpace, typeof(ColorSpace)); } return(color); }
// Use this for initialization void Start() { switches1 = FindObjectsOfType <Switch>(); switches2 = FindObjectsOfType <ToggleSwitch>(); switches3 = FindObjectsOfType <TimedSwitch>(); switches4 = FindObjectsOfType <FlipFlop>(); switches = switches1.Concat(switches2.Concat(switches3.Concat(switches4).ToArray()).ToArray()).ToArray(); switches = switches.Distinct().ToArray(); for (int i = 0; i < switches.Length; i++) { //find target ColorSource target = switches[i].target; //generate crosspoint (x1,y2) Vector2 pos1 = switches[i].transform.position; Vector2 pos2 = target.transform.position; Vector2 intersection = new Vector2(pos1.x, pos2.y); Vector3[] Positions = new Vector3[] { new Vector3(pos1.x, pos1.y, foreGroundThreshold), new Vector3(intersection.x, intersection.y, foreGroundThreshold), new Vector3(pos2.x, pos2.y, foreGroundThreshold) }; //draw lines (linerenderer) LineRenderer lineRenderAtSwitch = switches[i].gameObject.AddComponent <LineRenderer>() as LineRenderer; lineRenderAtSwitch.positionCount = 3; lineRenderAtSwitch.SetPositions(Positions); lineRenderAtSwitch.widthMultiplier = lineWidth; lineRenderAtSwitch.material = Resources.Load <Material>("Materials/Line"); lineRenderAtSwitch.material.color = target.Color; lineRenderAtSwitch.enabled = false; //TODO: Draw Icons for Switches and lights GameObject iconSwitch = Instantiate(switchIcon, switches[i].transform); iconSwitch.GetComponent <SpriteRenderer>().color = target.Color; iconSwitch.tag = "icon"; iconSwitch.transform.position = new Vector3(pos1.x, pos1.y, foreGroundThreshold); iconSwitch.transform.position = new Vector3(iconSwitch.transform.position.x, iconSwitch.transform.position.y, foreGroundThreshold); iconSwitch.SetActive(false); GameObject iconSource = Instantiate(sourceIcon, switches[i].transform); iconSource.GetComponent <SpriteRenderer>().color = target.Color; iconSource.tag = "icon"; iconSource.transform.position = new Vector3(pos2.x, pos2.y, foreGroundThreshold); iconSource.SetActive(false); } }
private static ColorResult ConvertGray(ColorSpace resultSpace, ColorSource source) { ColorResult color; double gray = source.component0; switch (resultSpace) { case ColorSpace.RGBSpace: color = new ColorResult(gray, gray, gray); break; case ColorSpace.CMYKSpace: CMYK cmyk = ColorConverter.RGBtoCMYK(gray, gray, gray); color = new ColorResult(cmyk.Cyan, cmyk.Magenta, cmyk.Yellow, cmyk.Black); break; case ColorSpace.HSBSpace: HSB hsb = ColorConverter.RGBtoHSB(gray, gray, gray); color = new ColorResult(hsb.Hue, hsb.Saturation, hsb.Brightness); break; case ColorSpace.HSLSpace: HSL hsl = ColorConverter.RGBtoHSL(gray, gray, gray); color = new ColorResult(hsl.Hue, hsl.Saturation, hsl.Luminance); break; case ColorSpace.LabSpace: Lab lab = ColorConverter.RGBtoLab(gray, gray, gray); color = ScaleCIELabOutputRange(lab); break; case ColorSpace.XYZSpace: XYZ xyz = ColorConverter.RGBtoXYZ(gray, gray, gray); color = new ColorResult(xyz.X, xyz.Y, xyz.Z); break; default: throw new InvalidEnumArgumentException(nameof(resultSpace), (int)resultSpace, typeof(ColorSpace)); } return(color); }
internal override NativeElement ToNative(NativeElement element) { var native = EnsureDerived <NativeWrappedTextBlock>(element); if (native == null) { #if __ANDROID__ || __IOS__ native = new NativeWrappedTextBlock(Rect.ToNative(), Font.ToNative()); #elif WINDOWS_PHONE_APP native = new NativeWrappedTextBlock(); native.Font = Font.ToNative(); #endif } native.AutoHeight = AutoHeight; if (Color != BandColor.Empty) { native.Color = Color.ToNative(); } native.ColorSource = ColorSource.ToNative(); return(base.ToNative(native)); }
public void Dispose() { if (Sensor == null) { return; } WSRConfig.GetInstance().logInfo("TASKS", "Stop Tasks"); if (MotionSource != null) { MotionSource.Cancel(); } if (QRCodeSource != null) { QRCodeSource.Cancel(); } if (GestureSource != null) { GestureSource.Cancel(); } if (ColorSource != null) { ColorSource.Cancel(); } if (FaceSource != null) { FaceSource.Cancel(); } if (Sensor == null) { return; } WSRConfig.GetInstance().logInfo("KINECT", "Stop Sensor"); try { Sensor.AudioSource.Stop(); Sensor.Stop(); } catch (Exception) {} }
public void UnregisterColorSource(ColorSource colorSource) { if (colorSource is SecondaryColorSource) { SecondaryColorSources.Remove(colorSource); return; } for (int i = 0; i < SecondaryColorSources.Count; ++i) { SecondaryColorSource current = SecondaryColorSources[i] as SecondaryColorSource; if (current.Parent1 == colorSource || current.Parent2 == colorSource) { Destroy(current.gameObject); } } SecondaryColorSources.RemoveAll(secondaryCS => (secondaryCS as SecondaryColorSource).Parent1 == colorSource || (secondaryCS as SecondaryColorSource).Parent2 == colorSource); PrimaryColorSources.Remove(colorSource); }
void OnGradientColorPickerColorSelected(object sender, ColorSource e) { gradientColorPicker.FadeTo(0, 0, Easing.SinInOut); gradientColorPicker.TranslateTo(0, 1000, 0, Easing.SinInOut); ColorSource selectedColor = gradientColorPicker.SelectedColorSource; if (selectedColor == null) { return; } if (!(layout.Children.FirstOrDefault() is Entry entry)) { return; } int red = (int)(selectedColor.Color.R * 255); int green = (int)(selectedColor.Color.G * 255); int blue = (int)(selectedColor.Color.B * 255); entry.Text = $"#{red:X2}{green:X2}{blue:X2}"; }
void UpdateSource(ColorSource source) { if (source == ColorSource.Hsv) { double h, s, v; ColorHelper.HsvFromColor(Color, out h, out s, out v); H = (int)h; S = (int)(s * 100); V = (int)(v * 100); } else if (source == ColorSource.Rgba) { R = Color.R; G = Color.G; B = Color.B; A = Color.A; } else { Hex = ColorHelper.StringFromColor(Color); } }
/// <summary> /// Converts between the specified color spaces. /// </summary> /// <param name="sourceSpace">The source space.</param> /// <param name="resultSpace">The result space.</param> /// <param name="colorComponents">The color to convert.</param> /// <returns>The status of the conversion</returns> public static unsafe short Convert(ColorSpace sourceSpace, ColorSpace resultSpace, short *colorComponents) { if (sourceSpace < ColorSpace.RGBSpace || sourceSpace > ColorSpace.XYZSpace) { return(PSError.paramErr); } // TODO: CMYK, LAB and XYZ conversions are different than Photoshop if (sourceSpace != resultSpace) { #if DEBUG System.Diagnostics.Debug.Assert(sourceSpace != ColorSpace.ChosenSpace); #endif double component0 = 0; double component1 = 0; double component2 = 0; double component3 = 0; switch (sourceSpace) { case ColorSpace.RGBSpace: case ColorSpace.XYZSpace: component0 = colorComponents[0] / 255.0; component1 = colorComponents[1] / 255.0; component2 = colorComponents[2] / 255.0; break; case ColorSpace.LabSpace: component0 = (colorComponents[0] / 255.0) * 100.0; // Scale the a and b components from [0, 255] to [-128, 127]. component1 = colorComponents[1] - 128.0; component2 = colorComponents[2] - 128.0; break; case ColorSpace.HSBSpace: case ColorSpace.HSLSpace: // The hue is not scaled for the source space to prevent // rounding errors when converting to other color spaces. component0 = colorComponents[0]; component1 = colorComponents[1] / 255.0; component2 = colorComponents[2] / 255.0; break; case ColorSpace.CMYKSpace: component0 = colorComponents[0] / 255.0; component1 = colorComponents[1] / 255.0; component2 = colorComponents[2] / 255.0; component3 = colorComponents[3] / 255.0; break; case ColorSpace.GraySpace: component0 = colorComponents[0] / 255.0; break; default: return(PSError.paramErr); } ColorSource source = new ColorSource(component0, component1, component2, component3, BitsPerChannel.Eight); ColorResult result; switch (sourceSpace) { case ColorSpace.RGBSpace: result = ConvertRGB(resultSpace, source); break; case ColorSpace.HSBSpace: result = ConvertHSB(resultSpace, source); break; case ColorSpace.CMYKSpace: result = ConvertCMYK(resultSpace, source); break; case ColorSpace.LabSpace: result = ConvertLAB(resultSpace, source); break; case ColorSpace.GraySpace: result = ConvertGray(resultSpace, source); break; case ColorSpace.HSLSpace: result = ConvertHSL(resultSpace, source); break; case ColorSpace.XYZSpace: result = ConvertXYZ(resultSpace, source); break; default: return(PSError.paramErr); } switch (resultSpace) { case ColorSpace.RGBSpace: case ColorSpace.XYZSpace: colorComponents[0] = (short)Math.Round(result.component0 * 255.0).Clamp(0, 255); colorComponents[1] = (short)Math.Round(result.component1 * 255.0).Clamp(0, 255); colorComponents[2] = (short)Math.Round(result.component2 * 255.0).Clamp(0, 255); break; case ColorSpace.GraySpace: colorComponents[0] = (short)Math.Round(result.component0 * 255.0).Clamp(0, 255); break; case ColorSpace.HSBSpace: case ColorSpace.HSLSpace: // The hue range is documented as [0, 359]. // Wrap the hue to 0 if the value is 360. int hue = (int)Math.Round(result.component0 * 360.0); colorComponents[0] = (short)(hue == 360 ? 0 : hue); colorComponents[1] = (short)Math.Round(result.component1 * 255.0).Clamp(0, 255); colorComponents[2] = (short)Math.Round(result.component2 * 255.0).Clamp(0, 255); break; case ColorSpace.LabSpace: // The Lab values have already been scaled to the appropriate range. colorComponents[0] = (short)Math.Round(result.component0).Clamp(0, 255); colorComponents[1] = (short)Math.Round(result.component1).Clamp(0, 255); colorComponents[2] = (short)Math.Round(result.component2).Clamp(0, 255); break; case ColorSpace.CMYKSpace: colorComponents[0] = (short)Math.Round(result.component0 * 255.0).Clamp(0, 255); colorComponents[1] = (short)Math.Round(result.component1 * 255.0).Clamp(0, 255); colorComponents[2] = (short)Math.Round(result.component2 * 255.0).Clamp(0, 255); colorComponents[3] = (short)Math.Round(result.component3 * 255.0).Clamp(0, 255); break; default: throw new InvalidEnumArgumentException("Unsupported color space conversion", (int)resultSpace, typeof(ColorSpace)); } } return(PSError.noErr); }
void UpdateRest(ColorSource source) { HueColor = ColorHelper.ColorFromHsv(H, 1, 1); UpdateSource((ColorSource)(((int)source + 1) % 3)); UpdateSource((ColorSource)(((int)source + 2) % 3)); }
public ColorDef(string pName, Color pColor) { name = pName; color = pColor; source = ColorSource.fromName; }
/// <summary> /// Converts between the specified color spaces. /// </summary> /// <param name="sourceSpace">The source space.</param> /// <param name="resultSpace">The result space.</param> /// <param name="c0">The first component.</param> /// <param name="c1">The second component.</param> /// <param name="c2">The third component.</param> /// <param name="c3">The fourth component.</param> /// <returns>The status of the conversion</returns> public static int Convert(ColorSpace sourceSpace, ColorSpace resultSpace, ref byte c0, ref byte c1, ref byte c2, ref byte c3) { if (sourceSpace < ColorSpace.RGBSpace || sourceSpace > ColorSpace.XYZSpace) { return(PSError.kSPBadParameterError); } if (sourceSpace != resultSpace) { if (resultSpace < ColorSpace.RGBSpace || resultSpace > ColorSpace.XYZSpace) { return(PSError.kSPBadParameterError); } double component0; double component1 = 0; double component2 = 0; double component3 = 0; switch (sourceSpace) { case ColorSpace.RGBSpace: case ColorSpace.XYZSpace: component0 = c0 / 255.0; component1 = c1 / 255.0; component2 = c2 / 255.0; break; case ColorSpace.LabSpace: component0 = (c0 / 255.0) * 100.0; // Scale the a and b components from [0, 255] to [-128, 127]. component1 = c1 - 128.0; component2 = c2 - 128.0; break; case ColorSpace.HSBSpace: case ColorSpace.HSLSpace: component0 = Math.Round((c0 / 255.0) * 360.0); component1 = c1 / 255.0; component2 = c2 / 255.0; break; case ColorSpace.CMYKSpace: component0 = c0 / 255.0; component1 = c1 / 255.0; component2 = c2 / 255.0; component3 = c3 / 255.0; break; case ColorSpace.GraySpace: component0 = c0 / 255.0; break; default: return(PSError.kSPBadParameterError); } ColorSource source = new ColorSource(component0, component1, component2, component3, BitsPerChannel.Eight); ColorResult result; switch (sourceSpace) { case ColorSpace.RGBSpace: result = ConvertRGB(resultSpace, source); break; case ColorSpace.HSBSpace: result = ConvertHSB(resultSpace, source); break; case ColorSpace.CMYKSpace: result = ConvertCMYK(resultSpace, source); break; case ColorSpace.LabSpace: result = ConvertLAB(resultSpace, source); break; case ColorSpace.GraySpace: result = ConvertGray(resultSpace, source); break; case ColorSpace.HSLSpace: result = ConvertHSL(resultSpace, source); break; case ColorSpace.XYZSpace: result = ConvertXYZ(resultSpace, source); break; default: return(PSError.kSPBadParameterError); } switch (resultSpace) { case ColorSpace.HSBSpace: case ColorSpace.HSLSpace: c0 = (byte)Math.Round(result.component0 * 255.0).Clamp(0, 255); c1 = (byte)Math.Round(result.component1 * 255.0).Clamp(0, 255); c2 = (byte)Math.Round(result.component2 * 255.0).Clamp(0, 255); break; case ColorSpace.GraySpace: c0 = (byte)Math.Round(result.component0 * 255.0).Clamp(0, 255); break; case ColorSpace.RGBSpace: c0 = (byte)Math.Round(result.component0 * 255.0).Clamp(0, 255); c1 = (byte)Math.Round(result.component1 * 255.0).Clamp(0, 255); c2 = (byte)Math.Round(result.component2 * 255.0).Clamp(0, 255); break; case ColorSpace.LabSpace: // The Lab values have already been scaled to the appropriate range. c0 = (byte)Math.Round(result.component0).Clamp(0, 255); c1 = (byte)Math.Round(result.component1).Clamp(0, 255); c2 = (byte)Math.Round(result.component2).Clamp(0, 255); break; case ColorSpace.XYZSpace: c0 = (byte)Math.Round(result.component0 * 255.0).Clamp(0, 255); c1 = (byte)Math.Round(result.component1 * 255.0).Clamp(0, 255); c2 = (byte)Math.Round(result.component2 * 255.0).Clamp(0, 255); break; case ColorSpace.CMYKSpace: default: c0 = (byte)Math.Round(result.component0 * 255.0).Clamp(0, 255); c1 = (byte)Math.Round(result.component1 * 255.0).Clamp(0, 255); c2 = (byte)Math.Round(result.component2 * 255.0).Clamp(0, 255); c3 = (byte)Math.Round(result.component3 * 255.0).Clamp(0, 255); break; } } return(PSError.kSPNoError); }
/// <summary> /// Fills the image with intensity values, created by calling <paramref name="f"/> /// for each pixel in the image. /// If the image is a gray scale image, the intensity is used for all three color channels of the input value /// and the intensity of the green output channel is written to the image. /// </summary> /// <param name="bmp">The bitmap to filter.</param> /// <param name="f">The transfer function.</param> /// <exception cref="ArgumentNullException">Is thrown, /// if <c>null</c> is given for <paramref name="bmp"/>, or <paramref name="f"/>.</exception> /// <exception cref="ArgumentException">Is thrown, /// if the pixel format of <paramref name="bmp"/> is not on of the following: /// <see cref="PixelFormat.Format8bppIndexed"/>, /// <see cref="PixelFormat.Format24bppRgb"/>, /// or <see cref="PixelFormat.Format32bppArgb"/>. /// </exception> public static void FillWith(this Bitmap bmp, ColorSource f) { if (bmp == null) throw new ArgumentNullException("bmp"); if (f == null) throw new ArgumentNullException("f"); var w = bmp.Width; var h = bmp.Height; BitmapData bmpData; IntPtr line; switch (bmp.PixelFormat) { case PixelFormat.Format8bppIndexed: bmpData = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); line = bmpData.Scan0; for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { Marshal.WriteByte(line, x, f(x, y).G); } line += bmpData.Stride; } bmp.UnlockBits(bmpData); break; case PixelFormat.Format24bppRgb: bmpData = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); line = bmpData.Scan0; for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { var ofs = x * 3; var c = f(x, y); Marshal.WriteByte(line, ofs + 0, c.B); Marshal.WriteByte(line, ofs + 1, c.G); Marshal.WriteByte(line, ofs + 2, c.R); } line += bmpData.Stride; } bmp.UnlockBits(bmpData); break; case PixelFormat.Format32bppArgb: bmpData = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); line = bmpData.Scan0; for (var y = 0; y < h; y++) { for (var x = 0; x < w; x++) { var ofs = x * 4; var c = f(x, y); Marshal.WriteInt32(line, ofs, c.ToArgb()); } line += bmpData.Stride; } bmp.UnlockBits(bmpData); break; default: throw new ArgumentException("The pixel format of the given bitmap is not supported.", "bmp"); } }