@Override
 public Row get() {
   synchronized (sync) {
     if (end) {
       return null;
     }
     return onBase ? baseCursor.get() : deltaCursor.get();
   }
 }
Esempio n. 2
0
 @Override
 public Row get() {
   if (cursor == null) {
     return null;
   }
   return cursor.get();
 }
 /** Load the current row. */
 void loadCurrent() {
   synchronized (sync) {
     baseRow = baseCursor.getSearchRow();
     deltaRow = deltaCursor.get();
     needNewDelta = false;
     needNewBase = false;
   }
 }
  private void scanInRasterOrder(Cursor<V> cur, RandomAccess<V> marker, RandomAccess<T> mask) {
    assert cur != null;
    assert marker != null;
    assert mask != null;

    cur.setToOrigin();

    while (cur.hasNextFwd()) {
      cur.get().set(checkAroundCursor(cur, marker, mask, m_neighboursPlus));

      // this is NO imglib cursor, so fwd must be the last
      // call
      cur.fwd();
    }
  }
  private void scanInAntiRasterOrder(Cursor<V> cur, RandomAccess<V> marker, RandomAccess<T> mask) {
    assert cur != null;
    assert marker != null;
    assert mask != null;

    cur.setLastPos();

    while (cur.hasNextBwd()) {

      cur.get().set(checkAroundCursor(cur, marker, mask, m_neighboursMinus));
      checkPixels(cur, marker, mask, m_neighboursMinus);
      // this is NO imglib cursor, so bwd must be the last
      // call
      cur.bwd();
    }
  }
 private void loadNext(boolean base) {
   synchronized (sync) {
     if (base) {
       if (step(baseCursor)) {
         baseRow = baseCursor.getSearchRow();
       } else {
         baseRow = null;
       }
     } else {
       if (step(deltaCursor)) {
         deltaRow = deltaCursor.get();
       } else {
         deltaRow = null;
       }
     }
   }
 }
  private V checkAroundCursor(
      Cursor<V> cur, RandomAccess<V> marker, RandomAccess<T> mask, long[][] strucElement) {
    V val = cur.get().copy();

    for (long[] e : strucElement) {

      for (int i = 0; i < e.length; i++) {
        marker.setPosition(cur.getIntPosition(i) + e[i], i);
      }

      val = morphOp(val.copy(), marker.get().copy());
    }

    mask.setPosition(cur.getRandomAccess());
    val = pointwiseOp(val, mask.get());

    return val;
  }
  private void checkPixels(
      Cursor<V> cur, RandomAccess<V> marker, RandomAccess<T> mask, long[][] strucElement) {
    V p = cur.get().copy();

    for (long[] e : strucElement) {

      for (int i = 0; i < e.length; i++) {
        marker.setPosition(cur.getIntPosition(i) + e[i], i);
        mask.setPosition(cur.getIntPosition(i) + e[i], i);
      }

      V q = marker.get().copy();
      T i = mask.get().copy();

      if (checkPixelAddToQueue(p, q, i)) {
        addToQueue(cur.getRandomAccess());
        return;
      }
    }
  }