示例#1
0
        private static void GetBlock4Alpha(Binary binary, int[,] alphas, int[] colorVals)
        {
            ulong n = binary.ReadUInt64();

            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    alphas[j, i] = (int)((n & 15) * 17);
                    n          >>= 4;
                }
            }

            ushort c0 = binary.ReadUInt16();
            ushort c1 = binary.ReadUInt16();

            Color[] color = new Color[4];
            color[0] = ColorHelp.From565(c0);
            color[1] = ColorHelp.From565(c1);
            color[2] = ColorHelp.MixRatio(color[0], color[1], 2, 1);
            color[3] = ColorHelp.MixRatio(color[0], color[1], 1, 2);
            for (int i = 0; i < 4; i++)
            {
                colorVals[i] = color[i].ToArgb() & 0x00FFFFFF;
            }
        }
示例#2
0
        private static void GetBlock8RelAlpha(Binary binary, int[,] alphas, int[] colorVals)
        {
            ulong n  = binary.ReadUInt64();
            int   a0 = (byte)(n & 0xFF);

            n >>= 8;
            int a1 = (byte)(n & 0xFF);

            n >>= 8;
            int[] a = new int[8];
            if (a0 <= a1)
            {
                a[0] = a0;
                a[1] = a1;
                a[2] = (4 * a0 + 1 * a1) / 5;
                a[3] = (3 * a0 + 2 * a1) / 5;
                a[4] = (2 * a0 + 3 * a1) / 5;
                a[5] = (1 * a0 + 4 * a1) / 5;
                a[6] = 0;
                a[7] = 255;
            }
            else
            {
                a[0] = a0;
                a[1] = a1;
                a[2] = (6 * a0 + 1 * a1) / 7;
                a[3] = (5 * a0 + 2 * a1) / 7;
                a[4] = (4 * a0 + 3 * a1) / 7;
                a[5] = (3 * a0 + 4 * a1) / 7;
                a[6] = (2 * a0 + 5 * a1) / 7;
                a[7] = (1 * a0 + 6 * a1) / 7;
            }

            for (int i = 0; i < 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    alphas[j, i] = a[n & 7];
                    n          >>= 3;
                }
            }

            ushort c0 = binary.ReadUInt16();
            ushort c1 = binary.ReadUInt16();

            Color[] color = new Color[4];
            color[0] = ColorHelp.From565(c0);
            color[1] = ColorHelp.From565(c1);
            color[2] = ColorHelp.MixRatio(color[0], color[1], 2, 1);
            color[3] = ColorHelp.MixRatio(color[0], color[1], 1, 2);
            for (int i = 0; i < 4; i++)
            {
                colorVals[i] = color[i].ToArgb() & 0x00FFFFFF;
            }
        }
示例#3
0
        public void CreateMainPageMenu(HotelMenuPower hotelMenu, int index)
        {
            PageMain           page   = this.UIElement as PageMain;
            MainPageMenuButton button = new MainPageMenuButton();

            button.Text = hotelMenu.Name;
            var color_argb = ColorHelp.GetARGByStr(hotelMenu.color);

            button.BackGround = new SolidColorBrush(Color.FromArgb(color_argb[0], color_argb[1], color_argb[2], color_argb[3]));
            button.Src        = hotelMenu.img;
            switch (hotelMenu.id)
            {
            case 1:
                button.Click((s, e) =>
                {
                    VM_PageTest vM_PageTest = new VM_PageTest();
                    VM_FatherWindow.CreateMenu(hotelMenu.Name, (vM_PageTest.UIElement as Page), true);
                });
                break;

            case 2:
                button.Click((s, e) =>
                {
                    VM_PageTest2 vM_PageTest2 = new VM_PageTest2();
                    VM_FatherWindow.CreateMenu(hotelMenu.Name, (vM_PageTest2.UIElement as Page), true);
                });
                break;

            case 3:
                button.Click((s, e) =>
                {
                    VM_PageTest vM_PageTest1 = new VM_PageTest();
                    VM_FatherWindow.CreateMenu(hotelMenu.Name, (vM_PageTest1.UIElement as Page), true);
                });
                break;

            default:
                break;
            }
            if (index >= 4)
            {
                page.MainPage_MenuPanel2.Children.Add(button);
            }
            else
            {
                page.MainPage_MenuPanel.Children.Add(button);
            }
        }
