Java 类com.google.zxing.Dimension 实例源码

项目:boohee_v5.6    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords, SymbolShapeHint shape, Dimension minSize,
                                Dimension maxSize, boolean fail) {
    for (SymbolInfo symbol : symbols) {
        if ((shape != SymbolShapeHint.FORCE_SQUARE || !symbol.rectangular) && ((shape !=
                SymbolShapeHint.FORCE_RECTANGLE || symbol.rectangular) && ((minSize == null
                || (symbol.getSymbolWidth() >= minSize.getWidth() && symbol.getSymbolHeight()
                >= minSize.getHeight())) && ((maxSize == null || (symbol.getSymbolWidth() <=
                maxSize.getWidth() && symbol.getSymbolHeight() <= maxSize.getHeight())) &&
                dataCodewords <= symbol.dataCapacity)))) {
            return symbol;
        }
    }
    if (!fail) {
        return null;
    }
    throw new IllegalArgumentException("Can't find a symbol arrangement that matches the " +
            "message. Data codewords: " + dataCodewords);
}
项目:weex-3d-map    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:boohee_v5.6    文件:HighLevelEncoder.java   
public static String encodeHighLevel(String msg, SymbolShapeHint shape, Dimension minSize,
                                     Dimension maxSize) {
    Encoder[] encoders = new Encoder[]{new ASCIIEncoder(), new C40Encoder(), new TextEncoder
            (), new X12Encoder(), new EdifactEncoder(), new Base256Encoder()};
    EncoderContext context = new EncoderContext(msg);
    context.setSymbolShape(shape);
    context.setSizeConstraints(minSize, maxSize);
    if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
        context.writeCodeword(MACRO_05);
        context.setSkipAtEnd(2);
        context.pos += MACRO_05_HEADER.length();
    } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
        context.writeCodeword(MACRO_06);
        context.setSkipAtEnd(2);
        context.pos += MACRO_06_HEADER.length();
    }
    int encodingMode = 0;
    while (context.hasMoreCharacters()) {
        encoders[encodingMode].encode(context);
        if (context.getNewEncoding() >= 0) {
            encodingMode = context.getNewEncoding();
            context.resetEncoderSignal();
        }
    }
    int len = context.getCodewordCount();
    context.updateSymbolInfo();
    int capacity = context.getSymbolInfo().getDataCapacity();
    if (!(len >= capacity || encodingMode == 0 || encodingMode == 5)) {
        context.writeCodeword('þ');
    }
    StringBuilder codewords = context.getCodewords();
    if (codewords.length() < capacity) {
        codewords.append(PAD);
    }
    while (codewords.length() < capacity) {
        codewords.append(randomize253State(PAD, codewords.length() + 1));
    }
    return context.getCodewords().toString();
}
项目:boohee_v5.6    文件:DataMatrixWriter.java   
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height,
                        Map<EncodeHintType, ?> hints) {
    if (contents.isEmpty()) {
        throw new IllegalArgumentException("Found empty contents");
    } else if (format != BarcodeFormat.DATA_MATRIX) {
        throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
    } else if (width < 0 || height < 0) {
        throw new IllegalArgumentException("Requested dimensions are too small: " + width +
                'x' + height);
    } else {
        SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
        Dimension minSize = null;
        Dimension maxSize = null;
        if (hints != null) {
            SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType
                    .DATA_MATRIX_SHAPE);
            if (requestedShape != null) {
                shape = requestedShape;
            }
            Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
            if (requestedMinSize != null) {
                minSize = requestedMinSize;
            }
            Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
            if (requestedMaxSize != null) {
                maxSize = requestedMaxSize;
            }
        }
        String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);
        SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize,
                true);
        DefaultPlacement placement = new DefaultPlacement(ErrorCorrection.encodeECC200
                (encoded, symbolInfo), symbolInfo.getSymbolDataWidth(), symbolInfo
                .getSymbolDataHeight());
        placement.place();
        return encodeLowLevel(placement, symbolInfo);
    }
}
项目:PortraitZXing    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:PortraitZXing    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:ZXing-Orient    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:ZXing-Orient    文件:DataMatrixWriter.java   
@Override
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {

  if (contents.isEmpty()) {
    throw new IllegalArgumentException("Found empty contents");
  }

  if (format != BarcodeFormat.DATA_MATRIX) {
    throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
  }

  if (width < 0 || height < 0) {
    throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
  }

  // Try to get force shape & min / max size
  SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
  Dimension minSize = null;
  Dimension maxSize = null;
  if (hints != null) {
    SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType.DATA_MATRIX_SHAPE);
    if (requestedShape != null) {
      shape = requestedShape;
    }
    Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
    if (requestedMinSize != null) {
      minSize = requestedMinSize;
    }
    Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
    if (requestedMaxSize != null) {
      maxSize = requestedMaxSize;
    }
  }


  //1. step: Data encodation
  String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);

  SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize, true);

  //2. step: ECC generation
  String codewords = ErrorCorrection.encodeECC200(encoded, symbolInfo);

  //3. step: Module placement in Matrix
  DefaultPlacement placement =
      new DefaultPlacement(codewords, symbolInfo.getSymbolDataWidth(), symbolInfo.getSymbolDataHeight());
  placement.place();

  //4. step: low-level encoding
  return encodeLowLevel(placement, symbolInfo);
}
项目:event-app    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:weex-analyzer-android    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:weex-3d-map    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:Weex-TestDemo    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:Cardstore    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:QrScan_Demo    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:weex    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:TrueTone    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape,
                                Dimension minSize,
                                Dimension maxSize,
                                boolean fail) {
    for (SymbolInfo symbol : symbols) {
        if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
            continue;
        }
        if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
            continue;
        }
        if (minSize != null
                && (symbol.getSymbolWidth() < minSize.getWidth()
                || symbol.getSymbolHeight() < minSize.getHeight())) {
            continue;
        }
        if (maxSize != null
                && (symbol.getSymbolWidth() > maxSize.getWidth()
                || symbol.getSymbolHeight() > maxSize.getHeight())) {
            continue;
        }
        if (dataCodewords <= symbol.dataCapacity) {
            return symbol;
        }
    }
    if (fail) {
        throw new IllegalArgumentException(
                "Can't find a symbol arrangement that matches the message. Data codewords: "
                        + dataCodewords);
    }
    return null;
}
项目:Discounty    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape,
                                Dimension minSize,
                                Dimension maxSize,
                                boolean fail) {
    for (SymbolInfo symbol : symbols) {
        if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
            continue;
        }
        if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
            continue;
        }
        if (minSize != null
                && (symbol.getSymbolWidth() < minSize.getWidth()
                || symbol.getSymbolHeight() < minSize.getHeight())) {
            continue;
        }
        if (maxSize != null
                && (symbol.getSymbolWidth() > maxSize.getWidth()
                || symbol.getSymbolHeight() > maxSize.getHeight())) {
            continue;
        }
        if (dataCodewords <= symbol.dataCapacity) {
            return symbol;
        }
    }
    if (fail) {
        throw new IllegalArgumentException(
                "Can't find a symbol arrangement that matches the message. Data codewords: "
                        + dataCodewords);
    }
    return null;
}
项目:bushido-android-app    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:Android-Birdcopy-Application    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:RipplePower    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords, SymbolShapeHint shape, Dimension minSize, Dimension maxSize,
        boolean fail) {
    for (SymbolInfo symbol : symbols) {
        if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
            continue;
        }
        if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
            continue;
        }
        if (minSize != null && (symbol.getSymbolWidth() < minSize.getWidth()
                || symbol.getSymbolHeight() < minSize.getHeight())) {
            continue;
        }
        if (maxSize != null && (symbol.getSymbolWidth() > maxSize.getWidth()
                || symbol.getSymbolHeight() > maxSize.getHeight())) {
            continue;
        }
        if (dataCodewords <= symbol.dataCapacity) {
            return symbol;
        }
    }
    if (fail) {
        throw new IllegalArgumentException(
                "Can't find a symbol arrangement that matches the message. Data codewords: " + dataCodewords);
    }
    return null;
}
项目:zxing-bsplus    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:ZxingCore    文件:SymbolInfo.java   
public static SymbolInfo lookup(int dataCodewords,
                                SymbolShapeHint shape, 
                                Dimension minSize, 
                                Dimension maxSize, 
                                boolean fail) {
  for (SymbolInfo symbol : symbols) {
    if (shape == SymbolShapeHint.FORCE_SQUARE && symbol.rectangular) {
      continue;
    }
    if (shape == SymbolShapeHint.FORCE_RECTANGLE && !symbol.rectangular) {
      continue;
    }
    if (minSize != null
        && (symbol.getSymbolWidth() < minSize.getWidth()
        || symbol.getSymbolHeight() < minSize.getHeight())) {
      continue;
    }
    if (maxSize != null
        && (symbol.getSymbolWidth() > maxSize.getWidth()
        || symbol.getSymbolHeight() > maxSize.getHeight())) {
      continue;
    }
    if (dataCodewords <= symbol.dataCapacity) {
      return symbol;
    }
  }
  if (fail) {
    throw new IllegalArgumentException(
        "Can't find a symbol arrangement that matches the message. Data codewords: "
            + dataCodewords);
  }
  return null;
}
项目:weex-3d-map    文件:HighLevelEncoder.java   
/**
 * Performs message encoding of a DataMatrix message using the algorithm described in annex P
 * of ISO/IEC 16022:2000(E).
 *
 * @param msg     the message
 * @param shape   requested shape. May be {@code SymbolShapeHint.FORCE_NONE},
 *                {@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}.
 * @param minSize the minimum symbol size constraint or null for no constraint
 * @param maxSize the maximum symbol size constraint or null for no constraint
 * @return the encoded message (the char values range from 0 to 255)
 */
public static String encodeHighLevel(String msg,
                                     SymbolShapeHint shape, 
                                     Dimension minSize, 
                                     Dimension maxSize) {
  //the codewords 0..255 are encoded as Unicode characters
  Encoder[] encoders = {
      new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), 
      new X12Encoder(), new EdifactEncoder(),  new Base256Encoder()
  };

  EncoderContext context = new EncoderContext(msg);
  context.setSymbolShape(shape);
  context.setSizeConstraints(minSize, maxSize);

  if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_05);
    context.setSkipAtEnd(2);
    context.pos += MACRO_05_HEADER.length();
  } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_06);
    context.setSkipAtEnd(2);
    context.pos += MACRO_06_HEADER.length();
  }

  int encodingMode = ASCII_ENCODATION; //Default mode
  while (context.hasMoreCharacters()) {
    encoders[encodingMode].encode(context);
    if (context.getNewEncoding() >= 0) {
      encodingMode = context.getNewEncoding();
      context.resetEncoderSignal();
    }
  }
  int len = context.getCodewordCount();
  context.updateSymbolInfo();
  int capacity = context.getSymbolInfo().getDataCapacity();
  if (len < capacity) {
    if (encodingMode != ASCII_ENCODATION && encodingMode != BASE256_ENCODATION) {
      context.writeCodeword('\u00fe'); //Unlatch (254)
    }
  }
  //Padding
  StringBuilder codewords = context.getCodewords();
  if (codewords.length() < capacity) {
    codewords.append(PAD);
  }
  while (codewords.length() < capacity) {
    codewords.append(randomize253State(PAD, codewords.length() + 1));
  }

  return context.getCodewords().toString();
}
项目:weex-3d-map    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
  this.minSize = minSize;
  this.maxSize = maxSize;
}
项目:weex-3d-map    文件:DataMatrixWriter.java   
@Override
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {

  if (contents.isEmpty()) {
    throw new IllegalArgumentException("Found empty contents");
  }

  if (format != BarcodeFormat.DATA_MATRIX) {
    throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
  }

  if (width < 0 || height < 0) {
    throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
  }

  // Try to get force shape & min / max size
  SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
  Dimension minSize = null;
  Dimension maxSize = null;
  if (hints != null) {
    SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType.DATA_MATRIX_SHAPE);
    if (requestedShape != null) {
      shape = requestedShape;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
    if (requestedMinSize != null) {
      minSize = requestedMinSize;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
    if (requestedMaxSize != null) {
      maxSize = requestedMaxSize;
    }
  }


  //1. step: Data encodation
  String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);

  SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize, true);

  //2. step: ECC generation
  String codewords = ErrorCorrection.encodeECC200(encoded, symbolInfo);

  //3. step: Module placement in Matrix
  DefaultPlacement placement =
      new DefaultPlacement(codewords, symbolInfo.getSymbolDataWidth(), symbolInfo.getSymbolDataHeight());
  placement.place();

  //4. step: low-level encoding
  return encodeLowLevel(placement, symbolInfo);
}
项目:boohee_v5.6    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
    this.minSize = minSize;
    this.maxSize = maxSize;
}
项目:PortraitZXing    文件:HighLevelEncoder.java   
/**
 * Performs message encoding of a DataMatrix message using the algorithm described in annex P
 * of ISO/IEC 16022:2000(E).
 *
 * @param msg     the message
 * @param shape   requested shape. May be {@code SymbolShapeHint.FORCE_NONE},
 *                {@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}.
 * @param minSize the minimum symbol size constraint or null for no constraint
 * @param maxSize the maximum symbol size constraint or null for no constraint
 * @return the encoded message (the char values range from 0 to 255)
 */
