コード例 #1
0
 public override void FillCircle(RawColor color, Vector2f center, float radius)
 {
     using (System.Drawing.Brush brush2 = CreateBrush(color))
     {
         InternalGraphics.FillEllipse(brush2, center.X - radius, center.Y - radius, radius * 2, radius * 2);
     }
 }
コード例 #2
0
        public void DrawString(string s, Font font, RawColor color, Vector2f point, Vector2f align)
        {
            Vector2f size     = Graphics.MeasureString(s, font);
            Vector2f newPoint = new Vector2f(point.X - size.X * align.X, point.Y - size.Y * align.Y);

            Graphics.DrawString(s, font, color, newPoint);
        }
コード例 #3
0
ファイル: Mixer.cs プロジェクト: xxjbcxx/smapi-mod-dump
        protected override bool PerformDropIn(Object dropInItem, Farmer farmer)
        {
            if (FirstDroppedItem == null)
            {
                FirstDroppedItem = dropInItem;
                PlaySound(Sound.Ship);
            }
            else
            {
                SecondDroppedItem = dropInItem;
                var q1 = FirstDroppedItem.quality;
                var q2 = SecondDroppedItem.quality;

                var itemQuality = Math.Max(0, q1 + q2 - 1);
                var itemPrice   = (FirstDroppedItem.price * (4 + q1) + SecondDroppedItem.price * (4 + q2)) / 4;

                var random  = GetRandom();
                var postfix = $"{FirstDroppedItem.Name.First()}{SecondDroppedItem.Name.First()}-{(char)random.Next('A', 'Z')}{random.Next(1, 9)}{random.Next(0, 9)}";
                var hue     = random.Next(0, 359); // TODO: Not random color.
                var color   = RawColor.FromHSL(hue, 0.75, 0.55).ToXnaColor();

                PutItem(NewMachinesModConfig.ExperementalLiquidID, 1, itemQuality, $"{{0}} {postfix}", itemPrice, color); // TODO: From config?
                minutesUntilReady = GetMinutesUntilReady(GetOutputItem(SecondDroppedItem));                               // TODO: From config?

                PlaySound(Sound.Ship);
                PlaySound(Sound.Bubbles);
            }
            return(true);
        }
コード例 #4
0
        /*private Bitmap PixelsToBitmap(RawColor[,] pix)
         * {
         *      Bitmap bmp = new Bitmap(pix.GetLength(0), pix.GetLength(1));
         * }*/



        int DistanceSquared(RawColor c1, RawColor c2)
        {
            int dR = c1.R - c2.R;
            int dG = c1.G - c2.G;
            int dB = c1.B - c2.B;

            return(dR * dR + dG * dG + dB * dB);
        }
コード例 #5
0
        bool IsGray(RawColor c)
        {
            int sum    = c.R + c.G + c.B;
            int sqrSum = (c.R * c.R + c.G * c.G + c.B * c.B) * 3;
            int var9   = sqrSum - sum * sum;          //Var9=9*Variance

            return(var9 < 3000);
        }
コード例 #6
0
        public void Clear(RawColor color)
        {
            VkClearColorValue clearValue = new VkClearColorValue(color.R, color.G, color.B, color.A);

            VkImageSubresourceRange clearRange = new VkImageSubresourceRange(VkImageAspectFlags.Color, 0, 1, 0, 1);

            vkCmdClearColorImage(CommandBuffer, NativeDevice.NativeSwapChain.Images[(int)imageIndex], VkImageLayout.ColorAttachmentOptimal, &clearValue, 1, &clearRange);
        }
コード例 #7
0
        private void RenderBoardAction(Vector2i position, int actionIndex)
        {
            Graphics.FillRectangle(RawColor.FromRGB(0xC57B10), Square(position, 0.4f));
            CreateBoardAction action        = (CreateBoardAction)Tree.Replay.Actions[actionIndex];
            Vector2f          pixelPosition = ToGraphic(new Vector2f(position.X, position.Y));

            if (action.Width == action.Height)
            {
                DrawString(action.Width.ToString(), font, RawColor.Black, pixelPosition, new Vector2f(0.5f, 0.5f));
            }
        }
コード例 #8
0
        public void CheckHexConversion()
        {
            var raw = RawColor.FromHex("12AB34");

            Assert.AreEqual(18, raw.R);
            Assert.AreEqual(171, raw.G);
            Assert.AreEqual(52, raw.B);

            var hex = raw.ToHex();

            Assert.AreEqual("12AB34", hex);
        }
コード例 #9
0
        public void CheckHsbConversion()
        {
            var    c1 = new RawColor(18, 171, 52);
            double h, s, l;

            c1.ToHSL(out h, out s, out l);
            var c2 = RawColor.FromHSL(h, s, l);

            Assert.AreEqual(c1.R, c2.R, 1);
            Assert.AreEqual(c1.G, c2.G, 1);
            Assert.AreEqual(c1.B, c2.B, 1);
        }
コード例 #10
0
ファイル: ColorParser.cs プロジェクト: xxjbcxx/smapi-mod-dump
 public static Color?Parse(string colorName)
 {
     if (Regex.Match(colorName, @"#?[\dA-Fa-f]{6}").Success)
     {
         return(RawColor.FromHex(colorName.Substring(1)).ToXnaColor());
     }
     else
     {
         var propertyInfo = typeof(Color).GetProperty(colorName, BindingFlags.Static | BindingFlags.Public);
         return((Color?)propertyInfo?.GetValue(null));
     }
 }
コード例 #11
0
ファイル: MachineBase.cs プロジェクト: xxjbcxx/smapi-mod-dump
        private Color?GetColor(OutputItem outputItem, Object dropInItem)
        {
            var color = outputItem?.Color;

            if (string.IsNullOrWhiteSpace(color))
            {
                return(null);
            }

            return((color != "@")
                ? RawColor.FromHex(color).ToXnaColor()
                : DominantColorFinder.GetDominantColor(dropInItem.ParentSheetIndex, Game1.objectSpriteSheet, 16, 16));
        }
コード例 #12
0
        RawColor[] RadiusColor(Pixels pix, Point center, int[,] radiusData, int maxRadius)
        {
            int[]      counts   = new int[maxRadius + 1];
            int[]      sumR     = new int[maxRadius + 1];
            int[]      sumG     = new int[maxRadius + 1];
            int[]      sumB     = new int[maxRadius + 1];
            RawColor[] result   = new RawColor[maxRadius + 1];
            int        halfSize = (radiusData.GetLength(0) - 1) / 2;
            int        dx       = halfSize - center.X;
            int        dy       = halfSize - center.Y;
            int        left     = Math.Max(0, center.X - halfSize);
            int        top      = Math.Max(0, center.Y - halfSize);
            int        right    = Math.Min(pix.Width, center.X + halfSize + 1);
            int        bottom   = Math.Min(pix.Height, center.Y + halfSize + 1);

            for (int y = top; y < bottom; y++)
            {
                for (int x = left; x < right; x++)
                {
                    RawColor c      = pix.Data[x, y];
                    int      radius = radiusData[x + dx, y + dy];
                    counts[radius]++;
                    sumR[radius] += c.R;
                    sumG[radius] += c.G;
                    sumB[radius] += c.B;
                }
            }
            RawColor undefined = RawColor.Transparent;

            for (int i = 0; i < maxRadius + 1; i++)
            {
                if (counts[i] == 0)
                {
                    result[i] = undefined;
                }
                else
                {
                    result[i] = RawColor.FromRGB(
                        (byte)(sumR[i] / counts[i]),
                        (byte)(sumG[i] / counts[i]),
                        (byte)(sumB[i] / counts[i]));
                }
            }
            return(result);
        }
コード例 #13
0
 private void CountPixels(Pixels pix, System.Drawing.Rectangle rect, Predicate <RawColor> filter, out float[] cols, out float[] rows)
 {
     int[] colsI = new int[pix.Width];
     int[] rowsI = new int[pix.Height];
     for (int y = rect.Top; y < rect.Bottom; y++)
     {
         for (int x = rect.Left; x < rect.Right; x++)
         {
             RawColor c = pix.Data[x, y];
             if (filter(c))
             {
                 colsI[x]++;
                 rowsI[y]++;
             }
         }
     }
     cols = new float[pix.Width];
     rows = new float[pix.Height];
     for (int x = 0; x < cols.Length; x++)
     {
         if (x < rect.Left || x > rect.Right - 1)
         {
             cols[x] = float.NaN;
         }
         else
         {
             cols[x] = (float)colsI[x] / rect.Height;
         }
     }
     for (int y = 0; y < rows.Length; y++)
     {
         if (y < rect.Top || y > rect.Bottom - 1)
         {
             rows[y] = float.NaN;
         }
         else
         {
             rows[y] = (float)rowsI[y] / rect.Width;
         }
     }
 }
