@@ -474,85 +474,86 @@ static float Metric(const char* text, int n)
474
474
TEST (dmFontRenderer, Layout)
475
475
{
476
476
const uint32_t lines_count = 256 ;
477
+ const bool skip_whitespace = true ;
477
478
dmRender::TextLine lines[lines_count];
478
479
int total_lines;
479
480
const float char_width = 4 ;
480
481
float w;
481
- total_lines = dmRender::Layout (" " , 100 , lines, lines_count, &w, Metric);
482
+ total_lines = dmRender::Layout (" " , 100 , lines, lines_count, &w, Metric, skip_whitespace );
482
483
ASSERT_EQ (0 , total_lines);
483
484
ASSERT_EQ (0 , w);
484
485
485
- total_lines = dmRender::Layout (" x" , 100 , lines, lines_count, &w, Metric);
486
+ total_lines = dmRender::Layout (" x" , 100 , lines, lines_count, &w, Metric, skip_whitespace );
486
487
ASSERT_EQ (1 , total_lines);
487
488
ASSERT_LINE (0 , 1 , lines, 0 );
488
489
ASSERT_EQ (char_width * 1 , w);
489
490
490
- total_lines = dmRender::Layout (" x\x00 123" , 100 , lines, lines_count, &w, Metric);
491
+ total_lines = dmRender::Layout (" x\x00 123" , 100 , lines, lines_count, &w, Metric, skip_whitespace );
491
492
ASSERT_EQ (1 , total_lines);
492
493
ASSERT_LINE (0 , 1 , lines, 0 );
493
494
ASSERT_EQ (char_width * 1 , w);
494
495
495
- total_lines = dmRender::Layout (" x" , 0 , lines, lines_count, &w, Metric);
496
+ total_lines = dmRender::Layout (" x" , 0 , lines, lines_count, &w, Metric, skip_whitespace );
496
497
ASSERT_EQ (1 , total_lines);
497
498
ASSERT_LINE (0 , 1 , lines, 0 );
498
499
ASSERT_EQ (char_width * 1 , w);
499
500
500
- total_lines = dmRender::Layout (" foo" , 3 * char_width, lines, lines_count, &w, Metric);
501
+ total_lines = dmRender::Layout (" foo" , 3 * char_width, lines, lines_count, &w, Metric, skip_whitespace );
501
502
ASSERT_EQ (1 , total_lines);
502
503
ASSERT_LINE (0 , 3 , lines, 0 );
503
504
ASSERT_EQ (char_width * 3 , w);
504
505
505
- total_lines = dmRender::Layout (" foo" , 3 * char_width - 1 , lines, lines_count, &w, Metric);
506
+ total_lines = dmRender::Layout (" foo" , 3 * char_width - 1 , lines, lines_count, &w, Metric, skip_whitespace );
506
507
ASSERT_EQ (1 , total_lines);
507
508
ASSERT_LINE (0 , 3 , lines, 0 );
508
509
ASSERT_EQ (char_width * 3 , w);
509
510
510
- total_lines = dmRender::Layout (" foo bar" , 3 * char_width, lines, lines_count, &w, Metric);
511
+ total_lines = dmRender::Layout (" foo bar" , 3 * char_width, lines, lines_count, &w, Metric, skip_whitespace );
511
512
ASSERT_EQ (2 , total_lines);
512
513
ASSERT_LINE (0 , 3 , lines, 0 );
513
514
ASSERT_LINE (4 , 3 , lines, 1 );
514
515
ASSERT_EQ (char_width * 3 , w);
515
516
516
- total_lines = dmRender::Layout (" foo bar" , 1000 , lines, lines_count, &w, Metric);
517
+ total_lines = dmRender::Layout (" foo bar" , 1000 , lines, lines_count, &w, Metric, skip_whitespace );
517
518
ASSERT_EQ (1 , total_lines);
518
519
ASSERT_LINE (0 , 7 , lines, 0 );
519
520
ASSERT_EQ (char_width * 7 , w);
520
521
521
- total_lines = dmRender::Layout (" foo bar" , 1000 , lines, lines_count, &w, Metric);
522
+ total_lines = dmRender::Layout (" foo bar" , 1000 , lines, lines_count, &w, Metric, skip_whitespace );
522
523
ASSERT_EQ (1 , total_lines);
523
524
ASSERT_LINE (0 , 8 , lines, 0 );
524
525
ASSERT_EQ (char_width * 8 , w);
525
526
526
- total_lines = dmRender::Layout (" foo\n\n bar" , 3 * char_width, lines, lines_count, &w, Metric);
527
+ total_lines = dmRender::Layout (" foo\n\n bar" , 3 * char_width, lines, lines_count, &w, Metric, skip_whitespace );
527
528
ASSERT_EQ (3 , total_lines);
528
529
ASSERT_LINE (0 , 3 , lines, 0 );
529
530
ASSERT_LINE (4 , 0 , lines, 1 );
530
531
ASSERT_LINE (5 , 3 , lines, 2 );
531
532
ASSERT_EQ (char_width * 3 , w);
532
533
533
534
// 0x200B = Unicode "zero width space", UTF8 representation: E2 80 8B
534
- total_lines = dmRender::Layout (" foo" " \xe2\x80\x8b " " bar" , 3 * char_width, lines, lines_count, &w, Metric);
535
+ total_lines = dmRender::Layout (" foo" " \xe2\x80\x8b " " bar" , 3 * char_width, lines, lines_count, &w, Metric, skip_whitespace );
535
536
ASSERT_EQ (2 , total_lines);
536
537
ASSERT_LINE (0 , 3 , lines, 0 );
537
538
ASSERT_LINE (6 , 3 , lines, 1 );
538
539
ASSERT_EQ (char_width * 3 , w);
539
540
540
541
// Note that second line would include a "zero width space" as first
541
542
// character since we don't trim whitespace currently.
542
- total_lines = dmRender::Layout (" foo" " \xe2\x80\x8b\xe2\x80\x8b " " bar" , 3 * char_width, lines, lines_count, &w, Metric);
543
+ total_lines = dmRender::Layout (" foo" " \xe2\x80\x8b\xe2\x80\x8b " " bar" , 3 * char_width, lines, lines_count, &w, Metric, skip_whitespace );
543
544
ASSERT_EQ (2 , total_lines);
544
545
ASSERT_LINE (0 , 3 , lines, 0 );
545
546
ASSERT_LINE (6 , 4 , lines, 1 );
546
547
ASSERT_EQ (char_width * 4 , w);
547
548
548
549
// åäö
549
- total_lines = dmRender::Layout (" \xc3\xa5\xc3\xa4\xc3\xb6 " , 3 * char_width, lines, lines_count, &w, Metric);
550
+ total_lines = dmRender::Layout (" \xc3\xa5\xc3\xa4\xc3\xb6 " , 3 * char_width, lines, lines_count, &w, Metric, skip_whitespace );
550
551
ASSERT_EQ (1 , total_lines);
551
552
ASSERT_EQ (char_width * 3 , lines[0 ].m_Width );
552
553
ASSERT_LINE (0 , 3 , lines, 0 );
553
554
ASSERT_EQ (char_width * 3 , w);
554
555
555
- total_lines = dmRender::Layout (" Welcome to the Kingdom of Games..." , 0 , lines, lines_count, &w, Metric);
556
+ total_lines = dmRender::Layout (" Welcome to the Kingdom of Games..." , 0 , lines, lines_count, &w, Metric, skip_whitespace );
556
557
ASSERT_EQ (6 , total_lines);
557
558
ASSERT_LINE (0 , 7 , lines, 0 );
558
559
ASSERT_LINE (8 , 2 , lines, 1 );
@@ -621,6 +622,16 @@ TEST_F(dmRenderTest, GetTextMetrics)
621
622
ASSERT_EQ (ExpectedHeight (lineheight, numlines, leading), metrics.m_Height );
622
623
}
623
624
625
+ TEST_F (dmRenderTest, GetTextMetricsSkipWhitespace)
626
+ {
627
+ dmRender::TextMetrics metricsSingleLine;
628
+ dmRender::TextMetrics metricsMultiLine;
629
+
630
+ dmRender::GetTextMetrics (m_SystemFontMap, " Hello " , 0 , false , 1 .0f , 0 .0f , &metricsSingleLine);
631
+ dmRender::GetTextMetrics (m_SystemFontMap, " Hello " , 0 , true , 1 .0f , 0 .0f , &metricsMultiLine);
632
+ ASSERT_NE (metricsMultiLine.m_Width , metricsSingleLine.m_Width );
633
+ }
634
+
624
635
TEST_F (dmRenderTest, TextAlignment)
625
636
{
626
637
dmRender::TextMetrics metrics;
0 commit comments