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

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

Issue 50413008: Rendering text-justify:none (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: patch for landing Created 7 years, 1 month 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
« no previous file with comments | « LayoutTests/fast/css3-text/css3-text-justify/text-justify-none-expected.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ight reserved. 3 * Copyright (C) 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ight reserved.
4 * Copyright (C) 2010 Google Inc. All rights reserved. 4 * Copyright (C) 2010 Google Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 BidiRun* RenderBlockFlow::computeInlineDirectionPositionsForSegment(RootInlineBo x* lineBox, const LineInfo& lineInfo, ETextAlign textAlign, float& logicalLeft, 1006 BidiRun* RenderBlockFlow::computeInlineDirectionPositionsForSegment(RootInlineBo x* lineBox, const LineInfo& lineInfo, ETextAlign textAlign, float& logicalLeft,
1007 float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceRun, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& vertica lPositionCache, 1007 float& availableLogicalWidth, BidiRun* firstRun, BidiRun* trailingSpaceRun, GlyphOverflowAndFallbackFontsMap& textBoxDataMap, VerticalPositionCache& vertica lPositionCache,
1008 WordMeasurements& wordMeasurements) 1008 WordMeasurements& wordMeasurements)
1009 { 1009 {
1010 bool needsWordSpacing = false; 1010 bool needsWordSpacing = false;
1011 float totalLogicalWidth = lineBox->getFlowSpacingLogicalWidth(); 1011 float totalLogicalWidth = lineBox->getFlowSpacingLogicalWidth();
1012 unsigned expansionOpportunityCount = 0; 1012 unsigned expansionOpportunityCount = 0;
1013 bool isAfterExpansion = true; 1013 bool isAfterExpansion = true;
1014 Vector<unsigned, 16> expansionOpportunities; 1014 Vector<unsigned, 16> expansionOpportunities;
1015 RenderObject* previousObject = 0; 1015 RenderObject* previousObject = 0;
1016 TextJustify textJustify = style()->textJustify();
1016 1017
1017 BidiRun* r = firstRun; 1018 BidiRun* r = firstRun;
1018 for (; r; r = r->next()) { 1019 for (; r; r = r->next()) {
1019 // Once we have reached the start of the next segment, we have finished 1020 // Once we have reached the start of the next segment, we have finished
1020 // computing the positions for this segment's contents. 1021 // computing the positions for this segment's contents.
1021 if (r->m_startsSegment) 1022 if (r->m_startsSegment)
1022 break; 1023 break;
1023 if (!r->m_box || r->m_object->isOutOfFlowPositioned() || r->m_box->isLin eBreak()) 1024 if (!r->m_box || r->m_object->isOutOfFlowPositioned() || r->m_box->isLin eBreak())
1024 continue; // Positioned objects are only participating to figure out their 1025 continue; // Positioned objects are only participating to figure out their
1025 // correct static x position. They have no effect on the width. 1026 // correct static x position. They have no effect on the width.
1026 // Similarly, line break boxes have no effect on the width . 1027 // Similarly, line break boxes have no effect on the width .
1027 if (r->m_object->isText()) { 1028 if (r->m_object->isText()) {
1028 RenderText* rt = toRenderText(r->m_object); 1029 RenderText* rt = toRenderText(r->m_object);
1029 if (textAlign == JUSTIFY && r != trailingSpaceRun) { 1030 if (textAlign == JUSTIFY && r != trailingSpaceRun && textJustify != TextJustifyNone) {
1030 if (!isAfterExpansion) 1031 if (!isAfterExpansion)
1031 toInlineTextBox(r->m_box)->setCanHaveLeadingExpansion(true); 1032 toInlineTextBox(r->m_box)->setCanHaveLeadingExpansion(true);
1032 unsigned opportunitiesInRun; 1033 unsigned opportunitiesInRun;
1033 if (rt->is8Bit()) 1034 if (rt->is8Bit())
1034 opportunitiesInRun = Font::expansionOpportunityCount(rt->cha racters8() + r->m_start, r->m_stop - r->m_start, r->m_box->direction(), isAfterE xpansion); 1035 opportunitiesInRun = Font::expansionOpportunityCount(rt->cha racters8() + r->m_start, r->m_stop - r->m_start, r->m_box->direction(), isAfterE xpansion);
1035 else 1036 else
1036 opportunitiesInRun = Font::expansionOpportunityCount(rt->cha racters16() + r->m_start, r->m_stop - r->m_start, r->m_box->direction(), isAfter Expansion); 1037 opportunitiesInRun = Font::expansionOpportunityCount(rt->cha racters16() + r->m_start, r->m_stop - r->m_start, r->m_box->direction(), isAfter Expansion);
1037 expansionOpportunities.append(opportunitiesInRun); 1038 expansionOpportunities.append(opportunitiesInRun);
1038 expansionOpportunityCount += opportunitiesInRun; 1039 expansionOpportunityCount += opportunitiesInRun;
1039 } 1040 }
(...skipping 2482 matching lines...) Expand 10 before | Expand all | Expand 10 after
3522 lineGridBox->alignBoxesInBlockDirection(logicalHeight(), textBoxDataMap, ver ticalPositionCache); 3523 lineGridBox->alignBoxesInBlockDirection(logicalHeight(), textBoxDataMap, ver ticalPositionCache);
3523 3524
3524 setLineGridBox(lineGridBox); 3525 setLineGridBox(lineGridBox);
3525 3526
3526 // FIXME: If any of the characteristics of the box change compared to the ol d one, then we need to do a deep dirtying 3527 // FIXME: If any of the characteristics of the box change compared to the ol d one, then we need to do a deep dirtying
3527 // (similar to what happens when the page height changes). Ideally, though, we only do this if someone is actually snapping 3528 // (similar to what happens when the page height changes). Ideally, though, we only do this if someone is actually snapping
3528 // to this grid. 3529 // to this grid.
3529 } 3530 }
3530 3531
3531 } 3532 }
OLDNEW
« no previous file with comments | « LayoutTests/fast/css3-text/css3-text-justify/text-justify-none-expected.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698