Guiliani  Version 2.5 revision 7293 (documentation build 13)
GUIBenchmark.h
1#ifndef __GUIBENCHMARK_H__
2#define __GUIBENCHMARK_H__
3
4#include "eC_TList_doubleLinked.h"
5
6#include "GUI.h"
7#include "GUIEvent.h"
8#include "GUIInputMedia.h"
9#include "GUIComponentManager.h"
10//#include "GfxWrap.h"
11#include "GUITrace.h"
12
13#include "GUIResourceManager.h"
14#include "GUIImageResource.h"
15
16
32{
33public:
42 const eC_UInt& uiWidth,
43 const eC_UInt& uiHeight,
44 const eC_UInt& uiStride,
45 const eC_UByte& ubBitsPerPixel,
46 eC_UByte* pkFramebuffer);
47
49
52 void Run();
53
57 void AddTestImage(const eC_String& kImageName);
58
62 void AddTestFont(const eC_String& kFontName);
63
67 void SetFontForSummary(const eC_String& kFontName);
68
72 void SetSummaryWaitTime(const eC_UInt& uiWaitTime);
73
77 void SetNumberOfRuns(const eC_UInt& uiNumberOfRuns) { m_uiNumberOfRuns = uiNumberOfRuns; }
78
82 void SetNumberOfPrimitives(const eC_UInt& uiNumberOfPrimitives) { m_uiNumberOfPrimitives = uiNumberOfPrimitives; }
83
87 void SetNumberOfTexts(const eC_UInt& uiNumberOfTexts) { m_uiNumberOfTexts = uiNumberOfTexts; }
88
92 void SetNumberOfBlits(const eC_UInt& uiNumberOfBlits) { m_uiNumberOfBlits = uiNumberOfBlits; }
93
96 void AllOn()
97 {
98 SetFillScreen(true);
99
100 SetPrimitiveLine(true);
101 SetPrimitiveRect(true);
103 SetPrimitiveArc(true);
104 SetPrimitiveRing(true);
105
106 SetTextSingle(true);
107 SetTextMedium(true);
108 SetTextLong(true);
109
110 SetBlitImg(true);
112 SetBlitImgExt(true);
113 SetBlitSubImage(true);
114 SetRotate(true);
115 SetRotateSubImage(true);
116 }
117
120 void AllOff()
121 {
122 SetFillScreen(false);
123
124 SetPrimitiveLine(false);
125 SetPrimitiveRect(false);
126 SetPrimitiveEllipse(false);
127 SetPrimitiveArc(false);
128 SetPrimitiveRing(false);
129
130 SetTextSingle(false);
131 SetTextMedium(false);
132 SetTextLong(false);
133
134 SetBlitImg(false);
135 SetBlitImgNinePatch(false);
136 SetBlitImgExt(false);
137 SetBlitSubImage(false);
138 SetRotate(false);
139 SetRotateSubImage(false);
140 }
141
145 void SetFillScreen(const eC_Bool& bActive) { m_bFillScreenActive = bActive; }
146
150 void SetPrimitiveLine(const eC_Bool& bActive) { m_bPrimitiveLineActive = bActive; }
154 void SetPrimitiveRect(const eC_Bool& bActive) { m_bPrimitiveRectActive = bActive; }
158 void SetPrimitiveEllipse(const eC_Bool& bActive) { m_bPrimitiveEllipseActive = bActive; }
162 void SetPrimitiveArc(const eC_Bool& bActive) { m_bPrimitiveArcActive = bActive; }
166 void SetPrimitiveRing(const eC_Bool& bActive) { m_bPrimitiveRingActive = bActive; }
167
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; }
180
184 void SetBlitImg(const eC_Bool& bActive) { m_bBlitImgActive = bActive; }
188 void SetBlitImgNinePatch(const eC_Bool& bActive) { m_bBlitImgNinePatchActive = bActive; }
192 void SetBlitImgExt(const eC_Bool& bActive) { m_bBlitImgExtActive = bActive; }
196 void SetBlitSubImage(const eC_Bool& bActive) { m_bBlitSubImageActive = bActive; }
200 void SetRotate(const eC_Bool& bActive) { m_bRotateActive = bActive; }
204 void SetRotateSubImage(const eC_Bool& bActive) { m_bRotateSubImageActive = bActive; }
205
206 // helper classes
207private:
211 class InputHelper : public CGUIInputMedia
212 {
213 public:
216 InputHelper();
217
222 virtual CGUIEvent* GetEvent(eC_UInt uiIdleTime);
223 };
224
228 class GUIHelper : public CGUI
229 {
230 public:
235 GUIHelper(const eC_UInt& uiWidth, const eC_UInt& uiHeight);
236
239 void Refresh();
240
244 void SetColor(const eC_UInt& uiColor = 0);
245
252 void SetColor(const eC_UByte& ubRed, const eC_UByte& ubGreen, const eC_UByte& ubBlue, const eC_UByte& ubAlpha);
253
257 void Clear(const eC_UInt& uiColor = 0);
258
265 void Clear(const eC_UByte& ubRed, const eC_UByte& ubGreen, const eC_UByte& ubBlue, const eC_UByte& ubAlpha);
266
267 private:
268 eC_UInt m_uiWidth;
269 eC_UInt m_uiHeight;
270 };
271
272private:
276 eC_UInt BenchmarkFillScreen();
277
280 eC_UInt BenchmarkLine();
281
285 eC_UInt BenchmarkRect(const eC_Bool& bFilled);
286
290 eC_UInt BenchmarkEllipse(const eC_Bool& bFilled);
291
295 eC_UInt BenchmarkArc(const eC_Bool& bFilled);
296
300 eC_UInt BenchmarkRing(const eC_Bool& bFilled);
301
302 // text
305 eC_UInt BenchmarkText_Single();
306
309 eC_UInt BenchmarkText_Medium();
310
313 eC_UInt BenchmarkText_Long();
314
318 eC_UInt BenchmarkBlitImg_IDXY();
319
323 eC_UInt BenchmarkBlitImgExt_IDXYWHSA(const eC_Value& vFactor, const eC_UByte& ubAlpha);
324
328 eC_UInt BenchmarkBlitImgNinePatch_IDRNA(
329 const eC_Value& vFactorX,
330 const eC_Value& vFactorY,
331 const eC_UByte& ubAlpha);
332
336 eC_UInt BenchmarkBlitImgExt_IDRRA(const eC_Value& vFactor, const eC_UByte& ubAlpha);
337
341 eC_UInt BenchmarkBlitImgExt_IDXYWHXYWHAAN(
342 const eC_UInt uiSrcX,
343 const eC_UInt uiSrcY,
344 const eC_UInt uiSrcWidth,
345 const eC_UInt uiSrcHeight,
346 const eC_Value& vFactor,
347 const eC_UByte& ubAlpha);
348
353 eC_Bool SetTestImage(const eC_String& kImageName);
354
360 eC_Bool SetTestFont(
361 const eC_String& kFontName,
362 const eC_UInt& uiFontSize);
363
368 eC_Bool StartTest();
369
373 eC_UInt EndTest();
374
378 eC_UInt GetTime();
379
382 void PrintSummary();
383
384 void PrintSummaryLine(const eC_String& kText, eC_Value& vNextLine, eC_Value& vNextColumn);
385
386 inline eC_Value GetXPos(const eC_UInt& uiRuns, const eC_UInt& uiActions)
387 {
388 // have -50 to 50 variance
389 if (uiActions % 2)
390 return eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 5) * 2 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(50.3f));
391 else
392 return eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 7) * 2 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(49.7f));
393 }
394
395 inline eC_Value GetYPos(const eC_UInt& uiRuns, const eC_UInt& uiActions)
396 {
397 // have -50 to 50 variance
398 if (uiActions % 2)
399 return eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 5) / 2 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(49.7f));
400 else
401 return eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 7) / 2 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(50.3f));
402 }
403
404 inline void GetX2Pos(const eC_UInt& uiRuns, const eC_UInt& uiActions, eC_Value& vX1, eC_Value& vX2)
405 {
406 if (uiActions % 2)
407 vX1 = eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 5) * 3 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(50.3f));
408 else
409 vX1 = eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 7) * 3 - uiActions)) % (m_uiWidth + 100) - eC_FromFloat(49.7f));
410 vX2 = vX1 + eC_Abs(eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 5) * 3 - uiActions)) % (m_uiWidth + 100)));
411 }
412
413 inline void GetY2Pos(const eC_UInt& uiRuns, const eC_UInt& uiActions, eC_Value& vY1, eC_Value& vY2)
414 {
415 if (uiActions % 2)
416 vY1 = eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 5) / 3 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(49.7f));
417 else
418 vY1 = eC_FromInt(((uiRuns + 10) * uiActions * ((m_uiNumberOfRuns + 7) / 3 - uiActions)) % (m_uiHeight + 100) - eC_FromFloat(50.3f));
419 vY2 = vY1 + eC_Abs(eC_FromInt(((uiRuns + 20) * uiActions * ((m_uiNumberOfRuns + 5) / 3 - uiActions)) % (m_uiWidth + 100)));
420 }
421
422private:
423 struct TimeData_t
424 {
425 TimeData_t() :
426 DataPresent(false),
427 Name(""),
428 TimePerRun(eC_FromInt(0)),
429 OperationsPerSecond(0),
430 HasAdditionalData(false),
431 FactorX(eC_FromInt(0)),
432 FactorY(eC_FromInt(0)),
433 Alpha(0)
434 {}
435
436 TimeData_t(
437 const eC_String& kName,
438 const eC_Value& vTimePerRun,
439 const eC_UInt& uiOperationsPerSecond,
440 const eC_Bool& bHasAdditionalData = false,
441 const eC_Value& vFactorX = eC_FromInt(0),
442 const eC_Value& vFactorY = eC_FromInt(0),
443 const eC_UByte& ubAlpha = 0) :
444 DataPresent(true),
445 Name(kName),
446 TimePerRun(vTimePerRun),
447 OperationsPerSecond(uiOperationsPerSecond),
448 HasAdditionalData(bHasAdditionalData),
449 FactorX(vFactorX),
450 FactorY(vFactorY),
451 Alpha(ubAlpha)
452 {}
453
454 eC_Bool DataPresent;
455 eC_String Name;
456 eC_Value TimePerRun;
457 eC_UInt OperationsPerSecond;
458 eC_Bool HasAdditionalData;
459 eC_Value FactorX;
460 eC_Value FactorY;
461 eC_UByte Alpha;
462 };
463
464private:
465 // sizes and framebuffer access
466 eC_UInt m_uiWidth;
467 eC_UInt m_uiHeight;
468 eC_UInt m_uiStride;
469 eC_UByte m_ubBitsPerPixel;
470 eC_UByte* m_pkFrameBuffer;
471
472 // helpers
473 eC_UInt m_uiNumberOfRuns;
474 eC_UInt m_uiNumberOfPrimitives;
475 eC_UInt m_uiNumberOfTexts;
476 eC_UInt m_uiNumberOfBlits;
477 GUIHelper* m_pkGUI;
478 CGfxWrap* m_pkGfxWrap;
479 InputHelper* m_pkInput;
480
481 // image
483 ImageResource_t m_eImageID;
484 eC_UInt m_uiImageWidth;
485 eC_UInt m_uiImageHeight;
486
487 // font
489 FontResource_t m_eFontID;
490
491 // summary
492 eC_String m_kSummaryFontName;
493 FontResource_t m_eSummaryFontID;
494 eC_UInt m_uiWaitTime;
495
496 // time
497 eC_Time64 m_tTime;
498 eC_UInt m_uiStartMS;
499 eC_UInt m_uiEndMS;
500
501 // test-flags
502
503 // fill screen
504 eC_Bool m_bFillScreenActive;
505 TimeData_t m_kFillScreenData;
506
507 // primitives
508 eC_Bool m_bPrimitiveLineActive;
509 TimeData_t m_kLineData;
510 eC_Bool m_bPrimitiveRectActive;
511 TimeData_t m_kRectData[2];
512 eC_Bool m_bPrimitiveEllipseActive;
513 TimeData_t m_kEllipseData[2];
514 eC_Bool m_bPrimitiveArcActive;
515 TimeData_t m_kArcData[2];
516 eC_Bool m_bPrimitiveRingActive;
517 TimeData_t m_kRingData[2];
518
519 // texts
520 eC_Bool m_bTextSingleActive;
521 TimeData_t m_kTextSingleData;
522 eC_Bool m_bTextMediumActive;
523 TimeData_t m_kTextMediumData;
524 eC_Bool m_bTextLongActive;
525 TimeData_t m_kTextLongData;
526
527 // blits
528 eC_Bool m_bBlitImgActive;
529 TimeData_t m_kBlitImgData;
530 eC_Bool m_bBlitImgNinePatchActive;
531 TimeData_t m_kBlitImgNinePatchData[10];
532 eC_Bool m_bBlitImgExtActive;
533 TimeData_t m_kBlitImgExtData[4];
534 eC_Bool m_bBlitSubImageActive;
535 TimeData_t m_kBlitSubImageData[4];
536 eC_Bool m_bRotateActive;
537 TimeData_t m_kRotateData;
538 eC_Bool m_bRotateSubImageActive;
539 TimeData_t m_kRotateSubImageData;
540
541 eC_Value m_vNextLine;
542 eC_Value m_vNextColumn;
543};
544
545#endif
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
Base class for Guiliani Events.
Definition: GUIEvent.h:26
GUI base class for any Guiliani application.
Definition: GUI.h:47
Definition: GUIInputMedia.h:29
The graphics wrapper base class.
Definition: GfxWrap.h:84