Exemplo n.º 1
0
 public override void                Render(CodeData xData)
 {
    SvgRenderOptions xOpt=m_xOptions as SvgRenderOptions;
    //
    if( xOpt==null ) xOpt=new SvgRenderOptions();
    //
    SvgCode xSvg=new SvgCode(xData,xOpt.m_bHorizontalOptimization);
    //
    m_sResult=xSvg.GetGraphic( xOpt.m_iPixelPerModuleX , xOpt.m_iPixelPerModuleY );
 }
Exemplo n.º 2
0
 static public CodeDecoder           Decode(CodeData xBitmap)
 {
    BitMatrix      xMatrix=new BitMatrix(xBitmap.ModuleMatrix[0].Count , xBitmap.ModuleMatrix.Count );
    //
    for(int y=0; y<xBitmap.ModuleMatrix.Count; y++)
       for(int x=0; x<xBitmap.ModuleMatrix[0].Count; x++)
          xMatrix[x,y]=xBitmap.ModuleMatrix[y][x];
    //
    BinaryBitmap xBin=new BinaryBitmap( xMatrix );
    //
    return Decode( xBin );
 }
Exemplo n.º 3
0
        public override void                Render(CodeData xData)
        {
            XamlRenderOptions xOpt = m_xOptions as XamlRenderOptions;

            //
            if (xOpt == null)
            {
                xOpt = new XamlRenderOptions();
            }
            //
            m_xData = xData;
            //
            this.m_xDrawingGroup = GetGraphic(xOpt.m_iPixelPerModuleX, xOpt.m_iPixelPerModuleY);
        }
Exemplo n.º 4
0
        public override void                Render(CodeData xData)
        {
            XamlRenderOptions xOpt = m_xOptions as XamlRenderOptions;

            //
            if (xOpt == null)
            {
                xOpt = new XamlRenderOptions();
            }
            //
            m_xData = xData;
            //
            this.m_xBitmap = GetGraphic();
        }
Exemplo n.º 5
0
        public override CodeData         CreateCodeData(Payload xPayload, CodeOptions xOptions)
        {
            Pdf417CodeOptions xOpt = xOptions as Pdf417CodeOptions;

            //
            if (xOpt == null)
            {
                xOpt = new Pdf417CodeOptions();
            }

            //
            int          width     = 1024;
            int          height    = 1024;
            PDF417Writer _bcWriter = new PDF417Writer();
            Dictionary <EncodeHintType, object> Hints = new Dictionary <EncodeHintType, object>();

            Hints[EncodeHintType.WIDTH]  = width;
            Hints[EncodeHintType.HEIGHT] = height;

            Hints[EncodeHintType.MARGIN]            = 0;
            Hints[EncodeHintType.PDF417_COMPACTION] = (ZXing.PDF417.Internal.Compaction)(int) xOpt.m_eCompactionMode;
            Hints[EncodeHintType.ERROR_CORRECTION]  = (ZXing.PDF417.Internal.PDF417ErrorCorrectionLevel)(xOpt.ErrorCorrm_iectionLevel);
            Hints[EncodeHintType.PDF417_DIMENSIONS] = new ZXing.PDF417.Internal.Dimensions(xOpt.m_iDataColumns, xOpt.m_iDataColumns, xOpt.m_iDataRows, 100);

            if (xOpt.m_bMacroPDF)
            {
                Hints[EncodeHintType.PDF417_MACROENABLE]       = true;
                Hints[EncodeHintType.PDF417_MACROFileID]       = xOpt.m_sMacroPDFFileID;
                Hints[EncodeHintType.PDF417_MACROSegmentIndex] = xOpt.m_iMacroPDFSegmentIdx;
                Hints[EncodeHintType.PDF417_MACROSegmentCount] = xOpt.m_iMacroPDFSegmentCount;
            }

            Hints[EncodeHintType.PDF417_Y2XRatio] = xOpt.m_fY2XRatio;

            BitMatrix xData = _bcWriter.encode(xPayload.ToString(), width, height, Hints);
            //
            CodeData xResData = new CodeData(xData.Width, xData.Height);

            //
            for (int y = 0; y < xData.Height; y++)
            {
                for (int x = 0; x < xData.Width; x++)
                {
                    xResData.ModuleMatrix[y][x] = xData[x, y];
                }
            }
            //
            return(xResData);
        }
Exemplo n.º 6
0
        public override void             Render(CodeData xData)
        {
            PngRenderOptions xOpt = m_xOptions as PngRenderOptions;

            //
            if (xOpt == null)
            {
                xOpt = new PngRenderOptions();
            }
            //
            m_xCodeData = xData;
            //
            m_abData = GetGraphic(Math.Max(1, xOpt.m_iWidth / xData.ModuleMatrix.Count));
            //
        }
Exemplo n.º 7
0
        public override CodeData            CreateCodeData(Payload xPayload, CodeOptions xOptions)
        {
            QREncoder xQREncoder = new QREncoder();
            //
            CodeData xData = xQREncoder.CreateCodeData(xPayload, xOptions);

            // make cross
            int iMidX = xData.ModuleMatrix.Count / 2 - 4;
            int iMidY = xData.ModuleMatrix[0].Count / 2 - 4;

            for (int y = 0; y < 9; y++)
            {
                for (int x = 0; x < 9; x++)
                {
                    xData.ModuleMatrix[iMidY + y][iMidX + x] = abCrossData[x, y] == 1;
                }
            }
            //
            return(xData);
        }
Exemplo n.º 8
0
        public override CodeData         CreateCodeData(Payload xPayload, CodeOptions xOptions)
        {
            AztecCodeOptions xOpt = xOptions as AztecCodeOptions;

            //
            if (xOpt == null)
            {
                xOpt = new AztecCodeOptions();
            }

            //
            int         width     = 1024;
            int         height    = 1024;
            AztecWriter _bcWriter = new AztecWriter();
            Dictionary <EncodeHintType, object> Hints = new Dictionary <EncodeHintType, object>();

            Hints[EncodeHintType.WIDTH]  = width;
            Hints[EncodeHintType.HEIGHT] = height;

            //Hints[EncodeHintType.PDF417_COMPACTION]   = (ZXing.PDF417.Internal.Compaction)(int)xOpt.m_eCompactionMode;
            //Hints[EncodeHintType.ERROR_CORRECTION]    = (ZXing.PDF417.Internal.PDF417ErrorCorrectionLevel)(xOpt.ErrorCorrm_iectionLevel);
            //Hints[EncodeHintType.PDF417_DIMENSIONS]   = new ZXing.PDF417.Internal.Dimensions(xOpt.m_iDataColumns,xOpt.m_iDataColumns,xOpt.m_iDataRows,100);

            BitMatrix xData = _bcWriter.encode(xPayload.ToString(), width, height, Hints);
            //
            CodeData xResData = new CodeData(xData.Width, xData.Height);

            //
            for (int y = 0; y < xData.Height; y++)
            {
                for (int x = 0; x < xData.Width; x++)
                {
                    xResData.ModuleMatrix[y][x] = xData[x, y];
                }
            }
            //
            return(xResData);
        }
Exemplo n.º 9
0
 public void                       Dispose()
 {
     m_xCodeData = null;
 }
