Chromium Code Reviews| Index: trunk/debugger/SkDebugger.cpp |
| =================================================================== |
| --- trunk/debugger/SkDebugger.cpp (revision 7896) |
| +++ trunk/debugger/SkDebugger.cpp (working copy) |
| @@ -7,7 +7,9 @@ |
| */ |
| #include "SkDebugger.h" |
| +#include "SkString.h" |
| + |
| SkDebugger::SkDebugger() { |
| // Create this some other dynamic way? |
| fDebugCanvas = new SkDebugCanvas(100, 100); |
| @@ -43,3 +45,84 @@ |
| newPicture->endRecording(); |
| return newPicture; |
| } |
| + |
| +void SkDebugger::getOverviewText(const SkTDArray<double>* typeTimes, |
| + double totTime, |
|
robertphillips
2013/03/07 22:19:11
SkString*
borenet
2013/03/08 13:00:26
Done.
|
| + SkString& overview) { |
|
robertphillips
2013/03/07 22:19:11
this->?
borenet
2013/03/08 13:00:26
Done.
|
| + const SkTDArray<SkDrawCommand*>& commands = getDrawCommands(); |
| + |
|
borenet
2013/03/07 21:38:08
The below is copy/pasted and minimally modified.
|
| + SkTDArray<int> counts; |
| + counts.setCount(LAST_DRAWTYPE_ENUM+1); |
| + for (int i = 0; i < LAST_DRAWTYPE_ENUM+1; ++i) { |
| + counts[i] = 0; |
| + } |
| + |
| + for (int i = 0; i < commands.count(); i++) { |
| + counts[commands[i]->getType()]++; |
| + } |
| + |
| + overview.reset(); |
| + int total = 0; |
| +#ifdef SK_DEBUG |
| + double totPercent = 0, tempSum = 0; |
| +#endif |
| + for (int i = 0; i < LAST_DRAWTYPE_ENUM+1; ++i) { |
| + if (0 == counts[i]) { |
| + // if there were no commands of this type then they should've consumed no time |
| + SkASSERT(NULL == typeTimes || 0.0 == (*typeTimes)[i]); |
| + continue; |
| + } |
| + |
| + overview.append(SkDrawCommand::GetCommandString((DrawType) i)); |
| + overview.append(": "); |
| + overview.appendScalar(counts[i]); |
| + if (NULL != typeTimes) { |
| + overview.append(" - "); |
| + overview.appendScalar((*typeTimes)[i]); |
| + overview.append("ms"); |
| + overview.append(" - "); |
| + double percent = 100.0*(*typeTimes)[i]/totTime; |
| + overview.appendScalar(percent); |
| + overview.append("%"); |
| +#ifdef SK_DEBUG |
| + totPercent += percent; |
| + tempSum += (*typeTimes)[i]; |
| +#endif |
| + } |
| + overview.append("<br/>"); |
| + total += counts[i]; |
| + } |
| +#ifdef SK_DEBUG |
| + if (NULL != typeTimes) { |
| + SkASSERT(SkScalarNearlyEqual(totPercent, 100.0)); |
| + SkASSERT(SkScalarNearlyEqual(tempSum, totTime)); |
| + } |
| +#endif |
| + |
| + if (totTime > 0.0) { |
| + overview.append("Total Time: "); |
| + overview.appendScalar(totTime); |
| + overview.append("ms"); |
| +#ifdef SK_DEBUG |
| + overview.append(" "); |
| + overview.appendScalar(totPercent); |
| + overview.append("% "); |
| +#endif |
| + overview.append("<br/>"); |
| + } |
| + |
| + SkString totalStr; |
| + totalStr.append("Total Draw Commands: "); |
| + totalStr.appendScalar(total); |
| + totalStr.append("<br/>"); |
| + overview.insert(0, totalStr); |
| + |
| + overview.append("<br/>"); |
| + overview.append("SkPicture Width: "); |
|
robertphillips
2013/03/07 22:19:11
Remove this comment? It doesn't seem to add anythi
borenet
2013/03/08 13:00:26
Done.
|
| + // NOTE(chudy): This is where we can pull out the SkPictures width. |
| + overview.appendScalar(pictureWidth()); |
| + overview.append("px<br/>"); |
| + overview.append("SkPicture Height: "); |
| + overview.appendScalar(pictureHeight()); |
| + overview.append("px"); |
| +} |