コード例 #1
0
ファイル: Program.cs プロジェクト: evi1m3/BarCode.Xnet
        static void CreateFileString(string sData, string sOutpuFilename, string sFileId, int iSegmentIndex, int iSegmentCount, int iDataCols = 14)
        {
            Pdf417CodeOptions xOptions = new Pdf417CodeOptions();

            xOptions.m_bMacroPDF             = true;
            xOptions.m_sMacroPDFFileID       = sFileId;
            xOptions.m_iMacroPDFSegmentIdx   = iSegmentIndex;
            xOptions.m_iMacroPDFSegmentCount = iSegmentCount;
            xOptions.m_iDataColumns          = iDataCols;
            xOptions.m_iDataRows             = 0;
            xOptions.m_fY2XRatio             = 4;

            CodeEncoder bcPdf417 = CodeEncoder.CreateCode(CodeType.Pdf417, new TextPayload(sData), xOptions,
                                                          //CodeRenderer.Create( CodeRenderType.Png , new PngRenderOptions( 128 , 128 , sOutpuFilename + ".png" ) ) );
                                                          CodeRenderer.Create(CodeRenderType.Svg, new SvgRenderOptions()
            {
                m_bHorizontalOptimization = false
            }));

            File.WriteAllText(sOutpuFilename + ".svg", bcPdf417.Renderer.GetStringData());
        }
コード例 #2
0
        public byte[] CompileProgram()
        {
            var astCompiler   = new AstCompiler(_programAst);
            var emitter       = astCompiler.CreateEmitter();
            var vmCodeEmitter = new HappyPenguinCodeEmitter();

            emitter.EmitCode(vmCodeEmitter); //This will emit code to the code emitter object
            vmCodeEmitter.Emit(OpCode.Halt); //Add a final halt
            var compiledProgram = vmCodeEmitter.GetEmittedCode();
            var codeEncoder     = new CodeEncoder();



            byte[] compiledProgramBytes;
            using (var outStream = new MemoryStream())
            {
                codeEncoder.EncodeCodeToStream(compiledProgram, outStream);
                compiledProgramBytes = compiledProgramBytes = outStream.ToArray();
            }
            return(compiledProgramBytes);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: 0xFireball/FlameScript
        private static void Main(string[] args)
        {
            /*
             * if (args.Length == 0)
             * {
             *  Console.WriteLine("No input file specified");
             *  return;
             * }
             *
             * var sourcePath = args[0];
             */
            var codeEmitter = new HappyPenguinCodeEmitter();

            /*
             * codeEmitter.Emit(OpCode.PushA);
             * codeEmitter.Emit(OpCode.Load, 0xFF, 0xFF);
             * codeEmitter.Emit(OpCode.Load, 0xFFFF);
             * codeEmitter.Emit(OpCode.Load, 0xAF, 0xAF);
             * codeEmitter.Emit(OpCode.Load, 0xAFAF);
             * codeEmitter.Emit(OpCode.Return);
             */

            //The # represents the programCounter number of the below program
            codeEmitter.Emit(OpCode.Nop);                                                //0.
            codeEmitter.Emit(OpCode.MovReg, (byte)RegisterId.A, 0x44);                   //1. Set A to 0x44
            codeEmitter.Emit(OpCode.DupA, 0xFFAA);                                       //2. Copy the data in A to 0xFFAA in memory
            codeEmitter.Emit(OpCode.LoadB, 0xFFAA);                                      //3. Copy the data at 0xFFAA from A to B
            codeEmitter.Emit(OpCode.PushA);                                              //4. Push A's value onto the stack
            codeEmitter.Emit(OpCode.MovReg, (byte)RegisterId.A, 0x33);                   //5. Set A to 0x33
            codeEmitter.Emit(OpCode.XchangeAB);                                          //6. Exchange the values of A and B
            codeEmitter.Emit(OpCode.PopA);                                               //7. Pop the stored value of A from the stack back into A
            codeEmitter.Emit(OpCode.MovReg, (byte)RegisterId.A, 0x22);                   //8. Set A to 0x22
            codeEmitter.Emit(OpCode.CompareReg, (byte)RegisterId.A, (byte)RegisterId.B); //9. Compare A and B
            codeEmitter.Emit(OpCode.JumpZ, 0xE);                                         //10. Jump to PC=0x if the registers in the previous comparison were equal
            codeEmitter.Emit(OpCode.DupA, 0xFFAA);                                       //11. Copy the data in A to 0xFFAA in memory
            codeEmitter.Emit(OpCode.LoadB, 0xFFAA);                                      //12. Copy the data at 0xFFAA from A to B
            codeEmitter.Emit(OpCode.Jump, 0x9);                                          //13. Jump back to line 0x9 to do comparison again
            codeEmitter.Emit(OpCode.Nop);                                                //14. Jump target from 10.
            codeEmitter.Emit(OpCode.Jump, 0x14);                                         //15. Jump to after function
            codeEmitter.Emit(OpCode.PopA);                                               //16. Retrieve A parameter
            codeEmitter.Emit(OpCode.Nop);                                                //17. Temporary placeholder
            codeEmitter.Emit(OpCode.Nop);                                                //18. Temporary placeholder
            codeEmitter.Emit(OpCode.Return);                                             //19. Return from function
            codeEmitter.Emit(OpCode.Nop);                                                //20. Jump target from 14.
            codeEmitter.Emit(OpCode.MovReg, (byte)RegisterId.A, 0x4);                    //21. Set A to 0x4
            codeEmitter.Emit(OpCode.ShiftLeft, (byte)RegisterId.A, 0x2);                 //22. Do a simple multiply by 4 with shifting
            codeEmitter.Emit(OpCode.PushA);                                              //23. Store A
            codeEmitter.Emit(OpCode.PopB);                                               //24. Restore B from stack
            codeEmitter.Emit(OpCode.ShiftRight, (byte)RegisterId.A, 0x2);                //25. Undo the multiply
            codeEmitter.Emit(OpCode.CompareReg, (byte)RegisterId.A, (byte)RegisterId.B); //26. Compare A and B
            codeEmitter.Emit(OpCode.JumpZ, 0x1D);                                        //27. Jump to PC=1d if the registers in the previous comparison were equal
            codeEmitter.Emit(OpCode.Fault, 0x1);                                         //28. Fault with code 0x1
            codeEmitter.Emit(OpCode.Nop);                                                //29. Jump target
            codeEmitter.Emit(OpCode.MovReg, (byte)RegisterId.A, 0x11);                   //30. Load 0x11 into A as the call target
            codeEmitter.Emit(OpCode.PushA);                                              //31. Push the A register onto the stack as the call target
            codeEmitter.Emit(OpCode.Call);                                               //32. Call the function from the address on the stack
            codeEmitter.Emit(OpCode.Halt);                                               //End of program. Halt.

            var vmProgram   = codeEmitter.GetEmittedCode();
            var codeEncoder = new CodeEncoder();

            using (var outputFileStream = File.Open("testprogram.🐧", FileMode.Create))
            {
                var outStream = new MemoryStream();
                codeEncoder.EncodeCodeToStream(vmProgram, outStream);
                outStream.Position = 0;
                var loadedProgram = codeEncoder.ReadCodeFromStream(outStream);
                outStream.Position = 0;
                outStream.CopyTo(outputFileStream);
            }

            var executor = new ProgramExecutor(vmProgram);

            executor.InitializeMachine();
            executor.ExecuteCode();
            //Dump memory

            /*
             * for (int i = 0; i < executor.Memory.Length; i++)
             * {
             *  Console.Write($"{executor.Memory[i]} ");
             * }
             */
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: evi1m3/BarCode.Xnet
        static void Main(string[] args)
        {
            // quick and easy code encode

            string dummyText = @"A barcode (also bar code) is an optical, machine-readable representation of data; the data usually describes something about the object that carries the barcode. Traditional barcodes systematically represent data by varying the widths and spacings of parallel lines, and may be referred to as linear or one-dimensional (1D). Later, two-dimensional (2D) variants were developed, using rectangles, dots, hexagons and other geometric patterns, called matrix codes or 2D barcodes, although they do not use bars as such. Initially, barcodes were only scanned by special optical scanners called barcode readers.";

            CodeEncoder bc128 = CodeEncoder.CreateCode(CodeType.Code128, new TextPayload("7560001000234"), null,
                                                       CodeRenderer.Create(CodeRenderType.Svg, new SvgRenderOptions()
            {
                m_iPixelPerModuleY = 20
            }));

            //CodeRenderer.Create( CodeRenderType.Xaml) );

            File.WriteAllText("test_code128.svg", bc128.Renderer.GetStringData());
            //
            //string sTest128 = CodeDecoder.Decode(bc128.Data).Text;


            // quick and easy code encode
            CodeEncoder bcAztec = CodeEncoder.CreateCode(CodeType.Aztec, new TextPayload(dummyText), null,
                                                         CodeRenderer.Create(CodeRenderType.Png, new PngRenderOptions(128, 128)));

            File.WriteAllBytes("test_aztec.png", bcAztec.Renderer.GetByteData());
            //
            //string sTestAztec = CodeDecoder.Decode(bcAztec.Data).Text;
            string sTestAztecPng = CodeDecoder.Decode(File.ReadAllBytes("test_aztec.png")).Text;



            // multiple code render and data acquire
            CodeEncoder bcQRCode = CodeEncoder.CreateCode(CodeType.QR, new TextPayload(dummyText), null,
                                                          CodeRenderer.Create(CodeRenderType.Png, new PngRenderOptions(256, 256)));

            File.WriteAllBytes("test_qr.png", bcQRCode.Renderer.GetByteData());
            //
            //string sTestsQR=CodeDecoder.Decode( bcQRCode.Data ).Text;
            string sTestQRPng = CodeDecoder.Decode(File.ReadAllBytes("test_qr.png")).Text;

            // custom render
            CodeRenderer xSvgOutput = CodeRenderer.Create(CodeRenderType.Svg, new SvgRenderOptions());

            xSvgOutput.Render(bcQRCode.Data);
            File.WriteAllText("test.svg", xSvgOutput.GetStringData());

            // acquire data
            byte[] sPngData = bcQRCode.Renderer.GetByteData();
            string sSvgData = xSvgOutput.GetStringData();



            // SwissQR - payload
            Contact   _contact   = new Contact("John Doe", "3003", "Bern", "CH", "Parlamentsgebäude", "1");
            Iban      _iban      = new Iban("CH2609000000857666015", Iban.IbanType.Iban);
            Reference _reference = new Reference(Reference.ReferenceType.QRR, "990005000000000320071012303", Reference.ReferenceTextType.QrReference);
            Currency  _currency  = Currency.CHF;
            decimal   _amount    = 100.25m;

            SwissQrCodePayload dataQR    = new SwissQrCodePayload(_iban, _currency, _contact, _reference, null, _amount, null, null);
            CodeEncoder        bcQRSwiss = CodeEncoder.CreateCode(CodeType.SwissQR, dataQR, null,
                                                                  CodeRenderer.Create(CodeRenderType.Png, new PngRenderOptions(256, 256)));

            File.WriteAllBytes("test_swissqr.png", bcQRSwiss.Renderer.GetByteData());
            //
            //string sQRSwiss = CodeDecoder.Decode(bcQRSwiss.Data).Text;
            string sQRSwissPng = CodeDecoder.Decode(File.ReadAllBytes("test_swissqr.png")).Text;


            // MacroPDF417
            SplitFile("~pdf417dump.cab.txt", "NetCore.seg", "001899017");
        }