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

Side by Side Diff: Source/core/rendering/style/RenderStyle.h

Issue 82083002: Move viewport unit resolution to style recalc time (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: actually fix zoom handling Created 7 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) 3 * (C) 2000 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 5 * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) 6 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 250
251 unsigned _styleType : 6; // PseudoId 251 unsigned _styleType : 6; // PseudoId
252 unsigned _pseudoBits : 8; 252 unsigned _pseudoBits : 8;
253 unsigned explicitInheritance : 1; // Explicitly inherits a non-inherited property 253 unsigned explicitInheritance : 1; // Explicitly inherits a non-inherited property
254 unsigned currentColor : 1; // At least one color has the value 'currentC olor' 254 unsigned currentColor : 1; // At least one color has the value 'currentC olor'
255 unsigned unique : 1; // Style can not be shared. 255 unsigned unique : 1; // Style can not be shared.
256 unsigned emptyState : 1; 256 unsigned emptyState : 1;
257 unsigned firstChildState : 1; 257 unsigned firstChildState : 1;
258 unsigned lastChildState : 1; 258 unsigned lastChildState : 1;
259 259
260 // This is set if we used viewport units when resolving a length.
261 // It is mutable so we can pass around const RenderStyles to resolve len gths.
262 mutable unsigned hasViewportUnits : 1;
263
260 bool affectedByFocus() const { return _affectedByFocus; } 264 bool affectedByFocus() const { return _affectedByFocus; }
261 void setAffectedByFocus(bool value) { _affectedByFocus = value; } 265 void setAffectedByFocus(bool value) { _affectedByFocus = value; }
262 bool affectedByHover() const { return _affectedByHover; } 266 bool affectedByHover() const { return _affectedByHover; }
263 void setAffectedByHover(bool value) { _affectedByHover = value; } 267 void setAffectedByHover(bool value) { _affectedByHover = value; }
264 bool affectedByActive() const { return _affectedByActive; } 268 bool affectedByActive() const { return _affectedByActive; }
265 void setAffectedByActive(bool value) { _affectedByActive = value; } 269 void setAffectedByActive(bool value) { _affectedByActive = value; }
266 bool affectedByDrag() const { return _affectedByDrag; } 270 bool affectedByDrag() const { return _affectedByDrag; }
267 void setAffectedByDrag(bool value) { _affectedByDrag = value; } 271 void setAffectedByDrag(bool value) { _affectedByDrag = value; }
268 bool isLink() const { return _isLink; } 272 bool isLink() const { return _isLink; }
269 void setIsLink(bool value) { _isLink = value; } 273 void setIsLink(bool value) { _isLink = value; }
270 private: 274 private:
271 unsigned _affectedByFocus : 1; 275 unsigned _affectedByFocus : 1;
272 unsigned _affectedByHover : 1; 276 unsigned _affectedByHover : 1;
273 unsigned _affectedByActive : 1; 277 unsigned _affectedByActive : 1;
274 unsigned _affectedByDrag : 1; 278 unsigned _affectedByDrag : 1;
275 unsigned _isLink : 1; 279 unsigned _isLink : 1;
276 // If you add more style bits here, you will also need to update RenderS tyle::copyNonInheritedFrom() 280 // If you add more style bits here, you will also need to update RenderS tyle::copyNonInheritedFrom()
277 // 60 bits 281 // 63 bits
esprehn 2013/12/18 01:03:55 Is the +3 a mistake, or did you count and was the
Timothy Loh 2013/12/18 01:54:43 Yep, the previous count was incorrect. I also move
278 } noninherited_flags; 282 } noninherited_flags;
279 283
280 // !END SYNC! 284 // !END SYNC!
281 285
282 protected: 286 protected:
283 void setBitDefaults() 287 void setBitDefaults()
284 { 288 {
285 inherited_flags._empty_cells = initialEmptyCells(); 289 inherited_flags._empty_cells = initialEmptyCells();
286 inherited_flags._caption_side = initialCaptionSide(); 290 inherited_flags._caption_side = initialCaptionSide();
287 inherited_flags._list_style_type = initialListStyleType(); 291 inherited_flags._list_style_type = initialListStyleType();
(...skipping 26 matching lines...) Expand all
314 noninherited_flags._page_break_after = initialPageBreak(); 318 noninherited_flags._page_break_after = initialPageBreak();
315 noninherited_flags._page_break_inside = initialPageBreak(); 319 noninherited_flags._page_break_inside = initialPageBreak();
316 noninherited_flags._styleType = NOPSEUDO; 320 noninherited_flags._styleType = NOPSEUDO;
317 noninherited_flags._pseudoBits = 0; 321 noninherited_flags._pseudoBits = 0;
318 noninherited_flags.explicitInheritance = false; 322 noninherited_flags.explicitInheritance = false;
319 noninherited_flags.currentColor = false; 323 noninherited_flags.currentColor = false;
320 noninherited_flags.unique = false; 324 noninherited_flags.unique = false;
321 noninherited_flags.emptyState = false; 325 noninherited_flags.emptyState = false;
322 noninherited_flags.firstChildState = false; 326 noninherited_flags.firstChildState = false;
323 noninherited_flags.lastChildState = false; 327 noninherited_flags.lastChildState = false;
328 noninherited_flags.hasViewportUnits = false;
324 noninherited_flags.setAffectedByFocus(false); 329 noninherited_flags.setAffectedByFocus(false);
325 noninherited_flags.setAffectedByHover(false); 330 noninherited_flags.setAffectedByHover(false);
326 noninherited_flags.setAffectedByActive(false); 331 noninherited_flags.setAffectedByActive(false);
327 noninherited_flags.setAffectedByDrag(false); 332 noninherited_flags.setAffectedByDrag(false);
328 noninherited_flags.setIsLink(false); 333 noninherited_flags.setIsLink(false);
329 } 334 }
330 335
331 private: 336 private:
332 ALWAYS_INLINE RenderStyle(); 337 ALWAYS_INLINE RenderStyle();
333 338
(...skipping 21 matching lines...) Expand all
355 360
356 PseudoId styleType() const { return static_cast<PseudoId>(noninherited_flags ._styleType); } 361 PseudoId styleType() const { return static_cast<PseudoId>(noninherited_flags ._styleType); }
357 void setStyleType(PseudoId styleType) { noninherited_flags._styleType = styl eType; } 362 void setStyleType(PseudoId styleType) { noninherited_flags._styleType = styl eType; }
358 363
359 RenderStyle* getCachedPseudoStyle(PseudoId) const; 364 RenderStyle* getCachedPseudoStyle(PseudoId) const;
360 RenderStyle* addCachedPseudoStyle(PassRefPtr<RenderStyle>); 365 RenderStyle* addCachedPseudoStyle(PassRefPtr<RenderStyle>);
361 void removeCachedPseudoStyle(PseudoId); 366 void removeCachedPseudoStyle(PseudoId);
362 367
363 const PseudoStyleCache* cachedPseudoStyles() const { return m_cachedPseudoSt yles.get(); } 368 const PseudoStyleCache* cachedPseudoStyles() const { return m_cachedPseudoSt yles.get(); }
364 369
370 void setHasViewportUnits(bool hasViewportUnits = true) const { noninherited_ flags.hasViewportUnits = hasViewportUnits; }
371 bool hasViewportUnits() const { return noninherited_flags.hasViewportUnits; }
372
365 void setVariable(const AtomicString& name, const String& value) { rareInheri tedData.access()->m_variables.access()->setVariable(name, value); } 373 void setVariable(const AtomicString& name, const String& value) { rareInheri tedData.access()->m_variables.access()->setVariable(name, value); }
366 const HashMap<AtomicString, String>* variables() { return &(rareInheritedDat a->m_variables->m_data); } 374 const HashMap<AtomicString, String>* variables() { return &(rareInheritedDat a->m_variables->m_data); }
367 375
368 bool affectedByFocus() const { return noninherited_flags.affectedByFocus(); } 376 bool affectedByFocus() const { return noninherited_flags.affectedByFocus(); }
369 bool affectedByHover() const { return noninherited_flags.affectedByHover(); } 377 bool affectedByHover() const { return noninherited_flags.affectedByHover(); }
370 bool affectedByActive() const { return noninherited_flags.affectedByActive() ; } 378 bool affectedByActive() const { return noninherited_flags.affectedByActive() ; }
371 bool affectedByDrag() const { return noninherited_flags.affectedByDrag(); } 379 bool affectedByDrag() const { return noninherited_flags.affectedByDrag(); }
372 380
373 void setAffectedByFocus() { noninherited_flags.setAffectedByFocus(true); } 381 void setAffectedByFocus() { noninherited_flags.setAffectedByFocus(true); }
374 void setAffectedByHover() { noninherited_flags.setAffectedByHover(true); } 382 void setAffectedByHover() { noninherited_flags.setAffectedByHover(true); }
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 float letterSpacing() const; 573 float letterSpacing() const;
566 574
567 float zoom() const { return visual->m_zoom; } 575 float zoom() const { return visual->m_zoom; }
568 float effectiveZoom() const { return rareInheritedData->m_effectiveZoom; } 576 float effectiveZoom() const { return rareInheritedData->m_effectiveZoom; }
569 577
570 TextDirection direction() const { return static_cast<TextDirection>(inherite d_flags._direction); } 578 TextDirection direction() const { return static_cast<TextDirection>(inherite d_flags._direction); }
571 bool isLeftToRightDirection() const { return direction() == LTR; } 579 bool isLeftToRightDirection() const { return direction() == LTR; }
572 580
573 Length specifiedLineHeight() const; 581 Length specifiedLineHeight() const;
574 Length lineHeight() const; 582 Length lineHeight() const;
575 int computedLineHeight(RenderView* = 0) const; 583 int computedLineHeight() const;
576 584
577 EWhiteSpace whiteSpace() const { return static_cast<EWhiteSpace>(inherited_f lags._white_space); } 585 EWhiteSpace whiteSpace() const { return static_cast<EWhiteSpace>(inherited_f lags._white_space); }
578 static bool autoWrap(EWhiteSpace ws) 586 static bool autoWrap(EWhiteSpace ws)
579 { 587 {
580 // Nowrap and pre don't automatically wrap. 588 // Nowrap and pre don't automatically wrap.
581 return ws != NOWRAP && ws != PRE; 589 return ws != NOWRAP && ws != PRE;
582 } 590 }
583 591
584 bool autoWrap() const 592 bool autoWrap() const
585 { 593 {
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 setBorderTopLeftRadius(s); 1020 setBorderTopLeftRadius(s);
1013 setBorderTopRightRadius(s); 1021 setBorderTopRightRadius(s);
1014 setBorderBottomLeftRadius(s); 1022 setBorderBottomLeftRadius(s);
1015 setBorderBottomRightRadius(s); 1023 setBorderBottomRightRadius(s);
1016 } 1024 }
1017 void setBorderRadius(const IntSize& s) 1025 void setBorderRadius(const IntSize& s)
1018 { 1026 {
1019 setBorderRadius(LengthSize(Length(s.width(), Fixed), Length(s.height(), Fixed))); 1027 setBorderRadius(LengthSize(Length(s.width(), Fixed), Length(s.height(), Fixed)));
1020 } 1028 }
1021 1029
1022 RoundedRect getRoundedBorderFor(const LayoutRect& borderRect, RenderView* = 0, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true) cons t; 1030 RoundedRect getRoundedBorderFor(const LayoutRect& borderRect, bool includeLo gicalLeftEdge = true, bool includeLogicalRightEdge = true) const;
1023 RoundedRect getRoundedInnerBorderFor(const LayoutRect& borderRect, bool incl udeLogicalLeftEdge = true, bool includeLogicalRightEdge = true) const; 1031 RoundedRect getRoundedInnerBorderFor(const LayoutRect& borderRect, bool incl udeLogicalLeftEdge = true, bool includeLogicalRightEdge = true) const;
1024 1032
1025 RoundedRect getRoundedInnerBorderFor(const LayoutRect& borderRect, 1033 RoundedRect getRoundedInnerBorderFor(const LayoutRect& borderRect,
1026 int topWidth, int bottomWidth, int leftWidth, int rightWidth, bool inclu deLogicalLeftEdge, bool includeLogicalRightEdge) const; 1034 int topWidth, int bottomWidth, int leftWidth, int rightWidth, bool inclu deLogicalLeftEdge, bool includeLogicalRightEdge) const;
1027 1035
1028 void setBorderLeftWidth(unsigned v) { SET_VAR(surround, border.m_left.m_widt h, v); } 1036 void setBorderLeftWidth(unsigned v) { SET_VAR(surround, border.m_left.m_widt h, v); }
1029 void setBorderLeftStyle(EBorderStyle v) { SET_VAR(surround, border.m_left.m_ style, v); } 1037 void setBorderLeftStyle(EBorderStyle v) { SET_VAR(surround, border.m_left.m_ style, v); }
1030 void setBorderLeftColor(const Color& v) { SET_BORDERVALUE_COLOR(surround, bo rder.m_left, v); } 1038 void setBorderLeftColor(const Color& v) { SET_BORDERVALUE_COLOR(surround, bo rder.m_left, v); }
1031 void setBorderRightWidth(unsigned v) { SET_VAR(surround, border.m_right.m_wi dth, v); } 1039 void setBorderRightWidth(unsigned v) { SET_VAR(surround, border.m_right.m_wi dth, v); }
1032 void setBorderRightStyle(EBorderStyle v) { SET_VAR(surround, border.m_right. m_style, v); } 1040 void setBorderRightStyle(EBorderStyle v) { SET_VAR(surround, border.m_right. m_style, v); }
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after
1859 inline void RenderStyle::setHasPseudoStyle(PseudoId pseudo) 1867 inline void RenderStyle::setHasPseudoStyle(PseudoId pseudo)
1860 { 1868 {
1861 ASSERT(pseudo > NOPSEUDO); 1869 ASSERT(pseudo > NOPSEUDO);
1862 ASSERT(pseudo < FIRST_INTERNAL_PSEUDOID); 1870 ASSERT(pseudo < FIRST_INTERNAL_PSEUDOID);
1863 noninherited_flags._pseudoBits |= 1 << (pseudo - 1); 1871 noninherited_flags._pseudoBits |= 1 << (pseudo - 1);
1864 } 1872 }
1865 1873
1866 } // namespace WebCore 1874 } // namespace WebCore
1867 1875
1868 #endif // RenderStyle_h 1876 #endif // RenderStyle_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698