You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.9 KiB
108 lines
2.9 KiB
package com.fr.design.chart; |
|
|
|
import com.fr.base.ScreenResolution; |
|
import com.fr.base.chart.BaseChartPainter; |
|
import com.fr.base.chart.chartdata.CallbackEvent; |
|
import com.fr.base.chart.result.WebChartIDInfo; |
|
import com.fr.chart.chartattr.Chart; |
|
import com.fr.chart.chartattr.ChartCollection; |
|
import com.fr.design.ChartTypeInterfaceManager; |
|
import com.fr.design.file.HistoryTemplateListPane; |
|
import com.fr.script.Calculator; |
|
|
|
import javax.swing.Icon; |
|
import java.awt.Color; |
|
import java.awt.Component; |
|
import java.awt.Graphics; |
|
import java.awt.Graphics2D; |
|
import java.awt.Paint; |
|
|
|
/** |
|
* @author Bjorn |
|
* @version 10.0 |
|
* Created by Bjorn on 2020-05-29 |
|
*/ |
|
public class AutoChartIcon implements Icon { |
|
|
|
private static final int WIDTH = 500; |
|
private static final int HEIGHT = 281; |
|
|
|
private ChartCollection chartCollection; |
|
private CallbackEvent callbackEvent; |
|
|
|
private String chartName; |
|
|
|
public AutoChartIcon(ChartCollection chartCollection) { |
|
this.chartCollection = chartCollection; |
|
initChartName(); |
|
} |
|
|
|
public ChartCollection getChartCollection() { |
|
return chartCollection; |
|
} |
|
|
|
public String getChartName() { |
|
return chartName; |
|
} |
|
|
|
private void initChartName() { |
|
Chart chart = chartCollection.getSelectedChart(Chart.class); |
|
String[] subName = ChartTypeInterfaceManager.getInstance().getSubName(chart.getPlot().getPlotID()); |
|
chartName = subName[0]; |
|
} |
|
|
|
public void registerCallBackEvent(CallbackEvent callbackEvent) { |
|
this.callbackEvent = callbackEvent; |
|
} |
|
|
|
/** |
|
* 画出缩略图Icon |
|
* |
|
* @param g 图形的上下文 |
|
* @param c 所在的Component |
|
* @param x 缩略图的起始坐标x |
|
* @param y 缩略图的起始坐标y |
|
*/ |
|
@Override |
|
public void paintIcon(Component c, Graphics g, int x, int y) { |
|
|
|
BaseChartPainter painter = chartCollection.createResultChartPainterWithOutDealFormula(Calculator.createCalculator(), |
|
WebChartIDInfo.createEmptyDesignerInfo(), getIconWidth(), getIconHeight()); |
|
|
|
int resolution = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getJTemplateResolution(); |
|
if (resolution == 0) { |
|
resolution = ScreenResolution.getScreenResolution(); |
|
} |
|
|
|
Graphics2D g2d = (Graphics2D) g; |
|
Paint oldPaint = g2d.getPaint(); |
|
g.translate(x, y); |
|
g2d.setPaint(Color.white); |
|
g2d.fillRect(0, 0, getIconWidth(), getIconHeight()); |
|
|
|
painter.paint(g2d, getIconWidth(), getIconHeight(), resolution, null, callbackEvent); |
|
|
|
g.translate(-x, -y); |
|
g2d.setPaint(oldPaint); |
|
} |
|
|
|
/** |
|
* 返回缩略图的宽度 |
|
* |
|
* @return int 缩略图宽度 |
|
*/ |
|
@Override |
|
public int getIconWidth() { |
|
return WIDTH; |
|
} |
|
|
|
/** |
|
* 返回缩略图的高度 |
|
* |
|
* @return int 缩略图高度 |
|
*/ |
|
@Override |
|
public int getIconHeight() { |
|
return HEIGHT; |
|
} |
|
}
|
|
|