コード例 #14
0
        private Color?ConvertColor(string color)
        {
            if (color == null)
            {
                return(null);
            }
            if (color != "@")
            {
                return(RawColor.FromHex(color).ToXnaColor());
            }
            if (heldObject == null)
            {
                return(null);
            }
            var heldColor = heldObject.GetColor();

            if (heldColor != null)
            {
                return(heldColor);
            }
            return(DominantColorFinder.GetDominantColor(heldObject.ParentSheetIndex, Game1.objectSpriteSheet, 16, 16));
        }
コード例 #15
0
        public void RenderStone(Vector2f position, StoneColor color, float diameter, bool faded)
        {
            RawColor rawColor;

            switch (color)
            {
            case StoneColor.Black:
                rawColor = RawColor.Black;
                break;

            case StoneColor.White:
                rawColor = RawColor.White;
                break;

            default:
                rawColor = RawColor.Transparent;
                break;
            }
            if (faded)
            {
                rawColor = RawColor.FromARGB(140, rawColor);
            }
            Graphics.FillCircle(rawColor, ToGraphic(position), 0.5f * diameter * BlockSize);
        }
コード例 #16
0
 public abstract void FillCircle(RawColor color, Vector2f center, float radius);
コード例 #17
0
 public abstract void DrawString(string text, Font font, RawColor color, Vector2f position);
コード例 #18
0
 public Pen(RawColor color, float lineWidth)
     : this()
 {
     Color     = color;
     LineWidth = lineWidth;
 }
コード例 #19
0
 bool IsBoard(RawColor c)
 {
     return(DistanceSquared(c, BoardColor) < 400);
 }
コード例 #20
0
 private StoneColor GetStoneColor(RawColor[] circles, double blockSize)
 {
     int black = 0;
     int white = 0;
     int outerRadius = (int)(blockSize / 2);
     int innerRadius = (int)(blockSize / 4);
     for (int r = innerRadius; r < outerRadius; r++)
         if (circles[r] != RawColor.Transparent && IsGray(circles[r]))
         {
             if (circles[r].GetUnweightedBrightness() < 0.45)
                 black++;
             if (circles[r].GetUnweightedBrightness() > 0.55)
                 white++;
         }
     if (white > (outerRadius - innerRadius) / 2)
         return StoneColor.White;
     if (black > (outerRadius - innerRadius) / 2)
         return StoneColor.Black;
     return StoneColor.None;
 }
コード例 #21
0
 bool IsBoard(RawColor c)
 {
     return DistanceSquared(c, BoardColor) < 400;
 }
コード例 #22
0
 public override void FillCircle(RawColor color, Vector2f center, float radius)
 {
     using (System.Drawing.Brush brush2 = CreateBrush(color))
     {
         InternalGraphics.FillEllipse(brush2, center.X - radius, center.Y - radius, radius * 2, radius * 2);
     }
 }
コード例 #23
0
 public abstract void FillCircle(RawColor color, Vector2f center, float radius);
コード例 #24
0
 public abstract void FillRectangle(RawColor color, RectangleF rect);
コード例 #25
0
 public abstract void DrawString(string text, Font font, RawColor color, Vector2f position);
