Пример #1
0
        /// <summary>
        /// Give the report a some outrageous formatting values.
        /// </summary>
        public void ApplyOverTheTopFormatting()
        {
            this.listViewPrinter1.CellFormat  = null;
            this.listViewPrinter1.ListFont    = new Font("Ms Sans Serif", 9);
            this.listViewPrinter1.ListGridPen = new Pen(Color.Blue, 0.5f);

            this.listViewPrinter1.HeaderFormat           = BlockFormat.Header(new Font("Comic Sans MS", 36));
            this.listViewPrinter1.HeaderFormat.TextBrush = new LinearGradientBrush(new Rectangle(0, 0, 1, 1), Color.Black, Color.Blue, LinearGradientMode.Horizontal);

            this.listViewPrinter1.HeaderFormat.BackgroundBrush = new TextureBrush(this.dataListView1.SmallImageList.Images["music"], WrapMode.Tile);
            this.listViewPrinter1.HeaderFormat.SetBorder(Sides.All, 10, new LinearGradientBrush(new Rectangle(0, 0, 1, 1), Color.Purple, Color.Pink, LinearGradientMode.Horizontal));

            this.listViewPrinter1.FooterFormat                 = BlockFormat.Footer(new Font("Comic Sans MS", 12));
            this.listViewPrinter1.FooterFormat.TextBrush       = Brushes.Blue;
            this.listViewPrinter1.FooterFormat.BackgroundBrush = new LinearGradientBrush(new Rectangle(0, 0, 1, 1), Color.Gold, Color.Green, LinearGradientMode.Horizontal);
            this.listViewPrinter1.FooterFormat.SetBorder(Sides.All, 5, new SolidBrush(Color.FromArgb(128, Color.Green)));

            this.listViewPrinter1.GroupHeaderFormat = BlockFormat.GroupHeader();
            this.listViewPrinter1.GroupHeaderFormat.SetBorder(Sides.Bottom, 5, new HatchBrush(HatchStyle.LargeConfetti, Color.Blue, Color.Empty));

            this.listViewPrinter1.ListHeaderFormat = BlockFormat.ListHeader(new Font("Comic Sans MS", 12));
            this.listViewPrinter1.ListHeaderFormat.BackgroundBrush = Brushes.PowderBlue;
            this.listViewPrinter1.ListHeaderFormat.TextBrush       = Brushes.Black;

            this.listViewPrinter1.WatermarkFont  = new Font("Comic Sans MS", 72);
            this.listViewPrinter1.WatermarkColor = Color.Red;
        }
Пример #2
0
        /// <summary>
        /// Give the report a some outrageous formatting values.
        /// </summary>
        public void ApplyOverTheTopFormatting()
        {
            this.listViewPrinter.CellFormat  = null;
            this.listViewPrinter.ListFont    = new Font("Ms Sans Serif", 9);
            this.listViewPrinter.ListGridPen = new Pen(Color.Blue, 0.5f);

            this.listViewPrinter.HeaderFormat           = BlockFormat.Header(new Font("Comic Sans MS", 36));
            this.listViewPrinter.HeaderFormat.TextBrush = new LinearGradientBrush(new Point(0, 0), new Point(900, 0), Color.Black, Color.Blue);
            //this.listViewPrinter.HeaderFormat.BackgroundBrush = new TextureBrush(this.listView.SmallImageList.Images["music"], WrapMode.Tile);
            this.listViewPrinter.HeaderFormat.SetBorder(Sides.All, 10, new LinearGradientBrush(new Point(0, 0), new Point(300, 0), Color.Purple, Color.Pink));

            this.listViewPrinter.FooterFormat                 = BlockFormat.Footer(new Font("Comic Sans MS", 12));
            this.listViewPrinter.FooterFormat.TextBrush       = Brushes.Blue;
            this.listViewPrinter.FooterFormat.BackgroundBrush = new LinearGradientBrush(new Point(0, 0), new Point(200, 0), Color.Gold, Color.Green);
            this.listViewPrinter.FooterFormat.SetBorderPen(Sides.All, new Pen(Color.FromArgb(128, Color.Green), 5));

            this.listViewPrinter.GroupHeaderFormat = BlockFormat.GroupHeader();
            Brush brush = new HatchBrush(HatchStyle.LargeConfetti, Color.Blue, Color.Empty);

            this.listViewPrinter.GroupHeaderFormat.SetBorder(Sides.Bottom, 5, brush);

            this.listViewPrinter.ListHeaderFormat = BlockFormat.ListHeader(new Font("Comic Sans MS", 12));
            this.listViewPrinter.ListHeaderFormat.BackgroundBrush = Brushes.PowderBlue;
            this.listViewPrinter.ListHeaderFormat.TextBrush       = Brushes.Black;

            this.listViewPrinter.WatermarkFont  = new Font("Comic Sans MS", 72);
            this.listViewPrinter.WatermarkColor = Color.Red;
        }
