1#ifndef __GUIBENCHMARK_H__
2#define __GUIBENCHMARK_H__
4#include "eC_TList_doubleLinked.h"
8#include "GUIInputMedia.h"
9#include "GUIComponentManager.h"
13#include "GUIResourceManager.h"
42 const eC_UInt& uiWidth,
43 const eC_UInt& uiHeight,
44 const eC_UInt& uiStride,
45 const eC_UByte& ubBitsPerPixel,
46 eC_UByte* pkFramebuffer);
77 void SetNumberOfRuns(
const eC_UInt& uiNumberOfRuns) { m_uiNumberOfRuns = uiNumberOfRuns; }
82 void SetNumberOfPrimitives(
const eC_UInt& uiNumberOfPrimitives) { m_uiNumberOfPrimitives = uiNumberOfPrimitives; }
87 void SetNumberOfTexts(
const eC_UInt& uiNumberOfTexts) { m_uiNumberOfTexts = uiNumberOfTexts; }
92 void SetNumberOfBlits(
const eC_UInt& uiNumberOfBlits) { m_uiNumberOfBlits = uiNumberOfBlits; }
145 void SetFillScreen(
const eC_Bool& bActive) { m_bFillScreenActive = bActive; }
171 void SetTextSingle(
const eC_Bool& bActive) { m_bTextSingleActive = bActive; }
175 void SetTextMedium(
const eC_Bool& bActive) { m_bTextMediumActive = bActive; }
179 void SetTextLong(
const eC_Bool& bActive) { m_bTextLongActive = bActive; }
184 void SetBlitImg(
const eC_Bool& bActive) { m_bBlitImgActive = bActive; }
192 void SetBlitImgExt(
const eC_Bool& bActive) { m_bBlitImgExtActive = bActive; }
200 void SetRotate(
const eC_Bool& bActive) { m_bRotateActive = bActive; }
222 virtual void PollEvent();
228 class GUIHelper :
public CGUI
235 GUIHelper(
const eC_UInt& uiWidth,
const eC_UInt& uiHeight);
244 void SetColor(
const eC_UInt& uiColor = 0);
252 void SetColor(
const eC_UByte& ubRed,
const eC_UByte& ubGreen,
const eC_UByte& ubBlue,
const eC_UByte& ubAlpha);
257 void Clear(
const eC_UInt& uiColor = 0);
265 void Clear(
const eC_UByte& ubRed,
const eC_UByte& ubGreen,
const eC_UByte& ubBlue,
const eC_UByte& ubAlpha);
267 virtual eC_UInt GetIdleTime()
const
274 m_tDrawTime = eC_GetTicks64();
279 m_uiDrawTime += eC_GetMicroSec(eC_GetTicks64() - m_tDrawTime);
288 void GetTime(eC_Value& vDrawTime, eC_Value& vRefreshTime)
290 vDrawTime = eC_Div(eC_FromInt(m_uiDrawTime), eC_FromInt(1000));
291 vRefreshTime = eC_FromInt(m_uiRefreshTime);
298 eC_Time64 m_tDrawTime;
299 eC_UInt m_uiDrawTime;
300 eC_UInt m_uiRefreshTime;
310 eC_UInt BenchmarkFillScreen();
314 eC_UInt BenchmarkLine();
319 eC_UInt BenchmarkRect(
const eC_Bool& bFilled);
324 eC_UInt BenchmarkEllipse(
const eC_Bool& bFilled);
329 eC_UInt BenchmarkArc(
const eC_Bool& bFilled);
334 eC_UInt BenchmarkRing(
const eC_Bool& bFilled);
339 eC_UInt BenchmarkText_Single();
343 eC_UInt BenchmarkText_Medium();
347 eC_UInt BenchmarkText_Long();
352 eC_UInt BenchmarkBlitImg_IDXY();
357 eC_UInt BenchmarkBlitImgExt_IDXYWHSA(
const eC_Value& vFactor,
const eC_UByte& ubAlpha);
362 eC_UInt BenchmarkBlitImgNinePatch_IDRNA(
363 const eC_Value& vFactorX,
364 const eC_Value& vFactorY,
365 const eC_UByte& ubAlpha);
370 eC_UInt BenchmarkBlitImgExt_IDRRA(
const eC_Value& vFactor,
const eC_UByte& ubAlpha);
375 eC_UInt BenchmarkBlitImgExt_IDXYWHXYWHAAN(
376 const eC_UInt uiSrcX,
377 const eC_UInt uiSrcY,
378 const eC_UInt uiSrcWidth,
379 const eC_UInt uiSrcHeight,
380 const eC_Value& vFactor,
381 const eC_UByte& ubAlpha);
387 eC_Bool SetTestImage(
const eC_String& kImageName);
395 const eC_String& kFontName,
396 const eC_UInt& uiFontSize);
414 eC_Value CalcTextScore();
415 eC_Value CalcBlitScore();
419 void PrintPrimitivesSummary();
420 void PrintTextSummary();
421 void PrintBlitSummary();
424 void PrintSummaryLine(
const eC_String& kText, eC_Value& vNextLine, eC_Value& vNextColumn);
426 inline eC_Value GetXPos(
const eC_UInt& uiRuns,
const eC_UInt& uiActions)
430 return eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 5) * 2 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(50.3f));
432 return eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 7) * 2 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(49.7f));
435 inline eC_Value GetYPos(
const eC_UInt& uiRuns,
const eC_UInt& uiActions)
439 return eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 5) / 2 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(49.7f));
441 return eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 7) / 2 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(50.3f));
444 inline void GetX2Pos(
const eC_UInt& uiRuns,
const eC_UInt& uiActions, eC_Value& vX1, eC_Value& vX2)
447 vX1 = eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 5) * 3 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(50.3f));
449 vX1 = eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 7) * 3 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(49.7f));
450 vX2 = vX1 + eC_Abs(eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 5) * 3 - uiActions)) % (m_uiWidth + 100)));
453 inline void GetY2Pos(
const eC_UInt& uiRuns,
const eC_UInt& uiActions, eC_Value& vY1, eC_Value& vY2)
456 vY1 = eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 5) / 3 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(49.7f));
458 vY1 = eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 7) / 3 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(50.3f));
459 vY2 = vY1 + eC_Abs(eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 5) / 3 - uiActions)) % (m_uiWidth + 100)));
468 TimePerRun(eC_FromInt(0)),
469 OperationsPerSecond(0),
470 DrawTime(eC_FromInt(0)),
471 RefreshTime(eC_FromInt(0)),
472 HasAdditionalData(false),
473 FactorX(eC_FromInt(0)),
474 FactorY(eC_FromInt(0)),
479 const eC_String& kName,
480 const eC_Value& vTimePerRun,
481 const eC_UInt& uiOperationsPerSecond,
482 const eC_Value& vDrawTime,
483 const eC_Value& vRefreshTime,
484 const eC_Bool& bHasAdditionalData =
false,
485 const eC_Value& vFactorX = eC_FromInt(0),
486 const eC_Value& vFactorY = eC_FromInt(0),
487 const eC_UByte& ubAlpha = 0) :
490 TimePerRun(vTimePerRun),
491 OperationsPerSecond(uiOperationsPerSecond),
493 RefreshTime(vRefreshTime),
494 HasAdditionalData(bHasAdditionalData),
503 eC_UInt OperationsPerSecond;
505 eC_Value RefreshTime;
506 eC_Bool HasAdditionalData;
517 eC_UByte m_ubBitsPerPixel;
518 eC_UByte* m_pkFrameBuffer;
521 eC_UInt m_uiNumberOfRuns;
522 eC_UInt m_uiNumberOfPrimitives;
523 eC_UInt m_uiNumberOfTexts;
524 eC_UInt m_uiNumberOfBlits;
527 InputHelper* m_pkInput;
532 eC_UInt m_uiImageWidth;
533 eC_UInt m_uiImageHeight;
540 eC_String m_kSummaryFontName;
542 eC_UInt m_uiWaitTime;
549 eC_Value m_vRedrawTime;
550 eC_Value m_vRefreshTime;
555 eC_Bool m_bFillScreenActive;
556 TimeData_t m_kFillScreenData;
559 eC_Bool m_bPrimitiveLineActive;
560 TimeData_t m_kLineData;
561 eC_Bool m_bPrimitiveRectActive;
562 TimeData_t m_kRectData[2];
563 eC_Bool m_bPrimitiveEllipseActive;
564 TimeData_t m_kEllipseData[2];
565 eC_Bool m_bPrimitiveArcActive;
566 TimeData_t m_kArcData[2];
567 eC_Bool m_bPrimitiveRingActive;
568 TimeData_t m_kRingData[2];
571 eC_Bool m_bTextSingleActive;
572 TimeData_t m_kTextSingleData;
573 eC_Bool m_bTextMediumActive;
574 TimeData_t m_kTextMediumData;
575 eC_Bool m_bTextLongActive;
576 TimeData_t m_kTextLongData;
577 eC_Value m_vTextScore;
580 eC_Bool m_bBlitImgActive;
581 TimeData_t m_kBlitImgData;
582 eC_Bool m_bBlitImgNinePatchActive;
583 TimeData_t m_kBlitImgNinePatchData[10];
584 eC_Bool m_bBlitImgExtActive;
585 TimeData_t m_kBlitImgExtData[4];
586 eC_Bool m_bBlitSubImageActive;
587 TimeData_t m_kBlitSubImageData[4];
588 eC_Bool m_bRotateActive;
589 TimeData_t m_kRotateData;
590 eC_Bool m_bRotateSubImageActive;
591 TimeData_t m_kRotateSubImageData;
592 eC_Value m_vBlitScore;
594 eC_Value m_vNextLine;
595 eC_Value m_vNextColumn;
FontResource_t
List of font resource ids.
Definition: GUIFontResource.h:54
Helper Macros in Guiliani
ImageResource_t
Enumeration of image resource ids.
Definition: GUIImageResource.h:126
Definition: GUIBenchmark.h:32
void SetRotateSubImage(const eC_Bool &bActive)
Definition: GUIBenchmark.h:204
void SetRotate(const eC_Bool &bActive)
Definition: GUIBenchmark.h:200
void AddTestFont(const eC_String &kFontName)
void SetBlitImgExt(const eC_Bool &bActive)
Definition: GUIBenchmark.h:192
void SetNumberOfPrimitives(const eC_UInt &uiNumberOfPrimitives)
Definition: GUIBenchmark.h:82
void SetPrimitiveRect(const eC_Bool &bActive)
Definition: GUIBenchmark.h:154
void SetPrimitiveEllipse(const eC_Bool &bActive)
Definition: GUIBenchmark.h:158
void AddTestImage(const eC_String &kImageName)
void AllOff()
Definition: GUIBenchmark.h:120
void SetNumberOfBlits(const eC_UInt &uiNumberOfBlits)
Definition: GUIBenchmark.h:92
void SetPrimitiveRing(const eC_Bool &bActive)
Definition: GUIBenchmark.h:166
void SetPrimitiveArc(const eC_Bool &bActive)
Definition: GUIBenchmark.h:162
void SetTextLong(const eC_Bool &bActive)
Definition: GUIBenchmark.h:179
void SetNumberOfRuns(const eC_UInt &uiNumberOfRuns)
Definition: GUIBenchmark.h:77
void SetTextSingle(const eC_Bool &bActive)
Definition: GUIBenchmark.h:171
void SetFontForSummary(const eC_String &kFontName)
void SetBlitImg(const eC_Bool &bActive)
Definition: GUIBenchmark.h:184
void SetFillScreen(const eC_Bool &bActive)
Definition: GUIBenchmark.h:145
void SetBlitSubImage(const eC_Bool &bActive)
Definition: GUIBenchmark.h:196
CGUIBenchmark(const eC_UInt &uiWidth, const eC_UInt &uiHeight, const eC_UInt &uiStride, const eC_UByte &ubBitsPerPixel, eC_UByte *pkFramebuffer)
void SetBlitImgNinePatch(const eC_Bool &bActive)
Definition: GUIBenchmark.h:188
void SetNumberOfTexts(const eC_UInt &uiNumberOfTexts)
Definition: GUIBenchmark.h:87
void SetTextMedium(const eC_Bool &bActive)
Definition: GUIBenchmark.h:175
void SetPrimitiveLine(const eC_Bool &bActive)
Definition: GUIBenchmark.h:150
void SetSummaryWaitTime(const eC_UInt &uiWaitTime)
void AllOn()
Definition: GUIBenchmark.h:96
GUI base class for any Guiliani application.
Definition: GUI.h:39
The graphics wrapper base class.
Definition: GfxWrap.h:88