com.mxgraph.shape.mxBasicShape Maven / Gradle / Ivy
/**
* $Id: mxBasicShape.java,v 1.9 2011-01-24 10:13:14 gaudenz Exp $
* Copyright (c) 2010, Gaudenz Alder, David Benson
*/
package com.mxgraph.shape;
import java.awt.Color;
import java.awt.Paint;
import java.awt.Shape;
import java.util.Map;
import com.mxgraph.canvas.mxGraphics2DCanvas;
import com.mxgraph.util.mxConstants;
import com.mxgraph.util.mxRectangle;
import com.mxgraph.util.mxUtils;
import com.mxgraph.view.mxCellState;
public class mxBasicShape implements mxIShape
{
/**
*
*/
public void paintShape(mxGraphics2DCanvas canvas, mxCellState state)
{
Shape shape = createShape(canvas, state);
if (shape != null)
{
// Paints the background
if (configureGraphics(canvas, state, true))
{
canvas.fillShape(shape, hasShadow(canvas, state));
}
// Paints the foreground
if (configureGraphics(canvas, state, false))
{
canvas.getGraphics().draw(shape);
}
}
}
/**
*
*/
public Shape createShape(mxGraphics2DCanvas canvas, mxCellState state)
{
return null;
}
/**
* Configures the graphics object ready to paint.
* @param canvas the canvas to be painted to
* @param state the state of cell to be painted
* @param background whether or not this is the background stage of
* the shape paint
* @return whether or not the shape is ready to be drawn
*/
protected boolean configureGraphics(mxGraphics2DCanvas canvas,
mxCellState state, boolean background)
{
Map style = state.getStyle();
if (background)
{
// Paints the background of the shape
Paint fillPaint = hasGradient(canvas, state) ? canvas
.createFillPaint(getGradientBounds(canvas, state), style)
: null;
if (fillPaint != null)
{
canvas.getGraphics().setPaint(fillPaint);
return true;
}
else
{
Color color = getFillColor(canvas, state);
canvas.getGraphics().setColor(color);
return color != null;
}
}
else
{
canvas.getGraphics().setPaint(null);
Color color = getStrokeColor(canvas, state);
canvas.getGraphics().setColor(color);
canvas.getGraphics().setStroke(canvas.createStroke(style));
return color != null;
}
}
/**
*
*/
protected mxRectangle getGradientBounds(mxGraphics2DCanvas canvas,
mxCellState state)
{
return state;
}
/**
*
*/
public boolean hasGradient(mxGraphics2DCanvas canvas, mxCellState state)
{
return true;
}
/**
*
*/
public boolean hasShadow(mxGraphics2DCanvas canvas, mxCellState state)
{
return mxUtils
.isTrue(state.getStyle(), mxConstants.STYLE_SHADOW, false);
}
/**
*
*/
public Color getFillColor(mxGraphics2DCanvas canvas, mxCellState state)
{
return mxUtils.getColor(state.getStyle(), mxConstants.STYLE_FILLCOLOR);
}
/**
*
*/
public Color getStrokeColor(mxGraphics2DCanvas canvas, mxCellState state)
{
return mxUtils
.getColor(state.getStyle(), mxConstants.STYLE_STROKECOLOR);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy