List of usage examples for com.google.common.collect RangeSet remove
void remove(Range<C> range);
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(); }