コード例 #26
0
        public static unsafe XColor GetDominantColor(int spriteIndex, Texture2D texture, int width, int height)
        {
            XColor cachedColor;

            if (ColorCache.TryGetValue(spriteIndex, out cachedColor))
            {
                return(cachedColor);
            }

            var rect = TextureInfo.Default[TextureType.Items].GetSourceRect(spriteIndex);
            var size = width * height;
            var data = new XColor[size];

            texture.GetData(0, rect, data, 0, data.Length);

            const byte empty = 0;
            const byte inner = 1;
            const byte edge  = 2;

            var alpha  = new byte[size];
            var colors = new Dictionary <int, int>();

            fixed(byte *pAlpha0 = alpha)
            fixed(XColor * pData0 = data)
            {
                var pAlpha = pAlpha0;
                var pData  = pData0;

                for (var i = 0; i < size; ++i)
                {
                    var c      = *pData;
                    *   pAlpha = (c.A >= 128)? inner : empty;

                    ++pData;
                    ++pAlpha;
                }

                pAlpha = pAlpha0 + width;

                var hi = height - 1;
                var wi = width - 1;

                for (var y = 1; y < hi; ++y)
                {
                    ++pAlpha;
                    for (var x = 1; x < wi; ++x, ++pAlpha)
                    {
                        if (*(pAlpha - width) == empty || *(pAlpha + width) == empty || *(pAlpha - 1) == empty || *(pAlpha + width) == empty)
                        {
                            *pAlpha = edge;
                        }
                    }
                    ++pAlpha;
                }

                pAlpha = pAlpha0 + width;
                pData  = pData0 + width;

                for (var y = 1; y < hi; ++y)
                {
                    ++pAlpha;
                    ++pData;

                    for (var x = 1; x < wi; ++x, ++pAlpha, ++pData)
                    {
                        if (*pAlpha != 1)
                        {
                            continue;
                        }

                        var xColor = *pData;
                        var c      = WColor.FromArgb(xColor.R, xColor.G, xColor.B);
                        var l      = c.GetBrightness();
                        if (l <= 0.15f || 0.85f <= l)
                        {
                            continue;
                        }

                        var s = c.GetSaturation();
                        if (s <= 0.25f)
                        {
                            continue;
                        }

                        var h   = c.GetHue();
                        var kh  = (int)((h + 5) / 10);    // 0..36
                        var ks  = (int)((s + 0.17f) * 3); // 0..3
                        var kl  = (int)((l + 0.17f) * 3); // 0..3
                        var key = (kh << 4) | (ks << 2) | kl;

                        int value;
                        if (colors.TryGetValue(key, out value))
                        {
                            colors[key] = value + 1;
                        }
                        else
                        {
                            colors.Add(key, 1);
                        }
                    }
                }
            }

            if (!colors.Any())
            {
                Log.Error("No dominant color found!");
                cachedColor = XColor.Gray;
            }
            else
            {
                var dominantColors = colors.OrderByDescending(x => x.Value).Take(3).ToArray();
                var dominantColor  = dominantColors[0];

                if (IsGreenColor(dominantColor))
                {
                    var notGreenColors = dominantColors.Where(c => !IsGreenColor(c)).Take(2).ToArray();
                    if (notGreenColors.Any())
                    {
                        var altColor1 = notGreenColors[0];
                        var altColor2 = (notGreenColors.Length > 2)? notGreenColors[1] : altColor1;

                        if ((altColor1.Value + altColor2.Value) * 4 >= dominantColor.Value * 3)
                        {
                            dominantColor = altColor1;
                        }
                    }
                }

                var dominantColorKey = dominantColor.Key;
                var finalH           = Math.Min(Math.Max(0, (dominantColorKey >> 4) * 10 - 5), 359);
                var finalL           = Math.Min(Math.Max(0, 0.40 + (dominantColorKey & 3) * 0.1), 1);
                cachedColor = RawColor.FromHSL(finalH, 0.80, finalL).ToXnaColor();
            }

            ColorCache.Add(spriteIndex, cachedColor);
            return(cachedColor);
        }
コード例 #27
0
 public abstract void FillRectangle(RawColor color, RectangleF rect);
コード例 #28
0
 bool IsFadedWhite(RawColor c)
 {
     return DistanceSquared(c, BoardColor) < 400;
 }
コード例 #29
0
 public Pen(RawColor color, float lineWidth)
     : this()
 {
     Color = color;
     LineWidth = lineWidth;
 }
