OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. |
3 * | 3 * |
4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
8 * | 8 * |
9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 if (textPathOffset < 0) { | 548 if (textPathOffset < 0) { |
549 advanceToNextLogicalCharacter(logicalMetrics); | 549 advanceToNextLogicalCharacter(logicalMetrics); |
550 advanceToNextVisualCharacter(visualMetrics); | 550 advanceToNextVisualCharacter(visualMetrics); |
551 continue; | 551 continue; |
552 } | 552 } |
553 | 553 |
554 // Stop processing, if the next character lies behind the path. | 554 // Stop processing, if the next character lies behind the path. |
555 if (textPathOffset > m_textPathLength) | 555 if (textPathOffset > m_textPathLength) |
556 break; | 556 break; |
557 | 557 |
558 bool ok = false; | 558 FloatPoint point; |
559 FloatPoint point = m_textPath.pointAtLength(textPathOffset, ok); | 559 bool ok = m_textPath.pointAndNormalAtLength(textPathOffset, point, a
ngle); |
560 ASSERT(ok); | 560 ASSERT_UNUSED(ok, ok); |
561 | |
562 x = point.x(); | 561 x = point.x(); |
563 y = point.y(); | 562 y = point.y(); |
564 angle = m_textPath.normalAngleAtLength(textPathOffset, ok); | |
565 ASSERT(ok); | |
566 | 563 |
567 // For vertical text on path, the actual angle has to be rotated 90
degrees anti-clockwise, not the orientation angle! | 564 // For vertical text on path, the actual angle has to be rotated 90
degrees anti-clockwise, not the orientation angle! |
568 if (m_isVerticalText) | 565 if (m_isVerticalText) |
569 angle -= 90; | 566 angle -= 90; |
570 } else { | 567 } else { |
571 // Apply all previously calculated shift values. | 568 // Apply all previously calculated shift values. |
572 if (m_isVerticalText) { | 569 if (m_isVerticalText) { |
573 x += baselineShift; | 570 x += baselineShift; |
574 y -= kerning; | 571 y -= kerning; |
575 } else { | 572 } else { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 } | 643 } |
647 | 644 |
648 if (!didStartTextFragment) | 645 if (!didStartTextFragment) |
649 return; | 646 return; |
650 | 647 |
651 // Close last open fragment, if needed. | 648 // Close last open fragment, if needed. |
652 recordTextFragment(textBox, visualMetricsValues); | 649 recordTextFragment(textBox, visualMetricsValues); |
653 } | 650 } |
654 | 651 |
655 } | 652 } |
OLD | NEW |