It has been a while since I last worked on Aesalon proper.
[aesalon.git] / module / modules / dynamicMemory / renderer / DensityRenderer.cpp
blob75325bccd9e1c89e9215a164491c13419cc94db3
1 #include <iostream>
3 #include "DensityRenderer.h"
5 DensityRenderer::DensityRenderer(DynamicMemoryDataCache *dataCache) : AbstractRenderer<DynamicMemoryDataCache>(dataCache) {
9 DensityRenderer::~DensityRenderer() {
13 void DensityRenderer::renderRange(VisualizationWrapper *visualization, const DataRange &range, bool *abort) {
14 class Visitor : public CacheVisitor {
15 public:
16 bool *m_abort;
17 VisualizationWrapper *m_visualization;
18 virtual void handleBlock(Block *block) {
19 std::cout << "Drawing box . . ." << std::endl;
20 DataCoord start(block->allocTime(), double(block->address()));
21 DataCoord end(block->releaseTime(), double(block->address() + block->size()));
22 std::cout << "\tfrom (" << block->allocTime() << "," << block->address() << ") to (" << block->releaseTime() << "," << block->address() + block->size() << ") . . ." << std::endl;
24 /* Create a 24-bit integer with the allocTime and address (disregard size for now) */
25 uint32_t colour = block->allocTime() & 0xffffff;
26 colour ^= block->address() & 0xffffff;
28 m_visualization->setFillColour(colour & 0xff, (colour >> 8) & 0xff, (colour >> 16) & 0xff, 128);
29 m_visualization->drawBox(DataRange(block->allocTime(), block->address(), block->releaseTime(), block->address() + block->size()));
31 } visitor;
32 visitor.m_abort = abort;
33 visitor.m_visualization = visualization;
34 visualization->clear();
35 visualization->lock();
36 dataCache()->visit(range, &visitor);
37 visualization->touch(dataCache()->heartbeatTimestamp());
38 visualization->unlock();
41 DataRange DensityRenderer::defaultRange() const {
42 return dataCache()->densityRange();