Example usage for com.google.common.collect RangeSet remove

List of usage examples for com.google.common.collect RangeSet remove

Introduction

In this page you can find the example usage for com.google.common.collect RangeSet remove.

Prototype

void remove(Range<C> range);

Source Link

Document

Removes the specified range from this RangeSet (optional operation).

Usage

From source file:com.rockhoppertech.music.examples.Guava.java

public static void ranges() {
    RangeSet<Double> set = TreeRangeSet.create();
    //        for (double i = 1d; i < 4d; i++) {
    //            set.add(Range.closed(i, i + 1d));
    //        }/* w ww  . j a v a  2s . co  m*/

    set.add(Range.closed(1d, 4d));
    logger.debug("the set {}", set);

    set.remove(Range.closed(2.5, 3d));
    logger.debug("after remove: set {}", set);
    RangeSet<Double> comp = set.complement();
    logger.debug("after remove: set comp {}", comp);

    Range<Double> first = Iterables.getFirst(set.asRanges(), null);
    logger.debug("first {}", first);

    //Iterables.

    for (Range<Double> r : set.asRanges()) {
        logger.debug("iterated range {}", r);
    }

    //lowerEndpoint();

    set.clear();
    set.add(Range.open(1d, 4d));
    comp = set.complement();
    logger.debug("open comp {}", comp);

}

From source file:net.hydromatic.foodbench.Main.java

private static RangeSet<Integer> parseInts(String idsProperty) {
    RangeSet<Integer> idSet = TreeRangeSet.create();
    if (idsProperty == null) {
        idsProperty = "";
    }//  w  ww.  j  a v  a2 s. c  om
    if (idsProperty.isEmpty() || idsProperty.startsWith("-")) {
        idSet.add(Range.<Integer>all());
    }
    if (!idsProperty.isEmpty()) {
        for (String id : idsProperty.split(",")) {
            String[] split2 = id.split("-");
            if (split2.length != 2) {
                if (id.endsWith("-")) {
                    // 10- means "10 onwards"
                    idSet.add(Range.atLeast(Integer.parseInt(id.substring(0, id.length() - 1))));
                } else {
                    idSet.add(Range.singleton(Integer.parseInt(id)));
                }
            } else if (split2[0].equals("")) {
                // -10 means "not 10"
                idSet.remove(Range.singleton(Integer.parseInt(split2[1])));
            } else {
                int min = Integer.parseInt(split2[0]);
                int max = Integer.parseInt(split2[1]);
                idSet.add(Range.closed(min, max));
            }
        }
    }
    return idSet;
}

From source file:org.eclipse.fx.ui.controls.styledtext.internal.VFlow.java

private void onVisibleLinesChange(Observable x, Range<Integer> o, Range<Integer> n) {
    RangeSet<Integer> toUpdate = TreeRangeSet.create();
    RangeSet<Integer> toRelease = TreeRangeSet.create();

    if (o != null && n != null) {
        RangeSet<Integer> hidden = TreeRangeSet.create();
        hidden.add(o);/*from w  ww  . j  ava2 s.  c  o  m*/
        hidden.remove(n);

        toRelease.addAll(hidden);
    }

    if (n != null) {
        toUpdate.add(getVisible());
    }

    triggerUpdate(toUpdate);
    triggerRelease(toRelease);
    requestLayout();
}

From source file:org.eclipse.fx.ui.controls.styledtext.internal.ContentView.java

private void onLineChange(Observable o) {
    RangeSet<Integer> toUpdate = TreeRangeSet.create();
    RangeSet<Integer> toRelease = TreeRangeSet.create();

    double offsetY = offsetYProperty().get();
    com.google.common.collect.Range<Integer> visibleLines = visibleLinesProperty().get();
    ContiguousSet<Integer> set = ContiguousSet.create(visibleLines, DiscreteDomain.integers());
    double lineHeight = lineHeightProperty().get();

    // schedule visible line updates
    if (this.curVisibleLines == null) {
        toUpdate.add(visibleLines);//from   w w  w  . j  a v  a  2  s. c o m
    } else {
        RangeSet<Integer> hiddenLines = TreeRangeSet.create();
        hiddenLines.add(this.curVisibleLines);
        hiddenLines.remove(visibleLines);

        RangeSet<Integer> shownLines = TreeRangeSet.create();
        shownLines.add(visibleLines);
        shownLines.remove(this.curVisibleLines);

        toUpdate.addAll(shownLines);
        toRelease.addAll(hiddenLines);
    }
    this.curVisibleLines = visibleLines;

    // store precomputed y data
    for (int index : set) {
        double y = index * lineHeight - offsetY;
        this.yOffsetData.put(Integer.valueOf(index), Double.valueOf(y));
        //         this.forceLayout = true;
    }

    releaseNodesNow(toRelease);
    updateNodesNow(toUpdate);

    this.lineLayer.requestLayout();
    //      scheduleUpdate();
}

From source file:com.rockhoppertech.music.fx.cmn.model.MeasureSymbolManager.java

/**
 * Clear out the existing shapes, then calculate and add new ones. Draws a
 * simple representation. Does not pay any attention to the note's start
 * time. That what the MeasureCanvas will do when finished.
 *//*from   w  ww .j ava2s .  c o  m*/
public void refresh() {
    logger.debug("refreshing");

    if (model == null) {
        return;
    }
    shapes.clear();
    symbols.clear();
    //
    // double x = model.getStartX() + 1d
    // * model.getFontSize();

    double x = model.getBeginningBarlineX();

    // this will be at model startx
    // sets first note x
    x = createStaves();
    // x = this.model.getStartX();

    if (this.drawTimeSignature) {
        if (!this.drawKeySignature)
            x += model.getFontSize() / 2d;
        x = addTimeSignature(x, 4, 4);
    }

    // model.setFirstNoteX(x);
    this.createBeatRectangles();

    if (noteList == null) {
        return;
    }

    if (noteList.isEmpty()) {
        return;
    }
    logger.debug("notelist {}", this.noteList);

    // TODO this doesn't cover initial rests i.e. when start beat > 1
    // TODO rests > 5 beats long don't work well
    MIDINote previousNote = noteList.get(0);
    MIDINote firstNote = noteList.get(0);
    double gap = firstNote.getStartBeat() - 1d;
    double eb = 1d;

    double beats = (double) measure.getTimeSignature().getNumerator();
    RangeSet<Double> durSet = TreeRangeSet.create();
    durSet.add(Range.closed(1d, beats));
    logger.debug("initial durSet {} beats {}", durSet, beats);

    for (MIDINote note : noteList) {

        Range<Double> noteRange = Range.closed(note.getStartBeat(), note.getEndBeat());
        durSet.remove(noteRange);
        logger.debug("durSet {} after removing {}", durSet, noteRange);

        logger.debug("beat {} beat in measure {}", note.getStartBeat(), measure.getBeatInMeasure(note));

        // figure out if there is a rest
        double sb = note.getStartBeat();
        if (sb > 1d) {
            eb = previousNote.getEndBeat();
        }
        gap = sb - eb;
        double restbeat = (sb - gap) - this.measure.getStartBeat() + 1d;
        x = getXofBeatN(restbeat);
        logger.debug("sb {} eb {} gap {} x {} restbeat {}", sb, eb, gap, x, restbeat);
        if (gap > 0) {
            int pitch = note.getPitch().getMidiNumber();
            x = addRests(x, gap, pitch);
            x += model.getFontSize() / 2d;
            logger.debug("x {} after adding rest", x);
        } else {
            x += model.getFontSize() / 2d;
        }

        // now worry about the note
        x = getXofBeatN(measure.getBeatInMeasure(note));
        // x = createSymbol(note, x);
        x = createStaffSymbol(note, x);

        logger.debug("x {} after adding symbol", x);
        if (gap >= 0) {
            logger.debug("adding padding");
            // some padding between the symbols
            x += model.getFontSize() / 2d;
            logger.debug("x {} after adding gap 0 spacingl", x);
        }

        gap = 0;
        previousNote = note;
    }

    logger.debug("final durSet {}", durSet);
    if (!durSet.isEmpty()) {
        // then there are rests
        for (Range<Double> restRange : durSet.asRanges()) {
            logger.debug("restRange {}", restRange);
        }
    }

    // push all the x locations to be the previous x + width
    // make sure all the rects are large enough, adjust widths and x
    // locations.
    enlargeBeatRectangles();
    // resize the staves to the new rectangles
    createStaves();
}