コード例 #1
0
        public static EmfPlusRecord GetRecord(MetafileReader reader)
        {
            int type = reader.PeekInt16();

            EmfPlusRecord record;

            switch (type)
            {
            case 0x4001:
                record = new EmfPlusHeader(reader);
                break;

            case 0x4002:
                record = new EmfPlusEndOfFile(reader);
                break;

            case 0x4003:
                record = new EmfPlusComment(reader);
                break;

            case 0x4004:
                record = new EmfPlusGetDC(reader);
                break;

            case 0x4005:
                record = new EmfPlusMultiFormatStart(reader);
                break;

            case 0x4006:
                record = new EmfPlusMultiFormatSection(reader);
                break;

            case 0x4007:
                record = new EmfPlusMultiFormatEnd(reader);
                break;

            case 0x4008:
                record = new EmfPlusObject(reader);
                break;

            case 0x4009:
                record = new EmfPlusClear(reader);
                break;

            case 0x400A:
                record = new EmfPlusFillRects(reader);
                break;

            case 0x400B:
                record = new EmfPlusDrawRects(reader);
                break;

            case 0x400C:
                record = new EmfPlusFillPolygon(reader);
                break;

            case 0x400D:
                record = new EmfPlusDrawLines(reader);
                break;

            case 0x400E:
                record = new EmfPlusFillEllipse(reader);
                break;

            case 0x400F:
                record = new EmfPlusDrawEllipse(reader);
                break;

            case 0x4010:
                record = new EmfPlusFillPie(reader);
                break;

            case 0x4011:
                record = new EmfPlusDrawPie(reader);
                break;

            case 0x4012:
                record = new EmfPlusDrawArc(reader);
                break;

            case 0x4013:
                record = new EmfPlusFillRegion(reader);
                break;

            case 0x4014:
                record = new EmfPlusFillPath(reader);
                break;

            case 0x4015:
                record = new EmfPlusDrawPath(reader);
                break;

            case 0x4016:
                record = new EmfPlusFillClosedCurve(reader);
                break;

            case 0x4017:
                record = new EmfPlusDrawClosedCurve(reader);
                break;

            case 0x4018:
                record = new EmfPlusDrawCurve(reader);
                break;

            case 0x4019:
                record = new EmfPlusDrawBeziers(reader);
                break;

            case 0x401A:
                record = new EmfPlusDrawImage(reader);
                break;

            case 0x401C:
                record = new EmfPlusDrawString(reader);
                break;

            case 0x401D:
                record = new EmfPlusSetRenderingOrigin(reader);
                break;

            case 0x401E:
                record = new EmfPlusSetAntiAliasMode(reader);
                break;

            case 0x401F:
                record = new EmfPlusSetTextRenderingHint(reader);
                break;

            case 0x4020:
                record = new EmfPlusSetTextContrast(reader);
                break;

            case 0x4021:
                record = new EmfPlusSetInterpolationMode(reader);
                break;

            case 0x4022:
                record = new EmfPlusSetPixelOffsetMode(reader);
                break;

            case 0x4023:
                record = new EmfPlusSetCompositingMode(reader);
                break;

            case 0x4024:
                record = new EmfPlusSetCompositingQuality(reader);
                break;

            case 0x4025:
                record = new EmfPlusSave(reader);
                break;

            case 0x4026:
                record = new EmfPlusRestore(reader);
                break;

            case 0x4027:
                record = new EmfPlusBeginContainer(reader);
                break;

            case 0x4028:
                record = new EmfPlusBeginContainerNoParams(reader);
                break;

            case 0x4029:
                record = new EmfPlusEndContainer(reader);
                break;

            case 0x402A:
                record = new EmfPlusSetWorldTransform(reader);
                break;

            case 0x402B:
                record = new EmfPlusResetWorldTransform(reader);
                break;

            case 0x402C:
                record = new EmfPlusMultiplyWorldTransform(reader);
                break;

            case 0x402D:
                record = new EmfPlusTranslateWorldTransform(reader);
                break;

            case 0x402E:
                record = new EmfPlusScaleWorldTransform(reader);
                break;

            case 0x402F:
                record = new EmfPlusRotateWorldTransform(reader);
                break;

            case 0x4030:
                record = new EmfPlusSetPageTransform(reader);
                break;

            case 0x4031:
                record = new EmfPlusResetClip(reader);
                break;

            case 0x4032:
                record = new EmfPlusSetClipRect(reader);
                break;

            case 0x4033:
                record = new EmfPlusSetClipPath(reader);
                break;

            case 0x4034:
                record = new EmfPlusSetClipRegion(reader);
                break;

            case 0x4035:
                record = new EmfPlusOffsetClip(reader);
                break;

            case 0x4036:
                record = new EmfPlusDrawDriverString(reader);
                break;

            case 0x4037:
                record = new EmfPlusStrokeFillPath(reader);
                break;

            case 0x4038:
                record = new EmfPlusSerializableObject(reader);
                break;

            case 0x4039:
                record = new EmfPlusSetTSGraphics(reader);
                break;

            case 0x403A:
                record = new EmfPlusSetTSClip(reader);
                break;

            default:
                throw new InvalidOperationException($"Unknown EMF+ record type 0x{type:X4}");
            }

            return(record);
        }