Search in sources :

Example 26 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class ConvertToPolyObjectAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    int retVal = JOptionPane.showConfirmDialog(null, "This operation can not be undone.\nAre you sure?");
    if (retVal != JOptionPane.OK_OPTION) {
        return;
    }
    List<Layer> allLayers = scorePath.getAllLayers();
    List<SoundObject> sObjList = new ArrayList<>();
    List<Integer> layerIndexes = new ArrayList<>();
    int layerMin = Integer.MAX_VALUE;
    int layerMax = Integer.MIN_VALUE;
    double start = Double.POSITIVE_INFINITY;
    for (SoundObject sObj : soundObjects) {
        sObjList.add(sObj);
        double sObjStart = sObj.getStartTime();
        if (sObj.getStartTime() < start) {
            start = sObj.getStartTime();
        }
        for (int i = 0; i < allLayers.size(); i++) {
            if (allLayers.get(i).contains(sObj)) {
                layerIndexes.add(i);
                if (i < layerMin) {
                    layerMin = i;
                }
                if (i > layerMax) {
                    layerMax = i;
                }
                break;
            }
        }
        if (sObjList.size() != layerIndexes.size()) {
            throw new RuntimeException("Error: Unable to find layer for SoundObject.");
        }
    }
    int numLayers = layerMax - layerMin + 1;
    for (int i = 0; i < numLayers; i++) {
        pObj.newLayerAt(-1);
    }
    for (int i = 0; i < sObjList.size(); i++) {
        SoundObject sObj = sObjList.get(i);
        int layerNum = layerIndexes.get(i);
        SoundLayer layer = (SoundLayer) allLayers.get(layerNum);
        layer.remove(sObj);
        // don't need to clone here...
        pObj.get(layerNum - layerMin).add(sObj);
    }
    pObj.normalizeSoundObjects();
    pObj.setStartTime(start);
    ((SoundLayer) scorePath.getGlobalLayerForY(p.y)).add(pObj);
    ScoreController.getInstance().setSelectedScoreObjects(Collections.singleton(pObj));
}
Also used : SoundObject(blue.soundObject.SoundObject) SoundLayer(blue.SoundLayer) ArrayList(java.util.ArrayList) SoundLayer(blue.SoundLayer) Layer(blue.score.layers.Layer) Point(java.awt.Point)

Example 27 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class FreezeUnfreezeAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    List<Layer> allLayers = scorePath.getAllLayers();
    List<SoundObject> sObjList = new ArrayList<>(soundObjects);
    List<Layer> layers = new ArrayList<>();
    for (SoundObject sObj : sObjList) {
        for (Layer layer : allLayers) {
            if (layer.contains(sObj)) {
                layers.add(layer);
                break;
            }
        }
    }
    if (layers.size() != sObjList.size()) {
        throw new RuntimeException("Error: Could not find layers for selected SoundObjects");
    }
    ProgressUtils.showProgressDialogAndRun(new FreezeRunnable(sObjList, layers), "Freeze/Unfreeze SoundObjects", true);
}
Also used : FrozenSoundObject(blue.soundObject.FrozenSoundObject) SoundObject(blue.soundObject.SoundObject) ArrayList(java.util.ArrayList) SoundLayer(blue.SoundLayer) Layer(blue.score.layers.Layer)

Example 28 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class ScoreTopComponent method listChanged.

