示例#1
0
        COperator CreateOperator(OpCodeName nameop)
        {
            string    name = nameop.ToString();
            COperator op   = OpCodes.OperatorFromName(name);

            return(CreateOperator(op));
        }
示例#2
0
        COperator CreateOperator()
        {
            string    name = _lexer.Token;
            COperator op   = OpCodes.OperatorFromName(name);

            return(CreateOperator(op));
        }
示例#3
0
        COperator CreateOperator()
        {
            string    name = lexer.Token;
            COperator op   = OpCodes.OperatorFromName(name);

            if (op.OpCode.OpCodeName == OpCodeName.ID)
            {
                lexer.ScanInlineImage();
            }

#if DEBUG
            if (op.OpCode.Operands != -1 && op.OpCode.Operands != operands.Count)
            {
                if (op.OpCode.OpCodeName != OpCodeName.ID)
                {
                    GetType();
                    Debug.Assert(false, "Invalid number of operands.");
                }
            }
#endif
            op.Operands.Add(operands);
            return(op);
        }
示例#4
0
        /// <summary>
        /// Renders the contents of the supplied Stream to the Page at the position specified by the provided Rectangle
        /// </summary>
        /// <param name="page"></param>
        /// <param name="stream"></param>
        /// <param name="rect"></param>
        protected virtual void RenderContentStream(PdfPage page, PdfStream stream, PdfRectangle rect)
        {
            if (stream == null || rect.IsEmpty)
            {
                return;
            }
            var content = ContentReader.ReadContent(stream.UnfilteredValue);
            var matrix  = new XMatrix();

            matrix.TranslateAppend(rect.X1, rect.Y1);
            var matElements = matrix.GetElements();
            var matrixOp    = OpCodes.OperatorFromName("cm");

            foreach (var el in matElements)
            {
                matrixOp.Operands.Add(new CReal {
                    Value = el
                });
            }
            content.Insert(0, matrixOp);

            // Save and restore Graphics state
            content.Insert(0, OpCodes.OperatorFromName("q"));
            content.Add(OpCodes.OperatorFromName("Q"));
            var appendedContent = page.Contents.AppendContent();

            using (var ms = new MemoryStream())
            {
                var cw = new ContentWriter(ms);
                foreach (var obj in content)
                {
                    obj.WriteObject(cw);
                }
                appendedContent.CreateStream(ms.ToArray());
            }
        }