Пример #3
0
        public byte[] ReadFormatted(string Label, BlockFormat format)
        {
            byte[] Data = new byte[4];
            _fs.Read(Data, 0, 4);


            if (format == BlockFormat.UnixTime)
            {
                uint UnixTime = Program.GetBigEndian(Data, 0, 4);

                if (UnixTime == 0)
                {
                    AddBlock(Label, "", -4, Data);
                }
                else
                {
                    AddBlock(Label, Program.UnixTimeStampToDateTime(UnixTime).ToString(), -4, Data);
                }
            }
            else if (format == BlockFormat.Days)
            {
                var      v = Program.GetBigEndian(Data, 0, 4);
                TimeSpan t = TimeSpan.FromSeconds(v);

                AddBlock(Label, string.Format("{0:D2}d {1:D2}h:{2:D2}m:{3:D2}s:{4:D3}ms", t.Days, t.Hours, t.Minutes, t.Seconds, t.Milliseconds), -4, Data);
            }
            return(Data);
        }
Пример #4
0
 protected override void HandlePaintEvent(Graphics g, Rectangle r)
 {
     using (Pen p = this.GetPen()) {
         g.SmoothingMode = ObjectListView.SmoothingMode;
         StringFormat fmt = new StringFormat();
         fmt.Alignment     = StringAlignment.Center;
         fmt.LineAlignment = StringAlignment.Center;
         if (p == null)
         {
             g.DrawString("No pen", new Font("Tahoma", 14), Brushes.DarkGray, r, fmt);
         }
         else
         {
             g.DrawString("Through a mirror darkly", new Font("Tahoma", 14), Brushes.Black, r, fmt);
             int inset = (int)Math.Max(1.0, p.Width);
             r.Inflate(-inset, -inset);
             Point[] pts = new Point[4];
             pts[0] = r.Location;
             pts[1] = new Point(r.X + r.Width / 2, r.Bottom);
             pts[2] = new Point(r.X + r.Width / 2, r.Top);
             pts[3] = new Point(r.Right, r.Bottom);
             g.DrawLines(BlockFormat.PreparePenForDrawing(p, r), pts);
         }
     }
 }
Пример #5
0
 private void ApplyPenData(BlockFormat blockFormat)
 {
     blockFormat.BackgroundBrushData = blockFormat.BackgroundBrushData;
     blockFormat.BottomBorderPenData = blockFormat.BottomBorderPenData;
     blockFormat.LeftBorderPenData   = blockFormat.LeftBorderPenData;
     blockFormat.RightBorderPenData  = blockFormat.RightBorderPenData;
     blockFormat.TextBrushData       = blockFormat.TextBrushData;
     blockFormat.TopBorderPenData    = blockFormat.TopBorderPenData;
 }
Пример #6
0
        private static int[] DecodeI8Routine(byte[] I8Data, int Width, int Height)
        {
            int[] GrayscaleData = new int[I8Data.Length];
            for (int i = 0; i < GrayscaleData.Length; i++)
            {
                GrayscaleData[i] = (I8Data[i] << 24) | (I8Data[i] << 16) | (I8Data[i] << 8) | I8Data[i];
            }

            return(BlockFormat.Decode(GrayscaleData, Width, Height, 8, 4));
        }