@Override
public void listChanged(ObservableListEvent<LayerGroup<? extends Layer>> evt) {
    if (evt.getType() == ObservableListEvent.DATA_ADDED) {
        Score score = data.getScore();
        for (int i = evt.getStartIndex(); i <= evt.getEndIndex(); i++) {
            addPanelsForLayerGroup(i, score.get(i), score.getTimeState());
        }
        layerHeaderPanel.revalidate();
        checkSize();
    } else if (evt.getType() == ObservableListEvent.DATA_REMOVED) {
        removePanelsForLayerGroups(evt.getStartIndex(), evt.getEndIndex());
    } else if (evt.getType() == ObservableListEvent.DATA_CHANGED) {
        List<LayerGroup<? extends Layer>> layerGroups = evt.getAffectedItems();
        JComponent c = (JComponent) layerPanel.getComponent(evt.getStartIndex());
        LayerGroup lGroup = (LayerGroup) c.getClientProperty("layerGroup");
        if (layerGroups.get(1) == lGroup) {
            // handle push down
            Component comp = layerPanel.getComponent(evt.getEndIndex());
            layerPanel.remove(comp);
            layerPanel.add(comp, evt.getStartIndex());
            Component comp2 = layerHeaderPanel.getComponent(evt.getEndIndex());
            layerHeaderPanel.remove(comp2);
            layerHeaderPanel.add(comp2, evt.getStartIndex());
            layerPanel.revalidate();
            layerHeaderPanel.revalidate();
            layerPanel.repaint();
            layerHeaderPanel.repaint();
        } else {
            // handle push up
            Component comp = layerPanel.getComponent(evt.getStartIndex());
            layerPanel.remove(comp);
            layerPanel.add(comp, evt.getEndIndex());
            Component comp2 = layerHeaderPanel.getComponent(evt.getStartIndex());
            layerHeaderPanel.remove(comp2);
            layerHeaderPanel.add(comp2, evt.getEndIndex());
            layerPanel.revalidate();
            layerHeaderPanel.revalidate();
            layerPanel.repaint();
            layerHeaderPanel.repaint();
        }
    }
}
Also used : Score(blue.score.Score) LayerGroup(blue.score.layers.LayerGroup) TopComponent(org.openide.windows.TopComponent) Layer(blue.score.layers.Layer)

Example 29 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class ScorePath method getGlobalLayerIndexForY.

public int getGlobalLayerIndexForY(int y) {
    LayerGroup<? extends Layer> layerGroup = getLastLayerGroup();
    if (layerGroup == null) {
        return getScore().getGlobalLayerIndexForY(y);
    }
    int runningY = 0;
    for (int i = 0; i < layerGroup.size(); i++) {
        Layer layer = layerGroup.get(i);
        if (y <= runningY + layer.getLayerHeight()) {
            return i;
        }
        runningY += layer.getLayerHeight();
    }
    return layerGroup.size() - 1;
}
Also used : Layer(blue.score.layers.Layer) Point(java.awt.Point)

Example 30 with Layer

use of blue.score.layers.Layer in project blue by kunstmusik.

the class LayerHeightWheelListener method mouseWheelMoved.

@Override
public void mouseWheelMoved(MouseWheelEvent e) {
    int shortcutKey = BlueSystem.getMenuShortcutKey();
    if ((e.getModifiers() & shortcutKey) == shortcutKey) {
        double rotation = e.getPreciseWheelRotation();
        int value = (rotation > 0.0) ? 1 : -1;
        Point p = SwingUtilities.convertPoint(e.getComponent(), e.getPoint(), source);
        Layer layer = ScoreController.getInstance().getScorePath().getGlobalLayerForY(p.y);
        if (layer instanceof ScoreObjectLayer) {
            ScoreObjectLayer sLayer = (ScoreObjectLayer) layer;
            int index = sLayer.getHeightIndex();
            int newIndex = index + value;
            if (newIndex >= 0 && newIndex <= ScoreObjectLayer.HEIGHT_MAX_INDEX) {
                sLayer.setHeightIndex(newIndex);
            }
            e.consume();
        }
    } else {
        source.getParent().dispatchEvent(e);
    }
}
Also used : ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) Point(java.awt.Point) Layer(blue.score.layers.Layer) ScoreObjectLayer(blue.score.layers.ScoreObjectLayer) Point(java.awt.Point)

Aggregations

Layer (blue.score.layers.Layer)33 ScoreObjectLayer (blue.score.layers.ScoreObjectLayer)18 ArrayList (java.util.ArrayList)17 ScoreObject (blue.score.ScoreObject)13 Point (java.awt.Point)10 SoundLayer (blue.SoundLayer)9 LayerGroupDataEvent (blue.score.layers.LayerGroupDataEvent)6 ScorePath (blue.ui.core.score.ScorePath)6 SoundObject (blue.soundObject.SoundObject)4 BlueData (blue.BlueData)3 ScoreController (blue.ui.core.score.ScoreController)3 AddScoreObjectEdit (blue.ui.core.score.undo.AddScoreObjectEdit)3 MoveScoreObjectsEdit (blue.ui.core.score.undo.MoveScoreObjectsEdit)3 SoundObjectLibrary (blue.SoundObjectLibrary)2 AlphaMarquee (blue.components.AlphaMarquee)2 Score (blue.score.Score)2 LayerGroup (blue.score.layers.LayerGroup)2 GenericScore (blue.soundObject.GenericScore)2 Instance (blue.soundObject.Instance)2 PolyObject (blue.soundObject.PolyObject)2