Ejemplo n.º 1
0
void OHLCPlot::DrawOHLCDataset(wxDC &dc, wxRect rc, OHLCDataset *dataset)
{
	OHLCRenderer *renderer = dataset->GetRenderer();
	wxCHECK_RET(renderer != NULL, wxT("no renderer for data"));

	Axis *vertAxis = GetDatasetVerticalAxis(dataset);
	Axis *horizAxis = GetDatasetHorizontalAxis(dataset);

	wxCHECK_RET(vertAxis != NULL, wxT("no axis for data"));
	wxCHECK_RET(horizAxis != NULL, wxT("no axis for data"));

	// draw OHLC items
	for (size_t n = 0; n < dataset->GetCount(); n++) {
		OHLCItem *item = dataset->GetItem(n);

		wxCoord open = vertAxis->ToGraphics(dc, rc.y, rc.height, item->open);
		wxCoord high = vertAxis->ToGraphics(dc, rc.y, rc.height, item->high);
		wxCoord low = vertAxis->ToGraphics(dc, rc.y, rc.height, item->low);
		wxCoord close = vertAxis->ToGraphics(dc, rc.y, rc.height, item->close);

		wxCoord x = horizAxis->ToGraphics(dc, rc.x, rc.width, n);//item->date);

		renderer->DrawItem(dc, x, open, high, low, close);
	}
}
Ejemplo n.º 2
0
void BarPlot::DrawDatasets(wxDC &dc, wxRect rc)
{
	for (size_t nData = 0; nData < GetDatasetCount(); nData++) {
		CategoryDataset *dataset = (CategoryDataset *) GetDataset(nData);
		BarRenderer *renderer = dataset->GetRenderer();
		wxCHECK_RET(renderer != NULL, wxT("no renderer for data"));

		Axis *vertAxis = GetDatasetVerticalAxis(dataset);
		Axis *horizAxis = GetDatasetHorizontalAxis(dataset);

		wxCHECK_RET(vertAxis != NULL, wxT("no axis for data"));
		wxCHECK_RET(horizAxis != NULL, wxT("no axis for data"));

		bool verticalBars;
		if (wxDynamicCast(horizAxis, CategoryAxis) != NULL ||
				wxDynamicCast(horizAxis, DateAxis) != NULL) {
			verticalBars = true;
		}
		else if (wxDynamicCast(vertAxis, CategoryAxis) != NULL ||
				wxDynamicCast(vertAxis, DateAxis) != NULL) {
			verticalBars = false;
		}
		else {
			// wrong plot configuration, TODO be handled not here
			return ;
		}

		renderer->Draw(dc, rc, horizAxis, vertAxis, verticalBars, dataset);
	}
}
Ejemplo n.º 3
0
void XYPlot::DrawXYDataset(wxDC &dc, wxRect rc, XYDataset *dataset)
{
    XYRenderer *renderer = dataset->GetRenderer();
    wxCHECK_RET(renderer != NULL, wxT("no renderer for data"));

    Axis *vertAxis = GetDatasetVerticalAxis(dataset);
    Axis *horizAxis = GetDatasetHorizontalAxis(dataset);

    wxCHECK_RET(vertAxis != NULL, wxT("no axis for data"));
    wxCHECK_RET(horizAxis != NULL, wxT("no axis for data"));

    renderer->Draw(dc, rc, horizAxis, vertAxis, dataset);
}
Ejemplo n.º 4
0
void BubblePlot::DrawDatasets(wxDC &dc, wxRect rc)
{
	for (size_t nData = 0; nData < GetDatasetCount(); nData++) {
		XYZDataset *dataset = (XYZDataset *) GetDataset(nData);
		XYZRenderer *renderer = dataset->GetRenderer();
		wxCHECK_RET(renderer != NULL, wxT("no renderer for data"));

		Axis *vertAxis = GetDatasetVerticalAxis(dataset);
		Axis *horizAxis = GetDatasetHorizontalAxis(dataset);

		wxCHECK_RET(vertAxis != NULL, wxT("no axis for data"));
		wxCHECK_RET(horizAxis != NULL, wxT("no axis for data"));

		renderer->Draw(dc, rc, horizAxis, vertAxis, dataset);
	}
}
Ejemplo n.º 5
0
void AxisPlot::DrawMarkers(wxDC &dc, wxRect rcData)
{
	for (size_t n = 0; n < m_datasets.Count(); n++) {
		Dataset *dataset = m_datasets[n];

		if (dataset->GetMarkersCount() == 0) {
			continue;
		}

		Axis *horizAxis = GetDatasetHorizontalAxis(dataset);
		Axis *vertAxis = GetDatasetVerticalAxis(dataset);

		for (size_t nMarker = 0; nMarker < dataset->GetMarkersCount(); nMarker++) {
			Marker *marker = dataset->GetMarker(nMarker);

			marker->Draw(dc, rcData, horizAxis, vertAxis);
		}
	}
}
Ejemplo n.º 6
0
bool AxisPlot::ToDataCoords(size_t nData, wxDC &dc, wxRect rc, wxCoord gx, wxCoord gy, double *x, double *y)
{
	Dataset *dataset = GetDataset(nData);
	wxCHECK_MSG(dataset != NULL, false, wxT("AxisPlot::ToDataCoords: Invalid dataset index"));

	Axis *horizAxis = GetDatasetHorizontalAxis(dataset);
	Axis *vertAxis = GetDatasetVerticalAxis(dataset);

	wxCHECK_MSG(horizAxis != NULL && vertAxis != NULL, false, wxT("AxisPlot::ToDataCoords: dataset not linked with horizontal or vertical axis"));

	wxRect rcData;
	wxRect rcLegend;

	CalcDataArea(dc, rc, rcData, rcLegend);
	if (!rcData.Contains(gx, gy)) {
		return false;
	}

	*x = horizAxis->ToData(dc, rcData.x, rcData.width, gx);
	*y = vertAxis->ToData(dc, rcData.y, rcData.height, gy);
	return true;
}