private PointD[] CreatePoint(Byte[] data) { PointD[] result = new PointD[3]; for (int i = 0; i < 3; i++) { uint yy = (uint)ByteConverter.ToInt(data, ref _Index); int y = (int)yy; if (yy > 2147483647) { y = (int)(yy - 4294967295U - 1); } uint xx = (uint)ByteConverter.ToInt(data, ref _Index); int x = (int)xx; if (xx > 2147483647) { x = (int)(xx - 4294967295U - 1); } result[i] = new PointD((double)x * _Width / 4096 / 4096, (double)y * _Height / 4096 / 4096); } return(result); }
private void Initialize() { if (_ClipPaths != null) { return; } _ClipPaths = new Collection <ClipPath>(); _Values = new Collection <EightBimValue>(); int i = 0; while (i < Data.Length) { if (Data[i++] != '8') { continue; } if (Data[i++] != 'B') { continue; } if (Data[i++] != 'I') { continue; } if (Data[i++] != 'M') { continue; } if (i + 7 > Data.Length) { return; } short id = ByteConverter.ToShort(Data, ref i); bool isClipPath = (id > 1999 && id < 2998); string name = null; int length = (int)Data[i++]; if (length != 0) { if (isClipPath && i + length < Data.Length) { name = Encoding.ASCII.GetString(Data, i, length); } i += length; } if ((length & 0x01) == 0) { i++; } length = ByteConverter.ToInt(Data, ref i); if (i + length > Data.Length) { return; } if (length != 0) { if (isClipPath) { _ClipPaths.Add(CreateClipPath(name, i, length)); } Byte[] data = new Byte[length]; Array.Copy(Data, i, data, 0, length); _Values.Add(new EightBimValue(id, data)); } i += length; } }