Ejemplo n.º 1
0
        public override bool HandleControlWord(RtfCtrlWordData ctrlWordData)
        {
            bool result = false;
            bool skipCtrlWord = false;
            if (this.rtfParser.IsImport()) {
                skipCtrlWord = true;
                if (ctrlWordData.ctrlWord.Equals("shppict")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("nonshppict")) {    // never gets here because this is a destination set to null
                    skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;
                }
                if (ctrlWordData.ctrlWord.Equals("blipuid")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picprop")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("pict")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("emfblip")) { result = true; pictureType = Image.ORIGINAL_NONE;}
                if (ctrlWordData.ctrlWord.Equals("pngblip")) { result = true; pictureType = Image.ORIGINAL_PNG;}
                if (ctrlWordData.ctrlWord.Equals("jepgblip")) { result = true; pictureType = Image.ORIGINAL_JPEG;}
                if (ctrlWordData.ctrlWord.Equals("macpict")) { result = true; pictureType = Image.ORIGINAL_NONE;}
                if (ctrlWordData.ctrlWord.Equals("pmmetafile")) { result = true; pictureType = Image.ORIGINAL_NONE;}
                if (ctrlWordData.ctrlWord.Equals("wmetafile")) { result = true; pictureType = Image.ORIGINAL_WMF;}
                if (ctrlWordData.ctrlWord.Equals("dibitmap")) { result = true; pictureType = Image.ORIGINAL_NONE;}
                if (ctrlWordData.ctrlWord.Equals("wbitmap")) { result = true; pictureType = Image.ORIGINAL_BMP;}
                /* bitmap information */
                if (ctrlWordData.ctrlWord.Equals("wbmbitspixel")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("wbmplanes")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("wbmwidthbytes")) { result = true;}
                /* picture size, scaling and cropping */
                if (ctrlWordData.ctrlWord.Equals("picw")) { this.width = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("pich")) { this.height = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picwgoal")) { this.desiredWidth = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("pichgoal")) { this.desiredHeight = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picscalex")) { this.scaleX = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picscaley")) { this.scaleY = ctrlWordData.IntValue();result = true;}
                if (ctrlWordData.ctrlWord.Equals("picscaled")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("picprop")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("defshp")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropt")) { this.cropTop = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropb")) { this.cropBottom = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropl")) { this.cropLeft = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropr")) { this.cropRight = ctrlWordData.IntValue(); result = true;}
                /* metafile information */
                if (ctrlWordData.ctrlWord.Equals("picbmp")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("picbpp")) { result = true;}
                /* picture data */
                if (ctrlWordData.ctrlWord.Equals("bin")) {
                    this.dataFormat = FORMAT_BINARY;
                    // set length to param
                    this.binaryLength = ctrlWordData.LongValue();
                    this.rtfParser.SetTokeniserStateBinary(binaryLength);
                    result = true;
                }
                if (ctrlWordData.ctrlWord.Equals("blipupi")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("blipuid")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("bliptag")) { result = true;}
            }
            if (this.rtfParser.IsConvert()) {
                if (ctrlWordData.ctrlWord.Equals("shppict")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("nonshppict")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("blipuid")) { result = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("pict")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("emfblip")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("pngblip")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("jepgblip")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("macpict")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("pmmetafile")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("wmetafile")) {  skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("dibitmap")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("wbitmap")) { result = true;}
                /* bitmap information */
                if (ctrlWordData.ctrlWord.Equals("wbmbitspixel")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("wbmplanes")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("wbmwidthbytes")) { result = true;}
                /* picture size, scaling and cropping */
                if (ctrlWordData.ctrlWord.Equals("picw")) { this.width = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("pich")) { this.height = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picwgoal")) { this.desiredWidth = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("pichgoal")) { this.desiredHeight = ctrlWordData.LongValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picscalex")) { this.scaleX = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("picscaley")) { this.scaleY = ctrlWordData.IntValue();result = true;}
                if (ctrlWordData.ctrlWord.Equals("picscaled")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("picprop")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("defshp")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropt")) { this.cropTop = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropb")) { this.cropBottom = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropl")) { this.cropLeft = ctrlWordData.IntValue(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("piccropr")) { this.cropRight = ctrlWordData.IntValue(); result = true;}
                /* metafile information */
                if (ctrlWordData.ctrlWord.Equals("picbmp")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("picbpp")) { result = true;}
                /* picture data */
                if(ctrlWordData.ctrlWord.Equals("bin")) {
                    dataFormat = FORMAT_BINARY; result = true;
                }
                if (ctrlWordData.ctrlWord.Equals("blipupi")) { result = true;}
                if (ctrlWordData.ctrlWord.Equals("blipuid")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
                if (ctrlWordData.ctrlWord.Equals("bliptag")) { result = true;}

            }
            if (!skipCtrlWord) {
            switch (this.rtfParser.GetConversionType()) {
            case RtfParser.TYPE_IMPORT_FULL:
                    WriteBuffer();
                    WriteText(ctrlWordData.ToString());
                result = true;
                break;
            case RtfParser.TYPE_IMPORT_FRAGMENT:
                    WriteBuffer();
                    WriteText(ctrlWordData.ToString());
                result = true;
                break;
            case RtfParser.TYPE_CONVERT:
                result = true;
                break;
            default:    // error because is should be an import or convert
                result = false;
                break;
            }
            }
            return result;
        }