public static String encodeHighLevel(String msg,
                                     SymbolShapeHint shape, 
                                     Dimension minSize, 
                                     Dimension maxSize) {
  //the codewords 0..255 are encoded as Unicode characters
  Encoder[] encoders = {
      new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), 
      new X12Encoder(), new EdifactEncoder(),  new Base256Encoder()
  };

  EncoderContext context = new EncoderContext(msg);
  context.setSymbolShape(shape);
  context.setSizeConstraints(minSize, maxSize);

  if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_05);
    context.setSkipAtEnd(2);
    context.pos += MACRO_05_HEADER.length();
  } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_06);
    context.setSkipAtEnd(2);
    context.pos += MACRO_06_HEADER.length();
  }

  int encodingMode = ASCII_ENCODATION; //Default mode
  while (context.hasMoreCharacters()) {
    encoders[encodingMode].encode(context);
    if (context.getNewEncoding() >= 0) {
      encodingMode = context.getNewEncoding();
      context.resetEncoderSignal();
    }
  }
  int len = context.getCodewordCount();
  context.updateSymbolInfo();
  int capacity = context.getSymbolInfo().getDataCapacity();
  if (len < capacity) {
    if (encodingMode != ASCII_ENCODATION && encodingMode != BASE256_ENCODATION) {
      context.writeCodeword('\u00fe'); //Unlatch (254)
    }
  }
  //Padding
  StringBuilder codewords = context.getCodewords();
  if (codewords.length() < capacity) {
    codewords.append(PAD);
  }
  while (codewords.length() < capacity) {
    codewords.append(randomize253State(PAD, codewords.length() + 1));
  }

  return context.getCodewords().toString();
}
项目:PortraitZXing    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
  this.minSize = minSize;
  this.maxSize = maxSize;
}
项目:PortraitZXing    文件:DataMatrixWriter.java   
@Override
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {

  if (contents.isEmpty()) {
    throw new IllegalArgumentException("Found empty contents");
  }

  if (format != BarcodeFormat.DATA_MATRIX) {
    throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
  }

  if (width < 0 || height < 0) {
    throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
  }

  // Try to get force shape & min / max size
  SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
  Dimension minSize = null;
  Dimension maxSize = null;
  if (hints != null) {
    SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType.DATA_MATRIX_SHAPE);
    if (requestedShape != null) {
      shape = requestedShape;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
    if (requestedMinSize != null) {
      minSize = requestedMinSize;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
    if (requestedMaxSize != null) {
      maxSize = requestedMaxSize;
    }
  }


  //1. step: Data encodation
  String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);

  SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize, true);

  //2. step: ECC generation
  String codewords = ErrorCorrection.encodeECC200(encoded, symbolInfo);

  //3. step: Module placement in Matrix
  DefaultPlacement placement =
      new DefaultPlacement(codewords, symbolInfo.getSymbolDataWidth(), symbolInfo.getSymbolDataHeight());
  placement.place();

  //4. step: low-level encoding
  return encodeLowLevel(placement, symbolInfo);
}
项目:PortraitZXing    文件:HighLevelEncoder.java   
/**
 * Performs message encoding of a DataMatrix message using the algorithm described in annex P
 * of ISO/IEC 16022:2000(E).
 *
 * @param msg     the message
 * @param shape   requested shape. May be {@code SymbolShapeHint.FORCE_NONE},
 *                {@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}.
 * @param minSize the minimum symbol size constraint or null for no constraint
 * @param maxSize the maximum symbol size constraint or null for no constraint
 * @return the encoded message (the char values range from 0 to 255)
 */
public static String encodeHighLevel(String msg,
                                     SymbolShapeHint shape, 
                                     Dimension minSize, 
                                     Dimension maxSize) {
  //the codewords 0..255 are encoded as Unicode characters
  Encoder[] encoders = {
      new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), 
      new X12Encoder(), new EdifactEncoder(),  new Base256Encoder()
  };

  EncoderContext context = new EncoderContext(msg);
  context.setSymbolShape(shape);
  context.setSizeConstraints(minSize, maxSize);

  if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_05);
    context.setSkipAtEnd(2);
    context.pos += MACRO_05_HEADER.length();
  } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_06);
    context.setSkipAtEnd(2);
    context.pos += MACRO_06_HEADER.length();
  }

  int encodingMode = ASCII_ENCODATION; //Default mode
  while (context.hasMoreCharacters()) {
    encoders[encodingMode].encode(context);
    if (context.getNewEncoding() >= 0) {
      encodingMode = context.getNewEncoding();
      context.resetEncoderSignal();
    }
  }
  int len = context.getCodewordCount();
  context.updateSymbolInfo();
  int capacity = context.getSymbolInfo().getDataCapacity();
  if (len < capacity) {
    if (encodingMode != ASCII_ENCODATION && encodingMode != BASE256_ENCODATION) {
      context.writeCodeword('\u00fe'); //Unlatch (254)
    }
  }
  //Padding
  StringBuilder codewords = context.getCodewords();
  if (codewords.length() < capacity) {
    codewords.append(PAD);
  }
  while (codewords.length() < capacity) {
    codewords.append(randomize253State(PAD, codewords.length() + 1));
  }

  return context.getCodewords().toString();
}
项目:PortraitZXing    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
  this.minSize = minSize;
  this.maxSize = maxSize;
}
项目:PortraitZXing    文件:DataMatrixWriter.java   
@Override
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {

  if (contents.isEmpty()) {
    throw new IllegalArgumentException("Found empty contents");
  }

  if (format != BarcodeFormat.DATA_MATRIX) {
    throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
  }

  if (width < 0 || height < 0) {
    throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
  }

  // Try to get force shape & min / max size
  SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
  Dimension minSize = null;
  Dimension maxSize = null;
  if (hints != null) {
    SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType.DATA_MATRIX_SHAPE);
    if (requestedShape != null) {
      shape = requestedShape;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
    if (requestedMinSize != null) {
      minSize = requestedMinSize;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
    if (requestedMaxSize != null) {
      maxSize = requestedMaxSize;
    }
  }


  //1. step: Data encodation
  String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);

  SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize, true);

  //2. step: ECC generation
  String codewords = ErrorCorrection.encodeECC200(encoded, symbolInfo);

  //3. step: Module placement in Matrix
  DefaultPlacement placement =
      new DefaultPlacement(codewords, symbolInfo.getSymbolDataWidth(), symbolInfo.getSymbolDataHeight());
  placement.place();

  //4. step: low-level encoding
  return encodeLowLevel(placement, symbolInfo);
}
项目:ZXing-Orient    文件:HighLevelEncoder.java   
/**
 * Performs message encoding of a DataMatrix message using the algorithm described in annex P
 * of ISO/IEC 16022:2000(E).
 *
 * @param msg     the message
 * @param shape   requested shape. May be {@code SymbolShapeHint.FORCE_NONE},
 *                {@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}.
 * @param minSize the minimum symbol size constraint or null for no constraint
 * @param maxSize the maximum symbol size constraint or null for no constraint
 * @return the encoded message (the char values range from 0 to 255)
 */
