/** * @RDE_HEADER@ * PlanModel - Renderer * $Id$ * $HeadURL$ * $Author$ */ #include "geometry_model_renderer.h" #include #include namespace SituationMap { GeometryModelRenderer::GeometryModelRenderer(Map *map, const QString &layerName, GeometryModel &geoModel, QObject *parent) : QObject(parent) , m_stats() , m_nodesPickable(true) , m_enableRedraw(true) , m_map(map) , m_layerName(layerName) , m_geometryModel(geoModel) , m_logger(getLogger("GeometryModelRenderer")) , m_loggerStats(getLogger("GeometryModelRenderer.Stats")) { if (!m_map) ERROR_LOG(m_logger) << LOGFUNCTION << " undefined map"; if (m_layerName.isEmpty()) ERROR_LOG(m_logger) << LOGFUNCTION << " empty map layer name"; } // GeometryModelRenderer::GeometryModelRenderer(QWidget *parent, bool showUI) void GeometryModelRenderer::resetStats() { m_stats.m_drawCount = 0; m_stats.m_drawElementsRecursiveCount = 0; m_stats.m_drawEllipseCount = 0; m_stats.m_drawLineCount = 0; m_stats.m_drawPolylineCount = 0; m_stats.m_drawRectangleCount = 0; m_stats.m_drawSplineCount = 0; m_stats.m_drawSymbolCount = 0; m_stats.m_drawTextCount = 0; m_stats.m_drawNodeCount = 0; m_stats.m_msEllipse = 0; m_stats.m_msLine = 0; m_stats.m_msPolyline = 0; m_stats.m_msRectangle = 0; m_stats.m_msSpline = 0; m_stats.m_msSymbol = 0; m_stats.m_msText = 0; m_stats.m_msNode = 0; m_stats.m_msEllipseMax = 0; m_stats.m_msLineMax = 0; m_stats.m_msPolylineMax = 0; m_stats.m_msRectangleMax = 0; m_stats.m_msSplineMax = 0; m_stats.m_msSymbolMax = 0; m_stats.m_msTextMax = 0; m_stats.m_msNodeMax = 0; m_stats.m_msEllipseMin = 0; m_stats.m_msLineMin = 0; m_stats.m_msPolylineMin = 0; m_stats.m_msRectangleMin = 0; m_stats.m_msSplineMin = 0; m_stats.m_msSymbolMin = 0; m_stats.m_msTextMin = 0; m_stats.m_msNodeMin = 0; } // void GeometryModelRenderer::resetStats() void GeometryModelRenderer::printStats() { if (! m_loggerStats.isInfoEnabled()) return; int sum = m_stats.m_msEllipse + m_stats.m_msLine + m_stats.m_msPolyline + m_stats.m_msRectangle + m_stats.m_msSpline + m_stats.m_msSymbol + m_stats.m_msText + m_stats.m_msNode; QStringList stats; stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Op"), 10) .arg(QLatin1String("Count"), 10) .arg(QLatin1String("Total"), 10) .arg(QLatin1String("Min"), 10) .arg(QLatin1String("Max"), 10) .arg(QLatin1String("Avg"), 10)); stats.append(QStringLiteral("%1 %2 %3") .arg(QLatin1String("Draw Geometry"), 10) .arg(m_stats.m_drawCount, 10) .arg(sum, 10)); stats.append(QStringLiteral("%1 %2") .arg(QLatin1String("Recursive"), 10) .arg(m_stats.m_drawElementsRecursiveCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Ellipse"), 10) .arg(m_stats.m_drawEllipseCount, 10) .arg(m_stats.m_msEllipse, 10) .arg(m_stats.m_msEllipseMin, 10) .arg(m_stats.m_msEllipseMax, 10) .arg((double)m_stats.m_msEllipse / (double)m_stats.m_drawEllipseCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Line"), 10) .arg(m_stats.m_drawLineCount, 10) .arg(m_stats.m_msLine, 10) .arg(m_stats.m_msLineMin, 10) .arg(m_stats.m_msLineMax, 10) .arg((double)m_stats.m_msLine / (double)m_stats.m_drawLineCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Polyline"), 10) .arg(m_stats.m_drawPolylineCount, 10) .arg(m_stats.m_msPolyline, 10) .arg(m_stats.m_msPolylineMin, 10) .arg(m_stats.m_msPolylineMax, 10) .arg((double)m_stats.m_msPolyline / (double)m_stats.m_drawPolylineCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Rectangle"), 10) .arg(m_stats.m_drawRectangleCount, 10) .arg(m_stats.m_msRectangle, 10) .arg(m_stats.m_msRectangleMin, 10) .arg(m_stats.m_msRectangleMax, 10) .arg((double)m_stats.m_msRectangle / (double)m_stats.m_drawRectangleCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Spline"), 10) .arg(m_stats.m_drawSplineCount, 10) .arg(m_stats.m_msSpline, 10) .arg(m_stats.m_msSplineMin, 10) .arg(m_stats.m_msSplineMax, 10) .arg((double)m_stats.m_msSpline / (double)m_stats.m_drawSplineCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Symbol"), 10) .arg(m_stats.m_drawSymbolCount, 10) .arg(m_stats.m_msSymbol, 10) .arg(m_stats.m_msSymbolMin, 10) .arg(m_stats.m_msSymbolMax, 10) .arg((double)m_stats.m_msSymbol / (double)m_stats.m_drawSymbolCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Text"), 10) .arg(m_stats.m_drawTextCount, 10) .arg(m_stats.m_msText, 10) .arg(m_stats.m_msTextMin, 10) .arg(m_stats.m_msTextMax, 10) .arg((double)m_stats.m_msText / (double)m_stats.m_drawTextCount, 10)); stats.append(QStringLiteral("%1 %2 %3 %4 %5 %6") .arg(QLatin1String("Node"), 10) .arg(m_stats.m_drawNodeCount, 10) .arg(m_stats.m_msNode, 10) .arg(m_stats.m_msNodeMin, 10) .arg(m_stats.m_msNodeMax, 10) .arg((double)m_stats.m_msNode / (double)m_stats.m_drawNodeCount, 10)); INFO_LOG(m_loggerStats) << "GeometryModelRenderer Timing Statistics:\n" << stats.join(QLatin1String("\n")).toStdString(); } // void GeometryModelRenderer::printStats() } // namepace SituationMap