StyleProvider.java

/**
 * Copyright (c) 2021-2025, RTE (http://www.rte-france.com)
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
package com.powsybl.nad.svg;

import com.powsybl.nad.model.*;

import java.util.List;

/**
 * @author Florian Dupuy {@literal <florian.dupuy at rte-france.com>}
 */
public interface StyleProvider {

    String CLASSES_PREFIX = "nad-";
    String VOLTAGE_LEVEL_NODES_CLASS = CLASSES_PREFIX + "vl-nodes";
    String TEXT_NODES_CLASS = CLASSES_PREFIX + "text-nodes";
    String THREE_WT_NODES_CLASS = CLASSES_PREFIX + "3wt-nodes";
    String BOUNDARY_NODE_CLASS = CLASSES_PREFIX + "boundary-node";
    String DISCONNECTED_CLASS = CLASSES_PREFIX + "disconnected";
    String BRANCH_EDGES_CLASS = CLASSES_PREFIX + "branch-edges";
    String HVDC_EDGE_CLASS = CLASSES_PREFIX + "hvdc-edge";
    String THREE_WT_EDGES_CLASS = CLASSES_PREFIX + "3wt-edges";
    String DANGLING_LINE_EDGE_CLASS = CLASSES_PREFIX + "dangling-line-edge";
    String TIE_LINE_EDGE_CLASS = CLASSES_PREFIX + "tie-line-edge";
    String TEXT_EDGES_CLASS = CLASSES_PREFIX + "text-edges";
    String EDGE_INFOS_CLASS = CLASSES_PREFIX + "edge-infos";
    String EDGE_LABEL_CLASS = CLASSES_PREFIX + "edge-label";
    String ARROW_IN_CLASS = CLASSES_PREFIX + "arrow-in";
    String ARROW_OUT_CLASS = CLASSES_PREFIX + "arrow-out";
    String HVDC_CLASS = CLASSES_PREFIX + "hvdc";
    String UNKNOWN_BUSNODE_CLASS = CLASSES_PREFIX + "unknown-busnode";
    String LINE_OVERLOADED_CLASS = CLASSES_PREFIX + "overload";
    String VL_OVERVOLTAGE_CLASS = CLASSES_PREFIX + "overvoltage";
    String VL_UNDERVOLTAGE_CLASS = CLASSES_PREFIX + "undervoltage";
    String EDGE_PATH_CLASS = CLASSES_PREFIX + "edge-path";
    String WINDING_CLASS = CLASSES_PREFIX + "winding";
    String BUSNODE_CLASS = CLASSES_PREFIX + "busnode";
    String LABEL_BOX_CLASS = CLASSES_PREFIX + "label-box";
    String LEGEND_SQUARE_CLASS = CLASSES_PREFIX + "legend-square";
    String PST_ARROW_CLASS = CLASSES_PREFIX + "pst-arrow";
    String HIGHLIGHT_CLASS = CLASSES_PREFIX + "highlight";

    List<String> getCssFilenames();

    String getStyleDefs();

    List<String> getNodeStyleClasses(Node node);

    List<String> getHighlightNodeStyleClasses(Node node);

    List<String> getBusNodeStyleClasses(BusNode busNode);

    List<String> getBranchEdgeStyleClasses(BranchEdge branchEdge);

    List<String> getSideEdgeStyleClasses(BranchEdge edge, BranchEdge.Side side);

    List<String> getHighlightSideEdgeStyleClasses(BranchEdge edge, BranchEdge.Side side);

    List<String> getEdgeInfoStyleClasses(EdgeInfo info);

    List<String> getThreeWtEdgeStyleClasses(ThreeWtEdge threeWtedge);

    List<String> getHighlightThreeWtEdgStyleClasses(ThreeWtEdge edge);

    default String getBusNodeStyle(BusNode busNode) {
        return null;
    }

    default String getSideEdgeStyle(BranchEdge edge, BranchEdge.Side side) {
        return null;
    }

    default String getThreeWtEdgeStyle(ThreeWtEdge threeWtedge) {
        return null;
    }
}