コード例 #30
0
        protected override void deserialize(BaseItem item, List <SyncPropertyNames> changedProperties)
        {
            Class c = item as Class;

            byte[] rawColor = ColorHelper.ToBytes(c.Color);

            if (changedProperties != null)
            {
                if (CourseNumber != c.CourseNumber)
                {
                    changedProperties.Add(SyncPropertyNames.CourseNumber);
                }

                var gradeScales = GetGradeScales();
                if ((gradeScales == null && c.GradeScales != null) ||
                    (gradeScales != null && c.GradeScales == null) ||
                    (gradeScales != null && c.GradeScales != null && !gradeScales.SequenceEqual(c.GradeScales)))
                {
                    changedProperties.Add(SyncPropertyNames.GradeScales);
                }

                if (ShouldAverageGradeTotals != c.ShouldAverageGradeTotals)
                {
                    changedProperties.Add(SyncPropertyNames.ShouldAverageGradeTotals);
                }

                if (Credits != c.Credits)
                {
                    changedProperties.Add(SyncPropertyNames.Credits);
                }

                if (Position != c.Position)
                {
                    changedProperties.Add(SyncPropertyNames.Position);
                }

                if (!RawColor.SequenceEqual(rawColor))
                {
                    changedProperties.Add(SyncPropertyNames.Color);
                }

                if (DoesRoundGradesUp != c.DoesRoundGradesUp)
                {
                    changedProperties.Add(SyncPropertyNames.DoesRoundGradesUp);
                }

                if (GpaType != c.GpaType)
                {
                    changedProperties.Add(SyncPropertyNames.GpaType);
                }

                if (PassingGrade != c.PassingGrade)
                {
                    changedProperties.Add(SyncPropertyNames.PassingGrade);
                }

                if (OverriddenGrade != c.OverriddenGrade)
                {
                    changedProperties.Add(SyncPropertyNames.OverriddenGrade);
                }

                if (OverriddenGPA != c.OverriddenGPA)
                {
                    changedProperties.Add(SyncPropertyNames.OverriddenGPA);
                }

                if (StartDate != c.StartDate.ToUniversalTime())
                {
                    changedProperties.Add(SyncPropertyNames.StartDate);
                }

                if (EndDate != c.EndDate.ToUniversalTime())
                {
                    changedProperties.Add(SyncPropertyNames.EndDate);
                }
            }

            CourseNumber = c.CourseNumber;
            SetGradeScales(c.GradeScales);
            ShouldAverageGradeTotals = c.ShouldAverageGradeTotals;
            Credits  = c.Credits;
            Position = c.Position;

            RawColor = rawColor;

            DoesRoundGradesUp = c.DoesRoundGradesUp;
            GpaType           = c.GpaType;
            PassingGrade      = c.PassingGrade;

            OverriddenGPA   = c.OverriddenGPA;
            OverriddenGrade = c.OverriddenGrade;

            StartDate = c.StartDate.ToUniversalTime();
            EndDate   = c.EndDate.ToUniversalTime();

            base.deserialize(c, changedProperties);
        }
コード例 #31
0
 private bool GetCircleMarker(RawColor[] circles, double blockSize, StoneColor stoneColor)
 {
     int blackRing = 0;
     int whiteRing = 0;
     for (int r = 3; r < (int)blockSize / 3; r++)
         if (circles[r] != RawColor.Transparent && IsGray(circles[r]))
         {
             if (circles[r].GetUnweightedBrightness() < 0.35)
                 blackRing++;
             if (circles[r].GetUnweightedBrightness() > 0.65)
                 whiteRing++;
         }
     switch (stoneColor)
     {
         case StoneColor.None:
         case StoneColor.White:
             return blackRing > 0;
         case StoneColor.Black:
             return whiteRing > 0;
         default:
             throw new NotImplementedException();
     }
 }
コード例 #32
0
 private bool GetSquareMarker(RawColor[] squares, double blockSize, StoneColor stoneColor)
 {
     int blackSquare = 0;
     int whiteSquare = 0;
     for (int r = (int)blockSize / 4; r < (int)blockSize / 2; r++)
         if (squares[r] != RawColor.Transparent && IsGray(squares[r]))
         {
             if (squares[r].GetUnweightedBrightness() < 0.2)
                 blackSquare++;
             if (squares[r].GetUnweightedBrightness() > 0.8)
                 whiteSquare++;
         }
     switch (stoneColor)
     {
         case StoneColor.None:
         case StoneColor.White:
             return blackSquare > 0;
         case StoneColor.Black:
             return whiteSquare > 0;
         default:
             throw new NotImplementedException();
     }
 }
コード例 #33
0
 RawColor[] RadiusColor(Pixels pix, Point center, int[,] radiusData, int maxRadius)
 {
     int[] counts = new int[maxRadius + 1];
     int[] sumR = new int[maxRadius + 1];
     int[] sumG = new int[maxRadius + 1];
     int[] sumB = new int[maxRadius + 1];
     RawColor[] result = new RawColor[maxRadius + 1];
     int halfSize = (radiusData.GetLength(0) - 1) / 2;
     int dx = halfSize - center.X;
     int dy = halfSize - center.Y;
     int left = Math.Max(0, center.X - halfSize);
     int top = Math.Max(0, center.Y - halfSize);
     int right = Math.Min(pix.Width, center.X + halfSize + 1);
     int bottom = Math.Min(pix.Height, center.Y + halfSize + 1);
     for (int y = top; y < bottom; y++)
         for (int x = left; x < right; x++)
         {
             RawColor c = pix.Data[x, y];
             int radius = radiusData[x + dx, y + dy];
             counts[radius]++;
             sumR[radius] += c.R;
             sumG[radius] += c.G;
             sumB[radius] += c.B;
         }
     RawColor undefined = RawColor.Transparent;
     for (int i = 0; i < maxRadius + 1; i++)
     {
         if (counts[i] == 0)
             result[i] = undefined;
         else
         {
             result[i] = RawColor.FromRGB(
                 (byte)(sumR[i] / counts[i]),
                 (byte)(sumG[i] / counts[i]),
                 (byte)(sumB[i] / counts[i]));
         }
     }
     return result;
 }
