⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractlinedecoration.java

📁 开源(Open Source)项目JHotDraw的文档和源程序
💻 JAVA
字号:
/*
 * @(#)AbstractLineDecoration.java 5.2
 *
 */

package CH.ifa.draw.figures;

import java.io.*;
import java.awt.*;

import CH.ifa.draw.framework.*;
import CH.ifa.draw.standard.*;
import CH.ifa.draw.util.*;

/**
 * An standard implementation of a line decoration.
 * @see PolyLineFigure
 */
public abstract class AbstractLineDecoration implements LineDecoration {

    static final long serialVersionUID = 1577970039258356627L;
    
    private Color   fFillColor;
    private Color   fBorderColor;

	public AbstractLineDecoration() {
	}

   /**
    * Draws the arrow tip in the direction specified by the given two
    * points.. (template method)
    */
    public void draw(Graphics g, int x1, int y1, int x2, int y2) {
        // TBD: reuse the Polygon object
        Polygon p = outline(x1, y1, x2, y2);
        if (getFillColor() == null) {
            g.fillPolygon(p.xpoints, p.ypoints, p.npoints);
        }
        else {
            Color drawColor = g.getColor();
            g.setColor(getFillColor());
            g.fillPolygon(p.xpoints, p.ypoints, p.npoints);
            g.setColor(drawColor);
        }
        
        if (getBorderColor() != getFillColor()) {
            Color drawColor = g.getColor();
            g.setColor(getBorderColor());
            g.drawPolygon(p.xpoints, p.ypoints, p.npoints);
            g.setColor(drawColor);
        }
    }

   /**
    * Hook method to calculates the outline of an arrow tip.
    */
    public abstract Polygon outline(int x1, int y1, int x2, int y2);

    /**
     * Stores the arrow tip to a StorableOutput.
     */
    public void write(StorableOutput dw) {
		if (getFillColor() != null) {
			FigureAttributes.writeColor(dw, "FillColor", getFillColor());
		}
		else {
			dw.writeString("noFillColor");
		}
		
		if (getBorderColor() != null) {
			FigureAttributes.writeColor(dw, "BorderColor", getBorderColor());
		}
		else {
			dw.writeString("noBorderColor");
		}
    }

    /**
     * Reads the arrow tip from a StorableInput.
     */
    public void read(StorableInput dr) throws IOException {
        String fillColorId = dr.readString();
		// read color only if one has been written
        if (fillColorId.equals("FillColor")) {
	        setFillColor(FigureAttributes.readColor(dr));
        }
        String borderColorId = dr.readString();
		// read color only if one has been written
        if (borderColorId.equals("BorderColor")) {
	        setBorderColor(FigureAttributes.readColor(dr));
        }
    }

	/**
	 * Sets color with which arrow is filled
	 */
    public void setFillColor(Color fillColor) {
        fFillColor = fillColor;
    }

	/**
	 * Returns color with which arrow is filled
	 */    
    public Color getFillColor() {
        return fFillColor;
    }

	/**
	 * Sets color of arrow's border
	 */
    public void setBorderColor(Color borderColor) {
        fBorderColor = borderColor;
    }

	/**
	 * Returns color of arrow's border
	 */    
    public Color getBorderColor() {
        return fBorderColor;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -