/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
DALI_TEST_EQUALS( naturalSize, Vector2( 82.f, 20.f ), Math::MACHINE_EPSILON_1000, TEST_LOCATION );
const float height = textVisual.GetHeightForWidth( 40.f );
- DALI_TEST_EQUALS( height, 57.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
+ DALI_TEST_EQUALS( height, 60.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION );
// Test that NPatchVisual is replaced with debug visual
// TEST_NPATCH_FILE_NAME: image_01.9.jpg
// single line, line spacing = 0px
{
const float EXPECTED_SPACING = 0.0f;
- const Vector2 EXPECTED_LAYOUT_SIZE( 360.0f, 19.0f);
- const Vector3 EXPECTED_NATURAL_SIZE( 360.0f, 20.0f, 0.0f );
+ const Vector2 EXPECTED_LAYOUT_SIZE( 349.0f, 19.0f);
+ const Vector3 EXPECTED_NATURAL_SIZE( 350.0f, 20.0f, 0.0f );
controller->SetText(textSingle);
controller->Relayout(size);
// single line, line spacing = 20px
{
const float EXPECTED_SPACING = 20.0f;
- const Vector2 EXPECTED_LAYOUT_SIZE( 360.0f, 19.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 360.0f, 40.0f, 0.0f );
+ const Vector2 EXPECTED_LAYOUT_SIZE( 349.0f, 19.0f );
+ const Vector3 EXPECTED_NATURAL_SIZE( 350.0f, 40.0f, 0.0f );
controller->SetText(textSingle);
controller->Relayout(size);
// multi-line, line spacing = 0px
{
const float EXPECTED_SPACING = 0.0f;
- const Vector2 EXPECTED_LAYOUT_SIZE( 350.0f, 39.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 124.0f, 58.0f, 0.0f );
+ const Vector2 EXPECTED_LAYOUT_SIZE( 339.0f, 39.0f );
+ const Vector3 EXPECTED_NATURAL_SIZE( 122.0f, 58.0f, 0.0f );
controller->SetText(textMulti);
controller->Relayout(size);
// multi-line, line spacing = 20px
{
const float EXPECTED_SPACING = 20.0f;
- const Vector2 EXPECTED_LAYOUT_SIZE( 124.0f, 57.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 124.0f, 118.0f, 0.0f );
+ const Vector2 EXPECTED_LAYOUT_SIZE( 121.0f, 57.0f );
+ const Vector3 EXPECTED_NATURAL_SIZE( 122.0f, 118.0f, 0.0f );
controller->SetText(textMulti);
controller->Relayout(size);
// multi-line, line spacing = 30px
{
const float EXPECTED_SPACING = 30.0f;
- const Vector2 EXPECTED_LAYOUT_SIZE( 124.0f, 117.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 124.0f, 148.0f, 0.0f );
+ const Vector2 EXPECTED_LAYOUT_SIZE( 121.0f, 117.0f );
+ const Vector3 EXPECTED_NATURAL_SIZE( 122.0f, 148.0f, 0.0f );
controller->SetText(textMulti);
controller->Relayout(size);
CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
CharacterIndex logicalIndex04[] = { 0, 5u, 6u, 11u, 11u,
12u, 16u, 17u, 21u, 21u,
- 22u, 25u, 31u, 32u, 35u, 34u, 40u,
+ 22u, 25u, 30u, 32u, 35u, 34u, 40u,
41u };
bool isCharacterHit04[] = { false, true, true, true, false,
false, true, true, true, false,
CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
CharacterIndex logicalIndex05[] = { 0, 10u, 19u, 28u, 39u, 44u,
- 45u, 49u, 59u, 66u, 78u, 87u,
+ 45u, 48u, 59u, 66u, 78u, 87u,
89u, 96u, 106u, 115u, 124u, 133u,
134u, 145u, 154u, 162u, 171u, 179u,
180u, 184u, 191u, 203u, 212u,
- 221u, 222u, 233u, 240u, 251u, 265u };
+ 221u, 222u, 233u, 241u, 251u, 265u };
bool isCharacterHit05[] = { false, true, true, true, true, false,
false, true, true, true, true, false,
false, true, true, true, true, false,
CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP,
CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP, CharacterHitTest::TAP };
- CharacterIndex logicalIndex06[] = { 0, 10u, 19u, 28u, 39u, 44u,
+ CharacterIndex logicalIndex06[] = { 0, 11u, 19u, 28u, 39u, 44u,
45u, 48u, 57u, 65u, 78u, 87u,
89u, 96u, 107u, 114u, 124u, 133u,
134u, 144u, 154u, 162u, 171u, 178u,
float visualX08[] = { 7.f };
float visualY08[] = { 12.f };
CharacterHitTest::Mode mode08[] = { CharacterHitTest::TAP };
- CharacterIndex logicalIndex08[] = { 2u };
+ CharacterIndex logicalIndex08[] = { 1u };
bool isCharacterHit08[] = { true };
struct GetClosestCursorIndexData data[] =
{
tet_infoline(" UtcDaliGetCursorPosition");
- float visualX08[] = { 4.f };
+ float visualX08[] = { 5.f };
float visualY08[] = { 0.f };
CharacterIndex logicalIndex08[] = { 1u };
Size textSize00( 100.f, 100.f );
Size textSize01( 120.0f, 50.0f );
- float positions01[] = { 0.f, 11.f, 23.f, 32.f, 42.f, 52.f, 62.f, 73.f, 83.f, 95.f };
+ float positions01[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 50.0f, 60.0f, 70.0f, 80.0f, 91.0f };
Size textSize02( 120.0f, 50.0f );
- float positions02[] = { 0.f, 11.f, 23.f, 32.f, 42.f, 52.f, 62.f, 73.f, 83.f, 93.f, 103.f, 112.f, 0.f, 10.f, 22.f, 31.f, 41.f, 51.f, 61.f, 72.f, 82.f, 94.f };
+ float positions02[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f, 100.0f, 109.0f, 0.0f, 10.0f, 20.0f, 30.0f, 40.0f, 49.0f, 59.0f, 69.0f, 79.0f, 90.0f };
Size textSize03( 120.0f, 60.0f );
- float positions03[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 0.f, 10.f, 19.f, 29.f, 39.f, 46.f, 50.f, 66.f, 76.f, 85.f, 0.f, 15.f, 25.f, 30.f, 38.f, 48.f, 64.f, 73.f, 79.f, 93.f };
+ float positions03[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 0.0f, 8.0f, 18.0f, 27.0f, 38.0f, 44.0f, 49.0f, 63.0f, 73.0f, 82.0f, 0.0f, 14.0f, 24.0f, 28.0f, 36.0f, 47.0f, 61.0f, 70.0f, 76.0f, 88.0f };
Size textSize04( 120.0f, 60.0f );
- float positions04[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 67.f, 77.f, 86.f, 96.f, 106.f, 113.f, 0.f, 15.f, 25.f, 34.f, 39.f, 55.f, 65.f, 69.f, 78.f, 88.f, 104.f, 112.f, 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 67.f, 77.f, 86.f, 98.f };
+ float positions04[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 92.0f, 103.0f, 109.0f, 0.0f, 14.0f, 24.0f, 33.0f, 38.0f, 52.0f, 63.0f, 66.0f, 75.0f, 85.0f, 99.0f, 109.0f, 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 93.0f };
Size textSize05( 110.0f, 60.0f );
- float positions05[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 67.f, 77.f, 0.f, 10.f, 20.f, 26.f, 31.f, 46.f, 56.f, 65.f, 70.f, 86.f, 96.f, 0.f, 8.f, 18.f, 34.f, 43.f, 49.f, 61.f, 71.f, 75.f, 81.f };
+ float positions05[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 0.0f, 8.0f, 19.0f, 25.0f, 30.0f, 44.0f, 54.0f, 63.0f, 68.0f, 82.0f, 93.0f, 0.0f, 8.0f, 19.0f, 33.0f, 42.0f, 48.0f, 59.0f, 69.0f, 74.0f, 78.0f };
Size textSize06( 110.0f, 60.0f );
- float positions06[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 0.f, 10.f, 19.f, 29.f, 39.f, 46.f, 50.f, 66.f, 76.f, 85.f, 0.f, 15.f, 25.f, 30.f, 38.f, 48.f, 64.f, 73.f, 81.f };
+ float positions06[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 0.0f, 8.0f, 18.0f, 27.0f, 38.0f, 44.0f, 49.0f, 63.0f, 73.0f, 82.0f, 0.0f, 14.0f, 24.0f, 28.0f, 36.0f, 47.0f, 61.0f, 70.0f, 77.0f };
Size textSize07( 120.0f, 50.0f );
- float positions07[] = { 6.0f, 23.0f, 32.0f, 42.0f, 53.0f, 63.0f, 73.0f, 83.0f, 93.0f, 104.0f, 113.0f } ;
+ float positions07[] = { 5.0f, 21.0f, 31.0f, 41.0f, 50.0f, 61.0f, 71.0f, 80.0f, 90.0f, 100.0f, 109.0f };
Size textSize08( 120.0f, 50.0f );
- float positions08[] = { 5.0f, 22.0f, 31.0f, 41.0f, 51.0f, 62.0f, 72.0f, 82.0f, 92.0f, 102.0f, 112.0f };
+ float positions08[] = { 5.0f, 21.0f, 31.0f, 41.0f, 50.0f, 61.0f, 70.0f, 80.0f, 90.0f, 100.0f, 109.0f };
Size textSize09( 120.0f, 60.0f );
- float positions09[] = { 9.0f, 25.0f, 30.0f, 38.0f, 48.0f, 64.0f, 73.0f, 79.0f, 91.0f, 101.0f, 105.0f, 110.0f, 118.0f };
+ float positions09[] = { 8.0f, 24.0f, 28.0f, 36.0f, 47.0f, 61.0f, 70.0f, 76.0f, 87.0f, 97.0f, 102.0f, 105.0f, 115.0f };
Size textSize10( 120.0f, 60.0f );
- float positions10[] = { 8.0f, 25.0f, 34.0f, 39.0f, 55.0f, 65.0f, 69.0f, 78.0f, 88.0f, 104.0f, 112.0f };
+ float positions10[] = { 8.0f, 24.0f, 33.0f, 38.0f, 52.0f, 63.0f, 66.0f, 75.0f, 85.0f, 99.0f, 109.0f };
Size textSize11( 100.0f, 60.0f );
- float positions11[] = { 5.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f };
+ float positions11[] = { 4.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f };
Size textSize12( 100.0f, 60.0f );
- float positions12[] = { 5.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f };
+ float positions12[] = { 4.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f };
Size textSize13( 120.0f, 60.0f );
- float positions13[] = { 118.0f, 111.0f, 96.0f, 88.0f, 79.0f, 73.0f, 62.0f, 57.0f, 52.0f, 43.0f, 35.0f, 29.0f, 19.0f, 6.0f };
+ float positions13[] = { 118.0f, 111.0f, 97.0f, 89.0f, 80.0f, 74.0f, 64.0f, 59.0f, 54.0f, 46.0f, 37.0f, 31.0f, 22.0f, 7.0f };
Size textSize14( 120.0f, 60.0f );
- float positions14[] = { 114.0f, 108.0f, 93.0f, 85.0f, 76.0f, 70.0f, 59.0f, 54.0f, 49.0f, 40.0f, 32.0f, 27.0f, 112.0f, 103.0f, 93.0f, 88.0f, 86.0f, 79.0f, 76.0f, 66.0f, 57.0f, 52.0f, 42.0f, 35.0f, 32.0f, 27.0f, 140.0f, 128.0f, 123.0f, 119.0f, 116.0f, 106.0f, 102.0f, 87.0f, 79.0f, 70.0f, 67.0f, 61.0f, 55.0f, 50.0f, 38.0f };
+ float positions14[] = { 115.0f, 108.0f, 94.0f, 86.0f, 77.0f, 71.0f, 61.0f, 56.0f, 51.0f, 43.0f, 34.0f, 30.0f, 112.0f, 104.0f, 94.0f, 89.0f, 87.0f, 81.0f, 77.0f, 67.0f, 59.0f, 54.0f, 45.0f, 38.0f, 34.0f, 30.0f, 142.0f, 131.0f, 126.0f, 121.0f, 119.0f, 109.0f, 105.0f, 91.0f, 83.0f, 74.0f, 72.0f, 66.0f, 60.0f, 55.0f, 46.0f, 32.0f };
Size textSize15( 110.0f, 60.0f );
- float positions15[] = { 107.0f, 100.0f, 86.0f, 77.0f, 68.0f, 62.0f, 52.0f, 46.0f, 42.0f, 33.0f, 24.0f, 18.0f, 8.0f, 0.0f, 95.0f, 90.0f, 87.0f, 81.0f, 78.0f, 67.0f, 59.0f, 54.0f, 44.0f, 37.0f, 33.0f, 27.0f, 24.0f, 12.0f, 7.0f, 2.0f, 0.0f, 93.0f, 89.0f, 75.0f, 66.0f, 57.0f, 55.0f, 49.0f, 43.0f, 37.0f, 28.0f, 15.0f };
+ float positions15[] = { 108.0f, 101.0f, 87.0f, 79.0f, 70.0f, 64.0f, 54.0f, 49.0f, 44.0f, 36.0f, 27.0f, 21.0f, 12.0f, 4.0f, 96.0f, 91.0f, 89.0f, 83.0f, 79.0f, 69.0f, 61.0f, 56.0f, 47.0f, 40.0f, 36.0f, 30.0f, 27.0f, 16.0f, 11.0f, 6.0f, 4.0f, 102.0f, 98.0f, 84.0f, 75.0f, 66.0f, 64.0f, 58.0f, 53.0f, 47.0f, 38.0f, 25.0f, 22.0f, 5.0f };
Size textSize16( 110.0f, 60.0f );
- float positions16[] = { 104.0f, 98.0f, 83.0f, 75.0f, 66.0f, 60.0f, 49.0f, 44.0f, 39.0f, 30.0f, 22.0f, 17.0f, 102.0f, 93.0f, 83.0f, 78.0f, 76.0f, 69.0f, 66.0f, 56.0f, 47.0f, 42.0f, 32.0f, 25.0f, 22.0f, 17.0f, 116.0f, 104.0f, 99.0f, 94.0f, 91.0f, 82.0f, 78.0f, 63.0f, 54.0f, 45.0f, 43.0f, 37.0f, 23.0f };
+ float positions16[] = { 105.0f, 98.0f, 84.0f, 76.0f, 67.0f, 61.0f, 51.0f, 46.0f, 41.0f, 33.0f, 24.0f, 20.0f, 102.0f, 94.0f, 84.0f, 79.0f, 77.0f, 71.0f, 67.0f, 57.0f, 49.0f, 44.0f, 35.0f, 28.0f, 24.0f, 20.0f, 116.0f, 104.0f, 99.0f, 95.0f, 92.0f, 83.0f, 79.0f, 65.0f, 56.0f, 48.0f, 45.0f, 39.0f, 24.0f };
Size textSize17( 110.0f, 60.0f );
- float positions17[] = { 104.0f, 98.0f, 83.0f, 75.0f, 66.0f, 60.0f, 49.0f, 44.0f, 39.0f, 30.0f, 22.0f, 17.0f, 102.0f, 93.0f, 83.0f, 78.0f, 76.0f, 69.0f, 66.0f, 56.0f, 47.0f, 42.0f, 32.0f, 25.0f, 22.0f, 17.0f, 116.0f, 104.0f, 99.0f, 94.0f, 91.0f, 82.0f, 78.0f, 63.0f, 54.0f, 45.0f, 43.0f, 37.0f, 23.0f };
+ float positions17[] = { 105.0f, 98.0f, 84.0f, 76.0f, 67.0f, 61.0f, 51.0f, 46.0f, 41.0f, 33.0f, 24.0f, 20.0f, 102.0f, 94.0f, 84.0f, 79.0f, 77.0f, 71.0f, 67.0f, 57.0f, 49.0f, 44.0f, 35.0f, 28.0f, 24.0f, 20.0f, 116.0f, 104.0f, 99.0f, 95.0f, 92.0f, 83.0f, 79.0f, 65.0f, 56.0f, 48.0f, 45.0f, 39.0f, 24.0f };
Size textSize18( 120.0f, 60.0f );
- float positions18[] = { 96.0f, 84.0f, 75.0f, 73.0f, 66.0f, 61.0f, 55.0f, 46.0f, 32.0f, 29.0f, 17.0f, 10.0f, 3.0f };
+ float positions18[] = { 89.0f, 79.0f, 70.0f, 68.0f, 62.0f, 56.0f, 51.0f, 42.0f, 28.0f, 25.0f, 14.0f, 7.0f, 0.0f };
Size textSize19( 120.0f, 60.0f );
- float positions19[] = { 102.0f, 89.0f, 84.0f, 82.0f, 75.0f, 72.0f, 62.0f, 53.0f, 48.0f, 38.0f, 31.0f, 28.0f, 23.0f, };
+ float positions19[] = { 103.0f, 91.0f, 86.0f, 84.0f, 78.0f, 74.0f, 64.0f, 56.0f, 51.0f, 42.0f, 35.0f, 31.0f, 27.0f };
Size textSize20( 110.0f, 60.0f );
- float positions20[] = { 89.0f, 81.0f, 78.0f, 67.0f, 59.0f, 54.0f, 44.0f, 37.0f, 33.0f, 27.0f, 24.0f, 12.0f, 7.0f, 2.0f, 0.0f };
+ float positions20[] = { 89.0f, 82.0f, 78.0f, 68.0f, 60.0f, 55.0f, 46.0f, 39.0f, 35.0f, 29.0f, 26.0f, 15.0f, 10.0f, 5.0f, 3.0f };
Size textSize21( 110.0f, 60.0f );
- float positions21[] = { 92.0f, 79.0f, 74.0f, 72.0f, 65.0f, 62.0f, 52.0f, 43.0f, 38.0f, 28.0f, 21.0f, 18.0f, 13.0f };
+ float positions21[] = { 93.0f, 81.0f, 76.0f, 74.0f, 68.0f, 64.0f, 54.0f, 46.0f, 41.0f, 32.0f, 25.0f, 21.0f, 17.0f };
Size textSize22( 110.0f, 60.0f );
- float positions22[] = { 92.0f, 79.0f, 74.0f, 72.0f, 65.0f, 62.0f, 52.0f, 43.0f, 38.0f, 28.0f, 21.0f, 18.0f, 13.0f };
+ float positions22[] = { 93.0f, 81.0f, 76.0f, 74.0f, 68.0f, 64.0f, 54.0f, 46.0f, 41.0f, 32.0f, 25.0f, 21.0f, 17.0f };
Size textSize23( 120.0f, 50.0f );
- float positions23[] = { 0.0f, 11.0f, 22.0f, 33.0f, 46.0f };
+ float positions23[] = { 0.0f, 11.0f, 20.0f, 32.0f, 44.0f };
Size textSize24( 120.0f, 50.0f );
- float positions24[] = { 0.0f, 11.0f, 23.0f, 32.0f, 42.0f, 52.0f, 62.0f, 73.0f, 83.0f, 95.0f };
+ float positions24[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 50.0f, 60.0f, 70.0f, 80.0f, 91.0f };
Size textSize25( 120.0f, 60.0f );
- float positions25[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 0.0f, 10.0f, 19.0f, 29.0f, 39.0f, 46.0f, 50.0f, 68.0f };
+ float positions25[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 0.0f, 8.0f, 18.0f, 27.0f, 38.0f, 44.0f, 49.0f, 64.0f };
Size textSize26( 120.0f, 60.0f );
- float positions26[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 96.0f, 106.0f, 113.0f, 0.0f, 15.0f, 25.0f, 34.0f, 39.0f, 55.0f, 65.0f, 69.0f, 78.0f, 90.0f };
+ float positions26[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 92.0f, 103.0f, 109.0f, 0.0f, 14.0f, 24.0f, 33.0f, 38.0f, 52.0f, 63.0f, 66.0f, 75.0f, 86.0f };
Size textSize27( 110.0f, 60.0f );
- float positions27[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 0.0f, 10.0f, 20.0f, 26.0f, 31.0f, 46.0f, 56.0f, 65.0f, 72.0f };
+ float positions27[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 0.0f, 8.0f, 19.0f, 25.0f, 30.0f, 44.0f, 54.0f, 63.0f, 69.0f };
Size textSize28( 110.0f, 60.0f );
- float positions28[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 0.0f, 10.0f, 19.0f, 29.0f, 39.0f, 46.0f, 50.0f, 68.0f };
+ float positions28[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 0.0f, 8.0f, 18.0f, 27.0f, 38.0f, 44.0f, 49.0f, 64.0f };
Size textSize29( 120.0f, 60.0f );
- float positions29[] = { 116.0f, 109.0f, 94.0f, 86.0f, 77.0f, 71.0f, 60.0f };
+ float positions29[] = { 115.0f, 108.0f, 94.0f, 86.0f, 78.0f, 72.0f, 61.0f };
Size textSize30( 120.0f, 60.0f );
- float positions30[] = { 114.0f, 108.0f, 93.0f, 85.0f, 76.0f, 70.0f, 59.0f, 54.0f, 49.0f, 40.0f, 32.0f, 27.0f, 112.0f, 103.0f, 93.0f, 88.0f, 86.0f, 79.0f, 76.0f, 66.0f, 57.0f, 52.0f, 33.0f };
+ float positions30[] = { 115.0f, 108.0f, 94.0f, 86.0f, 77.0f, 71.0f, 61.0f, 56.0f, 51.0f, 43.0f, 34.0f, 30.0f, 112.0f, 104.0f, 94.0f, 89.0f, 87.0f, 81.0f, 77.0f, 67.0f, 59.0f, 54.0f, 34.0f };
Size textSize31( 110.0f, 60.0f );
- float positions31[] = { 107.0f, 100.0f, 86.0f, 77.0f, 68.0f, 62.0f, 52.0f, 46.0f, 42.0f, 33.0f, 24.0f, 18.0f, 8.0f, 0.0f, 95.0f, 90.0f, 87.0f, 81.0f, 78.0f, 67.0f, 59.0f, 54.0f, 44.0f, 37.0f, 33.0f, 27.0f, 24.0f, 9.0f};
+ float positions31[] = { 108.0f, 101.0f, 87.0f, 79.0f, 70.0f, 64.0f, 54.0f, 49.0f, 44.0f, 36.0f, 27.0f, 21.0f, 12.0f, 4.0f, 96.0f, 91.0f, 89.0f, 83.0f, 79.0f, 69.0f, 61.0f, 56.0f, 47.0f, 40.0f, 36.0f, 30.0f, 27.0f, 11.0f };
Size textSize32( 110.0f, 60.0f );
- float positions32[] = { 104.0f, 98.0f, 83.0f, 75.0f, 66.0f, 60.0f, 49.0f, 44.0f, 39.0f, 30.0f, 22.0f, 17.0f, 102.0f, 93.0f, 83.0f, 78.0f, 76.0f, 69.0f, 66.0f, 56.0f, 47.0f, 42.0f, 23.0f };
+ float positions32[] = { 105.0f, 98.0f, 84.0f, 76.0f, 67.0f, 61.0f, 51.0f, 46.0f, 41.0f, 33.0f, 24.0f, 20.0f, 102.0f, 94.0f, 84.0f, 79.0f, 77.0f, 71.0f, 67.0f, 57.0f, 49.0f, 44.0f, 24.0f };
Size textSize33( 110.0f, 60.0f );
- float positions33[] = { 104.0f, 98.0f, 83.0f, 75.0f, 66.0f, 60.0f, 49.0f, 44.0f, 39.0f, 30.0f, 22.0f, 17.0f, 102.0f, 93.0f, 83.0f, 78.0f, 76.0f, 69.0f, 66.0f, 56.0f, 47.0f, 42.0f, 23.0f };
+ float positions33[] = { 105.0f, 98.0f, 84.0f, 76.0f, 67.0f, 61.0f, 51.0f, 46.0f, 41.0f, 33.0f, 24.0f, 20.0f, 102.0f, 94.0f, 84.0f, 79.0f, 77.0f, 71.0f, 67.0f, 57.0f, 49.0f, 44.0f, 24.0f };
Size textSize34( 120.0f, 30.0f );
- float positions34[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 98.0f };
+ float positions34[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 93.0f };
Size textSize35( 120.0f, 30.0f );
- float positions35[] = { 2.0f, 20.0f, 29.0f, 39.0f, 44.0f, 60.0f, 69.0f, 74.0f, 83.0f, 92.0f, 108.0f };
+ float positions35[] = { 8.0f, 24.0f, 35.0f, 44.0f, 49.0f, 63.0f, 74.0f, 77.0f, 85.0f, 96.0f, 110.0f };
Size textSize36( 120.0f, 30.0f );
- float positions36[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f };
+ float positions36[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f };
struct ElideData data[] =
{
false,
textSize14,
3u,
- 41u,
+ 42u,
positions14
},
false,
textSize15,
3u,
- 42u,
+ 44u,
positions15
},
false,
textSize29,
1u,
- 12u,
+ 13u,
positions29
},
false,
textSize31,
3u,
- 30u,
+ 29u,
positions31
},
Size textSize00( 100.f, 100.f );
Size textSize01( 120.0f, 50.0f );
- float positions01[] = { 0.0f, 11.0f, 23.0f, 32.0f, 42.0f, 52.0f, 62.0f, 73.0f, 83.0f, 95.0f };
+ float positions01[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 50.0f, 60.0f, 70.0f, 80.0f, 91.0f };
Size textSize02( 120.0f, 50.0f );
- float positions02[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 98.0f };
+ float positions02[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 93.0f };
Size textSize03( 120.0f, 50.0f );
- float positions03[] = { 118.0f, 111.0f, 97.0f, 89.0f, 80.0f, 74.0f, 63.0f, 58.0f, 53.0f, 44.0f, 35.0f, 29.0f, 20.0f, 7.0f };
+ float positions03[] = { 117.0f, 111.0f, 97.0f, 88.0f, 80.0f, 74.0f, 64.0f, 59.0f, 54.0f, 45.0f, 37.0f, 31.0f, 22.0f, 7.0f };
Size textSize04( 120.0f, 50.0f );
- float positions04[] = { 6.0f, 23.0f, 32.0f, 42.0f, 53.0f, 63.0f, 73.0f, 83.0f, 93.0f, 104.0f, 113.0f };
+ float positions04[] = { 5.0f, 21.0f, 31.0f, 41.0f, 50.0f, 61.0f, 71.0f, 80.0f, 90.0f, 100.0f, 109.0f };
Size textSize05( 120.0f, 50.0f );
- float positions05[] = { 2.0f, 20.0f, 29.0f, 39.0f, 44.0f, 60.0f, 69.0f, 74.0f, 83.0f, 92.0f, 108.0f };
+ float positions05[] = { 8.0f, 24.0f, 35.0f, 44.0f, 49.0f, 63.0f, 74.0f, 77.0f, 85.0f, 96.0f, 110.0f };
Size textSize06( 120.0f, 50.0f );
- float positions06[] = { 99.0f, 87.0f, 78.0f, 76.0f, 69.0f, 64.0f, 58.0f, 49.0f, 35.0f, 32.0f, 20.0f, 13.0f, 6.0f };
+ float positions06[] = { 90.0f, 79.0f, 70.0f, 68.0f, 62.0f, 56.0f, 51.0f, 42.0f, 29.0f, 26.0f, 15.0f, 7.0f, 0.0f };
Size textSize07( 120.0f, 50.0f );
- float positions07[] = { 0.0f, 11.0f, 23.0f, 32.0f, 42.0f, 57.0f, 73.0f };
+ float positions07[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 53.0f };
Size textSize08( 120.0f, 50.0f );
- float positions08[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 98.0f };
+ float positions08[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f };
Size textSize09( 120.0f, 50.0f );
- float positions09[] = { 118.0f, 111.0f, 97.0f, 89.0f, 80.0f, 74.0f, 63.0f, 58.0f, 53.0f, 44.0f, 35.0f, 29.0f, 20.0f, 7.0f };
+ float positions09[] = { 116.0f, 109.0f, 96.0f, 87.0f, 79.0f, 73.0f, 63.0f };
Size textSize10( 120.0f, 50.0f );
- float positions10[] = { 118.0f, 113.0f, 107.0f, 102.0f, 97.0f, 92.0f, 87.0f, 82.0f, 79.0f, 72.0f, 57.0f, 49.0f, 40.0f, 34.0f, 23.0f, 11.0f };
+ float positions10[] = { 121.0f, 116.0f, 111.0f, 106.0f, 101.0f, 96.0f, 92.0f, 87.0f, 83.0f, 77.0f, 63.0f, 55.0f, 46.0f, 40.0f, 30.0f, 16.0f };
Size textSize11( 120.0f, 50.0f );
- float positions11[] = { 95.0f, 78.0f, 75.0f, 64.0f, 56.0f, 49.0f, 44.0f, 39.0f, 34.0f, 29.0f, 23.0f, 18.0f, 13.0f, 8.0f, 3.0f };
+ float positions11[] = { 93.0f, 77.0f, 74.0f, 63.0f, 56.0f, 49.0f, 44.0f, 39.0f, 34.0f, 29.0f, 24.0f, 19.0f, 14.0f, 9.0f, 5.0f };
Size textSize12( 120.0f, 50.0f );
- float positions12[] = { 113.0f, 108.0f, 103.0f, 98.0f, 93.0f, 88.0f, 83.0f, 78.0f, 74.0f, 67.0f };
+ float positions12[] = { 117.0f, 112.0f, 107.0f, 102.0f, 97.0f, 92.0f, 87.0f, 82.0f, 79.0f, 72.0f };
struct ElideData data[] =
{
false,
textSize09,
1u,
- 12u,
+ 13u,
positions09
},
Size textSize00( 100.f, 100.f );
Size textSize01( 120.0f, 50.0f );
- float positions01[] = { 0.0f, 11.0f, 23.0f, 32.0f, 42.0f, 52.0f, 62.0f, 73.0f, 83.0f, 93.0f, 103.0f, 112.0f, 0.0f, 10.0f, 22.0f, 31.0f, 41.0f, 51.0f, 61.0f, 72.0f, 82.0f, 94.0f };
+ float positions01[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f };
Size textSize02( 120.0f, 60.0f );
- float positions02[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 0.0f, 10.0f, 19.0f, 29.0f, 39.0f, 46.0f, 50.0f, 66.0f, 76.0f, 85.0f, 0.0f, 15.0f, 25.0f, 30.0f, 38.0f, 48.0f, 64.0f, 73.0f, 79.0f, 93.0f };
+ float positions02[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 0.0f };
Size textSize03( 120.0f, 60.0f );
- float positions03[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 96.0f, 106.0f, 113.0f, 0.0f, 15.0f, 25.0f, 34.0f, 39.0f, 55.0f, 65.0f, 69.0f, 78.0f, 88.0f, 104.0f, 112.0f, 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 98.0f };
+ float positions03[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 92.0f };
Size textSize04( 110.0f, 60.0f );
- float positions04[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 0.0f, 10.0f, 20.0f, 26.0f, 31.0f, 46.0f, 56.0f, 65.0f, 70.0f, 86.0f, 96.0f, 0.0f, 8.0f, 18.0f, 34.0f, 43.0f, 49.0f, 61.0f, 71.0f, 75.0f, 81.0f };
+ float positions04[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f };
Size textSize05( 110.0f, 60.0f );
- float positions05[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 0.0f, 10.0f, 19.0f, 29.0f, 39.0f, 46.0f, 50.0f, 66.0f, 76.0f, 85.0f, 0.0f, 15.0f, 25.0f, 30.0f, 38.0f, 48.0f, 64.0f, 73.0f, 81.0f };
+ float positions05[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f };
Size textSize06( 120.0f, 50.0f );
- float positions06[] = { 5.0f, 22.0f, 31.0f, 41.0f, 51.0f, 62.0f, 72.0f, 82.0f, 92.0f, 102.0f, 112.0f };
+ float positions06[] = { 5.0f, 21.0f, 31.0f, 41.0f, 50.0f, 61.0f, 70.0f, 80.0f, 90.0f, 100.0f, 109.0f };
Size textSize07( 120.0f, 60.0f );
- float positions07[] = { 9.f, 25.f, 30.f, 38.f, 48.f, 64.f, 73.f, 79.f, 91.f, 101.f, 105.f, 110.f, 118.f };
+ float positions07[] = { 8.0f, 24.0f, 28.0f, 36.0f, 47.0f, 61.0f, 70.0f, 76.0f, 87.0f, 97.0f, 102.0f, 105.0f, 115.0f };
Size textSize08( 120.0f, 60.0f );
- float positions08[] = { 8.f, 25.f, 34.f, 39.f, 55.f, 65.f, 69.f, 78.f, 88.f, 104.f, 112.f };
+ float positions08[] = { 8.0f, 24.0f, 33.0f, 38.0f, 52.0f, 63.0f, 66.0f, 75.0f, 85.0f, 99.0f, 109.0f };
Size textSize09( 100.0f, 60.0f );
- float positions09[] = { 5.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 67.f, 77.f };
+ float positions09[] = { 4.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f };
Size textSize10( 100.0f, 60.0f );
- float positions10[] = { 5.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f };
+ float positions10[] = { 4.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f };
Size textSize11( 120.0f, 60.0f );
- float positions11[] = { 119.0f, 112.0f, 98.0f, 89.0f, 80.0f, 74.0f, 63.0f, 58.0f, 53.0f, 45.0f, 36.0f, 31.0f, 112.0f, 103.0f, 93.0f };
+ float positions11[] = { 117.0f, 111.0f, 97.0f, 89.0f, 80.0f, 74.0f, 64.0f, 59.0f, 54.0f, 45.0f, 37.0f, 32.0f, 112.0f, 103.0f, 94.0f, 89.0f };
Size textSize12( 110.0f, 60.0f );
- float positions12[] = { 115.0f, 108.0f, 94.0f, 85.0f, 76.0f, 70.0f, 60.0f, 54.0f, 50.0f, 41.0f, 32.0f };
+ float positions12[] = { 109.0f, 102.0f, 89.0f, 80.0f, 72.0f, 66.0f, 56.0f, 50.0f, 46.0f, 37.0f, 29.0f, 23.0f, 14.0f };
Size textSize13( 110.0f, 60.0f );
- float positions13[] = { 113.0f, 106.0f, 92.0f, 83.0f, 74.0f, 68.0f, 58.0f, 52.0f, 48.0f, 39.0f, 30.0f, 25.0f, 106.0f };
+ float positions13[] = { 116.0f, 109.0f, 96.0f, 87.0f, 79.0f, 73.0f, 63.0f, 57.0f, 53.0f, 44.0f, 36.0f, 31.0f, 111.0f };
Size textSize14( 110.0f, 60.0f );
- float positions14[] = { 113.0f, 106.0f, 92.0f, 83.0f, 74.0f, 68.0f, 58.0f, 52.0f, 48.0f, 39.0f, 30.0f, 25.0f, 106.0f };
+ float positions14[] = { 116.0f, 109.0f, 96.0f, 87.0f, 79.0f, 73.0f, 63.0f, 57.0f, 53.0f, 44.0f, 36.0f, 31.0f, 111.0f };
Size textSize15( 120.0f, 60.0f );
- float positions15[] = { 125.f, 112.f, 107.f, 105.f, 98.f, 95.f, 85.f, 76.f, 71.f, 61.f, 54.f, 51.f, 46.f };
+ float positions15[] = { 130.0f, 118.0f, 113.0f, 111.0f, 105.0f, 101.0f, 91.0f, 83.0f, 78.0f, 69.0f, 62.0f, 58.0f, 54.0f };
Size textSize16( 110.0f, 60.0f );
- float positions16[] = { 89.f, 81.f, 78.f, 67.f, 59.f, 54.f, 44.f, 37.f, 33.f, 27.f, 24.f, 12.f, 7.f, 2.f, 0.f };
+ float positions16[] = { 92.0f, 85.0f, 81.0f, 71.0f, 63.0f, 58.0f, 49.0f, 42.0f, 38.0f, 32.0f, 29.0f, 18.0f, 13.0f, 8.0f, 6.0f };
Size textSize17( 110.0f, 60.0f );
- float positions17[] = { 105.f, 92.f, 87.f, 85.f, 78.f, 75.f, 65.f, 56.f, 51.f, 41.f, 34.f, 31.f, 26.f };
+ float positions17[] = { 110.0f, 98.0f, 93.0f, 91.0f, 85.0f, 81.0f, 71.0f, 63.0f, 58.0f, 49.0f, 42.0f, 38.0f, 34.0f };
Size textSize18( 110.0f, 60.0f );
- float positions18[] = { 105.f, 92.f, 87.f, 85.f, 78.f, 75.f, 65.f, 56.f, 51.f, 41.f, 34.f, 31.f, 26.f };
+ float positions18[] = { 110.0f, 98.0f, 93.0f, 91.0f, 85.0f, 81.0f, 71.0f, 63.0f, 58.0f, 49.0f, 42.0f, 38.0f, 34.0f };
Size textSize19( 120.0f, 50.0f );
- float positions19[] = { 0.f, 11.f, 23.f, 32.f, 42.f, 52.f, 62.f, 73.f, 83.f, 95.f };
+ float positions19[] = { 0.0f, 11.0f, 21.0f, 31.0f, 41.0f, 50.0f, 60.0f, 70.0f, 80.0f, 91.0f };
Size textSize20( 120.0f, 60.0f );
- float positions20[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 0.f, 10.f, 19.f, 29.f, 39.f, 46.f, 50.f, 68.f };
+ float positions20[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f };
Size textSize21( 120.0f, 60.0f );
- float positions21[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 67.f, 77.f, 86.f, 96.f, 106.f, 113.f, 0.f, 15.f, 25.f, 34.f, 39.f, 55.f, 65.f, 69.f, 78.f, 90.f };
+ float positions21[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f };
Size textSize22( 110.0f, 60.0f );
- float positions22[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 67.f, 77.f, 0.f, 10.f, 20.f, 26.f, 31.f, 46.f, 56.f, 65.f, 72.f };
+ float positions22[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f };
Size textSize23( 110.0f, 60.0f );
- float positions23[] = { 0.f, 12.f, 21.f, 26.f, 30.f, 39.f, 45.f, 57.f, 61.f, 0.f, 10.f, 19.f, 29.f, 39.f, 46.f, 50.f, 68.f };
+ float positions23[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f };
Size textSize24( 120.0f, 60.0f );
- float positions24[] = { 137.0f, 131.0f, 116.0f, 108.0f, 99.0f, 93.0f, 82.0f, 77.0f, 72.0f, 63.0f, 55.0f };
+ float positions24[] = { 142.0f, 135.0f, 121.0f, 113.0f, 104.0f, 98.0f, 88.0f, 83.0f, 78.0f, 70.0f, 61.0f };
Size textSize25( 110.0f, 60.0f );
- float positions25[] = { 107.f, 100.f, 86.f, 77.f, 68.f, 62.f, 52.f, 46.f, 42.f, 33.f, 24.f, 18.f, 8.f, 0.f, 95.f, 90.f, 87.f, 81.f, 78.f, 67.f, 59.f, 54.f, 44.f, 37.f, 33.f, 27.f, 24.f, 9.f };
+ float positions25[] = { 111.0f, 104.0f, 90.0f, 82.0f, 73.0f, 67.0f, 57.0f, 52.0f, 47.0f, 39.0f, 30.0f, 24.0f, 15.0f, 7.0f };
Size textSize26( 110.0f, 60.0f );
- float positions26[] = { 117.0f, 111.0f, 96.0f, 88.0f, 79.0f, 73.0f, 62.0f, 57.0f, 52.0f, 43.0f, 35.0f };
+ float positions26[] = { 122.0f, 115.0f, 101.0f, 93.0f, 84.0f, 78.0f, 68.0f, 63.0f, 58.0f, 50.0f, 41.0f };
Size textSize27( 110.0f, 60.0f );
- float positions27[] = { 117.0f, 111.0f, 96.0f, 88.0f, 79.0f, 73.0f, 62.0f, 57.0f, 52.0f, 43.0f, 35.0f };
+ float positions27[] = { 122.0f, 115.0f, 101.0f, 93.0f, 84.0f, 78.0f, 68.0f, 63.0f, 58.0f, 50.0f, 41.0f };
Size textSize28( 120.0f, 30.0f );
- float positions28[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f, 61.0f, 67.0f, 77.0f, 86.0f, 98.0f };
+ float positions28[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f, 59.0f, 65.0f, 73.0f, 84.0f, 93.0f };
Size textSize29( 120.0f, 30.0f );
- float positions29[] = { 2.0f, 20.0f, 29.0f, 39.0f, 44.0f, 60.0f, 69.0f, 74.0f, 83.0f, 92.0f, 108.0f };
+ float positions29[] = { 8.0f, 24.0f, 35.0f, 44.0f, 49.0f, 63.0f, 74.0f, 77.0f, 85.0f, 96.0f, 110.0f };
Size textSize30( 120.0f, 30.0f );
- float positions30[] = { 0.0f, 12.0f, 21.0f, 26.0f, 30.0f, 39.0f, 45.0f, 57.0f };
+ float positions30[] = { 0.0f, 10.0f, 21.0f, 25.0f, 28.0f, 38.0f, 44.0f, 55.0f };
struct ElideData data[] =
false,
textSize11,
3u,
- 41u,
+ 42u,
positions11
},
false,
textSize12,
3u,
- 42u,
+ 44u,
positions12
},
false,
textSize25,
3u,
- 30u,
+ 29u,
positions25
},
Vector<FontDescriptionRun> fontDescriptionRuns;
fontDescriptionRuns.PushBack( fontDescriptionRun );
Size textArea(1.f, 1.f);
- Size layoutSize(81.f, 19.f);
+ Size layoutSize(81.f, 20.f);
float positions[] = { 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f };
struct LineRun line =
{
{ 0u, 11u },
81.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun1 );
fontDescriptionRuns.PushBack( fontDescriptionRun2 );
Size textArea(100.f, 300.f);
- Size layoutSize(97.f, 95.f);
+ Size layoutSize(98.f, 97.f);
float positions[] =
{
0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f,
0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f, 45.f, -12.f,
- 0.f, -12.f, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f,
- 0.f, -12.f, 10.f, -12.f, 15.f, -12.f, 26.f, -9.f, 35.f, -9.f, 42.f, -9.f, 52.f, -9.f, 61.f, -11.f, 67.f, -0.f,
- 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 19.f, -9.f, 29.f, -9.f, 36.f, -0.f, 42.f, -9.f, 52.f, -12.f, 57.f, -0.f, 62.f, -11.f, 69.f, -9.f, 79.f, -9.f, 87.f, -11.f, 95.f, -2.f
+ 0.f, -12.f, 8.f, -9.f, 18.f, -9.f, 27.f, -9.f, 38.f, -9.f, 47.f, -11.f, 53.f, -0.f,
+ 0.f, -12.f, 11.f, -12.f, 15.f, -12.f, 26.f, -9.f, 36.f, -9.f, 42.f, -9.f, 53.f, -9.f, 62.f, -11.f, 68.f, -0.f,
+ 0.f, -12.f, 4.f, -12.f, 9.f, -9.f, 18.f, -9.f, 28.f, -9.f, 36.f, -0.f, 41.f, -9.f, 51.f, -12.f, 57.f, -0.f, 62.f, -11.f, 68.f, -9.f, 78.f, -9.f, 87.f, -11.f, 94.f, -2.f
};
struct LineRun line0 =
{
{ 0u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 12u, 6u },
44.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 18u, 7u },
{ 18u, 7u },
- 53.f,
+ 54.f,
15.f,
-4.f,
6.f,
{
{ 25u, 9u },
{ 25u, 10u },
- 66.f,
+ 68.f,
15.f,
-4.f,
6.f,
{
{ 34u, 14u },
{ 35u, 14u },
- 97.f,
+ 98.f,
15.f,
-4.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun4 );
fontDescriptionRuns.PushBack( fontDescriptionRun5 );
Size textArea(100.f, 300.f);
- Size layoutSize(81.f, 114.f);
+ Size layoutSize(81.f, 120.f);
float positions[] =
{
- 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 22 .. 27
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 28 .. 37
- 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 38 .. 49
- 4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, // 50 .. 54
+ 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 12 .. 21
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 22 .. 27
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 28 .. 37
+ 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 38 .. 49
+ 4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, // 50 .. 54
};
struct LineRun line0 =
{
{ 0u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 12u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 22u, 6u },
{ 22u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 28u, 10u },
{ 28u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 38u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 50u, 5u },
45.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
Vector<FontDescriptionRun> fontDescriptionRuns;
fontDescriptionRuns.PushBack( fontDescriptionRun );
Size textArea(100.f, 300.f);
- Size layoutSize(98.f, 57.f);
+ Size layoutSize(98.f, 60.f);
float positions[] =
{
0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -9.f, 48.f, -9.f, 58.f, -9.f, 65.f, -13.f, 68.f, -13.f, 77.f, -13.f, 86.f, -9.f,
{ 0u, 12u },
95.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 12u, 12u },
98.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 24u, 5u },
44.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
Vector<FontDescriptionRun> fontDescriptionRuns;
fontDescriptionRuns.PushBack( fontDescriptionRun );
Size textArea(100.f, 300.f);
- Size layoutSize(84.f, 38.f);
+ Size layoutSize(84.f, 40.f);
float positions[] =
{
0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -2.f, 85.f, -12.f
{ 0u, 13u },
84.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
false,
{ 13u, 0u },
0.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun2 );
fontDescriptionRuns.PushBack( fontDescriptionRun3 );
Size textArea(100.f, 300.f);
- Size layoutSize(89.f, 51.f);
+ Size layoutSize(89.f, 53.f);
float positions[] =
{
- 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 71.f, -9.f, 77.f, -13.f, 80.f, -13.f, 89.f, -0.f,
+ 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -14.f, 60.f, -9.f, 70.f, -9.f, 76.f, -13.f, 80.f, -13.f, 89.f, -0.f,
0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -2.f
};
struct LineRun line0 =
{ 0u, 12u },
89.f,
25.f,
- -7.f,
+ -8.f,
4.f,
0.f,
0.f,
{ 12u, 5u },
44.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun );
Size textArea(64.f, 100.f);
- Size layoutSize(33.f, 38.f);
+ Size layoutSize(34.f, 40.f);
float positions[] =
{
- 28.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f,
- 23.f, -10.f, 18.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f
+ 27.f, -13.f, 18.f, -10.f, 9.f, -10.f, 4.f, -10.f, 0.f, -0.f,
+ 22.f, -10.f, 17.f, -10.f, 12.f, -10.f, 4.f, -10.f, 0.f, -10.f
};
struct LineRun line0 =
{
{ 0u, 5u },
32.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 5u, 5u },
{ 5u, 5u },
- 33.f,
+ 34.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun );
Size textArea(26.f, 100.f);
- Size layoutSize(23.f, 57.f);
+ Size layoutSize(24.f, 60.f);
float positions[] =
{
- 11.f, -10.f, 5.f, -10.f, 0.f, -10.f,
- 12.f, -10.f, 8.f, -10.f, 0.f, -13.f,
+ 10.f, -10.f, 4.f, -10.f, 0.f, -10.f,
+ 13.f, -10.f, 9.f, -10.f, 0.f, -13.f,
14.f, -10.f, 4.f, -10.f, 0.f, -10.f
};
struct LineRun line0 =
{
{ 0u, 3u },
{ 0u, 3u },
- 20.f,
+ 21.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 3u, 3u },
22.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 6u, 3u },
{ 6u, 3u },
- 23.f,
+ 24.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun16 );
fontDescriptionRuns.PushBack( fontDescriptionRun17 );
Size textArea(100.f, 300.f);
- Size layoutSize(100.f, 361.f);
+ Size layoutSize(100.f, 380.f);
float positions[] =
{
- 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 22 .. 27
- 58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, // 28 .. 47
- 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 45.f, -10.f, 36.f, -10.f, 31.f, -0.f, // 48 .. 58
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, // 59 .. 63
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 64 .. 73
- 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 74 .. 85
- 4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f, // 86 .. 91
- 0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f, // 92 .. 103
- 91.f, -8.f, 85.f, -6.f, 78.f, -8.f, 74.f, -7.f, 72.f, -11.f, 67.f, -0.f, 63.f, -7.f, 61.f, -11.f, 56.f, -11.f, 49.f, -8.f, 48.f, -11.f, 42.f, -11.f, 37.f, -8.f, 33.f, -0.f, 23.f, -10.f, 14.f, -13.f, 9.f, -10.f, 0.f, -10.f, 98.f, -0.f, // 104 .. 122
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -0.f, // 123 .. 127
- 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 128 .. 139
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 140 .. 149
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 150 .. 155
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 156 .. 165
- 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 166 .. 177
- 54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, // 178 .. 191
+ 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 12 .. 21
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 22 .. 27
+ 58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, // 28 .. 47
+ 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f, // 48 .. 58
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, // 59 .. 63
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 64 .. 73
+ 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 74 .. 85
+ 4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f, // 86 .. 91
+ 0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f, // 92 .. 103
+ 92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f, // 104 .. 122
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f, // 123 .. 127
+ 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 128 .. 139
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 140 .. 149
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 150 .. 155
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 156 .. 165
+ 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 166 .. 177
+ 54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, // 178 .. 191
};
struct LineRun line01 =
{ 0u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 12u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 22u, 6u },
{ 22u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 28u, 14u },
63.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 42, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{
{ 54u, 10u },
{ 54u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 64u, 10u },
{ 64u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 74u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 86u, 6u },
45.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 92u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 104u, 19u },
100.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 123u, 5u },
{ 123u, 5u },
- 31.f,
+ 32.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 128u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 140u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 150u, 6u },
{ 150u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 156u, 10u },
{ 156u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 166u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 178u, 14u },
63.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 192u, 0u },
0.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun16 );
fontDescriptionRuns.PushBack( fontDescriptionRun17 );
Size textArea(100.f, 300.f);
- Size layoutSize(100.f, 361.f);
+ Size layoutSize(100.f, 380.f);
float positions[] =
{
- 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 22 .. 27
+ 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 12 .. 21
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 22 .. 27
58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, // 28 .. 47
- 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 45.f, -10.f, 36.f, -10.f, 31.f, -0.f, // 48 .. 58
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, // 59 .. 63
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 64 .. 73
- 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 74 .. 85
- 4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f, // 86 .. 91
- 0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f, // 92 .. 103
- 91.f, -8.f, 85.f, -6.f, 78.f, -8.f, 74.f, -7.f, 72.f, -11.f, 67.f, -0.f, 63.f, -7.f, 61.f, -11.f, 56.f, -11.f, 49.f, -8.f, 48.f, -11.f, 42.f, -11.f, 37.f, -8.f, 33.f, -0.f, 23.f, -10.f, 14.f, -13.f, 9.f, -10.f, 0.f, -10.f, 98.f, -0.f, // 104 .. 122
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -0.f, // 123 .. 127
- 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 128 .. 139
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 140 .. 149
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 150 .. 155
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 156 .. 165
- 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 166 .. 177
- 54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, // 178 .. 191
+ 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f, // 48 .. 58
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, // 59 .. 63
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 64 .. 73
+ 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 74 .. 85
+ 4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f, // 86 .. 91
+ 0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f, // 92 .. 103
+ 92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f, // 104 .. 122
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f, // 123 .. 127
+ 0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 128 .. 139
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 140 .. 149
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 150 .. 155
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 156 .. 165
+ 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 166 .. 177
+ 54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, // 178 .. 191
};
struct LineRun line01 =
{ 0u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 12u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 22u, 6u },
{ 22u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 28u, 14u },
63.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 42u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{
{ 54u, 10u },
{ 54u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 64u, 10u },
{ 64u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 74u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
1.f,
0.f,
{ 86u, 6u },
45.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 92u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 104u, 19u },
100.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 123u, 5u },
{ 123u, 5u },
- 31.f,
+ 32.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 128u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 140u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 150u, 6u },
{ 150u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 156u, 10u },
{ 156u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 166u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 178u, 14u },
63.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 192u, 0u },
0.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
fontDescriptionRuns.PushBack( fontDescriptionRun16 );
fontDescriptionRuns.PushBack( fontDescriptionRun17 );
Size textArea(100.f, 300.f);
- Size layoutSize(100.f, 361.f);
+ Size layoutSize(100.f, 380.f);
float positions[] =
{
0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 0 .. 11
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 12 .. 21
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 22 .. 27
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 12 .. 21
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 22 .. 27
58.f, -8.f, 52.f, -6.f, 45.f, -8.f, 41.f, -7.f, 39.f, -11.f, 34.f, -0.f, 30.f, -7.f, 28.f, -11.f, 23.f, -11.f, 16.f, -8.f, 15.f, -11.f, 9.f, -11.f, 4.f, -8.f, 0.f, -0.f, 4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, // 28 .. 47
- 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 45.f, -10.f, 36.f, -10.f, 31.f, -0.f, // 48 .. 58
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, // 59 .. 63
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 64 .. 73
+ 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, 59.f, -10.f, 50.f, -13.f, 46.f, -10.f, 36.f, -10.f, 32.f, -0.f, // 48 .. 58
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 0.f, -0.f, // 59 .. 63
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 64 .. 73
4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 74 .. 85
4.f, -13.f, 13.f, -9.f, 23.f, -9.f, 36.f, -9.f, 0.f, -2.f, 0.f, -12.f, // 86 .. 91
0.f, -13.f, 8.f, -9.f, 18.f, -13.f, 22.f, -13.f, 25.f, -9.f, 34.f, -0.f, 38.f, -9.f, 50.f, -9.f, 60.f, -9.f, 66.f, -13.f, 69.f, -13.f, 79.f, -0.f, // 92 .. 103
- 91.f, -8.f, 85.f, -6.f, 78.f, -8.f, 74.f, -7.f, 72.f, -11.f, 67.f, -0.f, 63.f, -7.f, 61.f, -11.f, 56.f, -11.f, 49.f, -8.f, 48.f, -11.f, 42.f, -11.f, 37.f, -8.f, 33.f, -0.f, 23.f, -10.f, 14.f, -13.f, 9.f, -10.f, 0.f, -10.f, 98.f, -0.f, // 104 .. 122
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -0.f, // 123 .. 127
+ 92.f, -8.f, 86.f, -6.f, 79.f, -8.f, 75.f, -7.f, 73.f, -11.f, 68.f, -0.f, 64.f, -7.f, 62.f, -11.f, 57.f, -11.f, 50.f, -8.f, 49.f, -11.f, 43.f, -11.f, 38.f, -8.f, 34.f, -0.f, 23.f, -10.f, 14.f, -13.f, 10.f, -10.f, 0.f, -10.f, 99.f, -0.f, // 104 .. 122
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -0.f, // 123 .. 127
0.f, -12.f, 10.f, -9.f, 20.f, -13.f, 24.f, -13.f, 27.f, -9.f, 36.f, -0.f, 40.f, -9.f, 52.f, -9.f, 62.f, -9.f, 69.f, -13.f, 72.f, -13.f, 81.f, -0.f, // 128 .. 139
- 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 69.f, -10.f, 60.f, -13.f, 54.f, -10.f, 46.f, -10.f, 79.f, -0.f, // 140 .. 149
- 23.f, -10.f, 18.f, -10.f, 10.f, -13.f, 0.f, -10.f, 31.f, -2.f, 35.f, -12.f, // 150 .. 155
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 156 .. 165
+ 0.f, -13.f, 9.f, -9.f, 19.f, -9.f, 32.f, -9.f, 41.f, -0.f, 68.f, -10.f, 59.f, -13.f, 54.f, -10.f, 45.f, -10.f, 79.f, -0.f, // 140 .. 149
+ 23.f, -10.f, 19.f, -10.f, 10.f, -13.f, 0.f, -10.f, 32.f, -2.f, 36.f, -12.f, // 150 .. 155
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, // 156 .. 165
4.f, -13.f, 12.f, -9.f, 22.f, -13.f, 26.f, -13.f, 29.f, -9.f, 38.f, -0.f, 42.f, -9.f, 54.f, -9.f, 64.f, -9.f, 70.f, -13.f, 73.f, -13.f, 0.f, -0.f, // 166 .. 177
54.f, -8.f, 49.f, -6.f, 41.f, -8.f, 37.f, -7.f, 35.f, -11.f, 31.f, -0.f, 26.f, -7.f, 24.f, -11.f, 19.f, -11.f, 12.f, -8.f, 11.f, -11.f, 5.f, -11.f, 0.f, -8.f, 0.f, -0.f, // 178 .. 191
};
{ 0u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 12u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 22u, 6u },
{ 22u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 28u, 14u },
63.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 42u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{
{ 54u, 10u },
{ 54u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 64u, 10u },
{ 64u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 74u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
1.f,
0.f,
{ 86u, 6u },
45.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 92u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 104u, 19u },
100.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 123u, 5u },
{ 123u, 5u },
- 31.f,
+ 32.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 128u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 140u, 10u },
79.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{
{ 150u, 6u },
{ 150u, 6u },
- 34.f,
+ 35.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{
{ 156u, 10u },
{ 156u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 166u, 12u },
79.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 178u, 14u },
63.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 192u, 0u },
0.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
{ 0u, 13u },
93.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
};
Size textArea( 100.f, 50.f );
- Size layoutSize( 100.f, 19.f );
+ Size layoutSize( 100.f, 20.f );
LayoutTextData data =
{
{ 0u, 12u },
81.f,
15.f,
- -4.f,
+ -5.f,
4.f,
0.f,
0.f,
{ 12u, 12u },
95.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
};
Size textArea( 100.f, 50.f );
- Size layoutSize( 100.f, 38.f );
+ Size layoutSize( 100.f, 40.f );
LayoutTextData data =
{
{
{ 0u, 14u },
{ 0u, 14u },
- 97.f,
+ 98.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
float positions[] =
{
- 88.f, -10.f, 80.f, -13.f, 74.f, -10.f, 66.f, -10.f, 60.f, -0.f, 52.f, -10.f, 47.f, -10.f, 39.f, -13.f, 30.f, -10.f, 24.f, -0.f, 17.f, -8.f, 12.f, -6.f, 4.f, -8.f, 0.f, -7.f, 77.f, -11.f, 72.f, -0.f,
+ 87.f, -10.f, 79.f, -13.f, 74.f, -10.f, 65.f, -10.f, 60.f, -0.f, 51.f, -10.f, 47.f, -10.f, 38.f, -13.f, 29.f, -10.f, 24.f, -0.f, 17.f, -8.f, 12.f, -6.f, 4.f, -8.f, 0.f, -7.f, 78.f, -11.f, 73.f, -0.f,
};
Size textArea( 100.f, 50.f );
- Size layoutSize( 100.f, 19.f );
+ Size layoutSize( 100.f, 20.f );
LayoutTextData data =
{
{
{ 0u, 10u },
{ 0u, 10u },
- 69.f,
+ 70.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
{ 10u, 19u },
99.f,
15.f,
- -4.f,
+ -5.f,
5.f,
0.f,
0.f,
float positions[] =
{
- 63.f, -10.f, 54.f, -13.f, 49.f, -10.f, 41.f, -10.f, 35.f, -0.f, 27.f, -10.f, 22.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 95.f, -8.f, 90.f, -6.f, 82.f, -8.f, 78.f, -7.f, 77.f, -11.f, 72.f, -0.f,
- 67.f, -7.f, 66.f, -11.f, 60.f, -11.f, 54.f, -8.f, 52.f, -11.f, 46.f, -11.f, 41.f, -8.f, 37.f, -0.f, 27.f, -10.f, 18.f, -13.f, 13.f, -10.f, 4.f, -10.f, 0.f, -0.f, 93.f, -10.f, 88.f, -10.f, 80.f, -13.f, 71.f, -10.f, 65.f, -0.f,
+ 63.f, -10.f, 54.f, -13.f, 50.f, -10.f, 41.f, -10.f, 36.f, -0.f, 27.f, -10.f, 23.f, -10.f, 14.f, -13.f, 4.f, -10.f, 0.f, -0.f, 96.f, -8.f, 91.f, -6.f, 83.f, -8.f, 79.f, -7.f, 78.f, -11.f, 73.f, -0.f,
+ 68.f, -7.f, 67.f, -11.f, 61.f, -11.f, 55.f, -8.f, 53.f, -11.f, 47.f, -11.f, 42.f, -8.f, 38.f, -0.f, 27.f, -10.f, 18.f, -13.f, 14.f, -10.f, 4.f, -10.f, 0.f, -0.f, 92.f, -10.f, 88.f, -10.f, 79.f, -13.f, 70.f, -10.f, 65.f, -0.f,
};
Size textArea( 100.f, 50.f );
- Size layoutSize( 100.f, 38.f );
+ Size layoutSize( 100.f, 40.f );
LayoutTextData data =
{
{
{ 0u, 11u },
{ 0u, 11u },
- 81.f,
+ 80.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
false,
- false
+ true
};
Vector<LineRun> lines;
lines.PushBack( line01 );
};
Size textArea( 100.f, 19.f );
- Size layoutSize( 81.f, 19.f );
+ Size layoutSize( 100.f, 20.f );
LayoutTextData data =
{
fontDescriptionRuns.PushBack( fontDescriptionRun05 );
fontDescriptionRuns.PushBack( fontDescriptionRun06 );
- float positions[] = { 0.f, 0.f, 0.f, 0.f, 9.f, 17.f };
+ float positions[] = { 0.f, 0.f, 0.f, 0.f, 9.f, 16.f };
Size textArea( 100.f, 300.f );
AlignData data =
fontDescriptionRuns.PushBack( fontDescriptionRun05 );
fontDescriptionRuns.PushBack( fontDescriptionRun06 );
- float positions[] = { 19.f, 31.f, 0.f, 0.f, 0.f, 0.f };
+ float positions[] = { 19.f, 30.f, 0.f, 0.f, 0.f, 0.f };
Size textArea( 100.f, 300.f );
AlignData data =
fontDescriptionRuns.PushBack( fontDescriptionRun05 );
fontDescriptionRuns.PushBack( fontDescriptionRun06 );
- float positions[] = { 0.f, 0.f, 0.f, 0.f, 19.f, 34.f };
+ float positions[] = { 0.f, 0.f, 0.f, 0.f, 19.f, 33.f };
Size textArea( 100.f, 300.f );
AlignData data =
fontDescriptionRuns.PushBack( fontDescriptionRun05 );
fontDescriptionRuns.PushBack( fontDescriptionRun06 );
- float positions[] = { 19.f, 31.f, 33.f, 0.f, 0.f, 0.f };
+ float positions[] = { 19.f, 30.f, 33.f, 0.f, 0.f, 0.f };
Size textArea( 100.f, 300.f );
AlignData data =
{ 0u, 1u },
11.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
Vector<LineRun> lines01;
lines01.PushBack( line01 );
- Size layoutSize01 = Vector2(11.f, 19.f);
+ Size layoutSize01 = Vector2(11.f, 20.f);
// Group: second glyph doesn't exceed the width of the first glyph
float positions02[] = { 0.f, -11.f, 7.f, -15.f, };
{ 0u, 2u },
16.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
Vector<LineRun> lines02;
lines02.PushBack( line02 );
- Size layoutSize02 = Vector2(16.f, 19.f);
+ Size layoutSize02 = Vector2(16.f, 20.f);
// Group: second glyph doesn't exceed the width of the first glyph
float positions03[] = { 0.f, -11.f , 2.f, -15.f };
{ 0u, 2u },
11.f,
15.f,
- -4.f,
+ -5.f,
0.f,
0.f,
0.f,
Vector<LineRun> lines03;
lines03.PushBack( line03 );
- Size layoutSize03 = Vector2(11.f, 19.f);
+ Size layoutSize03 = Vector2(11.f, 20.f);
/////////////////////////////
/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
"Aliquip sanctůs delicáta quí ěá, et natum aliquam est?\n"
"Asšúm sapěret usu ůť.\n"
"Síť ut apeirián laboramúš percipitur, sůas hařum ín éos?\n";
-const Vector2 LOREM_SCROLL_POSITION( 0.f, -284.f );
-const Length LOREM_NUMBER_OF_LINES = 36u;
+const Vector2 LOREM_SCROLL_POSITION( 0.f, -265.f );
+const Length LOREM_NUMBER_OF_LINES = 35u;
const Length LOREM_NUMBER_OF_LINES_ELIDED = 21u;
const Length LOREM_NUMBER_OF_GLYPHS = 632;
-const Length LOREM_NUMBER_OF_GLYPHS_ELIDED = 373u;
+const Length LOREM_NUMBER_OF_GLYPHS_ELIDED = 393u;
// The expected layout size for UtcDaliTextViewModelGetLayoutSize
-const Size LAYOUT_SIZE( 182.f, 45.f );
+const Size LAYOUT_SIZE( 181.f, 48.f );
// The expected color indices for UtcDaliTextViewModelGetColors
const ColorIndex COLOR_INDICES[] = { 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 2u, 2u, 2u, 2u, 2u, 1u, 1u, 1u, 1u, 1u, 3u, 1u, 1u, 1u, 0u, 0u, 0u, 0u };
Size textSize00( 100.f, 100.f );
Size textSize01( 80.f, 100.f );
- float positions01[] = { 0.f, 8.f, 16.f, 26.f, 34.f, 43.f, 47.f, 58.f, 64.0f };
+ float positions01[] = { 0.f, 7.f, 16.f, 26.f, 33.f, 41.f, 45.f, 55.f, 64.0f };
Size textSize02( 80.f, 100.f );
- float positions02[] = { 69.f, 63.f, 58.f, 50.f, 45.f, 41.f, 32.f, 23.f, 5.f };
+ float positions02[] = { 68.f, 62.f, 58.f, 50.f, 46.f, 42.f, 32.f, 24.f, 5.f };
Size textSize03( 80.f, 100.f );
- float positions03[] = { 72.f, 65.f, 61.f, 59.f, 53.f, 47.f, 43.f, 38.f, 30.f, 25.f, 21.f, 7.f };
+ float positions03[] = { 78.f, 72.f, 66.f, 62.f, 57.f, 50.f, 45.f, 41.f, 39.f, 33.f, 30.f, 24.f, 5.0f };
Size textSize04( 80.f, 10.f );
- float positions04[] = { 2.f };
+ float positions04[] = { 1.f };
struct ElideData data[] =
{
"<font family='TizenSansArabic'>عل النفط ديسمبر الإمداد بال, بين وترك شعار هو. لمّ من المبرمة النفط بالسيطرة, أم يتم تحرّك وبغطاء, عدم في لإعادة وإقامة رجوعهم.</font>",
textSize03,
5u,
- 62u,
+ 66u,
positions03
},
{
utc-Dali-ScrollView.cpp
utc-Dali-ShaderEffects.cpp
utc-Dali-ShadowView.cpp
+ utc-Dali-ScaleTransition.cpp
+ utc-Dali-SlideTransition.cpp
utc-Dali-Slider.cpp
utc-Dali-TableView.cpp
utc-Dali-TextEditor.cpp
virtual ~Window() = default;
static Window* New(const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent);
- WindowPosition GetPosition() const;
- PositionSize GetPositionSize() const;
+ WindowPosition GetPosition() const;
+ PositionSize GetPositionSize() const;
+ Dali::Window::WindowSize GetSize() const;
void SetPositionSize(PositionSize positionSize);
return mRenderSurface.GetPositionSize();
}
+Dali::Window::WindowSize Window::GetSize() const
+{
+ PositionSize positionSize = mRenderSurface.GetPositionSize();
+
+ return Dali::Window::WindowSize(positionSize.width, positionSize.height);
+}
+
void Window::SetPositionSize(PositionSize positionSize)
{
mRenderSurface.MoveResize(positionSize);
application.GetScene().Add(actor);
+ Property::Map map = actor.GetProperty< Property::Map >( DummyControl::Property::TEST_VISUAL );
+ Property::Value* value = map.Find( DevelImageVisual::Property::TOTAL_FRAME_NUMBER );
+ int totalFrameNumber = value->Get< int >();
+
Property::Map attributes;
DevelControl::DoAction(actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes);
// Check dropped frame
uint32_t frames = Test::VectorAnimationRenderer::GetDroppedFrames();
DALI_TEST_CHECK(frames > 0);
+ DALI_TEST_CHECK(frames <= static_cast<uint32_t>(totalFrameNumber));
END_TEST;
}
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <iostream>
+#include <stdlib.h>
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali/devel-api/actors/actor-devel.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
+#include <dali-toolkit/public-api/transition/transition-set.h>
+#include <dali-toolkit/public-api/transition/transition-base.h>
+#include <dali-toolkit/public-api/transition/scale-transition.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+
+// Functor to test whether a Finish signal is emitted
+struct TransitionFinishCheck
+{
+ TransitionFinishCheck(bool& signalReceived)
+ : mSignalReceived(signalReceived)
+ {
+ }
+
+ void operator()(TransitionSet& transitionSet)
+ {
+ mSignalReceived = true;
+ }
+
+ void Reset()
+ {
+ mSignalReceived = false;
+ }
+
+ void CheckSignalReceived()
+ {
+ if(!mSignalReceived)
+ {
+ tet_printf("Expected Finish signal was not received\n");
+ tet_result(TET_FAIL);
+ }
+ else
+ {
+ tet_result(TET_PASS);
+ }
+ }
+
+ void CheckSignalNotReceived()
+ {
+ if(mSignalReceived)
+ {
+ tet_printf("Unexpected Finish signal was received\n");
+ tet_result(TET_FAIL);
+ }
+ else
+ {
+ tet_result(TET_PASS);
+ }
+ }
+
+ bool& mSignalReceived; // owned by individual tests
+};
+
+int UtcDaliScaleTransitionSetGetProperty(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliScaleTransitionSetGetProperty");
+
+ Control control = Control::New();
+
+ ScaleTransition scale = ScaleTransition::New(control, 0.5f, TimePeriod(-0.5f, -0.5f));
+
+ Vector2 scaleFactor = scale.GetScaleFactor();
+ DALI_TEST_EQUALS(0.5f, scaleFactor.x, TEST_LOCATION);
+ DALI_TEST_EQUALS(0.5f, scaleFactor.y, TEST_LOCATION);
+
+
+ scale.SetScaleFactor(Vector2(1.5f, 1.2f));
+ scaleFactor = scale.GetScaleFactor();
+ DALI_TEST_EQUALS(1.5f, scaleFactor.x, TEST_LOCATION);
+ DALI_TEST_EQUALS(1.2f, scaleFactor.y, TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliScaleTransitionWithOffScene(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliScaleTransitionWithOffScene");
+
+ Control control = Control::New();
+ control.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ control.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ control.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
+ Property::Map controlProperty;
+ controlProperty.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
+ controlProperty.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
+ control.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty);
+
+ application.SendNotification();
+ application.Render(20);
+
+ Vector3 currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ ScaleTransition scale = ScaleTransition::New(control, 0.5f, TimePeriod(0.5f));
+ scale.SetAppearingTransition(false);
+ TransitionSet transitionSet = TransitionSet::New();
+ transitionSet.AddTransition(scale);
+ transitionSet.Play();
+
+ bool signalReceived(false);
+ TransitionFinishCheck finishCheck(signalReceived);
+ transitionSet.FinishedSignal().Connect(&application, finishCheck);
+
+ application.SendNotification();
+ application.Render(400);
+
+ // We didn't expect the animation to finish yet
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+
+ currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ application.SendNotification();
+ application.Render(200);
+
+ // We did expect the animation to finish
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+
+ application.SendNotification();
+ application.Render(20);
+
+ currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ END_TEST;
+}
+
+int UtcDaliScaleTransitionDisappearing(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliScaleTransitionDisappearing");
+
+ Control control = Control::New();
+ control.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ control.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ control.SetProperty(Actor::Property::SIZE, Vector3(100, 100, 0));
+ control.SetProperty(Actor::Property::OPACITY, 1.0f);
+ Property::Map controlProperty;
+ controlProperty.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
+ controlProperty.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
+ control.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty);
+
+ application.GetScene().Add(control);
+
+ application.SendNotification();
+ application.Render(20);
+
+ Vector3 currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ ScaleTransition scale = ScaleTransition::New(control, 0.5f, TimePeriod(0.5f));
+ scale.SetAppearingTransition(false);
+
+ TransitionSet transitionSet = TransitionSet::New();
+ transitionSet.AddTransition(scale);
+ transitionSet.Play();
+
+ bool signalReceived(false);
+ TransitionFinishCheck finishCheck(signalReceived);
+ transitionSet.FinishedSignal().Connect(&application, finishCheck);
+
+ application.SendNotification();
+ application.Render(400);
+
+ // We didn't expect the animation to finish yet
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+
+ currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x > 0.55f && currentScale.x < 0.65f);
+ DALI_TEST_CHECK(currentScale.y > 0.55f && currentScale.y < 0.65f);
+
+ application.SendNotification();
+ application.Render(200);
+
+ // We did expect the animation to finish
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+
+ application.SendNotification();
+ application.Render(20);
+
+ // Property is reset after animation.
+ currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ END_TEST;
+}
+
+int UtcDaliScaleTransitionAppearing(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliScaleTransitionAppearing");
+
+ Control control = Control::New();
+ control.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ control.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ control.SetProperty(Actor::Property::SIZE, Vector3(100, 100, 0));
+ control.SetProperty(Actor::Property::OPACITY, 1.0f);
+ Property::Map controlProperty;
+ controlProperty.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
+ controlProperty.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
+ control.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty);
+
+ application.GetScene().Add(control);
+
+ application.SendNotification();
+ application.Render(20);
+
+ Vector3 currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ ScaleTransition scale = ScaleTransition::New(control, Vector2(2.0, 0.5), TimePeriod(0.5f));
+ scale.SetAppearingTransition(true);
+ TransitionSet transitionSet = TransitionSet::New();
+ transitionSet.AddTransition(scale);
+ transitionSet.Play();
+
+ bool signalReceived(false);
+ TransitionFinishCheck finishCheck(signalReceived);
+ transitionSet.FinishedSignal().Connect(&application, finishCheck);
+
+ application.SendNotification();
+ application.Render(400);
+
+ // We didn't expect the animation to finish yet
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+
+ currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x > 1.1f && currentScale.x < 1.3f);
+ DALI_TEST_CHECK(currentScale.y > 0.85f && currentScale.y < 0.95f);
+
+ application.SendNotification();
+ application.Render(200);
+
+ // We did expect the animation to finish
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+
+ application.SendNotification();
+ application.Render(20);
+
+ currentScale = control.GetCurrentProperty<Vector3>(Actor::Property::SCALE);
+ DALI_TEST_CHECK(currentScale.x == 1.0f);
+ DALI_TEST_CHECK(currentScale.y == 1.0f);
+
+ END_TEST;
+}
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <iostream>
+#include <stdlib.h>
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali/devel-api/actors/actor-devel.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
+#include <dali-toolkit/public-api/transition/transition-set.h>
+#include <dali-toolkit/public-api/transition/transition-base.h>
+#include <dali-toolkit/public-api/transition/slide-transition.h>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+
+// Functor to test whether a Finish signal is emitted
+struct TransitionFinishCheck
+{
+ TransitionFinishCheck(bool& signalReceived)
+ : mSignalReceived(signalReceived)
+ {
+ }
+
+ void operator()(TransitionSet& transitionSet)
+ {
+ mSignalReceived = true;
+ }
+
+ void Reset()
+ {
+ mSignalReceived = false;
+ }
+
+ void CheckSignalReceived()
+ {
+ if(!mSignalReceived)
+ {
+ tet_printf("Expected Finish signal was not received\n");
+ tet_result(TET_FAIL);
+ }
+ else
+ {
+ tet_result(TET_PASS);
+ }
+ }
+
+ void CheckSignalNotReceived()
+ {
+ if(mSignalReceived)
+ {
+ tet_printf("Unexpected Finish signal was received\n");
+ tet_result(TET_FAIL);
+ }
+ else
+ {
+ tet_result(TET_PASS);
+ }
+ }
+
+ bool& mSignalReceived; // owned by individual tests
+};
+
+int UtcDaliSlideTransitionSetGetProperty(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliSlideTransitionSetGetProperty");
+
+ Control control = Control::New();
+
+ SlideTransition slide = SlideTransition::New(control, Dali::Toolkit::SlideTransitionDirection::TOP, TimePeriod(-0.5f, -0.5f));
+
+ TimePeriod timePeriod = slide.GetTimePeriod();
+ DALI_TEST_EQUALS(0.0f, timePeriod.delaySeconds, TEST_LOCATION);
+ DALI_TEST_EQUALS(0.0f, timePeriod.durationSeconds, TEST_LOCATION);
+
+ DALI_TEST_EQUALS(Dali::Toolkit::SlideTransitionDirection::TOP, slide.GetDirection(), TEST_LOCATION);
+
+ slide.SetDirection(Dali::Toolkit::SlideTransitionDirection::BOTTOM);
+ DALI_TEST_EQUALS(Dali::Toolkit::SlideTransitionDirection::BOTTOM, slide.GetDirection(), TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliSlideTransitionWithOffScene(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliSlideTransitionWithOffScene");
+
+ Control control = Control::New();
+ control.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ control.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ control.SetProperty(Actor::Property::SIZE, Vector3(150, 150, 0));
+ Property::Map controlProperty;
+ controlProperty.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
+ controlProperty.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
+ control.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty);
+
+ application.SendNotification();
+ application.Render(20);
+
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ SlideTransition slide = SlideTransition::New(control, Dali::Toolkit::SlideTransitionDirection::BOTTOM, TimePeriod(0.5f));
+ slide.SetAppearingTransition(false);
+ TransitionSet transitionSet = TransitionSet::New();
+ transitionSet.AddTransition(slide);
+ transitionSet.Play();
+
+ bool signalReceived(false);
+ TransitionFinishCheck finishCheck(signalReceived);
+ transitionSet.FinishedSignal().Connect(&application, finishCheck);
+
+ application.SendNotification();
+ application.Render(400);
+
+ // We didn't expect the animation to finish yet
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ application.SendNotification();
+ application.Render(200);
+
+ // We did expect the animation to finish
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+
+ application.SendNotification();
+ application.Render(20);
+
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliSlideTransitionOut(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliSlideTransitionOut");
+
+ Control control = Control::New();
+ control.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ control.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ control.SetProperty(Actor::Property::SIZE, Vector3(100, 100, 0));
+ control.SetProperty(Actor::Property::OPACITY, 1.0f);
+ Property::Map controlProperty;
+ controlProperty.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
+ controlProperty.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
+ control.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty);
+
+ application.GetScene().Add(control);
+
+ application.SendNotification();
+ application.Render(20);
+
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ Vector2 windowSize = application.GetScene().GetSize();
+ SlideTransition slide = SlideTransition::New(control, Dali::Toolkit::SlideTransitionDirection::BOTTOM, TimePeriod(0.5f));
+ slide.SetAppearingTransition(false);
+
+ TransitionSet transitionSet = TransitionSet::New();
+ transitionSet.AddTransition(slide);
+ transitionSet.Play();
+
+ bool signalReceived(false);
+ TransitionFinishCheck finishCheck(signalReceived);
+ transitionSet.FinishedSignal().Connect(&application, finishCheck);
+
+ application.SendNotification();
+ application.Render(400);
+
+ // We didn't expect the animation to finish yet
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+
+ Vector2 currentPosition = control.GetCurrentProperty<Vector2>(Actor::Property::POSITION);
+ currentPosition += (windowSize / 2.0f) - Vector2(50, 50);
+ DALI_TEST_CHECK(currentPosition.y >= 0.7 * windowSize.y && currentPosition.y <= 0.9 * windowSize.y);
+
+ application.SendNotification();
+ application.Render(200);
+
+ // We did expect the animation to finish
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+
+ application.SendNotification();
+ application.Render(20);
+
+ // Property is reset after animation.
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliSlideTransitionIn(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline("UtcDaliSlideTransitionIn");
+
+ Control control = Control::New();
+ control.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ control.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ control.SetProperty(Actor::Property::SIZE, Vector3(100, 100, 0));
+ control.SetProperty(Actor::Property::OPACITY, 1.0f);
+ Property::Map controlProperty;
+ controlProperty.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR);
+ controlProperty.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f));
+ control.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty);
+
+ application.GetScene().Add(control);
+
+ application.SendNotification();
+ application.Render(20);
+
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ Vector2 windowSize = application.GetScene().GetSize();
+
+ SlideTransition slide = SlideTransition::New(control, Dali::Toolkit::SlideTransitionDirection::RIGHT, TimePeriod(0.5f));
+ slide.SetAppearingTransition(true);
+ TransitionSet transitionSet = TransitionSet::New();
+ transitionSet.AddTransition(slide);
+ transitionSet.Play();
+
+ bool signalReceived(false);
+ TransitionFinishCheck finishCheck(signalReceived);
+ transitionSet.FinishedSignal().Connect(&application, finishCheck);
+
+ application.SendNotification();
+ application.Render(400);
+
+ // We didn't expect the animation to finish yet
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+
+ Vector2 currentPosition = control.GetCurrentProperty<Vector2>(Actor::Property::POSITION);
+ currentPosition += (windowSize / 2.0f) - Vector2(50, 50);
+ DALI_TEST_CHECK(currentPosition.x >= 0.1 * windowSize.x && currentPosition.x <= 0.3 * windowSize.x);
+
+ application.SendNotification();
+ application.Render(200);
+
+ // We did expect the animation to finish
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+
+ application.SendNotification();
+ application.Render(20);
+
+ DALI_TEST_EQUALS(Vector2(0, 0), control.GetCurrentProperty<Vector2>(Actor::Property::POSITION), TEST_LOCATION);
+
+ END_TEST;
+}
application.SendNotification();
application.Render();
- const Vector3 EXPECTED_NATURAL_SIZE( 452.0f, 94.0f, 0.0f );
+ const Vector3 EXPECTED_NATURAL_SIZE( 450.0f, 96.0f, 0.0f );
DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, label.GetNaturalSize(), TEST_LOCATION );
// check pixel size
#include <dali-toolkit/public-api/text/text-enumerations.h>
#include <dali-toolkit/public-api/transition/fade-transition.h>
+#include <dali-toolkit/public-api/transition/slide-transition.h>
+#include <dali-toolkit/public-api/transition/scale-transition.h>
#include <dali-toolkit/public-api/transition/transition.h>
#include <dali-toolkit/public-api/transition/transition-set.h>
${toolkit_src_dir}/text/rendering/text-typesetter.cpp
${toolkit_src_dir}/text/rendering/view-model.cpp
${toolkit_src_dir}/transition/fade-transition-impl.cpp
+ ${toolkit_src_dir}/transition/slide-transition-impl.cpp
+ ${toolkit_src_dir}/transition/scale-transition-impl.cpp
${toolkit_src_dir}/transition/transition-base-impl.cpp
${toolkit_src_dir}/transition/transition-impl.cpp
${toolkit_src_dir}/transition/transition-lifecycle-controller.cpp
return false;
}
- if(mEventData->mPrimaryCursorPosition == index)
+ if(mEventData->mPrimaryCursorPosition == index && mEventData->mState != EventData::SELECTING)
{
// Nothing for same cursor position.
return false;
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include <dali-toolkit/internal/transition/scale-transition-impl.h>
+
+// EXTERNAL INCLUDES
+#include <dali-toolkit/public-api/controls/control-impl.h>
+#include <dali/devel-api/actors/actor-devel.h>
+#include <dali/integration-api/debug.h>
+#include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/object/type-registry.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Internal
+{
+
+ScaleTransitionPtr ScaleTransition::New(Dali::Toolkit::Control control, const Vector2& scaleFactor, TimePeriod timePeriod)
+{
+ float delaySeconds = timePeriod.delaySeconds;
+ if(delaySeconds < 0.0f)
+ {
+ DALI_LOG_WARNING("delay should be greater than 0.0f.\n");
+ delaySeconds = 0.0f;
+ }
+
+ float durationSeconds = timePeriod.durationSeconds;
+ if(durationSeconds < 0.0f)
+ {
+ DALI_LOG_WARNING("duration should be greater than 0.0f.\n");
+ durationSeconds = 0.0f;
+ }
+
+ ScaleTransitionPtr scaleTransition = new ScaleTransition(control, scaleFactor, TimePeriod(delaySeconds, durationSeconds));
+
+ // Second-phase construction
+ scaleTransition->Initialize();
+
+ return scaleTransition;
+}
+
+ScaleTransition::ScaleTransition(Dali::Toolkit::Control control, const Vector2& scaleFactor, TimePeriod timePeriod)
+: TransitionBase(),
+ mTargetControl(control),
+ mScaleFactor(scaleFactor)
+{
+ SetTarget(control);
+ SetTimePeriod(timePeriod);
+}
+
+ScaleTransition::~ScaleTransition()
+{
+}
+
+void ScaleTransition::SetScaleFactor(const Vector2& scaleFactor)
+{
+ mScaleFactor = scaleFactor;
+}
+
+Vector2 ScaleTransition::GetScaleFactor() const
+{
+ return mScaleFactor;
+}
+
+void ScaleTransition::OnPlay()
+{
+ Dali::Toolkit::Control targetControl = mTargetControl.GetHandle();
+ if(!targetControl || !targetControl[Dali::Actor::Property::CONNECTED_TO_SCENE])
+ {
+ DALI_LOG_ERROR("The Control is not added on the window\n");
+ return;
+ }
+
+ Property::Map startPropertyMap;
+ Property::Map finishPropertyMap;
+
+ Vector3 targetScale = targetControl[Dali::Actor::Property::SCALE];
+ Vector3 scaleFactor = Vector3(mScaleFactor.x, mScaleFactor.y, 1.0f);
+ if(IsAppearingTransition())
+ {
+ startPropertyMap.Insert(Dali::Actor::Property::SCALE, scaleFactor * targetScale);
+ finishPropertyMap.Insert(Dali::Actor::Property::SCALE, targetScale);
+ }
+ else
+ {
+ startPropertyMap.Insert(Dali::Actor::Property::SCALE, targetScale);
+ finishPropertyMap.Insert(Dali::Actor::Property::SCALE, scaleFactor * targetScale);
+ }
+
+ SetStartPropertyMap(startPropertyMap);
+ SetFinishPropertyMap(finishPropertyMap);
+}
+
+} // namespace Internal
+
+} // namespace Toolkit
+
+} // namespace Dali
--- /dev/null
+#ifndef DALI_TOOLKIT_INTERNAL_SCALE_TRANSITION_H
+#define DALI_TOOLKIT_INTERNAL_SCALE_TRANSITION_H
+
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *Fade
+ */
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/transition/transition-base-impl.h>
+#include <dali-toolkit/public-api/controls/control.h>
+#include <dali-toolkit/public-api/transition/scale-transition.h>
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/object/weak-handle.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Internal
+{
+using ScaleTransitionPtr = IntrusivePtr<ScaleTransition>;
+
+class ScaleTransition : public TransitionBase
+{
+public:
+ /**
+ * @brief Create a new ScaleTransition object.
+ * @param[in] control A control of this transition.
+ * @param[in] scaleFactor A scale value to be applied on control during transition
+ * @param[in] timePeriod The duration of the animation.
+ * @return A smart-pointer to the newly allocated ScaleTransition.
+ */
+ static ScaleTransitionPtr New(Dali::Toolkit::Control control, const Vector2& scaleFactor, TimePeriod timePeriod);
+
+ /**
+ * @copydoc Dali::Toolkit::ScaleTransition::SetScaleFactor()
+ */
+ void SetScaleFactor(const Vector2& scaleFactor);
+
+ /**
+ * @copydoc Dali::Toolkit::ScaleTransition::GetDirection()
+ */
+ Vector2 GetScaleFactor() const;
+
+protected:
+ /**
+ * @copydoc Dali::Toolkit::ScaleTransition::OnPlay()
+ */
+ void OnPlay() override;
+
+protected:
+ /**
+ * @brief Construct a new ScaleTransition.
+ */
+ ScaleTransition(Dali::Toolkit::Control control,
+ const Vector2& scaleFactor,
+ TimePeriod timePeriod);
+
+ /**
+ * @brief A reference counted object may only be deleted by calling Unreference()
+ */
+ ~ScaleTransition() override;
+
+private:
+ // Undefined
+ ScaleTransition(const ScaleTransition&);
+
+ // Undefined
+ ScaleTransition& operator=(const ScaleTransition& rhs);
+
+private:
+ WeakHandle<Dali::Toolkit::Control> mTargetControl;
+ Vector2 mScaleFactor;
+};
+
+} // namespace Internal
+
+// Helpers for public-api forwarding methods
+
+inline Internal::ScaleTransition& GetImplementation(Dali::Toolkit::ScaleTransition& scale)
+{
+ DALI_ASSERT_ALWAYS(scale && "ScaleTransition handle is empty");
+
+ BaseObject& handle = scale.GetBaseObject();
+
+ return static_cast<Internal::ScaleTransition&>(handle);
+}
+
+inline const Internal::ScaleTransition& GetImplementation(const Dali::Toolkit::ScaleTransition& scale)
+{
+ DALI_ASSERT_ALWAYS(scale && "ScaleTransition handle is empty");
+
+ const BaseObject& handle = scale.GetBaseObject();
+
+ return static_cast<const Internal::ScaleTransition&>(handle);
+}
+
+} // namespace Toolkit
+
+} // namespace Dali
+
+#endif // DALI_TOOLKIT_INTERNAL_FADE_H
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include <dali-toolkit/internal/transition/slide-transition-impl.h>
+
+// EXTERNAL INCLUDES
+#include <dali-toolkit/public-api/controls/control-impl.h>
+#include <dali/devel-api/actors/actor-devel.h>
+#include <dali/devel-api/adaptor-framework/window-devel.h>
+#include <dali/integration-api/debug.h>
+#include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/object/type-registry.h>
+#include <limits>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Internal
+{
+SlideTransitionPtr SlideTransition::New(Dali::Toolkit::Control control, const Vector2& direction, TimePeriod timePeriod)
+{
+ float delaySeconds = timePeriod.delaySeconds;
+ if(delaySeconds < 0.0f)
+ {
+ DALI_LOG_WARNING("delay should be greater than 0.0f.\n");
+ delaySeconds = 0.0f;
+ }
+
+ float durationSeconds = timePeriod.durationSeconds;
+ if(durationSeconds < 0.0f)
+ {
+ DALI_LOG_WARNING("duration should be greater than 0.0f.\n");
+ durationSeconds = 0.0f;
+ }
+
+ SlideTransitionPtr slideTransition = new SlideTransition(control, direction, TimePeriod(delaySeconds, durationSeconds));
+
+ // Second-phase construction
+ slideTransition->Initialize();
+
+ return slideTransition;
+}
+
+SlideTransition::SlideTransition(Dali::Toolkit::Control control, const Vector2& direction, TimePeriod timePeriod)
+: TransitionBase(),
+ mTargetControl(control),
+ mDirection(direction)
+{
+ SetTarget(control);
+ SetTimePeriod(timePeriod);
+}
+
+SlideTransition::~SlideTransition()
+{
+}
+
+void SlideTransition::SetDirection(const Vector2& direction)
+{
+ mDirection = direction;
+ mDirection.Normalize();
+}
+
+Vector2 SlideTransition::GetDirection() const
+{
+ return mDirection;
+}
+
+void SlideTransition::OnPlay()
+{
+ Dali::Toolkit::Control targetControl = mTargetControl.GetHandle();
+ if(!targetControl || !targetControl[Dali::Actor::Property::CONNECTED_TO_SCENE])
+ {
+ DALI_LOG_ERROR("The Control is not added on the window\n");
+ return;
+ }
+
+ Property::Map startPropertyMap;
+ Property::Map finishPropertyMap;
+
+ Vector3 currentPosition = targetControl[Dali::Actor::Property::POSITION];
+ Vector3 currentScale = targetControl[Dali::Actor::Property::SCALE];
+
+ Vector3 size = targetControl[Dali::Actor::Property::SIZE];
+ size *= currentScale;
+
+ Vector2 windowSize = DevelWindow::Get(targetControl).GetSize();
+ // This checkPosition go outside of window(by following the direction), this targetControl will be out of window.
+ Vector2 checkPosition = windowSize / 2.0f +
+ Vector2(currentPosition.x + ((mDirection.x < 0.0f) ? size.x / 2.0f : -size.x / 2.0f),
+ currentPosition.y + ((mDirection.y < 0.0f) ? size.y / 2.0f : -size.y / 2.0f));
+
+ float xScale = (mDirection.x == 0.0f) ? std::numeric_limits<float>::max()
+ : ((mDirection.x < 0.0f) ? checkPosition.x : windowSize.x - checkPosition.x) / std::abs(mDirection.x);
+ float yScale = (mDirection.y == 0.0f) ? std::numeric_limits<float>::max()
+ : ((mDirection.y < 0.0f) ? checkPosition.y : windowSize.y - checkPosition.y) / std::abs(mDirection.y);
+
+ Vector2 displacement = mDirection * std::min(xScale, yScale);
+
+ Vector3 startPosition;
+ Vector3 finishPosition;
+ if(IsAppearingTransition())
+ {
+ startPosition = currentPosition + Vector3(displacement);
+ finishPosition = currentPosition;
+ }
+ else
+ {
+ startPosition = currentPosition;
+ finishPosition = currentPosition + Vector3(displacement);
+ }
+
+ startPropertyMap.Insert(Dali::Actor::Property::POSITION, startPosition);
+ finishPropertyMap.Insert(Dali::Actor::Property::POSITION, finishPosition);
+
+ SetStartPropertyMap(startPropertyMap);
+ SetFinishPropertyMap(finishPropertyMap);
+}
+
+} // namespace Internal
+
+} // namespace Toolkit
+
+} // namespace Dali
--- /dev/null
+#ifndef DALI_TOOLKIT_INTERNAL_SLIDE_TRANSITION_H
+#define DALI_TOOLKIT_INTERNAL_SLIDE_TRANSITION_H
+
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/transition/transition-base-impl.h>
+#include <dali-toolkit/public-api/controls/control.h>
+#include <dali-toolkit/public-api/transition/slide-transition.h>
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/object/weak-handle.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Internal
+{
+using SlideTransitionPtr = IntrusivePtr<SlideTransition>;
+
+class SlideTransition : public TransitionBase
+{
+public:
+ /**
+ * @brief Create a new SlideTransition object.
+ * @param[in] control A control of this transition.
+ * @param[in] direction Relative direction that the control is comming from or going to.
+ * @param[in] timePeriod The duration of the animation.
+ * @return A smart-pointer to the newly allocated SlideTransition.
+ */
+ static SlideTransitionPtr New(Dali::Toolkit::Control control, const Vector2& direction, TimePeriod timePeriod);
+
+ /**
+ * @copydoc Dali::Toolkit::SlideTransition::SetDirection()
+ */
+ void SetDirection(const Vector2& direction);
+
+ /**
+ * @copydoc Dali::Toolkit::SlideTransition::GetDirection()
+ */
+ Vector2 GetDirection() const;
+
+protected:
+ /**
+ * @copydoc Dali::Toolkit::SlideTransition::OnPlay()
+ */
+ void OnPlay() override;
+
+protected:
+ /**
+ * @brief Construct a new SlideTransition.
+ */
+ SlideTransition(Dali::Toolkit::Control control,
+ const Vector2& direction,
+ TimePeriod timePeriod);
+
+ /**
+ * @brief A reference counted object may only be deleted by calling Unreference()
+ */
+ ~SlideTransition() override;
+
+private:
+ // Undefined
+ SlideTransition(const SlideTransition&);
+
+ // Undefined
+ SlideTransition& operator=(const SlideTransition& rhs);
+
+private:
+ WeakHandle<Dali::Toolkit::Control> mTargetControl;
+ Vector2 mDirection;
+};
+
+} // namespace Internal
+
+// Helpers for public-api forwarding methods
+
+inline Internal::SlideTransition& GetImplementation(Dali::Toolkit::SlideTransition& slide)
+{
+ DALI_ASSERT_ALWAYS(slide && "SlideTransition handle is empty");
+
+ BaseObject& handle = slide.GetBaseObject();
+
+ return static_cast<Internal::SlideTransition&>(handle);
+}
+
+inline const Internal::SlideTransition& GetImplementation(const Dali::Toolkit::SlideTransition& slide)
+{
+ DALI_ASSERT_ALWAYS(slide && "SlideTransition handle is empty");
+
+ const BaseObject& handle = slide.GetBaseObject();
+
+ return static_cast<const Internal::SlideTransition&>(handle);
+}
+
+} // namespace Toolkit
+
+} // namespace Dali
+
+#endif // DALI_TOOLKIT_INTERNAL_SLIDE_TRANSITION_H
std::string marker;
if(playRange.GetElementAt(0).Get(marker))
{
- if(mVectorRenderer)
+ if(mVectorRenderer && mVectorRenderer.GetMarkerInfo(marker, startFrame, endFrame))
{
- mVectorRenderer.GetMarkerInfo(marker, startFrame, endFrame);
valid = true;
}
}
{
const unsigned int TOOLKIT_MAJOR_VERSION = 2;
const unsigned int TOOLKIT_MINOR_VERSION = 0;
-const unsigned int TOOLKIT_MICRO_VERSION = 42;
+const unsigned int TOOLKIT_MICRO_VERSION = 43;
const char* const TOOLKIT_BUILD_DATE = __DATE__ " " __TIME__;
#ifdef DEBUG_ENABLED
${public_api_src_dir}/image-loader/sync-image-loader.cpp
${public_api_src_dir}/styling/style-manager.cpp
${public_api_src_dir}/transition/fade-transition.cpp
+ ${public_api_src_dir}/transition/slide-transition.cpp
+ ${public_api_src_dir}/transition/scale-transition.cpp
${public_api_src_dir}/transition/transition-base.cpp
${public_api_src_dir}/transition/transition-set.cpp
${public_api_src_dir}/transition/transition.cpp
SET( public_api_transition_header_files
${public_api_src_dir}/transition/fade-transition.h
+ ${public_api_src_dir}/transition/slide-transition.h
+ ${public_api_src_dir}/transition/scale-transition.h
${public_api_src_dir}/transition/transition-base.h
${public_api_src_dir}/transition/transition-set.h
${public_api_src_dir}/transition/transition.h
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include <dali-toolkit/public-api/transition/scale-transition.h>
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/transition/scale-transition-impl.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+ScaleTransition::ScaleTransition() = default;
+
+ScaleTransition::ScaleTransition(Internal::ScaleTransition* scaleTransition)
+: TransitionBase(scaleTransition)
+{
+}
+
+ScaleTransition ScaleTransition::New(Dali::Toolkit::Control control, float scaleFactor, TimePeriod timePeriod)
+{
+ Internal::ScaleTransitionPtr internal = Dali::Toolkit::Internal::ScaleTransition::New(control, Vector2(scaleFactor, scaleFactor), timePeriod);
+
+ return ScaleTransition(internal.Get());
+}
+
+ScaleTransition ScaleTransition::New(Dali::Toolkit::Control control, const Vector2& scaleFactor, TimePeriod timePeriod)
+{
+ Internal::ScaleTransitionPtr internal = Dali::Toolkit::Internal::ScaleTransition::New(control, scaleFactor, timePeriod);
+
+ return ScaleTransition(internal.Get());
+}
+
+ScaleTransition ScaleTransition::DownCast(BaseHandle handle)
+{
+ return ScaleTransition(dynamic_cast<Dali::Toolkit::Internal::ScaleTransition*>(handle.GetObjectPtr()));
+}
+
+ScaleTransition::~ScaleTransition() = default;
+
+ScaleTransition::ScaleTransition(const ScaleTransition& handle) = default;
+
+ScaleTransition& ScaleTransition::operator=(const ScaleTransition& rhs) = default;
+
+ScaleTransition::ScaleTransition(ScaleTransition&& rhs) = default;
+
+ScaleTransition& ScaleTransition::operator=(ScaleTransition&& rhs) = default;
+
+void ScaleTransition::SetScaleFactor(const Vector2& scaleFactor)
+{
+ GetImplementation(*this).SetScaleFactor(scaleFactor);
+}
+
+Vector2 ScaleTransition::GetScaleFactor() const
+{
+ return GetImplementation(*this).GetScaleFactor();
+}
+
+} // namespace Toolkit
+
+} // namespace Dali
--- /dev/null
+#ifndef DALI_TOOLKIT_SCALE_TRANSITION_H
+#define DALI_TOOLKIT_SCALE_TRANSITION_H
+
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/public-api/controls/control.h>
+#include <dali-toolkit/public-api/transition/transition-base.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Internal DALI_INTERNAL
+{
+class ScaleTransition;
+}
+
+/**
+ * @brief ScaleTransition provides smoothly appearing/disappearing effects for target Control.
+ * User of this scale transition can set scale factor for this transiton.
+ * The scale factor can be a single float value or Vector2 value.
+ * If it is a single float value, the value is applied to both x and y direction.
+ *
+ * If this transition is for appearing, the Control comes out with the scale factor applied
+ * and will be animated at its original scale.
+ * If this transition is for disappearing, the Control starts at its original size
+ * but will become the scale of scale factor and vanished.
+ */
+class DALI_TOOLKIT_API ScaleTransition : public TransitionBase
+{
+public:
+ /**
+ * @brief Creates an uninitialized ScaleTransition; this can be initialized with ScaleTransition::New().
+ *
+ * Calling member functions with an uninitialized ScaleTransition handle is not allowed.
+ */
+ ScaleTransition();
+
+ /**
+ * @brief Creates an initialized ScaleTransition.
+ *
+ * @param[in] control A control of this transition.
+ * @param[in] scaleFactor A scala scale factor that will be applied on both of width and height of the control
+ * @param[in] timePeriod The duration of the animation.
+ * @return A handle to a newly allocated Dali resource
+ */
+ static ScaleTransition New(Dali::Toolkit::Control control, float scaleFactor, TimePeriod timePeriod);
+
+ /**
+ * @brief Creates an initialized ScaleTransition.
+ *
+ * @param[in] control A control of this transition.
+ * @param[in] scaleFactor A scale vector to be applied on control during transition
+ * @param[in] timePeriod The duration of the animation.
+ * @return A handle to a newly allocated Dali resource
+ */
+ static ScaleTransition New(Dali::Toolkit::Control control, const Vector2& scaleFactor, TimePeriod timePeriod);
+
+ /**
+ * @brief Downcasts a handle to ScaleTransition handle.
+ *
+ * If handle points to an ScaleTransition object, the downcast produces valid handle.
+ * If not, the returned handle is left uninitialized.
+ *
+ * @param[in] handle Handle to an object
+ * @return Handle to an ScaleTransition object or an uninitialized handle
+ */
+ static ScaleTransition DownCast(BaseHandle handle);
+
+ /**
+ * @brief Destructor.
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
+ */
+ ~ScaleTransition();
+
+ /**
+ * @brief This copy constructor is required for (smart) pointer semantics.
+ *
+ * @param[in] handle A reference to the copied handle
+ */
+ ScaleTransition(const ScaleTransition& handle);
+
+ /**
+ * @brief This assignment operator is required for (smart) pointer semantics.
+ *
+ * @param[in] rhs A reference to the copied handle
+ * @return A reference to this
+ */
+ ScaleTransition& operator=(const ScaleTransition& rhs);
+
+ /**
+ * @brief Move constructor.
+ *
+ * @param[in] rhs A reference to the moved handle
+ */
+ ScaleTransition(ScaleTransition&& rhs);
+
+ /**
+ * @brief Move assignment operator.
+ *
+ * @param[in] rhs A reference to the moved handle
+ * @return A reference to this handle
+ */
+ ScaleTransition& operator=(ScaleTransition&& rhs);
+
+ /**
+ * @brief Sets scaleFactor to be used to scale target Control
+ *
+ * @param[in] scaleFactor Relative scaleFactor that will be used when the Control is appearing or disappearing.
+ */
+ void SetScaleFactor(const Vector2& scaleFactor);
+
+ /**
+ * @brief Retrieves scaleFactor that will be used when the Control is appearing or disappearing.
+ */
+ Vector2 GetScaleFactor() const;
+
+public: // Not intended for use by Application developers
+ /// @cond internal
+ /**
+ * @brief This constructor is used by ScaleTransition::New() methods.
+ * @param[in] scale A pointer to a newly allocated Dali resource
+ */
+ explicit DALI_INTERNAL ScaleTransition(Internal::ScaleTransition* scale);
+ /// @endcond
+};
+
+} // namespace Toolkit
+
+} // namespace Dali
+
+#endif // DALI_TOOLKIT_SCALE_TRANSITION_H
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include <dali-toolkit/public-api/transition/slide-transition.h>
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/transition/slide-transition-impl.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+SlideTransition::SlideTransition() = default;
+
+SlideTransition::SlideTransition(Internal::SlideTransition* slideTransition)
+: TransitionBase(slideTransition)
+{
+}
+
+SlideTransition SlideTransition::New(Dali::Toolkit::Control control, const Vector2& direction, TimePeriod timePeriod)
+{
+ Internal::SlideTransitionPtr internal = Dali::Toolkit::Internal::SlideTransition::New(control, direction, timePeriod);
+
+ return SlideTransition(internal.Get());
+}
+
+SlideTransition SlideTransition::DownCast(BaseHandle handle)
+{
+ return SlideTransition(dynamic_cast<Dali::Toolkit::Internal::SlideTransition*>(handle.GetObjectPtr()));
+}
+
+SlideTransition::~SlideTransition() = default;
+
+SlideTransition::SlideTransition(const SlideTransition& handle) = default;
+
+SlideTransition& SlideTransition::operator=(const SlideTransition& rhs) = default;
+
+SlideTransition::SlideTransition(SlideTransition&& rhs) = default;
+
+SlideTransition& SlideTransition::operator=(SlideTransition&& rhs) = default;
+
+void SlideTransition::SetDirection(const Vector2& direction)
+{
+ GetImplementation(*this).SetDirection(direction);
+}
+
+Vector2 SlideTransition::GetDirection() const
+{
+ return GetImplementation(*this).GetDirection();
+}
+
+} // namespace Toolkit
+
+} // namespace Dali
--- /dev/null
+#ifndef DALI_TOOLKIT_SLIDE_TRANSITION_H
+#define DALI_TOOLKIT_SLIDE_TRANSITION_H
+
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/public-api/controls/control.h>
+#include <dali-toolkit/public-api/transition/transition-base.h>
+
+namespace Dali
+{
+namespace Toolkit
+{
+namespace Internal DALI_INTERNAL
+{
+class SlideTransition;
+}
+
+/**
+ * @brief Pre-defined directions to define where the control is comming from or going to.
+ */
+namespace SlideTransitionDirection
+{
+ static constexpr Vector2 TOP(0, -1); // TOP
+ static constexpr Vector2 BOTTOM(0, 1); // BOTTOM
+ static constexpr Vector2 LEFT(-1, 0); // LEFT
+ static constexpr Vector2 RIGHT(1, 0); // RIGHT
+}
+
+/**
+ * @brief SlideTransition provides smoothly appearing/disappearing effects for target Control.
+ * The direction the target Control is comming from or going to can be selected in the pre-defined directions. {UP, DOWN, LEFT, RIGHT}
+ * And, to use custom direction, the direction can be set CUSTOM and use SetDirection(Vector2) method.
+ */
+class DALI_TOOLKIT_API SlideTransition : public TransitionBase
+{
+public:
+
+ /**
+ * @brief Creates an uninitialized SlideTransition; this can be initialized with SlideTransition::New().
+ *
+ * Calling member functions with an uninitialized SlideTransition handle is not allowed.
+ */
+ SlideTransition();
+
+ /**
+ * @brief Creates an initialized SlideTransition.
+ *
+ * @param[in] control A control of this transition.
+ * @param[in] direction Relative direction that the control is comming from or going to.
+ * @param[in] timePeriod The duration of the animation.
+ * @return A handle to a newly allocated Dali resource
+ */
+ static SlideTransition New(Dali::Toolkit::Control control, const Vector2& direction, TimePeriod timePeriod);
+
+ /**
+ * @brief Downcasts a handle to SlideTransition handle.
+ *
+ * If handle points to an SlideTransition object, the downcast produces valid handle.
+ * If not, the returned handle is left uninitialized.
+ *
+ * @param[in] handle Handle to an object
+ * @return Handle to an SlideTransition object or an uninitialized handle
+ */
+ static SlideTransition DownCast(BaseHandle handle);
+
+ /**
+ * @brief Destructor.
+ *
+ * This is non-virtual since derived Handle types must not contain data or virtual methods.
+ */
+ ~SlideTransition();
+
+ /**
+ * @brief This copy constructor is required for (smart) pointer semantics.
+ *
+ * @param[in] handle A reference to the copied handle
+ */
+ SlideTransition(const SlideTransition& handle);
+
+ /**
+ * @brief This assignment operator is required for (smart) pointer semantics.
+ *
+ * @param[in] rhs A reference to the copied handle
+ * @return A reference to this
+ */
+ SlideTransition& operator=(const SlideTransition& rhs);
+
+ /**
+ * @brief Move constructor.
+ *
+ * @param[in] rhs A reference to the moved handle
+ */
+ SlideTransition(SlideTransition&& rhs);
+
+ /**
+ * @brief Move assignment operator.
+ *
+ * @param[in] rhs A reference to the moved handle
+ * @return A reference to this handle
+ */
+ SlideTransition& operator=(SlideTransition&& rhs);
+
+ /**
+ * @brief Sets direction to be used to move target Control
+ *
+ * @param[in] direction Relative direction that the control is comming from or going to.
+ */
+ void SetDirection(const Vector2& direction);
+
+ /**
+ * @brief Retrieves direction to be used to move target Control
+ *
+ * @note The direction is normalized Vector.
+ */
+ Vector2 GetDirection() const;
+
+public: // Not intended for use by Application developers
+ /// @cond internal
+ /**
+ * @brief This constructor is used by SlideTransition::New() methods.
+ * @param[in] slideTransition A pointer to a newly allocated Dali resource
+ */
+ explicit DALI_INTERNAL SlideTransition(Internal::SlideTransition* slideTransition);
+ /// @endcond
+};
+
+} // namespace Toolkit
+
+} // namespace Dali
+
+#endif // DALI_TOOLKIT_SLIDE_TRANSITION_H
Name: dali2-toolkit
Summary: Dali 3D engine Toolkit
-Version: 2.0.42
+Version: 2.0.43
Release: 1
Group: System/Libraries
License: Apache-2.0 and BSD-3-Clause and MIT