public static String encodeHighLevel(String msg,
                                     SymbolShapeHint shape, 
                                     Dimension minSize, 
                                     Dimension maxSize) {
  //the codewords 0..255 are encoded as Unicode characters
  Encoder[] encoders = {
      new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), 
      new X12Encoder(), new EdifactEncoder(),  new Base256Encoder()
  };

  EncoderContext context = new EncoderContext(msg);
  context.setSymbolShape(shape);
  context.setSizeConstraints(minSize, maxSize);

  if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_05);
    context.setSkipAtEnd(2);
    context.pos += MACRO_05_HEADER.length();
  } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_06);
    context.setSkipAtEnd(2);
    context.pos += MACRO_06_HEADER.length();
  }

  int encodingMode = ASCII_ENCODATION; //Default mode
  while (context.hasMoreCharacters()) {
    encoders[encodingMode].encode(context);
    if (context.getNewEncoding() >= 0) {
      encodingMode = context.getNewEncoding();
      context.resetEncoderSignal();
    }
  }
  int len = context.getCodewordCount();
  context.updateSymbolInfo();
  int capacity = context.getSymbolInfo().getDataCapacity();
  if (len < capacity) {
    if (encodingMode != ASCII_ENCODATION && encodingMode != BASE256_ENCODATION) {
      context.writeCodeword('\u00fe'); //Unlatch (254)
    }
  }
  //Padding
  StringBuilder codewords = context.getCodewords();
  if (codewords.length() < capacity) {
    codewords.append(PAD);
  }
  while (codewords.length() < capacity) {
    codewords.append(randomize253State(PAD, codewords.length() + 1));
  }

  return context.getCodewords().toString();
}
项目:ZXing-Orient    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
  this.minSize = minSize;
  this.maxSize = maxSize;
}
项目:event-app    文件:HighLevelEncoder.java   
/**
 * Performs message encoding of a DataMatrix message using the algorithm described in annex P
 * of ISO/IEC 16022:2000(E).
 *
 * @param msg     the message
 * @param shape   requested shape. May be {@code SymbolShapeHint.FORCE_NONE},
 *                {@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}.
 * @param minSize the minimum symbol size constraint or null for no constraint
 * @param maxSize the maximum symbol size constraint or null for no constraint
 * @return the encoded message (the char values range from 0 to 255)
 */
public static String encodeHighLevel(String msg,
                                     SymbolShapeHint shape, 
                                     Dimension minSize, 
                                     Dimension maxSize) {
  //the codewords 0..255 are encoded as Unicode characters
  Encoder[] encoders = {
      new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), 
      new X12Encoder(), new EdifactEncoder(),  new Base256Encoder()
  };

  EncoderContext context = new EncoderContext(msg);
  context.setSymbolShape(shape);
  context.setSizeConstraints(minSize, maxSize);

  if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_05);
    context.setSkipAtEnd(2);
    context.pos += MACRO_05_HEADER.length();
  } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_06);
    context.setSkipAtEnd(2);
    context.pos += MACRO_06_HEADER.length();
  }

  int encodingMode = ASCII_ENCODATION; //Default mode
  while (context.hasMoreCharacters()) {
    encoders[encodingMode].encode(context);
    if (context.getNewEncoding() >= 0) {
      encodingMode = context.getNewEncoding();
      context.resetEncoderSignal();
    }
  }
  int len = context.getCodewordCount();
  context.updateSymbolInfo();
  int capacity = context.getSymbolInfo().getDataCapacity();
  if (len < capacity) {
    if (encodingMode != ASCII_ENCODATION && encodingMode != BASE256_ENCODATION) {
      context.writeCodeword('\u00fe'); //Unlatch (254)
    }
  }
  //Padding
  StringBuilder codewords = context.getCodewords();
  if (codewords.length() < capacity) {
    codewords.append(PAD);
  }
  while (codewords.length() < capacity) {
    codewords.append(randomize253State(PAD, codewords.length() + 1));
  }

  return context.getCodewords().toString();
}
项目:event-app    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
  this.minSize = minSize;
  this.maxSize = maxSize;
}
项目:event-app    文件:DataMatrixWriter.java   
@Override
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {

  if (contents.isEmpty()) {
    throw new IllegalArgumentException("Found empty contents");
  }

  if (format != BarcodeFormat.DATA_MATRIX) {
    throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
  }

  if (width < 0 || height < 0) {
    throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
  }

  // Try to get force shape & min / max size
  SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
  Dimension minSize = null;
  Dimension maxSize = null;
  if (hints != null) {
    SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType.DATA_MATRIX_SHAPE);
    if (requestedShape != null) {
      shape = requestedShape;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
    if (requestedMinSize != null) {
      minSize = requestedMinSize;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
    if (requestedMaxSize != null) {
      maxSize = requestedMaxSize;
    }
  }


  //1. step: Data encodation
  String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);

  SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize, true);

  //2. step: ECC generation
  String codewords = ErrorCorrection.encodeECC200(encoded, symbolInfo);

  //3. step: Module placement in Matrix
  DefaultPlacement placement =
      new DefaultPlacement(codewords, symbolInfo.getSymbolDataWidth(), symbolInfo.getSymbolDataHeight());
  placement.place();

  //4. step: low-level encoding
  return encodeLowLevel(placement, symbolInfo);
}
项目:weex-analyzer-android    文件:HighLevelEncoder.java   
/**
 * Performs message encoding of a DataMatrix message using the algorithm described in annex P
 * of ISO/IEC 16022:2000(E).
 *
 * @param msg     the message
 * @param shape   requested shape. May be {@code SymbolShapeHint.FORCE_NONE},
 *                {@code SymbolShapeHint.FORCE_SQUARE} or {@code SymbolShapeHint.FORCE_RECTANGLE}.
 * @param minSize the minimum symbol size constraint or null for no constraint
 * @param maxSize the maximum symbol size constraint or null for no constraint
 * @return the encoded message (the char values range from 0 to 255)
 */
