mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-06 03:50:02 +02:00
GP-1981 - Graph Theme Updates
This commit is contained in:
parent
50de9eb7b3
commit
ae02a34d8b
47 changed files with 462 additions and 341 deletions
|
@ -28,6 +28,7 @@ import javax.swing.border.LineBorder;
|
|||
|
||||
import docking.theme.GColor;
|
||||
import docking.theme.GThemeDefaults.Colors.Palette;
|
||||
import docking.theme.Gui;
|
||||
import docking.widgets.EmptyBorderButton;
|
||||
import docking.widgets.label.GDLabel;
|
||||
import ghidra.graph.viewer.vertex.AbstractVisualVertex;
|
||||
|
@ -45,7 +46,7 @@ public class FcgVertex extends AbstractVisualVertex implements VertexShapeProvid
|
|||
|
||||
//@formatter:off
|
||||
public static final Color DEFAULT_VERTEX_SHAPE_COLOR = new GColor("color.bg.fcg.vertex.default");
|
||||
private static final Color TOO_BIG_VERTEX_SHAPE_COLOR = new GColor("color.bg.fcg.vertex.toobig ");
|
||||
private static final Color TOO_BIG_VERTEX_SHAPE_COLOR = new GColor("color.bg.fcg.vertex.toobig");
|
||||
//@formatter:on
|
||||
|
||||
public static final Icon NOT_ALLOWED_ICON = Icons.ERROR_ICON;
|
||||
|
@ -55,9 +56,9 @@ public class FcgVertex extends AbstractVisualVertex implements VertexShapeProvid
|
|||
ResourceManager.getScaledIcon(Icons.COLLAPSE_ALL_ICON, 10, 10);
|
||||
|
||||
// higher numbered layers go on top
|
||||
private static final Integer VERTEX_SHAPE_LAYER = new Integer(100);
|
||||
private static final Integer TOGGLE_BUTTON_LAYER = new Integer(200);
|
||||
private static final Integer LABEL_LAYER = new Integer(300);
|
||||
private static final Integer VERTEX_SHAPE_LAYER = 100;
|
||||
private static final Integer TOGGLE_BUTTON_LAYER = 200;
|
||||
private static final Integer LABEL_LAYER = 300;
|
||||
|
||||
private static final int GAP = 2;
|
||||
private static final int VERTEX_SHAPE_SIZE = 50;
|
||||
|
@ -131,8 +132,8 @@ public class FcgVertex extends AbstractVisualVertex implements VertexShapeProvid
|
|||
Color vertexShapeColor = getVertexShapeColor();
|
||||
|
||||
Color lightColor = vertexShapeColor;
|
||||
Color darkColor = vertexShapeColor.darker();
|
||||
Color darkestColor = darkColor.darker();
|
||||
Color darkColor = Gui.darker(vertexShapeColor);
|
||||
Color darkestColor = Gui.darker(darkColor);
|
||||
int offset = 5 * level.getDistance();
|
||||
int half = VERTEX_SHAPE_SIZE / 2;
|
||||
int start = 0;
|
||||
|
@ -159,7 +160,7 @@ public class FcgVertex extends AbstractVisualVertex implements VertexShapeProvid
|
|||
|
||||
// calculate the needed size
|
||||
layeredPane = new JLayeredPane();
|
||||
Border border = createDebugBorder(new LineBorder(Color.YELLOW.darker(), 1));
|
||||
Border border = createDebugBorder(new LineBorder(Palette.GOLD, 1));
|
||||
layeredPane.setBorder(border);
|
||||
|
||||
updateLayeredPaneSize();
|
||||
|
@ -549,7 +550,7 @@ public class FcgVertex extends AbstractVisualVertex implements VertexShapeProvid
|
|||
/**
|
||||
* Sets whether this vertex has any outgoing references
|
||||
*
|
||||
* @param hasIncoming true if this vertex has any incoming references
|
||||
* @param hasOutgoing true if this vertex has any outgoing references
|
||||
*/
|
||||
|
||||
public void setHasOutgoingReferences(boolean hasOutgoing) {
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
package functioncalls.graph.renderer;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Paint;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
|
||||
|
@ -26,7 +25,7 @@ import ghidra.util.ColorUtils;
|
|||
/**
|
||||
* Generates colors for a given {@link FcgEdge}
|
||||
*/
|
||||
public class FcgEdgePaintTransformer implements Function<FcgEdge, Paint> {
|
||||
public class FcgEdgePaintTransformer implements Function<FcgEdge, Color> {
|
||||
|
||||
private Color directColor;
|
||||
private Color indirectColor;
|
||||
|
@ -52,7 +51,7 @@ public class FcgEdgePaintTransformer implements Function<FcgEdge, Paint> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Paint apply(FcgEdge e) {
|
||||
public Color apply(FcgEdge e) {
|
||||
if (e.isDirectEdge()) {
|
||||
return getDirectEdgeColor(e);
|
||||
}
|
||||
|
|
|
@ -16,13 +16,16 @@
|
|||
package functioncalls.graph.view;
|
||||
|
||||
import docking.theme.GColor;
|
||||
import edu.uci.ics.jung.visualization.RenderContext;
|
||||
import edu.uci.ics.jung.visualization.renderers.Renderer;
|
||||
import functioncalls.graph.*;
|
||||
import functioncalls.graph.renderer.FcgEdgePaintTransformer;
|
||||
import functioncalls.graph.renderer.FcgVertexPaintTransformer;
|
||||
import functioncalls.plugin.FunctionCallGraphPlugin;
|
||||
import ghidra.graph.viewer.*;
|
||||
import ghidra.graph.viewer.edge.VisualEdgeRenderer;
|
||||
import ghidra.graph.viewer.layout.VisualGraphLayout;
|
||||
import ghidra.graph.viewer.renderer.VisualVertexSatelliteRenderer;
|
||||
import ghidra.graph.viewer.vertex.VisualVertexRenderer;
|
||||
|
||||
/**
|
||||
* A graph component for the {@link FunctionCallGraphPlugin}
|
||||
|
@ -32,13 +35,15 @@ public class FcgComponent extends GraphComponent<FcgVertex, FcgEdge, FunctionCal
|
|||
// our parent stores a reference to this graph, but we do it here to maintain its type
|
||||
private FunctionCallGraph fcGraph;
|
||||
|
||||
// TODO use options for color
|
||||
private FcgVertexPaintTransformer vertexPaintTransformer =
|
||||
new FcgVertexPaintTransformer(FcgVertex.DEFAULT_VERTEX_SHAPE_COLOR);
|
||||
|
||||
private FcgEdgePaintTransformer edgePaintTransformer =
|
||||
new FcgEdgePaintTransformer(new GColor("color.bg.fcg.edge.primary.direct"),
|
||||
new GColor("color.bg.fcg.edge.primary.indirect"));
|
||||
private FcgEdgePaintTransformer selectedEdgePaintTransformer =
|
||||
new FcgEdgePaintTransformer(new GColor("color.bg.fcg.edge.primary.direct.selected"),
|
||||
new GColor("color.bg.fcg.edge.primary.indirect.selected"));
|
||||
private FcgEdgePaintTransformer satelliteEdgePaintTransformer =
|
||||
new FcgEdgePaintTransformer(new GColor("color.bg.fcg.edge.satellite.direct"),
|
||||
new GColor("color.bg.fcg.edge.satellite.indirect"));
|
||||
|
@ -59,15 +64,15 @@ public class FcgComponent extends GraphComponent<FcgVertex, FcgEdge, FunctionCal
|
|||
|
||||
super.decoratePrimaryViewer(viewer, layout);
|
||||
|
||||
RenderContext<FcgVertex, FcgEdge> renderContext = viewer.getRenderContext();
|
||||
renderContext.setVertexFillPaintTransformer(vertexPaintTransformer);
|
||||
Renderer<FcgVertex, FcgEdge> renderer = viewer.getRenderer();
|
||||
VisualVertexRenderer<FcgVertex, FcgEdge> vertexRenderer =
|
||||
(VisualVertexRenderer<FcgVertex, FcgEdge>) renderer.getVertexRenderer();
|
||||
vertexRenderer.setVertexFillPaintTransformer(vertexPaintTransformer);
|
||||
|
||||
// Note: setting the fill for the edges has the effect of drawing a filled-in circle
|
||||
// instead of just the outer edge.
|
||||
// renderContext.setEdgeFillPaintTransformer(edgePaintTransformer);
|
||||
renderContext.setEdgeDrawPaintTransformer(edgePaintTransformer);
|
||||
renderContext.setArrowFillPaintTransformer(edgePaintTransformer);
|
||||
renderContext.setArrowDrawPaintTransformer(edgePaintTransformer);
|
||||
VisualEdgeRenderer<FcgVertex, FcgEdge> edgeRenderer =
|
||||
(VisualEdgeRenderer<FcgVertex, FcgEdge>) renderer.getEdgeRenderer();
|
||||
edgeRenderer.setDrawColorTransformer(edgePaintTransformer);
|
||||
edgeRenderer.setSelectedColorTransformer(selectedEdgePaintTransformer);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -76,12 +81,14 @@ public class FcgComponent extends GraphComponent<FcgVertex, FcgEdge, FunctionCal
|
|||
|
||||
super.decorateSatelliteViewer(viewer, layout);
|
||||
|
||||
RenderContext<FcgVertex, FcgEdge> renderContext = viewer.getRenderContext();
|
||||
renderContext.setVertexFillPaintTransformer(vertexPaintTransformer);
|
||||
//renderContext.setEdgeFillPaintTransformer(satelliteEdgePaintTransformer);
|
||||
renderContext.setEdgeDrawPaintTransformer(satelliteEdgePaintTransformer);
|
||||
renderContext.setArrowFillPaintTransformer(satelliteEdgePaintTransformer);
|
||||
renderContext.setArrowDrawPaintTransformer(satelliteEdgePaintTransformer);
|
||||
Renderer<FcgVertex, FcgEdge> renderer = viewer.getRenderer();
|
||||
VisualVertexSatelliteRenderer<FcgVertex, FcgEdge> vertexRenderer =
|
||||
(VisualVertexSatelliteRenderer<FcgVertex, FcgEdge>) renderer.getVertexRenderer();
|
||||
vertexRenderer.setVertexFillPaintTransformer(vertexPaintTransformer);
|
||||
|
||||
VisualEdgeRenderer<FcgVertex, FcgEdge> edgeRenderer =
|
||||
(VisualEdgeRenderer<FcgVertex, FcgEdge>) renderer.getEdgeRenderer();
|
||||
edgeRenderer.setDrawColorTransformer(satelliteEdgePaintTransformer);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue