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
{
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()));
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();