public EmfPlusPenData(MetafileReader reader)
 {
     Flags        = (PenDataFlags)reader.ReadUInt32();
     Unit         = (UnitType)reader.ReadUInt32();
     Width        = reader.ReadSingle();
     OptionalData = new EmfPlusPenOptionalData(reader, Flags);
 }
Beispiel #2
0
 public EmfPlusFillClosedCurve(MetafileReader reader) : base(reader)
 {
     BrushIdOrColor = reader.ReadUInt32();
     Tension        = reader.ReadSingle();
     Count          = reader.ReadUInt32();
     Points         = Utilities.GetPoints(reader, RelativeLocations, DataCompressed, Count);
 }
        public EmfPlusDrawDriverString(MetafileReader reader) : base(reader)
        {
            BrushIdOrColor = reader.ReadUInt32();
            OptionsFlags   = (DriverStringOptionsFlags)reader.ReadUInt32();
            MatrixPresent  = reader.ReadBoolean();
            GlyphCount     = reader.ReadUInt32();

            var glyphs = new List <ushort>();

            for (int i = 0; i < GlyphCount; i++)
            {
                ushort glyph = reader.ReadUInt16();
                glyphs.Add(glyph);
            }
            Glyphs = glyphs;

            var positions = new List <EmfPlusPointF>();

            for (uint i = 0; i < GlyphCount; i++)
            {
                var position = new EmfPlusPointF(reader);
                positions.Add(position);
            }
            Positions = positions;

            if (MatrixPresent)
            {
                Transform = new EmfPlusTransformMatrix(reader);
            }
        }
Beispiel #4
0
 public EmfPlusHeader(MetafileReader reader) : base(reader)
 {
     Version      = reader.ReadUInt32();
     EmfPlusFlags = reader.ReadUInt32();
     LogicalDpiX  = reader.ReadUInt32();
     LogicalDpiY  = reader.ReadUInt32();
 }
Beispiel #5
0
 public EmfPlusDrawImagePoints(MetafileReader reader) : base(reader)
 {
     ImageAttributesId = reader.ReadUInt32();
     SrcUnit           = (UnitType)reader.ReadInt32();
     SrcRect           = new EmfPlusRectF(reader);
     Count             = reader.ReadUInt32();
     Points            = Utilities.GetPoints(reader, RelativeLocations, DataCompressed, Count);
 }
 public EmfPlusDrawCurve(MetafileReader reader) : base(reader)
 {
     Tension          = reader.ReadSingle();
     Offset           = reader.ReadUInt32();
     NumberOfSegments = reader.ReadUInt32();
     Count            = reader.ReadUInt32();
     Points           = Utilities.GetPoints(reader, RelativeLocations, DataCompressed, Count);
 }
 public EmfPlusImageAttributes(MetafileReader reader, uint size) : base(reader, size)
 {
     Reserved1     = reader.ReadInt32();
     WrapMode      = (WrapMode)reader.ReadUInt32();
     ClampColor    = reader.ReadUInt32();
     ClampToBitmap = reader.ReadBoolean();
     Reserved2     = reader.ReadInt32();
 }
Beispiel #8
0
 public EmfPlusFont(MetafileReader reader, uint size) : base(reader, size)
 {
     EmSize     = reader.ReadSingle();
     Unit       = (UnitType)reader.ReadUInt32();
     StyleFlags = (FontStyleFlags)reader.ReadInt32();
     Reserved   = reader.ReadUInt32();
     NameLength = reader.ReadUInt32();
     Name       = Utilities.GetString(reader, NameLength);
 }
 public EmfPlusBitmap(MetafileReader reader, uint size) : base(size)
 {
     Width       = reader.ReadInt32();
     Height      = reader.ReadInt32();
     Stride      = reader.ReadInt32();
     PixelFormat = (PixelFormat)reader.ReadUInt32();
     DataType    = (BitmapDataType)reader.ReadUInt32();
     Data        = EmfPlusBitmapDataBase.GetBitmapData(reader, DataType, size - 20);
 }
Beispiel #10
0
        public EmfPlusMetafile(MetafileReader reader, uint size) : base(size)
        {
            Type     = (MetafileDataType)reader.ReadUInt32();
            DataSize = reader.ReadUInt32();

            for (uint i = 0; i < DataSize; i++)
            {
                reader.ReadByte();
            }
        }