コード例 #34
0
 bool IsFadedBlack(RawColor c)
 {
     return(DistanceSquared(c, BoardColor) < 400);
 }
コード例 #35
0
 public void DrawString(string s, Font font, RawColor color, Vector2f point, Vector2f align)
 {
     Vector2f size = Graphics.MeasureString(s, font);
     Vector2f newPoint = new Vector2f(point.X - size.X * align.X, point.Y - size.Y * align.Y);
     Graphics.DrawString(s, font, color, newPoint);
 }
コード例 #36
0
 bool IsGray(RawColor c)
 {
     int sum = c.R + c.G + c.B;
     int sqrSum = (c.R * c.R + c.G * c.G + c.B * c.B) * 3;
     int var9 = sqrSum - sum * sum;//Var9=9*Variance
     return var9 < 3000;
 }
コード例 #37
0
 public Pen(RawColor color)
     : this(color, 1)
 {
 }
コード例 #38
0
 private static System.Drawing.Brush CreateBrush(RawColor color)
 {
     return new System.Drawing.SolidBrush(color.Convert());
 }
コード例 #39
0
 public static System.Drawing.Color Convert(this RawColor color)
 {
     return(System.Drawing.Color.FromArgb((int)color.ARGB));
 }
コード例 #40
0
 public Pen(RawColor color)
     : this(color, 1)
 {
 }
コード例 #41
0
 private static System.Drawing.Brush CreateBrush(RawColor color)
 {
     return(new System.Drawing.SolidBrush(color.Convert()));
 }
コード例 #42
0
        protected override void deserialize(BaseItem item, List <PropertyNames> changedProperties)
        {
            Class c     = item as Class;
            Color color = ColorTranslator.FromHtml(c.Color);

            byte[] rawColor = new byte[]
            {
                color.R, color.G, color.B
            };

            if (changedProperties != null)
            {
                if (CourseNumber != c.CourseNumber)
                {
                    changedProperties.Add(PropertyNames.CourseNumber);
                }

                if ((GradeScales == null && c.GradeScales != null) ||
                    (GradeScales != null && c.GradeScales == null) ||
                    (GradeScales != null && c.GradeScales != null && !GradeScales.SequenceEqual(c.GradeScales)))
                {
                    changedProperties.Add(PropertyNames.GradeScales);
                }

                if (ShouldAverageGradeTotals != c.ShouldAverageGradeTotals)
                {
                    changedProperties.Add(PropertyNames.ShouldAverageGradeTotals);
                }

                if (Credits != c.Credits)
                {
                    changedProperties.Add(PropertyNames.Credits);
                }

                if (Position != c.Position)
                {
                    changedProperties.Add(PropertyNames.Position);
                }

                if (!RawColor.SequenceEqual(rawColor))
                {
                    changedProperties.Add(PropertyNames.Color);
                }

                if (DoesRoundGradesUp != c.DoesRoundGradesUp)
                {
                    changedProperties.Add(PropertyNames.DoesRoundGradesUp);
                }
            }

            CourseNumber             = c.CourseNumber;
            GradeScales              = c.GradeScales;
            ShouldAverageGradeTotals = c.ShouldAverageGradeTotals;
            Credits  = c.Credits;
            Position = c.Position;

            RawColor = rawColor;

            DoesRoundGradesUp = c.DoesRoundGradesUp;

            base.deserialize(c, changedProperties);
        }
コード例 #43
0
 /*private Bitmap PixelsToBitmap(RawColor[,] pix)
 {
     Bitmap bmp = new Bitmap(pix.GetLength(0), pix.GetLength(1));
 }*/
 int DistanceSquared(RawColor c1, RawColor c2)
 {
     int dR = c1.R - c2.R;
     int dG = c1.G - c2.G;
     int dB = c1.B - c2.B;
     return dR * dR + dG * dG + dB * dB;
 }