mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 01:54:04 +09:00
added sources for Slick
Former-commit-id: 1647fa32ef6894bd7db44f741f07c2f4dcdf9054 Former-commit-id: 0e5810dcfbe1fd59b13e7cabe9f1e93c5542da2d
This commit is contained in:
162
lib/slick-source/org/newdawn/slick/svg/Diagram.java
Normal file
162
lib/slick-source/org/newdawn/slick/svg/Diagram.java
Normal file
@@ -0,0 +1,162 @@
|
||||
package org.newdawn.slick.svg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* A diagram read from SVG containing multiple figures
|
||||
*
|
||||
* @author kevin
|
||||
*/
|
||||
public class Diagram {
|
||||
/** The figures in the diagram */
|
||||
private ArrayList figures = new ArrayList();
|
||||
/** The pattern definitions */
|
||||
private HashMap patterns = new HashMap();
|
||||
/** The linear gradients defined within the diagram */
|
||||
private HashMap gradients = new HashMap();
|
||||
/** The figures mapping */
|
||||
private HashMap figureMap = new HashMap();
|
||||
|
||||
/** The width of the diagram */
|
||||
private float width;
|
||||
/** The height of the diagram */
|
||||
private float height;
|
||||
|
||||
/**
|
||||
* Create a new empty diagram
|
||||
*
|
||||
* @param width The width of the diagram
|
||||
* @param height The height of the diagram
|
||||
*/
|
||||
public Diagram(float width, float height) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the width of the diagram
|
||||
*
|
||||
* @return The width of the diagram
|
||||
*/
|
||||
public float getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the height of the diagram
|
||||
*
|
||||
* @return The height of the diagram
|
||||
*/
|
||||
public float getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a pattern definition basd on a image
|
||||
*
|
||||
* @param name The name of the pattern
|
||||
* @param href The href to the image specified in the doc
|
||||
*/
|
||||
public void addPatternDef(String name, String href) {
|
||||
patterns.put(name, href);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add gradient to the diagram
|
||||
*
|
||||
* @param name The name of the gradient
|
||||
* @param gradient The gradient to be added
|
||||
*/
|
||||
public void addGradient(String name, Gradient gradient) {
|
||||
gradients.put(name, gradient);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a pattern definition from the diagram
|
||||
*
|
||||
* @param name The name of the pattern
|
||||
* @return The href to the image that was specified for the given pattern
|
||||
*/
|
||||
public String getPatternDef(String name) {
|
||||
return (String) patterns.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the gradient defined in this document
|
||||
*
|
||||
* @param name The name of the gradient
|
||||
* @return The gradient definition
|
||||
*/
|
||||
public Gradient getGradient(String name) {
|
||||
return (Gradient) gradients.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the names of the patterns defined
|
||||
*
|
||||
* @return The names of the pattern
|
||||
*/
|
||||
public String[] getPatternDefNames() {
|
||||
return (String[]) patterns.keySet().toArray(new String[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a figure by a given ID
|
||||
*
|
||||
* @param id The ID of the figure
|
||||
* @return The figure with the given ID
|
||||
*/
|
||||
public Figure getFigureByID(String id) {
|
||||
return (Figure) figureMap.get(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a figure to the diagram
|
||||
*
|
||||
* @param figure The figure to add
|
||||
*/
|
||||
public void addFigure(Figure figure) {
|
||||
figures.add(figure);
|
||||
figureMap.put(figure.getData().getAttribute(NonGeometricData.ID), figure);
|
||||
|
||||
String fillRef = figure.getData().getAsReference(NonGeometricData.FILL);
|
||||
Gradient gradient = getGradient(fillRef);
|
||||
if (gradient != null) {
|
||||
if (gradient.isRadial()) {
|
||||
for (int i=0;i<InkscapeLoader.RADIAL_TRIANGULATION_LEVEL;i++) {
|
||||
figure.getShape().increaseTriangulation();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of figures in the diagram
|
||||
*
|
||||
* @return The number of figures in the diagram
|
||||
*/
|
||||
public int getFigureCount() {
|
||||
return figures.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the figure at a given index
|
||||
*
|
||||
* @param index The index of the figure to retrieve
|
||||
* @return The figure at the given index
|
||||
*/
|
||||
public Figure getFigure(int index) {
|
||||
return (Figure) figures.get(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a figure from the diagram
|
||||
*
|
||||
* @param figure The figure to be removed
|
||||
*/
|
||||
public void removeFigure(Figure figure) {
|
||||
figures.remove(figure);
|
||||
figureMap.remove(figure.getData().getAttribute("id"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user