Beispiel #11
0
 public EmfPlusLinearGradientBrushData(MetafileReader reader) : base(BrushType.LinearGradient)
 {
     Flags        = (BrushDataFlags)reader.ReadUInt32();
     WrapMode     = (WrapMode)reader.ReadInt32();
     Points       = new EmfPlusRectF(reader);
     StartColor   = reader.ReadUInt32();
     EndColor     = reader.ReadUInt32();
     Reserved1    = reader.ReadUInt32();
     Reserved2    = reader.ReadUInt32();
     OptionalData = new EmfPlusLinearGradientBrushOptionalData(reader, Flags);
 }
Beispiel #12
0
        public EmrEOF(MetafileReader reader) : base(reader)
        {
            PaletteEntriesCount  = reader.ReadUInt32();
            PaletteEntriesOffset = reader.ReadUInt32();

            if (PaletteEntriesCount != 0)
            {
                throw new InvalidOperationException("Don't know how to handle non-zer palette entries in EMR_EOF.");
            }

            SizeLast = reader.ReadUInt32();
        }
 public BitmapInfoHeader(MetafileReader reader)
 {
     HeaderSize      = reader.ReadUInt32();
     Width           = reader.ReadInt32();
     Height          = reader.ReadInt32();
     NumberOfPlanes  = reader.ReadUInt16();
     BitsPerPixel    = (BitCount)reader.ReadUInt16();
     Compression     = (Compression)reader.ReadUInt32();
     PixelsPerMeterX = reader.ReadInt32();
     PixelsPerMeterY = reader.ReadInt32();
     ColorsUsed      = reader.ReadUInt32();
     ColorsImportant = reader.ReadUInt32();
 }
        public EmfPlusPalette(MetafileReader reader)
        {
            StyleFlags = (PaletteStyleFlags)reader.ReadInt32();
            Count      = reader.ReadUInt32();

            var entries = new List <uint>();

            for (int i = 0; i < Count; i++)
            {
                uint entry = reader.ReadUInt32();
                entries.Add(entry);
            }
            Entries = entries;
        }
Beispiel #15
0
 public EmfPlusCustomLineCapArrowData(MetafileReader reader) : base(CustomLineCapDataType.AdjustableArrow)
 {
     Width       = reader.ReadSingle();
     Height      = reader.ReadSingle();
     MiddleInset = reader.ReadSingle();
     FillState   = reader.ReadBoolean();
     StartCap    = (LineCapType)reader.ReadUInt32();
     EndCap      = (LineCapType)reader.ReadUInt32();
     Join        = (LineJoinType)reader.ReadUInt32();
     MiterLimit  = reader.ReadSingle();
     WidthScale  = reader.ReadSingle();
     FillHotSpot = new EmfPlusPointF(reader);
     LineHotSpot = new EmfPlusPointF(reader);
 }
Beispiel #16
0
 public EmfPlusCustomLineCapData(MetafileReader reader) : base(CustomLineCapDataType.Default)
 {
     Flags            = (CustomLineCapDataFlags)reader.ReadUInt32();
     BaseCap          = (LineCapType)reader.ReadUInt32();
     BaseInset        = reader.ReadSingle();
     StrokeStartCap   = (LineCapType)reader.ReadUInt32();
     StrokeEndCap     = (LineCapType)reader.ReadUInt32();
     StrokeJoin       = (LineJoinType)reader.ReadUInt32();
     StrokeMiterLimit = reader.ReadSingle();
     WidthScale       = reader.ReadSingle();
     FillHotSpot      = new EmfPlusPointF(reader);
     StrokeHotSpot    = new EmfPlusPointF(reader);
     OptionalData     = new EmfPlusCustomLineCapOptionalData(reader, Flags);
 }