Пример #7
0
        private static int[] DecodeIA8Routine(byte[] IA8Data, int Width, int Height)
        {
            int[] GrayscaleData = new int[IA8Data.Length / 2];
            for (int i = 0; i < GrayscaleData.Length; i++)
            {
                int idx = i * 2;
                GrayscaleData[i] = (IA8Data[idx] << 24) | (IA8Data[idx + 1] << 16) | (IA8Data[idx + 1] << 8) | IA8Data[idx + 1];
            }

            return(BlockFormat.Decode(GrayscaleData, Width, Height, 4, 4));
        }
Пример #8
0
        private static byte[] EncodeI8Routine(int[] ImageData, int Width, int Height)
        {
            ImageData = BlockFormat.Encode(ImageData, Width, Height, 8, 4);
            byte[] I8Data = new byte[ImageData.Length];

            for (int i = 0; i < I8Data.Length; i++)
            {
                I8Data[i] = (byte)((((ImageData[i] >> 16) & 0xFF) * 0.2126) + (((ImageData[i] >> 8) & 0xFF) * 0.7152) + ((ImageData[i] & 0xFF) * 0.0722));
            }

            return(I8Data);
        }
Пример #9
0
        private static int[] DecodeIA4Routine(byte[] IA4Data, int Width, int Height, bool Unswizzle = true)
        {
            int[] GrayscaleData = new int[IA4Data.Length];
            for (int i = 0; i < GrayscaleData.Length; i++)
            {
                byte LeftPixelValue  = (byte)(((IA4Data[i] & 0xF0) | (IA4Data[i] >> 4)) & 0xFF); // Alpha
                byte RightPixelValue = (byte)(((IA4Data[i] << 4) | (IA4Data[i] & 0x0F)) & 0xFF);

                GrayscaleData[i] = (LeftPixelValue << 24) | (RightPixelValue << 16) | (RightPixelValue << 8) | RightPixelValue;
            }

            return(Unswizzle ? BlockFormat.Decode(GrayscaleData, Width, Height, 8, 4) : GrayscaleData);
        }
Пример #10
0
        /// <summary>
        /// Draw a representation of our value
        /// </summary>
        public override void PaintValue(PaintValueEventArgs e)
        {
            IBrushData bd = e.Value as IBrushData;

            if (bd == null)
            {
                base.PaintValue(e);
            }
            else
            {
                e.Graphics.FillRectangle(BlockFormat.PrepareBrushForDrawing(bd.GetBrush(), e.Bounds), e.Bounds);
            }
        }
Пример #11
0
        private static int[] DecodeI4Routine(byte[] I4Data, int Width, int Height, bool Unswizzle = true)
        {
            int[] GrayscaleData = new int[I4Data.Length * 2];
            for (int i = 0; i < I4Data.Length; i++)
            {
                byte LeftPixelValue  = (byte)((I4Data[i] & 0xF0) | (I4Data[i] >> 4));
                byte RightPixelValue = (byte)((I4Data[i] << 4) | (I4Data[i] & 0x0F));

                int idx = i * 2;
                GrayscaleData[idx]     = (0xFF << 24) | (LeftPixelValue << 16) | (LeftPixelValue << 8) | LeftPixelValue;
                GrayscaleData[idx + 1] = (0xFF << 24) | (RightPixelValue << 16) | (RightPixelValue << 8) | RightPixelValue;
            }

            return(Unswizzle ? BlockFormat.Decode(GrayscaleData, Width, Height, 8, 8) : GrayscaleData);
        }
Пример #12
0
        private static byte[] EncodeIA8Routine(int[] ImageData, int Width, int Height)
        {
            ImageData = BlockFormat.Encode(ImageData, Width, Height, 4, 4);
            byte[] IA8Data = new byte[ImageData.Length * 2];

            for (int i = 0; i < IA8Data.Length; i++)
            {
                int idx = i * 2;
                IA8Data[idx]     = (byte)(ImageData[i] >> 24);
                IA8Data[idx + 1] = (byte)((((ImageData[i] >> 16) & 0xFF) * 0.2126) + (((ImageData[i] >> 8) & 0xFF) * 0.7152)
                                          + ((ImageData[i] & 0xFF) * 0.0722));
            }

            return(IA8Data);
        }
Пример #13
0
        private static byte[] EncodeIA4Routine(int[] ImageData, int Width, int Height)
        {
            ImageData = BlockFormat.Encode(ImageData, Width, Height, 8, 4);
            byte[] PackedIA4Data = new byte[ImageData.Length];

            for (int i = 0; i < PackedIA4Data.Length; i++)
            {
                byte LeftValue  = (byte)((ImageData[i] >> 24) & 0xFF); // Alpha
                byte RightValue = (byte)(ImageData[i] >> 16);          // Only use red

                PackedIA4Data[i] = (byte)(((LeftValue / 16) << 4) | (RightValue / 16));
            }

            return(PackedIA4Data);
        }
Пример #14
0
        private static byte[] C8ImageSubroutineEncode(int[] ImageData, ushort[] Palette, int Width, int Height)
        {
            int[] RGB8Palette = new int[Palette.Length];
            for (int i = 0; i < RGB8Palette.Length; i++)
            {
                RGB8Palette[i] = (int)RGB5A3.ToARGB8(Palette[i]);
            }

            byte[] C8Data = new byte[ImageData.Length];
            for (int i = 0; i < C8Data.Length; i++)
            {
                C8Data[i] = Utilities.ColorUtilities.ClosestColorRGB(ImageData[i], RGB8Palette);
            }

            return(BlockFormat.Encode(C8Data, Width, Height, 8, 4));
        }
Пример #15
0
        private static byte[] EncodeI4Routine(int[] ImageData, int Width, int Height)
        {
            ImageData = BlockFormat.Encode(ImageData, Width, Height, 8, 8);
            byte[] PackedI4Data = new byte[ImageData.Length / 2];

            // We're only taking the red channel here for re-encoding.
            for (int i = 0; i < PackedI4Data.Length; i++)
            {
                int  idx        = i * 2;
                byte LeftValue  = (byte)(ImageData[idx] >> 16);
                byte RightValue = (byte)(ImageData[idx + 1] >> 16);
                PackedI4Data[i] = (byte)(((LeftValue / 0x10) << 4) | (RightValue / 0x10));
            }

            return(PackedI4Data);
        }
Пример #16
0
        private static byte[] C4ImageSubroutineEncode(int[] ImageData, ushort[] Palette, int Width, int Height, bool UsesBlocks = true)
        {
            int[] RGB8Palette = new int[Palette.Length];
            for (int i = 0; i < RGB8Palette.Length; i++)
            {
                RGB8Palette[i] = (int)RGB5A3.ToARGB8(Palette[i]);
            }

            byte[] C4Data = new byte[ImageData.Length];
            for (int i = 0; i < C4Data.Length; i++)
            {
                C4Data[i] = ColorUtilities.ClosestColorRGB(ImageData[i], RGB8Palette);
            }

            return(Utilities.Utilities.CondenseNibbles(UsesBlocks ? BlockFormat.Encode(C4Data, Width, Height, 8, 8) : C4Data));
        }
Пример #17
0
 virtual protected void HandlePaintEvent(Graphics g, Rectangle r)
 {
     using (Brush b = this.GetBrush()) {
         StringFormat fmt = new StringFormat();
         fmt.Alignment     = StringAlignment.Center;
         fmt.LineAlignment = StringAlignment.Center;
         if (b == null)
         {
             g.DrawString("No brush", new Font("Tahoma", 14), Brushes.DarkGray, r, fmt);
         }
         else
         {
             g.DrawString("Through a mirror darkly", new Font("Tahoma", 14), Brushes.Black, r, fmt);
             g.FillRectangle(BlockFormat.PrepareBrushForDrawing(b, r), r);
         }
     }
 }
Пример #18
0
        private static int[] C8ImageSubroutineDecode(byte[] C8ImageData, ushort[] Palette, int Width, int Height)
        {
            int[] RGB8Palette = new int[Palette.Length];
            for (int i = 0; i < RGB8Palette.Length; i++)
            {
                RGB8Palette[i] = (int)RGB5A3.ToARGB8(Palette[i]);
            }

            byte[] UnscrambledData = BlockFormat.Decode(C8ImageData, Width, Height, 8, 4);
            int[]  ImageData       = new int[UnscrambledData.Length];

            for (int i = 0; i < ImageData.Length; i++)
            {
                ImageData[i] = RGB8Palette[UnscrambledData[i]];
            }

            return(ImageData);
        }
Пример #19
0
        /// <summary>
        /// Give the report a minimal set of default formatting values.
        /// </summary>
        public void ApplyModernFormatting()
        {
            this.listViewPrinter.CellFormat  = null;
            this.listViewPrinter.ListFont    = new Font("Ms Sans Serif", 9);
            this.listViewPrinter.ListGridPen = new Pen(Color.DarkGray, 0.5f);

            this.listViewPrinter.HeaderFormat = BlockFormat.Header(new Font("Verdana", 24, FontStyle.Bold));
            this.listViewPrinter.HeaderFormat.BackgroundBrush = new LinearGradientBrush(new Point(0, 0), new Point(200, 0), Color.DarkBlue, Color.White);

            this.listViewPrinter.FooterFormat = BlockFormat.Footer();
            this.listViewPrinter.FooterFormat.BackgroundBrush = new LinearGradientBrush(new Point(0, 0), new Point(200, 0), Color.White, Color.Blue);

            this.listViewPrinter.GroupHeaderFormat = BlockFormat.GroupHeader();
            this.listViewPrinter.ListHeaderFormat  = BlockFormat.ListHeader(new Font("Verdana", 12));

            this.listViewPrinter.WatermarkFont  = null;
            this.listViewPrinter.WatermarkColor = Color.Empty;
        }
Пример #20
0
        public static int[] Decode(ushort[] rgba16Data, int width, int height)
        {
            var dataOut  = new int[width * height];
            var position = 0;

            rgba16Data = BlockFormat.Decode(rgba16Data, width, height, 4, 4);

            for (var y = 0; y < height; y++)
            {
                for (var x = 0; x < width; x++)
                {
                    dataOut[position] = (int)RGB5A3.ToARGB8(rgba16Data[position]);
                    position++;
                }
            }

            return(dataOut);
        }
        /// <summary>
        /// Give the report a minimal set of default formatting values.
        /// </summary>
        public void ApplyModernFormatting()
        {
            this.listViewPrinter1.CellFormat  = null;
            this.listViewPrinter1.ListFont    = new Font("Verdana", 9);
            this.listViewPrinter1.ListGridPen = new Pen(Color.DarkGray, 0.5f);

            this.listViewPrinter1.HeaderFormat = BlockFormat.Header(new Font("Verdana", 24, FontStyle.Bold));
            this.listViewPrinter1.HeaderFormat.BackgroundBrush = new LinearGradientBrush(new Rectangle(0, 0, 1, 1), Color.DarkBlue, Color.White, LinearGradientMode.Horizontal);

            this.listViewPrinter1.FooterFormat = BlockFormat.Footer();
            this.listViewPrinter1.FooterFormat.BackgroundBrush = new LinearGradientBrush(new Rectangle(0, 0, 1, 1), Color.White, Color.DarkBlue, LinearGradientMode.Horizontal);

            this.listViewPrinter1.GroupHeaderFormat = BlockFormat.GroupHeader();
            this.listViewPrinter1.ListHeaderFormat  = BlockFormat.ListHeader(new Font("Verdana", 12));

            this.listViewPrinter1.WatermarkFont  = null;
            this.listViewPrinter1.WatermarkColor = Color.Empty;
        }
Пример #22
0
        private static int[] C4ImageSubroutineDecode(byte[] C4ImageData, ushort[] Palette, int Width, int Height, bool UsesBlocks = true)
        {
            C4ImageData = Utilities.Utilities.SeparateNibbles(C4ImageData);
            int[] RGB8Palette = new int[Palette.Length];
            for (int i = 0; i < RGB8Palette.Length; i++)
            {
                RGB8Palette[i] = (int)RGB5A3.ToARGB8(Palette[i]);
            }

            byte[] UnscrambledData = UsesBlocks ? BlockFormat.Decode(C4ImageData, Width, Height, 8, 8) : C4ImageData;
            int[]  ImageData       = new int[UnscrambledData.Length];

            for (int i = 0; i < ImageData.Length; i++)
            {
                ImageData[i] = RGB8Palette[UnscrambledData[i]];
            }

            return(ImageData);
        }
Пример #23
0
        /// <summary>
        /// Give the report a minimal set of default formatting values.
        /// </summary>
        public void ApplyMinimalFormatting()
        {
            this.listViewPrinter1.CellFormat = null;
            this.listViewPrinter1.ListFont   = new Font("Tahoma", 9);

            this.listViewPrinter1.HeaderFormat                 = BlockFormat.Header();
            this.listViewPrinter1.HeaderFormat.TextBrush       = Brushes.Black;
            this.listViewPrinter1.HeaderFormat.BackgroundBrush = null;
            this.listViewPrinter1.HeaderFormat.SetBorderPen(Sides.Bottom, new Pen(Color.Black, 0.5f));

            this.listViewPrinter1.FooterFormat      = BlockFormat.Footer();
            this.listViewPrinter1.GroupHeaderFormat = BlockFormat.GroupHeader();
            this.listViewPrinter1.GroupHeaderFormat.SetBorder(Sides.Bottom, 2, new LinearGradientBrush(new Rectangle(0, 0, 1, 1), Color.Gray, Color.White, LinearGradientMode.Horizontal));

            this.listViewPrinter1.ListHeaderFormat = BlockFormat.ListHeader();
            this.listViewPrinter1.ListHeaderFormat.BackgroundBrush = null;

            this.listViewPrinter1.WatermarkFont  = null;
            this.listViewPrinter1.WatermarkColor = Color.Empty;
        }
Пример #24
0
        /// <summary>
        /// Give the report a minimal set of default formatting values.
        /// </summary>
        public void ApplyMinimalFormatting()
        {
            this.listViewPrinter.CellFormat = null;
            this.listViewPrinter.ListFont   = new Font("Tahoma", 9);

            this.listViewPrinter.HeaderFormat                 = BlockFormat.Header();
            this.listViewPrinter.HeaderFormat.TextBrush       = Brushes.Black;
            this.listViewPrinter.HeaderFormat.BackgroundBrush = null;
            this.listViewPrinter.HeaderFormat.SetBorderPen(Sides.Bottom, new Pen(Color.Black, 0.5f));

            this.listViewPrinter.FooterFormat      = BlockFormat.Footer();
            this.listViewPrinter.GroupHeaderFormat = BlockFormat.GroupHeader();
            Brush brush = new LinearGradientBrush(new Point(0, 0), new Point(200, 0), Color.Gray, Color.White);

            this.listViewPrinter.GroupHeaderFormat.SetBorder(Sides.Bottom, 2, brush);

            this.listViewPrinter.ListHeaderFormat = BlockFormat.ListHeader();
            this.listViewPrinter.ListHeaderFormat.BackgroundBrush = null;

            this.listViewPrinter.WatermarkFont  = null;
            this.listViewPrinter.WatermarkColor = Color.Empty;
        }
Пример #25
0
        /// <summary>
        /// Unserializes a BinaryStream into the Attributes of this Instance
        /// </summary>
        /// <param name="reader">The Stream that contains the FileData</param>
        public void Unserialize(System.IO.BinaryReader reader)
        {
            number = reader.ReadInt32();
            uint id = reader.ReadUInt32();

            identity    = (ElementIdentity)id;
            repeat      = reader.ReadInt32();
            blockformat = (SimPe.Plugin.Gmdc.BlockFormat)reader.ReadInt32();
            setformat   = (SimPe.Plugin.Gmdc.SetFormat)reader.ReadInt32();

            GmdcElementValueBase dummy = GetValueInstance();
            int len = reader.ReadInt32() / (4 * dummy.Size);

            data.Clear();
            for (int i = 0; i < len; i++)
            {
                dummy = GetValueInstance();
                dummy.Unserialize(reader);
                data.Add(dummy);
            }

            this.ReadBlock(reader, items);
        }
