Exemplo n.º 1
0
        public void Element(CGMElement el)
        {
            if (el.ElementClass == 1)
            {
                using (CGMBinaryReader reader = this.GetReader(el))
                {
                    this.ProcessClass1(el.ElementId, reader);
                    goto Label_0079;
                }
            }
            if (el.ElementClass == 2)
            {
                using (CGMBinaryReader reader2 = this.GetReader(el))
                {
                    this.ProcessClass2(el.ElementId, reader2);
                }
            }
            else if (el.ElementClass == 3)
            {
                using (CGMBinaryReader reader3 = this.GetReader(el))
                {
                    this.ProcessClass3(el.ElementId, reader3);
                }
            }
Label_0079:
            this.OnElement(el);
        }
Exemplo n.º 2
0
        public static void ReadFile(Stream r, IElementHandler h)
        {
            ArrayList list = new ArrayList();
            int       num  = (int)r.Length;

            do
            {
                int num5;
                int num6 = (int)r.Position;
                int num2 = ReadWordFromFile(r);
                if ((num2 & 0x1f) == 0x1f)
                {
                    num5 = ReadWordFromFile(r);
                }
                else
                {
                    num5 = num2 & 0x1f;
                }
                int    num4   = (num2 & 0xfe0) / 0x20;
                int    num3   = (num2 & 0xf000) / 0x1000;
                byte[] buffer = new byte[0];
                while ((num5 & 0x8000) != 0)
                {
                    num5  &= 0x7fff;
                    buffer = InreaseArray(buffer, num5);
                    r.Read(buffer, buffer.Length - num5, num5);
                    if ((num5 & 1) != 0)
                    {
                        r.ReadByte();
                    }
                    num5 = ReadWordFromFile(r);
                }
                buffer = InreaseArray(buffer, num5);
                r.Read(buffer, buffer.Length - num5, num5);
                if ((num5 & 1) != 0)
                {
                    r.ReadByte();
                }
                CGMElement el = new CGMElement
                {
                    ElementId    = num4,
                    ElementClass = num3,
                    Offset       = num6,
                    Data         = buffer
                };
                h.Element(el);
            }while (r.Position < num);
        }
Exemplo n.º 3
0
 protected abstract void OnElement(CGMElement el);
Exemplo n.º 4
0
 protected CGMBinaryReader GetReader(CGMElement el)
 {
     return(new CGMBinaryReader(new MemoryStream(el.Data), this.context));
 }