Beispiel #17
0
        public EmfPlusDrawString(MetafileReader reader) : base(reader)
        {
            BrushIdOrColor  = reader.ReadUInt32();
            StringFormatId  = reader.ReadUInt32();
            StringLength    = reader.ReadUInt32();
            LayoutRectangle = new EmfPlusRectF(reader);
            String          = Utilities.GetString(reader, StringLength);

            uint padding = (StringLength * 2) % 4;

            for (uint i = 0; i < padding; i++)
            {
                reader.ReadByte();
            }
        }
 public EmfPlusDrawImage(MetafileReader reader) : base(reader)
 {
     ImageAttributesId = reader.ReadUInt32();
     SrcUnit           = (UnitType)reader.ReadInt32();
     SrcRect           = new EmfPlusRectF(reader);
     DestRect          = Utilities.GetRect(reader, DataCompressed);
 }
Beispiel #19
0
 public EmfPlusFillPie(MetafileReader reader) : base(reader)
 {
     BrushIdOrColor = reader.ReadUInt32();
     StartAngle     = reader.ReadSingle();
     SweepAngle     = reader.ReadSingle();
     Rectangle      = Utilities.GetRect(reader, DataCompressed);
 }
 public BitmapCoreHeader(MetafileReader reader)
 {
     HeaderSize     = reader.ReadUInt32();
     Width          = reader.ReadUInt16();
     Height         = reader.ReadUInt16();
     NumberOfPlanes = reader.ReadUInt16();
     BitsPerPixel   = (BitCount)reader.ReadUInt16();
 }
 public EmfPlusPathGradientBrushData(MetafileReader reader) : base(BrushType.PathGradient)
 {
     Flags                 = (BrushDataFlags)reader.ReadUInt32();
     WrapMode              = (WrapMode)reader.ReadInt32();
     CenterColor           = reader.ReadUInt32();
     CenterPoint           = new EmfPlusPointF(reader);
     SurroundingColorCount = reader.ReadUInt32();
     SurroundingColors     = Utilities.ReadUInt32s(reader, SurroundingColorCount);
     if ((Flags & BrushDataFlags.HasPath) != 0)
     {
         BoundaryData = new EmfPlusBoundaryPathData(reader);
     }
     else
     {
         BoundaryData = new EmfPlusBoundaryPointData(reader);
     }
     OptionalData = new EmfPlusPathGradientBrushOptionalData(reader, Flags);
 }
Beispiel #22
0
 public BitmapV4Header(MetafileReader reader) : base(reader)
 {
     RedMask    = reader.ReadUInt32();
     GreenMask  = reader.ReadUInt32();
     BlueMask   = reader.ReadUInt32();
     AlphaMask  = reader.ReadUInt32();
     ColorSpace = (LogicalColorSpace)reader.ReadUInt32();
     Endpoints  = new CIEXYZTriple(reader);
     GammaRed   = reader.ReadUInt32();
     GammaGreen = reader.ReadUInt32();
     GammaBlue  = reader.ReadUInt32();
 }
Beispiel #23
0
        public EmfPlusObject(MetafileReader reader) : base(reader)
        {
            if (Continued)
            {
                TotalObjectSize = DataSize;
                DataSize        = reader.ReadUInt32();
            }

            Data = EmfPlusObjectData.GetObject(reader, ObjectType, DataSize);
        }
Beispiel #24
0
        public EmfPlusPath(MetafileReader reader, uint size) : base(reader, size)
        {
            PointCount = reader.ReadUInt32();
            PointFlags = reader.ReadUInt32();
            Points     = Utilities.GetPoints(reader, false, CompressedPoints, PointCount);

            var types = new List <byte>();

            for (uint i = 0; i < PointCount; i++)
            {
                byte type = reader.ReadByte();
                types.Add(type);
            }
            Types = types;

            uint padding = PointCount % 4;

            for (uint i = 0; i < padding; i++)
            {
                reader.ReadByte();
            }
        }
Beispiel #25
0
        public EmrCommentEmfPlus(MetafileReader reader) : base(reader)
        {
            DataSize  = reader.ReadUInt32();;
            Signature = reader.ReadUInt32();

            var  records      = new List <EmfPlusRecord>();
            uint currentIndex = (uint)reader.CurrentIndex;
            uint endIndex     = currentIndex + DataSize - 4;

            while (currentIndex < endIndex)
            {
                var record = EmfPlusRecord.GetRecord(reader);
                records.Add(record);
                currentIndex += record.Size;

                if (reader.CurrentIndex != currentIndex)
                {
                    reader.CurrentIndex = (int)currentIndex;
                    throw new System.InvalidOperationException("Reader is out of sync with the size.");
                }
            }
            Records = records;
        }
Beispiel #26
0
 public Header(MetafileReader reader)
 {
     Bounds                         = new RectL(reader);
     Frame                          = new RectL(reader);
     Signature                      = reader.ReadUInt32();
     Version                        = reader.ReadUInt32();
     NumberOfBytes                  = reader.ReadUInt32();
     NumberOfRecords                = reader.ReadUInt32();
     NumberOfObjects                = reader.ReadUInt16();
     Reserved                       = reader.ReadUInt16();
     DescriptionLength              = reader.ReadUInt32();
     DescriptionOffset              = reader.ReadUInt32();
     NumberOfPaletteEntries         = reader.ReadUInt32();
     ReferenceDeviceSizePixels      = new SizeL(reader);
     ReferenceDeviceSizeMillimeters = new SizeL(reader);
 }
 public LogColorSpaceW(MetafileReader reader)
 {
     Signature  = reader.ReadUInt32();
     Version    = reader.ReadUInt32();
     Size       = reader.ReadUInt32();
     ColorSpace = (LogicalColorSpace)reader.ReadInt32();
     Intent     = (GamutMappingIntent)reader.ReadInt32();
     Endpoints  = new CIEXYZTriple(reader);
     GammaRed   = reader.ReadUInt32();
     GammaBlue  = reader.ReadUInt32();
     GammaGreen = reader.ReadUInt32();
     FileName   = Utilities.GetAnsiString(reader, Size - 68);
 }
Beispiel #28
0
 public EmrBitBlt(MetafileReader reader) : base(reader)
 {
     Bounds               = new RectL(reader);
     DestX                = reader.ReadInt32();
     DestY                = reader.ReadInt32();
     DestWidth            = reader.ReadInt32();
     DestHeight           = reader.ReadInt32();
     RasterOperation      = (TernaryRasterOperation)reader.ReadUInt32();
     SrcX                 = reader.ReadInt32();
     SrcY                 = reader.ReadInt32();
     WorldToPageTransform = new XForm(reader);
     SrcBackgroundColor   = reader.ReadUInt32();
     SrcUsage             = (DIBColors)reader.ReadUInt32();
     BitmapHeaderOffset   = reader.ReadUInt32();
     BitmapHeaderSize     = reader.ReadUInt32();
     BitmapBitsOffset     = reader.ReadUInt32();
     BitmapBitsSize       = reader.ReadUInt32();
 }
 public EmfPlusStringFormat(MetafileReader reader, uint size) : base(reader, size)
 {
     Flags             = (StringFormatFlags)reader.ReadUInt32();
     Language          = reader.ReadUInt32();
     Align             = (StringAlignment)reader.ReadUInt32();
     LineAlign         = (StringAlignment)reader.ReadUInt32();
     DigitSubstitution = (StringDigitSubstitution)reader.ReadUInt32();
     DigitLanguage     = reader.ReadUInt32();
     FirstTabOffset    = reader.ReadSingle();
     HotkeyPrefix      = (HotkeyPrefix)reader.ReadInt32();
     LeadingMargin     = reader.ReadSingle();
     TrailingMargin    = reader.ReadSingle();
     Tracking          = reader.ReadSingle();
     Trimming          = (StringTrimming)reader.ReadInt32();
     TabStopCount      = reader.ReadInt32();
     RangeCount        = reader.ReadInt32();
     Data = new EmfPlusStringFormatData(reader, TabStopCount, RangeCount);
 }
Beispiel #30
0
        public Region(MetafileReader reader)
        {
            NextInChain           = reader.ReadUInt16();
            ObjectType            = reader.ReadInt16();
            ObjectCount           = reader.ReadUInt32();
            RegionCount           = reader.ReadInt16();
            ScansCount            = reader.ReadInt16();
            MaximumScanPointCount = reader.ReadInt16();
            BoundingRectangle     = new Rect(reader);

            if (ScansCount > 0)
            {
                var scans = new Scan[ScansCount];
                for (int i = 0; i < ScansCount; i++)
                {
                    scans[i] = new Scan(reader);
                }
                Scans = scans;
            }
            else
            {
                Scans = Enumerable.Empty <Scan>();
            }
        }