示例#4
0
 public void FocusButton(string title)
 {
     foreach (string key in menuButtons.Keys)
     {
         if (key == title)
         {
             var bs = ColorHelp.GetARGByStr(MyColors.MainWindow_Blue);
             menuButtons[key].Background = new SolidColorBrush(Color.FromArgb(bs[0], bs[1], bs[2], bs[3]));
         }
         else
         {
             var bs = ColorHelp.GetARGByStr(MyColors.MainWindow_Gray);
             menuButtons[key].Background = new SolidColorBrush(Color.FromArgb(bs[0], bs[1], bs[2], bs[3]));
         }
     }
 }
示例#5
0
        private static void GetBlockNoAlpha(Binary binary, int[,] alphas, int[] colorVals)
        {
            ushort c0 = binary.ReadUInt16();
            ushort c1 = binary.ReadUInt16();

            Color[] color = new Color[4];
            color[0] = ColorHelp.From565(c0);
            color[1] = ColorHelp.From565(c1);
            if (c0 <= c1)
            {
                color[2] = ColorHelp.MixRatio(color[0], color[1], 1, 1);
                color[3] = Color.FromArgb(0, 0, 0);
            }
            else
            {
                color[2] = ColorHelp.MixRatio(color[0], color[1], 2, 1);
                color[3] = ColorHelp.MixRatio(color[0], color[1], 1, 2);
            }
            for (int i = 0; i < 4; i++)
            {
                colorVals[i] = color[i].ToArgb();
            }
        }
示例#6
0
        private static (ushort, ushort, int[, ]) ReduceColors4(Color[] colors)
        {
            int maxDist = 0;
            int maxi0 = 0, maxi1 = 0;

            for (int i1 = 0; i1 < 16; i1++)
            {
                for (int i2 = 0; i2 < i1; i2++)
                {
                    int dist =
                        (colors[i1].R - colors[i2].R) * (colors[i1].R - colors[i2].R) +
                        (colors[i1].G - colors[i2].G) * (colors[i1].G - colors[i2].G) +
                        (colors[i1].B - colors[i2].B) * (colors[i1].B - colors[i2].B);
                    if (dist >= maxDist)
                    {
                        maxDist = dist;
                        maxi0   = i1;
                        maxi1   = i2;
                    }
                }
            }
            ushort b0 = ColorHelp.To565(colors[maxi0]);
            ushort b1 = ColorHelp.To565(colors[maxi1]);
            ushort b0new, b1new;

            Color[] newColor = new Color[4];
            if (b0 < b1)
            {
                b0new = b1;
                b1new = b0;
            }
            else
            {
                b0new = b0;
                b1new = b1;
            }
            newColor[0] = ColorHelp.From565(b0new);
            newColor[1] = ColorHelp.From565(b1new);
            newColor[2] = ColorHelp.MixRatio(newColor[0], newColor[1], 2, 1);
            newColor[3] = ColorHelp.MixRatio(newColor[0], newColor[1], 1, 2);

            int[,] colorIndex = new int[4, 4];
            for (int i = 0; i < 16; i++)
            {
                int minDist = 3 * 256 * 256;
                int minj    = 0;
                for (int j = 0; j < 4; j++)
                {
                    int dist =
                        (colors[i].R - newColor[j].R) * (colors[i].R - newColor[j].R) +
                        (colors[i].G - newColor[j].G) * (colors[i].G - newColor[j].G) +
                        (colors[i].B - newColor[j].B) * (colors[i].B - newColor[j].B);
                    if (dist < minDist)
                    {
                        minDist = dist;
                        minj    = j;
                    }
                }
                colorIndex[i % 4, i / 4] = minj;
            }
            return(b0new, b1new, colorIndex);
        }
示例#7
0
        private static uint GetPixel1555(Stream stream)
        {
            ushort b = Binary.ReadUInt16(stream, true);

            return((uint)ColorHelp.From1555(b).ToArgb());
        }