spinitem.java
来自「OSGI这是一个中间件,与UPNP齐名,是用于移植到嵌入式平台之上」· Java 代码 · 共 149 行
JAVA
149 行
/* * Copyright (c) 2003, KNOPFLERFISH project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * - Neither the name of the KNOPFLERFISH project nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */package org.knopflerfish.bundle.desktop.swing.fwspin;import java.util.*;import java.awt.*;import java.awt.geom.*;public abstract class SpinItem { double x = 0; double y = 0; int sx; int sy; double fac = 1.0; double angle = 0; Color textColor = Color.gray.brighter().brighter().brighter().brighter(); public void setPos(double x, double y) { this.x = x; this.y = y; } public void setSPos(int sx, int sy, double fac) { this.sx = sx; this.sy = sy; this.fac = fac; } public void setAngle(double a) { this.angle = a; }; public double getAngle() { return angle; }; public double dist2(int x0, int y0) { double dx = sx - x0; double dy = sy - y0; return dx * dx + dy * dy; } public double getX() { return x; } public double getY() { return y; } public double getSX() { return sx; } public double getSY() { return sy; } abstract public void paint(Graphics g); abstract public void paintDependencies(Graphics g); abstract public void paintInfo(Graphics g, double x, double y); abstract public boolean isActive(); /** * Draw cubic spline using de Casteljau's method. */ static public void drawSpline(Graphics g, double p1_x, double p1_y, double p2_x, double p2_y, double p3_x, double p3_y, double p4_x, double p4_y, int depth) { if(depth > 0) { double l1_x = (p1_x + p2_x) / 2; double l1_y = (p1_y + p2_y) / 2; double m_x = (p2_x + p3_x) / 2; double m_y = (p2_y + p3_y) / 2; double l2_x = (l1_x + m_x) / 2; double l2_y = (l1_y + m_y) / 2; double r1_x = (p3_x + p4_x) / 2; double r1_y = (p3_y + p4_y) / 2; double r2_x = (r1_x + m_x) / 2; double r2_y = (r1_y + m_y) / 2; double m2_x = (l2_x + r2_x) / 2; double m2_y = (l2_y + r2_y) / 2; drawSpline(g, p1_x, p1_y, l1_x, l1_y, l2_x, l2_y, m2_x, m2_y, depth - 1); drawSpline(g, m2_x, m2_y, r2_x, r2_y, r1_x, r1_y, p4_x, p4_y, depth - 1); } else { g.drawLine((int)p1_x, (int)p1_y, (int)p4_x, (int)p4_y); } } public static final int DIR_FROM = 1; public static final int DIR_TO = 2; Vector getNext(int dir) { return null; };}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?