Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: Source/core/rendering/RenderBlockFlow.cpp

Issue 104813005: Explicitly set text direction for TextRuns (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 2460 matching lines...) Expand 10 before | Expand all | Expand 10 after
2471 lastLogicalTop = rootBlock->blockDirectionOffset(offsetFromRootBlock) + lastSelectedLine->selectionBottom(); 2471 lastLogicalTop = rootBlock->blockDirectionOffset(offsetFromRootBlock) + lastSelectedLine->selectionBottom();
2472 lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, lastSelectedLine ->selectionBottom()); 2472 lastLogicalLeft = logicalLeftSelectionOffset(rootBlock, lastSelectedLine ->selectionBottom());
2473 lastLogicalRight = logicalRightSelectionOffset(rootBlock, lastSelectedLi ne->selectionBottom()); 2473 lastLogicalRight = logicalRightSelectionOffset(rootBlock, lastSelectedLi ne->selectionBottom());
2474 } 2474 }
2475 return result; 2475 return result;
2476 } 2476 }
2477 2477
2478 template <typename CharacterType> 2478 template <typename CharacterType>
2479 static inline TextRun constructTextRunInternal(RenderObject* context, const Font & font, const CharacterType* characters, int length, RenderStyle* style, TextRun ::ExpansionBehavior expansion) 2479 static inline TextRun constructTextRunInternal(RenderObject* context, const Font & font, const CharacterType* characters, int length, RenderStyle* style, TextRun ::ExpansionBehavior expansion)
2480 { 2480 {
2481 return constructTextRunInternal(context, font, characters, length, style, LT R, expansion);
2482 }
2483
2484 template <typename CharacterType>
2485 static inline TextRun constructTextRunInternal(RenderObject* context, const Font & font, const CharacterType* characters, int length, RenderStyle* style, TextDir ection direction, TextRun::ExpansionBehavior expansion)
2486 {
2481 ASSERT(style); 2487 ASSERT(style);
2482 2488
2483 TextDirection textDirection = LTR; 2489 TextDirection textDirection = direction;
2484 bool directionalOverride = style->rtlOrdering() == VisualOrder; 2490 bool directionalOverride = style->rtlOrdering() == VisualOrder;
2485 2491
2486 TextRun run(characters, length, 0, 0, expansion, textDirection, directionalO verride); 2492 TextRun run(characters, length, 0, 0, expansion, textDirection, directionalO verride);
2487 if (textRunNeedsRenderingContext(font)) 2493 if (textRunNeedsRenderingContext(font))
2488 run.setRenderingContext(SVGTextRunRenderingContext::create(context)); 2494 run.setRenderingContext(SVGTextRunRenderingContext::create(context));
2489 2495
2490 return run; 2496 return run;
2491 } 2497 }
2492 2498
2493 template <typename CharacterType> 2499 template <typename CharacterType>
(...skipping 27 matching lines...) Expand all
2521 return constructTextRunInternal(context, font, characters, length, style, ex pansion); 2527 return constructTextRunInternal(context, font, characters, length, style, ex pansion);
2522 } 2528 }
2523 2529
2524 TextRun RenderBlockFlow::constructTextRun(RenderObject* context, const Font& fon t, const RenderText* text, RenderStyle* style, TextRun::ExpansionBehavior expans ion) 2530 TextRun RenderBlockFlow::constructTextRun(RenderObject* context, const Font& fon t, const RenderText* text, RenderStyle* style, TextRun::ExpansionBehavior expans ion)
2525 { 2531 {
2526 if (text->is8Bit()) 2532 if (text->is8Bit())
2527 return constructTextRunInternal(context, font, text->characters8(), text ->textLength(), style, expansion); 2533 return constructTextRunInternal(context, font, text->characters8(), text ->textLength(), style, expansion);
2528 return constructTextRunInternal(context, font, text->characters16(), text->t extLength(), style, expansion); 2534 return constructTextRunInternal(context, font, text->characters16(), text->t extLength(), style, expansion);
2529 } 2535 }
2530 2536
2531 TextRun RenderBlockFlow::constructTextRun(RenderObject* context, const Font& fon t, const RenderText* text, unsigned offset, unsigned length, RenderStyle* style, TextRun::ExpansionBehavior expansion) 2537 TextRun RenderBlockFlow::constructTextRun(RenderObject* context, const Font& fon t, const RenderText* text, unsigned offset, unsigned length, RenderStyle* style, TextDirection direction, TextRun::ExpansionBehavior expansion)
2532 { 2538 {
2533 ASSERT(offset + length <= text->textLength()); 2539 ASSERT(offset + length <= text->textLength());
2534 if (text->is8Bit()) 2540 if (text->is8Bit())
2535 return constructTextRunInternal(context, font, text->characters8() + off set, length, style, expansion); 2541 return constructTextRunInternal(context, font, text->characters8() + off set, length, style, direction, expansion);
2536 return constructTextRunInternal(context, font, text->characters16() + offset , length, style, expansion); 2542 return constructTextRunInternal(context, font, text->characters16() + offset , length, style, direction, expansion);
2537 } 2543 }
2538 2544
2539 TextRun RenderBlockFlow::constructTextRun(RenderObject* context, const Font& fon t, const String& string, RenderStyle* style, TextRun::ExpansionBehavior expansio n, TextRunFlags flags) 2545 TextRun RenderBlockFlow::constructTextRun(RenderObject* context, const Font& fon t, const String& string, RenderStyle* style, TextRun::ExpansionBehavior expansio n, TextRunFlags flags)
2540 { 2546 {
2541 unsigned length = string.length(); 2547 unsigned length = string.length();
2542 if (!length) 2548 if (!length)
2543 return constructTextRunInternal(context, font, static_cast<const LChar*> (0), length, style, expansion, flags); 2549 return constructTextRunInternal(context, font, static_cast<const LChar*> (0), length, style, expansion, flags);
2544 if (string.is8Bit()) 2550 if (string.is8Bit())
2545 return constructTextRunInternal(context, font, string.characters8(), len gth, style, expansion, flags); 2551 return constructTextRunInternal(context, font, string.characters8(), len gth, style, expansion, flags);
2546 return constructTextRunInternal(context, font, string.characters16(), length , style, expansion, flags); 2552 return constructTextRunInternal(context, font, string.characters16(), length , style, expansion, flags);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
2603 RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData() 2609 RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData()
2604 { 2610 {
2605 if (m_rareData) 2611 if (m_rareData)
2606 return *m_rareData; 2612 return *m_rareData;
2607 2613
2608 m_rareData = adoptPtr(new RenderBlockFlowRareData(this)); 2614 m_rareData = adoptPtr(new RenderBlockFlowRareData(this));
2609 return *m_rareData; 2615 return *m_rareData;
2610 } 2616 }
2611 2617
2612 } // namespace WebCore 2618 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698