private List<CosNumber> getHorizontalOffset() { if (this.arguments.size() > 1) { COSBase number = this.arguments .get(this.arguments.size() - 2); if (number.getType().isNumber()) { List<CosNumber> offset = new ArrayList<>(GFOperator.MAX_NUMBER_OF_ELEMENTS); offset.add(GFCosNumber.fromPDFParserNumber(number)); return Collections.unmodifiableList(offset); } } return Collections.emptyList(); }
private List<CosNumber> getHorizontalDisplacement() { if (this.arguments.size() > 1) { COSBase base = this.arguments.get(this.arguments.size() - 2); if (base.getType().isNumber()) { List<CosNumber> real = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); real.add(GFCosNumber.fromPDFParserNumber(base)); return Collections.unmodifiableList(real); } } return Collections.emptyList(); }
protected List<CosNumber> getLastNumber() { if (!this.arguments.isEmpty()) { COSBase base = this.arguments.get(this.arguments.size() - 1); if (base.getType().isNumber()) { List<CosNumber> cosNumbers = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); cosNumbers.add(GFCosNumber.fromPDFParserNumber(base)); return Collections.unmodifiableList(cosNumbers); } } return Collections.emptyList(); }
private COSObject[] getTopTwoNumbers() throws PostScriptException { if (operandStack.size() > 1) { COSObject a = operandStack.pop(); if (a.getType().isNumber()) { COSObject b = operandStack.pop(); if (b.getType().isNumber()) { return new COSObject[]{a, b}; } } } throw new PostScriptException("Stack doesn't have two elements or top two elements are not two numbers"); }
private List<CosNumber> getSpecialNumber(int operandNumber) { final int size = this.arguments.size(); if (size >= COUNT_OF_OPERATOR_OPERANDS) { int index = size - COUNT_OF_OPERATOR_OPERANDS + operandNumber; COSBase base = this.arguments.get(index); if (base.getType().isNumber()) { List<CosNumber> number = new ArrayList<>(GFOperator.MAX_NUMBER_OF_ELEMENTS); number.add(GFCosNumber.fromPDFParserNumber(base)); return Collections.unmodifiableList(number); } } return Collections.emptyList(); }
private List<CosNumber> getColorValues() { List<CosNumber> list = new ArrayList<>(); for (COSBase base : this.arguments) { if (base != null && base.getType().isNumber()) { list.add(GFCosNumber.fromPDFParserNumber(base)); } } return Collections.unmodifiableList(list); } }
protected List<CosNumber> getListOfNumbers() { List<CosNumber> list = new ArrayList<>(); for (COSBase base : this.arguments) { if (base.getType() == COSObjType.COS_ARRAY) { addArrayElementsAsNumbers(list, (COSArray) base); } else if (base.getType().isNumber()) { list.add(GFCosNumber.fromPDFParserNumber(base)); } } return Collections.unmodifiableList(list); }
public List<COSNumber> getCOSArrayD() { COSObject d = getKey(ASAtom.D); if (d != null && d.getType() == COSObjType.COS_ARRAY) { List<COSNumber> numbers = new ArrayList<>(); for (COSObject obj : (COSArray) d.getDirectBase()) { if (obj != null && obj.getType().isNumber()) { numbers.add((COSNumber) obj.getDirectBase()); } } return Collections.unmodifiableList(numbers); } return Collections.emptyList(); }
private void addSingleMappings(int cidBegin, COSArray arr) { for (int i = 0; i < arr.size().intValue(); i++) { if (!arr.at(i).getType().isNumber()) { LOGGER.log(Level.SEVERE, "W array in CIDFont has invalid entry."); continue; } this.singleMappings.put(Integer.valueOf(cidBegin + i), arr.at(i).getReal()); } }
private COSObject getTopNumber() throws PostScriptException { COSObject object = popTopObject(); if (object.getType().isNumber()) { return object; } throw new PostScriptException("Stack is empty or top element is not a number"); }
/** * {@inheritDoc} */ @Override public Double getDefaultWidth() { COSObject dw = this.dictionary.getKey(ASAtom.DW); if (dw.getType().isNumber()) { return dw.getReal(); } else { return DEFAULT_CID_FONT_WIDTH; } }
@Override public Double getCA() { COSObject ca = ((org.verapdf.pd.PDExtGState) simplePDObject).getCA(); if (ca.getType().isNumber()) { return ca.getReal(); } else if (ca.empty()) { return null; } else { LOGGER.log(Level.SEVERE, "Value of CA key is not a number. Ignoring CA"); return 2.0; // check is failed } }
@Override public Double getca() { COSObject ca = ((org.verapdf.pd.PDExtGState) simplePDObject).getCA_NS(); if (ca.getType().isNumber()) { return ca.getReal(); } else if (ca.empty()) { return null; } else { LOGGER.log(Level.SEVERE, "Value of ca key is not a number. Ignoring ca"); return 2.0; // check is failed } }
private static List<CosNumber> getNumbersFromArray(COSObject array) { if (array.size().intValue() > 0) { List<CosNumber> color = new ArrayList<>(); for (COSObject colorValue : (COSArray) array.getDirectBase()) { if (colorValue.getType().isNumber()) { color.add(GFCosNumber.fromPDFParserNumber(colorValue.get())); } } return Collections.unmodifiableList(color); } else { // Array size is 0 but it is present List<CosNumber> res = new ArrayList<>(1); res.add(GFCosNumber.fromPDFParserNumber(COSInteger.construct(0).getDirectBase())); return res; } }
private static double[] getDoubleArrayForBox(COSArray array) { if (array == null) { return null; } double[] res = new double[4]; for (int i = 0; i < array.size(); ++i) { COSObject obj = array.at(i); if (obj.getType().isNumber()) { res[i] = obj.getReal().doubleValue(); } else { res[i] = 0; } } return res; }
public COSNumber getCOSFontSize() { COSObject fontArray = getKey(ASAtom.FONT); if (fontArray != null && fontArray.getType() == COSObjType.COS_ARRAY) { COSObject res = fontArray.at(1); if (res != null && res.getType().isNumber()) { return (COSNumber) res.getDirectBase(); } } return null; }
public static PSObject getPSObject(COSObject obj, boolean isExecutable) { if (obj instanceof PSObject) { return (PSObject) obj; } COSObjType type = obj.getType(); if (type == COSObjType.COS_NAME && isExecutable) { return new PSOperator((COSName) obj.get()); } else if (type == COSObjType.COS_ARRAY && isExecutable) { return new PSProcedure((COSArray) obj.get()); } else if (type.isNumber() || type == COSObjType.COS_STRING || type == COSObjType.COS_BOOLEAN || type == COSObjType.COS_DICT || type == COSObjType.COS_NAME || type == COSObjType.COS_ARRAY) { return new PSLiteralObject(obj); } else { LOGGER.log(Level.FINE, "Can't get PSObject for COSType " + type); return new PSLiteralObject(obj); } } }
private double[] getFontMatrix() { COSObject fontMatrixObject = this.getObjectFromUserDict(ASAtom.getASAtom( Type1StringConstants.FONT_MATRIX_STRING)); if (fontMatrixObject != null && fontMatrixObject.getType() != COSObjType.COS_ARRAY) { double[] res = new double[6]; int pointer = 0; for (COSObject obj : ((COSArray) fontMatrixObject.get())) { if (obj.getType().isNumber()) { res[pointer++] = obj.getReal(); } } return res; } return DEFAULT_FONT_MATRIX; }
/** * @return a rectangle, expressed in the glyph coordinate system, that shall * specify the font bounding box. */ public double[] getFontBoundingBox() { if (fontBoundingBox == null) { COSBase bbox = this.getObject().getKey(ASAtom.FONT_BBOX).get(); if (bbox != null && bbox.getType() == COSObjType.COS_ARRAY && bbox.size() == 4) { double[] res = new double[4]; for (int i = 0; i < 4; ++i) { COSObject obj = bbox.at(i); if (obj.getType().isNumber()) { res[i] = obj.getReal(); } else { LOGGER.log(Level.SEVERE, "Font bounding box array for font " + fontName + " contains " + obj.getType()); return null; } } fontBoundingBox = res; } else { LOGGER.log(Level.SEVERE, "Font bounding box array for font " + fontName + " is not an array of 4 elements"); return null; } } return fontBoundingBox; }
/** * @return a rectangle, expressed in the glyph coordinate system, that shall * specify the font bounding box. */ public double[] getFontBoundingBox() { COSObject bbox = getKey(ASAtom.FONT_BBOX); if (bbox.getType() == COSObjType.COS_ARRAY || bbox.size() == 4) { double[] res = new double[4]; for (int i = 0; i < 4; ++i) { COSObject obj = bbox.at(i); if (obj.getType().isNumber()) { res[i] = obj.getReal(); } else { String fontName = getName() == null ? "" : getName(); LOGGER.log(Level.FINE, "Font bounding box array for font " + fontName + " contains " + obj.getType()); return null; } } return res; } else { String fontName = getName() == null ? "" : getName(); LOGGER.log(Level.FINE, "Font bounding box array for font " + fontName + " is not an array of 4 elements"); return null; } }