Package com.bbn.openmap.omGraphics

Source Code of com.bbn.openmap.omGraphics.OMDecoratedSpline

//**********************************************************************
//
//<copyright>
//
//BBN Technologies
//10 Moulton Street
//Cambridge, MA 02138
//(617) 873-8000
//
//Copyright (C) BBNT Solutions LLC. All rights reserved.
//
//</copyright>
//**********************************************************************
//
//$Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/OMDecoratedSpline.java,v $
//$RCSfile: OMDecoratedSpline.java,v $
//$Revision: 1.4.2.4 $
//$Date: 2005/08/11 21:03:21 $
//$Author: dietrick $
//
//**********************************************************************

package com.bbn.openmap.omGraphics;

import java.awt.Graphics;
import java.awt.Paint;

import com.bbn.openmap.util.Debug;

import com.bbn.openmap.omGraphics.awt.Revertable;
import com.bbn.openmap.omGraphics.awt.ShapeDecorator;

/**
* A decorated splined OMPoly. Decoration list is empty, but
* accessible via getDecorator() Code from OMPoly, few changes :
* render() just need to delegate the drawing of the polyline to the
* ShapeDecorator
*
* @author Eric LEPICIER
* @version 27 juil. 2002
*/
public class OMDecoratedSpline extends OMSpline implements Revertable {

    private ShapeDecorator decorator = new ShapeDecorator();

    /**
     * Constructor.
     */
    public OMDecoratedSpline() {
        super();
        initDecorations();
    }

    /**
     * Constructor.
     *
     * @param llPoints
     * @param units
     * @param lType
     */
    public OMDecoratedSpline(float[] llPoints, int units, int lType) {
        super(llPoints, units, lType);
        initDecorations();
    }

    /**
     * Constructor.
     *
     * @param llPoints
     * @param units
     * @param lType
     * @param nsegs
     */
    public OMDecoratedSpline(float[] llPoints, int units, int lType, int nsegs) {
        super(llPoints, units, lType, nsegs);
        initDecorations();
    }

    /**
     * Constructor.
     *
     * @param xypoints
     */
    public OMDecoratedSpline(int[] xypoints) {
        super(xypoints);
        initDecorations();
    }

    /**
     * Constructor.
     *
     * @param xPoints
     * @param yPoints
     */
    public OMDecoratedSpline(int[] xPoints, int[] yPoints) {
        super(xPoints, yPoints);
        initDecorations();
    }

    /**
     * Constructor.
     *
     * @param latPoint
     * @param lonPoint
     * @param xypoints
     * @param cMode
     */
    public OMDecoratedSpline(float latPoint, float lonPoint, int[] xypoints,
            int cMode) {
        super(latPoint, lonPoint, xypoints, cMode);
        initDecorations();
    }

    /**
     * Constructor.
     *
     * @param latPoint
     * @param lonPoint
     * @param xPoints
     * @param yPoints
     * @param cMode
     */
    public OMDecoratedSpline(float latPoint, float lonPoint, int[] xPoints,
            int[] yPoints, int cMode) {
        super(latPoint, lonPoint, xPoints, yPoints, cMode);
        initDecorations();
    }

    /**
     * Paint the poly. This works if generate() has been successful.
     * Same code than OMPoly, just delegates the drawing of the
     * polyline to the ShapeDecorator
     *
     * @param g java.awt.Graphics to paint the poly onto.
     */
    public void render(Graphics g) {
        if (decorator == null) {
            super.render(g);
            return;
        }

        if (shape != null) {
            decorator.draw(g, shape);
            return;
        }

        if (getNeedToRegenerate() || !isVisible())
            return;

        // safety: grab local reference of projected points
        int[][] xpts = xpoints;
        int[][] ypts = ypoints;
        int[] _x, _y;
        int i;
        int len = xpts.length;

        Paint displayPaint = getDisplayPaint();
        Paint fillPaint = getFillPaint();
        boolean isFillClear = isClear(fillPaint);
        boolean isLineClear = isClear(displayPaint);

        // If shapes are null, then we have to do things the old way.
        try {
            for (i = 0; i < len; i++) {
                _x = xpts[i];
                _y = ypts[i];

                // render polygon
                if (isPolygon) {

                    // fill main polygon
                    if (!isFillClear) {
                        // set the interior coloring parameters
                        setGraphicsForFill(g);
                        g.fillPolygon(_x, _y, _x.length);
                    }

                    // only draw outline if different color
                    if (!isLineClear || !edgeMatchesFill) {
                        setGraphicsForEdge(g);
                        // for some reason, this used to be
                        // drawPolygon
                        decorator.draw(g, _x, _y);
                    }
                }

                // render polyline
                else {
                    // draw main outline
                    setGraphicsForEdge(g);
                    decorator.draw(g, _x, _y);
                }
            }
        } catch (Exception e) {
            // Trying to catch any clipping problems from within a JRE
            Debug.output("OMDecoratedSpline: caught Java rendering exception\n"
                    + e.getMessage());
        }
    }

    /**
     * Returns the decorator.
     *
     * @return ShapeDecorator
     */
    public ShapeDecorator getDecorator() {
        return decorator;
    }

    /**
     * Sets the decorator.
     *
     * @param decorator The decorator to set
     */
    public void setDecorator(ShapeDecorator decorator) {
        this.decorator = decorator;
    }

    /**
     * Called by constructor, may be overriden.
     */
    protected void initDecorations() {}

    /**
     * @see com.bbn.openmap.omGraphics.awt.Revertable#revert()
     */
    public void revert() {
        decorator.revert();
    }
}
TOP

Related Classes of com.bbn.openmap.omGraphics.OMDecoratedSpline

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.