Пример #26
0
        internal void MakeInterleave(ref System.IO.MemoryStream Data, byte[] Index, Color[] Palette, byte[] MipIndex, BlockFormats Format)
        {
            BlockFormat[][] fmt = new BlockFormat[][] { };
            InitFMT(ref fmt);
            Data = new System.IO.MemoryStream();
            System.IO.BinaryWriter DWriter = new System.IO.BinaryWriter(Data);
            uint ind_offset = 0;
            uint mip_offset = 0;
            uint pal_offset = 0;
            var  format_ind = (int)Format;

            for (int i = 0; i <= fmt[format_ind].Length - 1; i++)
            {
                for (int j = 0; j <= fmt[format_ind][i].Index - 1; j++)
                {
                    DWriter.Write(Index[j + ind_offset]);
                }
                for (int j = 0; j <= fmt[format_ind][i].Mip - 1; j++)
                {
                    DWriter.Write(MipIndex[j + mip_offset]);
                }
                for (int j = 0; j <= fmt[format_ind][i].Palette / 4 - 1; j++)
                {
                    DWriter.Write(Palette[j + pal_offset].R);
                    DWriter.Write(Palette[j + pal_offset].G);
                    DWriter.Write(Palette[j + pal_offset].B);
                    DWriter.Write(Palette[j + pal_offset].A);
                }
                for (int j = 0; j <= fmt[format_ind][i].Space - 1; j++)
                {
                    DWriter.Write(System.Convert.ToByte(255));
                }
                ind_offset += fmt[format_ind][i].Index;
                mip_offset += fmt[format_ind][i].Mip;
                pal_offset += (uint)fmt[format_ind][i].Palette / 4;
            }
        }
Пример #27
0
 internal void InitFMT(ref BlockFormat[][] fmt)
 {
     Array.Resize(ref fmt, 19);
     // fmt128x256 128I256 16P64S192 16S256
     Array.Resize(ref fmt[0], 160);
     for (int i = 0; i <= 127; i++)
     {
         fmt[0][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 128; i <= 143; i++)
     {
         fmt[0][i] = new BlockFormat(0, 0, 64, 192);
     }
     for (int i = 144; i <= 159; i++)
     {
         fmt[0][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt128x128 64I256 16P64S192 16S256
     Array.Resize(ref fmt[1], 96);
     for (int i = 0; i <= 63; i++)
     {
         fmt[1][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 64; i <= 79; i++)
     {
         fmt[1][i] = new BlockFormat(0, 0, 64, 192);
     }
     for (int i = 80; i <= 95; i++)
     {
         fmt[1][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt128x128mip 64I256 16M192P64 16S256
     Array.Resize(ref fmt[2], 96);
     for (int i = 0; i <= 63; i++)
     {
         fmt[2][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 64; i <= 79; i++)
     {
         fmt[2][i] = new BlockFormat(0, 192, 64, 0);
     }
     for (int i = 80; i <= 95; i++)
     {
         fmt[2][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt128x64 32I256 16P64S192 16S256
     Array.Resize(ref fmt[3], 64);
     for (int i = 0; i <= 31; i++)
     {
         fmt[3][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 32; i <= 47; i++)
     {
         fmt[3][i] = new BlockFormat(0, 0, 64, 192);
     }
     for (int i = 48; i <= 63; i++)
     {
         fmt[3][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt128x64mip 32I256 16M64S192 16M64P64S128
     Array.Resize(ref fmt[4], 64);
     for (int i = 0; i <= 31; i++)
     {
         fmt[4][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 32; i <= 47; i++)
     {
         fmt[4][i] = new BlockFormat(0, 64, 0, 192);
     }
     for (int i = 48; i <= 63; i++)
     {
         fmt[4][i] = new BlockFormat(0, 64, 64, 128);
     }
     // fmt128x32 16I256 16P64S192 16S256
     Array.Resize(ref fmt[5], 48);
     for (int i = 0; i <= 15; i++)
     {
         fmt[5][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[5][i] = new BlockFormat(0, 0, 64, 192);
     }
     for (int i = 32; i <= 47; i++)
     {
         fmt[5][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt128x32mip 16I256 16M128P64S64 16S256
     Array.Resize(ref fmt[6], 48);
     for (int i = 0; i <= 15; i++)
     {
         fmt[6][i] = new BlockFormat(256, 0, 0, 0);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[6][i] = new BlockFormat(0, 128, 64, 64);
     }
     for (int i = 32; i <= 47; i++)
     {
         fmt[6][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt64x64 16I128P64S64 16I128S128
     Array.Resize(ref fmt[7], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[7][i] = new BlockFormat(128, 0, 64, 64);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[7][i] = new BlockFormat(128, 0, 0, 128);
     }
     // fmt64x64mip 16I128M64P64 16I128M64S64
     Array.Resize(ref fmt[8], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[8][i] = new BlockFormat(128, 0, 64, 64);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[8][i] = new BlockFormat(128, 64, 0, 64);
     }
     // fmt64x32 16I128S128 16P64S192
     Array.Resize(ref fmt[9], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[9][i] = new BlockFormat(128, 0, 0, 128);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[9][i] = new BlockFormat(0, 0, 64, 192);
     }
     // fmt64x32mip 16I128S128 16M64P64S128
     Array.Resize(ref fmt[10], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[10][i] = new BlockFormat(128, 0, 0, 128);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[10][i] = new BlockFormat(0, 64, 64, 128);
     }
     // fmt32x64 16I64P64S128 16I64S192
     Array.Resize(ref fmt[11], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[11][i] = new BlockFormat(64, 0, 64, 128);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[11][i] = new BlockFormat(64, 0, 0, 192);
     }
     // fmt32x64mip 16I64M64P64S64 16I64S192
     Array.Resize(ref fmt[12], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[12][i] = new BlockFormat(64, 64, 64, 64);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[12][i] = new BlockFormat(64, 0, 0, 192);
     }
     // fmt32x32 16I64S192 16P64S192
     Array.Resize(ref fmt[13], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[13][i] = new BlockFormat(64, 0, 0, 192);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[13][i] = new BlockFormat(0, 0, 64, 192);
     }
     // fmt32x32mip 16I64P64S128 16M32S224
     Array.Resize(ref fmt[14], 32);
     for (int i = 0; i <= 15; i++)
     {
         fmt[14][i] = new BlockFormat(64, 0, 64, 128);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[14][i] = new BlockFormat(0, 32, 0, 224);
     }
     // fmt32x16 8I64S192 16P64S192 8S256 EXPEREMENTAL!
     Array.Resize(ref fmt[15], 32);
     for (int i = 0; i <= 7; i++)
     {
         fmt[15][i] = new BlockFormat(64, 0, 0, 192);
     }
     for (int i = 8; i <= 15; i++)
     {
         fmt[15][i] = new BlockFormat(0, 0, 64, 224);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[15][i] = new BlockFormat(0, 0, 0, 256);
     }
     // fmt32x16mip 8I64S192 4M32S224 4S256 16P64S192
     Array.Resize(ref fmt[16], 32);
     for (int i = 0; i <= 7; i++)
     {
         fmt[16][i] = new BlockFormat(64, 0, 0, 192);
     }
     for (int i = 8; i <= 11; i++)
     {
         fmt[16][i] = new BlockFormat(0, 32, 0, 224);
     }
     for (int i = 12; i <= 15; i++)
     {
         fmt[16][i] = new BlockFormat(0, 0, 0, 256);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[16][i] = new BlockFormat(0, 0, 64, 192);
     }
     // fmt32x8 4I64S192 12S256 16P64S192
     Array.Resize(ref fmt[17], 32);
     for (int i = 0; i <= 3; i++)
     {
         fmt[17][i] = new BlockFormat(64, 0, 0, 192);
     }
     for (int i = 4; i <= 15; i++)
     {
         fmt[17][i] = new BlockFormat(0, 0, 0, 256);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[17][i] = new BlockFormat(0, 0, 64, 192);
     }
     // fmt16x16mip 8I32S224 4M32S224 4S256 16P64
     Array.Resize(ref fmt[18], 32);
     for (int i = 0; i <= 7; i++)
     {
         fmt[18][i] = new BlockFormat(32, 0, 0, 224);
     }
     for (int i = 8; i <= 11; i++)
     {
         fmt[18][i] = new BlockFormat(0, 32, 0, 224);
     }
     for (int i = 12; i <= 15; i++)
     {
         fmt[18][i] = new BlockFormat(0, 0, 0, 256);
     }
     for (int i = 16; i <= 31; i++)
     {
         fmt[18][i] = new BlockFormat(0, 0, 64, 192);
     }
 }