/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* $Id: PDFNumsArray.java 1305467 2012-03-26 17:39:20Z vhennebert $ */

package org.apache.fop.pdf;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
import java.util.SortedMap;

import org.apache.commons.io.output.CountingOutputStream;

Class representing an "Nums" array object (for Number Trees).
/** * Class representing an "Nums" array object (for Number Trees). */
public class PDFNumsArray extends PDFObject {
Sorted Map holding the values of this array.
/** Sorted Map holding the values of this array. */
protected SortedMap<Integer, Object> map = new java.util.TreeMap<Integer, Object>();
Create a new, empty array object.
Params:
  • parent – the object's parent if any
/** * Create a new, empty array object. * @param parent the object's parent if any */
public PDFNumsArray(PDFObject parent) { super(parent); }
Returns the length of the array
Returns:the length of the array
/** * Returns the length of the array * @return the length of the array */
public int length() { return this.map.size(); }
Sets an entry.
Params:
  • key – the key of the value to set
  • obj – the new value
/** * Sets an entry. * @param key the key of the value to set * @param obj the new value */
public void put(Integer key, Object obj) { this.map.put(key, obj); }
Sets an entry.
Params:
  • key – the key of the value to set
  • obj – the new value
/** * Sets an entry. * @param key the key of the value to set * @param obj the new value */
public void put(int key, Object obj) { put(Integer.valueOf(key), obj); }
Gets an entry.
Params:
  • key – the key of requested value
Returns:the requested value
/** * Gets an entry. * @param key the key of requested value * @return the requested value */
public Object get(Integer key) { return this.map.get(key); }
Gets an entry.
Params:
  • key – the key of requested value
Returns:the requested value
/** * Gets an entry. * @param key the key of requested value * @return the requested value */
public Object get(int key) { return get(Integer.valueOf(key)); }
{@inheritDoc}
/** {@inheritDoc} */
@Override public int output(OutputStream stream) throws IOException { CountingOutputStream cout = new CountingOutputStream(stream); StringBuilder textBuffer = new StringBuilder(64); textBuffer.append('['); boolean first = true; for (Map.Entry<Integer, Object> entry : this.map.entrySet()) { if (!first) { textBuffer.append(" "); } first = false; formatObject(entry.getKey(), cout, textBuffer); textBuffer.append(" "); formatObject(entry.getValue(), cout, textBuffer); } textBuffer.append(']'); PDFDocument.flushTextBuffer(textBuffer, cout); return cout.getCount(); } }