public InfoWindow(GM1FileHeader.DataType dataType)
        {
            this.InitializeComponent();
            #if DEBUG
            this.AttachDevTools();
#endif

            StackPanel animation = this.Get <StackPanel>("Animation");
            animation.IsVisible = false;
            StackPanel interfaceS = this.Get <StackPanel>("Interface");
            interfaceS.IsVisible = false;
            StackPanel tiledObject = this.Get <StackPanel>("TiledObject");
            tiledObject.IsVisible = false;
            StackPanel noInfo = this.Get <StackPanel>("NoInfo");
            noInfo.IsVisible = false;

            switch (dataType)
            {
            case GM1FileHeader.DataType.Animations:
                animation.IsVisible = true;
                break;

            case GM1FileHeader.DataType.Interface:
                interfaceS.IsVisible = true;
                break;

            case GM1FileHeader.DataType.TilesObject:
                tiledObject.IsVisible = true;
                break;

            case GM1FileHeader.DataType.Font:
                noInfo.IsVisible = true;
                break;

            case GM1FileHeader.DataType.NOCompression:
                noInfo.IsVisible = true;
                break;

            case GM1FileHeader.DataType.TGXConstSize:
                noInfo.IsVisible = true;
                break;

            case GM1FileHeader.DataType.NOCompression1:
                noInfo.IsVisible = true;
                break;

            default:
                break;
            }
        }
        internal static List <TGXImage> ConvertImgToTiles(List <ushort> list, ushort width, ushort height, List <TGXImage> oldList)
        {
            if (Logger.Loggeractiv)
            {
                Logger.Log("ConvertImgToTiles");
            }
            List <TGXImage> newImageList = new List <TGXImage>();


            //calculate Parts one part 16 x 30
            int partwidth  = width / 30;//todo not exactly 30 width because 2 pixels between(can ignored because Church bigest tiledImage and work)
            int totalTiles = partwidth;
            int dummy      = 0;

            for (int i = 0; 0 != totalTiles; i++)
            {
                totalTiles--;
                dummy += totalTiles;
            }
            totalTiles = dummy * 2 + partwidth;
            int         savedOffsetX = width / 2;
            int         xOffset      = savedOffsetX;
            int         yOffset      = height - 16;
            int         partsPerLine = 1;
            int         counter      = 0;
            List <Byte> arrayByte;
            bool        halfreached = false;

            datatype = GM1FileHeader.DataType.TilesObject;
            for (int part = 0; part < totalTiles; part++)
            {
                counter++;
                int x = 0;
                int y = 0;
                arrayByte = new List <byte>();
                for (int i = 0; i < 16; i++)
                {
                    for (int j = 0; j < array[i]; j++)
                    {
                        int number = ((width * (y + yOffset)) + x + xOffset - array[i] / 2);
                        var color  = list[number];
                        arrayByte.AddRange(BitConverter.GetBytes(color));
                        x++;
                        list[number] = 32767;
                    }
                    y++;
                    x = 0;
                }
                if (part == 3 || part == 5)
                {
                }

                var newImage = new TGXImage();
                newImage.Direction = 0;
                newImage.Height    = 16;
                newImage.Width     = 30;
                //newImage.OffsetX = (ushort)(xOffset + XOffsetBefore);
                //newImage.OffsetY = (ushort)(yOffset + YOffsetBefore);
                newImage.SubParts  = (byte)totalTiles;
                newImage.ImagePart = (byte)part;
                if (totalTiles == 1)
                {
                    halfreached = true;
                }
                if (halfreached)
                {
                    //tileoffset=1st pixel from tile and than height
                    if (counter == 1)//left
                    {
                        if (part == totalTiles - 1)
                        {
                            newImage.BuildingWidth = 30;
                            newImage.Direction     = 1;
                            int           imageOnTopwidth   = 30;
                            int           imageOnTopheight  = yOffset + 7;
                            int           imageOnTopOffsetX = xOffset - 15;
                            List <ushort> colorListImgOnTop = GetColorList(list, imageOnTopwidth, imageOnTopheight, imageOnTopOffsetX, width);
                            if (colorListImgOnTop.Count != 0)
                            {
                                var byteArrayImgonTop = ImgToGM1ByteArray(colorListImgOnTop, imageOnTopwidth, colorListImgOnTop.Count / imageOnTopwidth, 1);
                                arrayByte.AddRange(byteArrayImgonTop);
                                newImage.TileOffset = (ushort)(colorListImgOnTop.Count / imageOnTopwidth + 10 - 16 - 1);
                                if (newImage.TileOffset == ushort.MaxValue)
                                {
                                    newImage.TileOffset = 0;
                                }
                                newImage.Height = (ushort)(colorListImgOnTop.Count / imageOnTopwidth + 9);
                            }
                        }
                        else
                        {
                            newImage.BuildingWidth = 16;
                            newImage.Direction     = 2;
                            int           imageOnTopwidth   = 16;
                            int           imageOnTopheight  = yOffset + 7;
                            int           imageOnTopOffsetX = xOffset - 15;
                            List <ushort> colorListImgOnTop = GetColorList(list, imageOnTopwidth, imageOnTopheight, imageOnTopOffsetX, width);

                            if (colorListImgOnTop.Count != 0)
                            {
                                var byteArrayImgonTop = ImgToGM1ByteArray(colorListImgOnTop, imageOnTopwidth, colorListImgOnTop.Count / imageOnTopwidth, 1);

                                arrayByte.AddRange(byteArrayImgonTop);
                                newImage.TileOffset = (ushort)(colorListImgOnTop.Count / imageOnTopwidth + 10 - 16 - 1);
                                if (newImage.TileOffset == ushort.MaxValue)
                                {
                                    newImage.TileOffset = 0;
                                }
                                newImage.Height = (ushort)(colorListImgOnTop.Count / imageOnTopwidth + 9);
                            }
                        }
                    }
                    else if (counter == partsPerLine)//right
                    {
                        newImage.BuildingWidth = 16;
                        newImage.Direction     = 3;
                        int           imageOnTopwidth   = 16;
                        int           imageOnTopheight  = yOffset + 7;
                        int           imageOnTopOffsetX = xOffset;
                        List <ushort> colorListImgOnTop = GetColorList(list, imageOnTopwidth, imageOnTopheight, imageOnTopOffsetX - 1, width);
                        if (colorListImgOnTop.Count != 0)
                        {
                            var byteArrayImgonTop = ImgToGM1ByteArray(colorListImgOnTop, imageOnTopwidth, colorListImgOnTop.Count / imageOnTopwidth, 1);
                            arrayByte.AddRange(byteArrayImgonTop);
                            newImage.Height     = (ushort)(colorListImgOnTop.Count / imageOnTopwidth + 9);
                            newImage.TileOffset = (ushort)(colorListImgOnTop.Count / imageOnTopwidth + 10 - 16 - 1);
                            if (newImage.TileOffset == ushort.MaxValue)
                            {
                                newImage.TileOffset = 0;
                            }
                        }
                        newImage.HorizontalOffsetOfImage = 14;
                    }
                }
                newImageList.Add(newImage);
                newImage.ImgFileAsBytearray = arrayByte.ToArray();
                xOffset += 32;

                if (counter == partsPerLine)
                {
                    yOffset -= 8;
                    counter  = 0;
                    xOffset  = savedOffsetX;
                    if (partsPerLine == partwidth - 1 && !halfreached)
                    {
                        halfreached   = true;
                        partsPerLine += 2;
                        xOffset       = -1;
                    }

                    if (!halfreached)
                    {
                        partsPerLine++;
                        xOffset -= 16;
                    }
                    else
                    {
                        xOffset += 16;
                        partsPerLine--;
                    }

                    savedOffsetX = xOffset;
                }
            }

            XOffsetBefore += width;
            if (height > biggestHeight)
            {
                biggestHeight = height;
            }
            if (XOffsetBefore > 4000)
            {
                XOffsetBefore  = 0;
                YOffsetBefore += biggestHeight;
            }

            return(newImageList);
        }