public static String encodeHighLevel(String msg,
                                     SymbolShapeHint shape, 
                                     Dimension minSize, 
                                     Dimension maxSize) {
  //the codewords 0..255 are encoded as Unicode characters
  Encoder[] encoders = {
      new ASCIIEncoder(), new C40Encoder(), new TextEncoder(), 
      new X12Encoder(), new EdifactEncoder(),  new Base256Encoder()
  };

  EncoderContext context = new EncoderContext(msg);
  context.setSymbolShape(shape);
  context.setSizeConstraints(minSize, maxSize);

  if (msg.startsWith(MACRO_05_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_05);
    context.setSkipAtEnd(2);
    context.pos += MACRO_05_HEADER.length();
  } else if (msg.startsWith(MACRO_06_HEADER) && msg.endsWith(MACRO_TRAILER)) {
    context.writeCodeword(MACRO_06);
    context.setSkipAtEnd(2);
    context.pos += MACRO_06_HEADER.length();
  }

  int encodingMode = ASCII_ENCODATION; //Default mode
  while (context.hasMoreCharacters()) {
    encoders[encodingMode].encode(context);
    if (context.getNewEncoding() >= 0) {
      encodingMode = context.getNewEncoding();
      context.resetEncoderSignal();
    }
  }
  int len = context.getCodewordCount();
  context.updateSymbolInfo();
  int capacity = context.getSymbolInfo().getDataCapacity();
  if (len < capacity) {
    if (encodingMode != ASCII_ENCODATION && encodingMode != BASE256_ENCODATION) {
      context.writeCodeword('\u00fe'); //Unlatch (254)
    }
  }
  //Padding
  StringBuilder codewords = context.getCodewords();
  if (codewords.length() < capacity) {
    codewords.append(PAD);
  }
  while (codewords.length() < capacity) {
    codewords.append(randomize253State(PAD, codewords.length() + 1));
  }

  return context.getCodewords().toString();
}
项目:weex-analyzer-android    文件:EncoderContext.java   
public void setSizeConstraints(Dimension minSize, Dimension maxSize) {
  this.minSize = minSize;
  this.maxSize = maxSize;
}
项目:weex-analyzer-android    文件:DataMatrixWriter.java   
@Override
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {

  if (contents.isEmpty()) {
    throw new IllegalArgumentException("Found empty contents");
  }

  if (format != BarcodeFormat.DATA_MATRIX) {
    throw new IllegalArgumentException("Can only encode DATA_MATRIX, but got " + format);
  }

  if (width < 0 || height < 0) {
    throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height);
  }

  // Try to get force shape & min / max size
  SymbolShapeHint shape = SymbolShapeHint.FORCE_NONE;
  Dimension minSize = null;
  Dimension maxSize = null;
  if (hints != null) {
    SymbolShapeHint requestedShape = (SymbolShapeHint) hints.get(EncodeHintType.DATA_MATRIX_SHAPE);
    if (requestedShape != null) {
      shape = requestedShape;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMinSize = (Dimension) hints.get(EncodeHintType.MIN_SIZE);
    if (requestedMinSize != null) {
      minSize = requestedMinSize;
    }
    @SuppressWarnings("deprecation")
    Dimension requestedMaxSize = (Dimension) hints.get(EncodeHintType.MAX_SIZE);
    if (requestedMaxSize != null) {
      maxSize = requestedMaxSize;
    }
  }


  //1. step: Data encodation
  String encoded = HighLevelEncoder.encodeHighLevel(contents, shape, minSize, maxSize);

  SymbolInfo symbolInfo = SymbolInfo.lookup(encoded.length(), shape, minSize, maxSize, true);

  //2. step: ECC generation
  String codewords = ErrorCorrection.encodeECC200(encoded, symbolInfo);

  //3. step: Module placement in Matrix
  DefaultPlacement placement =
      new DefaultPlacement(codewords, symbolInfo.getSymbolDataWidth(), symbolInfo.getSymbolDataHeight());
  placement.place();

  //4. step: low-level encoding
  return encodeLowLevel(placement, symbolInfo);
}