Exemplo n.º 10
0
        public CodeData CreateCode(String contents, int iHeight)
        {
            int length = contents.Length;

            // Check length
            if (length < 1 || length > 80)
            {
                throw new ArgumentException(
                          "Contents length should be between 1 and 80 characters, but got " + length);
            }
            // Check content
            for (int i = 0; i < length; i++)
            {
                char c = contents[i];
                if (c < ' ' || c > '~')
                {
                    switch (c)
                    {
                    case ESCAPE_FNC_1:
                    case ESCAPE_FNC_2:
                    case ESCAPE_FNC_3:
                    case ESCAPE_FNC_4:
                        break;

                    default:
                        throw new ArgumentException("Bad character in input: " + c);
                    }
                }
            }

            var patterns    = new List <int[]>();         // temporary storage for patterns
            int checkSum    = 0;
            int checkWeight = 1;
            int codeSet     = 0;         // selected code (CODE_CODE_B or CODE_CODE_C)
            int position    = 0;         // position in contents

            int newCodeSet = CODE_CODE_B;

            while (position < length)
            {
                // If we're not manually controlling subsets
                if (!manualCodesets)
                {
                    //Select code to use
                    int requiredDigitCount = codeSet == CODE_CODE_C ? 2 : 4;

                    if (isDigits(contents, position, requiredDigitCount))
                    {
                        newCodeSet = forceCodesetB ? CODE_CODE_B : CODE_CODE_C;
                    }
                    else
                    {
                        newCodeSet = CODE_CODE_B;
                    }
                }

                //Get the pattern index
                int patternIndex;
                if (newCodeSet == codeSet)
                {
                    // Encode the current character
                    // First handle escapes
                    switch (contents[position])
                    {
                    case ESCAPE_FNC_1:
                        patternIndex = CODE_FNC_1;
                        break;

                    case ESCAPE_FNC_2:
                        patternIndex = CODE_FNC_2;
                        break;

                    case ESCAPE_FNC_3:
                        patternIndex = CODE_FNC_3;
                        break;

                    case ESCAPE_FNC_4:
                        patternIndex = CODE_FNC_4_B;                                 // FIXME if this ever outputs Code A
                        break;

                    default:

                        if (manualCodesets && contents[position] == '~')
                        {
                            switch (contents[position + 1])
                            {
                            case 'B':
                                newCodeSet   = CODE_CODE_B;
                                codeSet      = newCodeSet;
                                patternIndex = newCodeSet;
                                break;

                            case 'C':
                                newCodeSet   = CODE_CODE_C;
                                codeSet      = newCodeSet;
                                patternIndex = newCodeSet;
                                break;

                            default:
                                patternIndex = contents[position + 1] - ' ';
                                break;
                            }
                            position++;
                        }
                        else
                        {
                            // Then handle normal characters otherwise
                            if (codeSet == CODE_CODE_B)
                            {
                                patternIndex = contents[position] - ' ';
                            }
                            else
                            {                                     // CODE_CODE_C
                                patternIndex = Int32.Parse(contents.Substring(position, 2));
                                position++;                       // Also incremented below
                            }
                        }
                        break;
                    }
                    position++;
                }
                else
                {
                    // Should we change the current code?
                    // Do we have a code set?
                    if (codeSet == 0)
                    {
                        // No, we don't have a code set
                        if (newCodeSet == CODE_CODE_B)
                        {
                            patternIndex = CODE_START_B;
                        }
                        else
                        {
                            // CODE_CODE_C
                            patternIndex = CODE_START_C;
                        }
                    }
                    else
                    {
                        // Yes, we have a code set
                        patternIndex = newCodeSet;
                    }
                    codeSet = newCodeSet;
                }

                // Get the pattern
                patterns.Add(CODE_PATTERNS[patternIndex]);

                // Compute checksum
                checkSum += patternIndex * checkWeight;
                if (position != 0)
                {
                    checkWeight++;
                }
            }

            // Compute and append checksum
            checkSum %= 103;
            patterns.Add(CODE_PATTERNS[checkSum]);

            // Append stop code
            patterns.Add(CODE_PATTERNS[CODE_STOP]);

            // Compute code width
            int codeWidth = 0;

            foreach (int[] pattern in patterns)
            {
                foreach (int width in pattern)
                {
                    codeWidth += width;
                }
            }

            // Compute result
            var result = new bool[codeWidth];
            int pos    = 0;

            foreach (int[] pattern in patterns)
            {
                pos += appendPattern(result, pos, pattern, true);
            }


            CodeData xData = new CodeData(result.Length, iHeight);

            //
            for (int y = 0; y < iHeight; y++)
            {
                for (int x = 0; x < result.Length; x++)
                {
                    xData.ModuleMatrix[y][x] = result[x];
                }
            }


            return(xData);
        }
Exemplo n.º 11
0
 public SvgCode(CodeData xCodeData, bool bHorizontalOptimization) 
 {
    m_xCodeData=xCodeData;
    m_bHorizontalOptimization=bHorizontalOptimization;
 }