예제 #1
0
 /**
  * Relative bulk <i>put</i> method&nbsp;&nbsp;<i>(optional operation)</i>.
  *
  * <p>This method transfers the shorts remaining in the given source buffer into this buffer. If
  * there are more shorts remaining in the source buffer than in this buffer, that is, if
  * <tt>src.remaining()</tt>&nbsp;<tt>&gt;</tt>&nbsp;<tt>remaining()</tt>, then no shorts are
  * transferred and a {@link BufferOverflowException} is thrown.
  *
  * <p>Otherwise, this method copies <i>n</i>&nbsp;=&nbsp;<tt>src.remaining()</tt> shorts from the
  * given buffer into this buffer, starting at each buffer's current position. The positions of
  * both buffers are then incremented by <i>n</i>.
  *
  * <p>In other words, an invocation of this method of the form <tt>dst.put(src)</tt> has exactly
  * the same effect as the loop
  *
  * <pre>
  *     while (src.hasRemaining())
  *         dst.put(src.get()); </pre>
  *
  * except that it first checks that there is sufficient space in this buffer and it is potentially
  * much more efficient.
  *
  * @param src The source buffer from which shorts are to be read; must not be this buffer
  * @return This buffer
  * @throws BufferOverflowException If there is insufficient space in this buffer for the remaining
  *     shorts in the source buffer
  * @throws IllegalArgumentException If the source buffer is this buffer
  * @throws ReadOnlyBufferException If this buffer is read-only
  */
 public ShortBuffer put(ShortBuffer src) {
   if (src == this) throw new IllegalArgumentException();
   int n = src.remaining();
   if (n > remaining()) throw new BufferOverflowException();
   for (int i = 0; i < n; i++) put(src.get());
   return this;
 }
예제 #2
0
 public void customFilter(
     ShortBuffer coeffBuffer,
     Rectangle bufferRegion,
     Rectangle planeRegion,
     int componentIndex,
     int transformIndex,
     TJTransform transform)
     throws Exception {
   for (int i = 0; i < bufferRegion.width * bufferRegion.height; i++) {
     coeffBuffer.put(i, (short) (-coeffBuffer.get(i)));
   }
 }
예제 #3
0
 /**
  * Compares this buffer to another.
  *
  * <p>Two short buffers are compared by comparing their sequences of remaining elements
  * lexicographically, without regard to the starting position of each sequence within its
  * corresponding buffer.
  *
  * <p>A short buffer is not comparable to any other type of object.
  *
  * @return A negative integer, zero, or a positive integer as this buffer is less than, equal to,
  *     or greater than the given buffer
  */
 public int compareTo(ShortBuffer that) {
   int n = this.position() + Math.min(this.remaining(), that.remaining());
   for (int i = this.position(), j = that.position(); i < n; i++, j++) {
     short v1 = this.get(i);
     short v2 = that.get(j);
     if (v1 == v2) continue;
     if ((v1 != v1) && (v2 != v2)) // For float and double
     continue;
     if (v1 < v2) return -1;
     return +1;
   }
   return this.remaining() - that.remaining();
 }
예제 #4
0
 /**
  * Tells whether or not this buffer is equal to another object.
  *
  * <p>Two short buffers are equal if, and only if,
  *
  * <p>
  *
  * <ol>
  *   <li>
  *       <p>They have the same element type,
  *   <li>
  *       <p>They have the same number of remaining elements, and
  *   <li>
  *       <p>The two sequences of remaining elements, considered independently of their starting
  *       positions, are pointwise equal.
  * </ol>
  *
  * <p>A short buffer is not equal to any other type of object.
  *
  * @param ob The object to which this buffer is to be compared
  * @return <tt>true</tt> if, and only if, this buffer is equal to the given object
  */
 public boolean equals(Object ob) {
   if (this == ob) return true;
   if (!(ob instanceof ShortBuffer)) return false;
   ShortBuffer that = (ShortBuffer) ob;
   if (this.remaining() != that.remaining()) return false;
   int p = this.position();
   for (int i = this.limit() - 1, j = that.limit() - 1; i >= p; i--, j--) {
     short v1 = this.get(i);
     short v2 = that.get(j);
     if (v1 != v2) {
       if ((v1 != v1) && (v2 != v2)) // For float and double
       continue;
       return false;
     }
   }
   return true;
 }