/* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #include "chart/StringChartLegend.h" #include #include // #pragma mark - StringChartLegend StringChartLegend::StringChartLegend(const char* string, int32 level) : ChartLegend(level), fString(string) { } // #pragma mark - StringChartLegendRenderer StringChartLegendRenderer::StringChartLegendRenderer() : fFont(*be_plain_font) { _Init(); } StringChartLegendRenderer::StringChartLegendRenderer(const BFont& font) : fFont(font) { _Init(); } void StringChartLegendRenderer::GetMinimumLegendSpacing(BView* view, float* horizontal, float* vertical) { *horizontal = 2 * fEmWidth; *vertical = fFontHeight / 2; } BSize StringChartLegendRenderer::LegendSize(ChartLegend* _legend, BView* view) { StringChartLegend* legend = dynamic_cast(_legend); if (legend == NULL) return BSize(); float width = ceilf(fFont.StringWidth(legend->String())); return BSize(width, fFontHeight); } void StringChartLegendRenderer::RenderLegend(ChartLegend* _legend, BView* view, BPoint point) { StringChartLegend* legend = dynamic_cast(_legend); if (legend == NULL) return; point.y += ceil(fFontAscent); view->SetFont(&fFont); view->SetHighColor(rgb_color().set_to(0, 0, 0, 255)); view->DrawString(legend->String(), point); } void StringChartLegendRenderer::_Init() { font_height fh; fFont.GetHeight(&fh); fFontAscent = ceilf(fh.ascent); fFontHeight = fFontAscent + ceilf(fh.descent); fEmWidth = ceilf(fFont.StringWidth("m", 1)); }