Changeset 285255 in webkit
- Timestamp:
- Nov 4, 2021 1:51:14 AM (9 months ago)
- Location:
- trunk
- Files:
-
- 10 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/parsing/transform-valid-expected.txt (modified) (1 diff)
-
LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/TransformFunctions.cpp (modified) (1 diff)
-
Source/WebCore/css/parser/CSSPropertyParser.cpp (modified) (2 diffs)
-
Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp (modified) (3 diffs)
-
Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r285253 r285255 1 2021-11-04 Martin Robinson <mrobinson@webkit.org> 2 3 implement transform: perspective(none) 4 https://bugs.webkit.org/show_bug.cgi?id=231361 5 <rdar://problem/84124161> 6 7 Reviewed by Simon Fraser. 8 9 * platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt: 10 1 11 2021-11-03 Arcady Goldmints-Orlov <agoldmints@igalia.com> 2 12 -
trunk/LayoutTests/imported/w3c/ChangeLog
r285235 r285255 1 2021-11-04 Martin Robinson <mrobinson@webkit.org> 2 3 implement transform: perspective(none) 4 https://bugs.webkit.org/show_bug.cgi?id=231361 5 <rdar://problem/84124161> 6 7 Reviewed by Simon Fraser. 8 9 * web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt: 10 * web-platform-tests/css/css-transforms/parsing/transform-valid-expected.txt: 11 1 12 2021-11-03 Joonghun Park <jh718.park@samsung.com> 2 13 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt
r282287 r285255 92 92 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] 93 93 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(2) perspective(250px)] 94 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 95 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 96 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 97 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 98 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 99 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 100 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 101 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 102 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 103 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 104 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 105 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 106 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 107 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 108 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 109 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 110 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 111 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 112 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 113 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 94 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 95 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 96 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 97 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 98 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 99 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 100 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 101 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 102 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 103 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 104 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 105 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 106 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 107 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 108 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 109 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 110 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 111 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 112 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 113 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 114 114 PASS CSS Transitions: property <transform> from [rotate(30deg)] to [rotate(330deg)] at (-1) should be [rotate(-270deg)] 115 115 PASS CSS Transitions: property <transform> from [rotate(30deg)] to [rotate(330deg)] at (0) should be [rotate(30deg)] -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/parsing/transform-valid-expected.txt
r282144 r285255 39 39 PASS e.style['transform'] = "skewY(-90deg)" should set the property value 40 40 PASS e.style['transform'] = "perspective(10px)" should set the property value 41 FAIL e.style['transform'] = "perspective(none)" should set the property value assert_not_equals: property should be set got disallowed value "" 41 PASS e.style['transform'] = "perspective(none)" should set the property value 42 42 PASS e.style['transform'] = "translate(1px, 2%) scale(3, 4) rotate(-90deg)" should set the property value 43 43 -
trunk/LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt
r282420 r285255 92 92 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] 93 93 PASS Web Animations: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(2) perspective(250px)] 94 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 95 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 96 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 97 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 98 FAIL CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 99 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 100 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 101 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 102 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 103 FAIL CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 104 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 105 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 106 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 107 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 108 FAIL CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 109 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 110 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] assert_true: 'from' value should be supported expected true got false 111 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] assert_true: 'from' value should be supported expected true got false 112 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] assert_true: 'from' value should be supported expected true got false 113 FAIL Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] assert_true: 'from' value should be supported expected true got false 94 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 95 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 96 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 97 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 98 PASS CSS Transitions: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 99 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 100 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 101 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 102 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 103 PASS CSS Transitions with transition: all: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 104 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 105 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 106 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 107 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 108 PASS CSS Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 109 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (-1) should be [perspective(none)] 110 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0) should be [perspective(none)] 111 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (0.5) should be [perspective(1000px)] 112 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (1) should be [perspective(500px)] 113 PASS Web Animations: property <transform> from [perspective(none)] to [perspective(500px)] at (2) should be [perspective(250px)] 114 114 PASS CSS Transitions: property <transform> from [rotate(30deg)] to [rotate(330deg)] at (-1) should be [rotate(-270deg)] 115 115 PASS CSS Transitions: property <transform> from [rotate(30deg)] to [rotate(330deg)] at (0) should be [rotate(30deg)] -
trunk/Source/WebCore/ChangeLog
r285254 r285255 1 2021-11-04 Martin Robinson <mrobinson@webkit.org> 2 3 implement transform: perspective(none) 4 https://bugs.webkit.org/show_bug.cgi?id=231361 5 <rdar://problem/84124161> 6 7 Reviewed by Simon Fraser. 8 9 Add support for perspective(none) and update test results 10 to show newly passing tests. 11 12 No new tests. This is covered by the existing WPT tests: 13 - imported/w3c/web-platform-tests/css/css-transforms/parsing/transform-valid.html 14 - imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001.html 15 16 * css/TransformFunctions.cpp: 17 (WebCore::transformsForValue): Accept a "none" keyword as an input and be a bit more stringent 18 about what kind of numbers are accepted. These should be rejected earlier in consumePerspective. 19 This can now hold an Undefined length which indicates perspective: none. 20 * css/parser/CSSPropertyParser.cpp: 21 (WebCore::consumePerspective): Accept "none" and clean up the code a little, using ValueRange 22 instead of a manual check for numerical values. Also make the code structure a little more 23 consistent. 24 * platform/graphics/transforms/PerspectiveTransformOperation.h: Update assertion, because 25 Undefined means perpsective: none now. 26 * platform/graphics/transforms/PerspectiveTransformOperation.cpp: 27 (WebCore::PerspectiveTransformOperation::blend): Handle the case of perspective: none for 28 either values. 29 1 30 2021-11-03 Megan Gardner <megan_gardner@apple.com> 2 31 -
trunk/Source/WebCore/css/TransformFunctions.cpp
r282144 r285255 323 323 } 324 324 case CSSValuePerspective: { 325 Length p = Length(0, LengthType::Fixed); 326 if (firstValue.isLength()) 327 p = convertToFloatLength(&firstValue, conversionData); 328 else { 329 // This is a quirk that should go away when 3d transforms are finalized. 330 double val = firstValue.doubleValue(); 331 p = val >= 0 ? Length(clampToPositiveInteger(val), LengthType::Fixed) : Length(LengthType::Undefined); 332 } 333 334 if (p.isUndefined()) { 335 operations.clear(); 336 return false; 337 } 338 339 operations.append(PerspectiveTransformOperation::create(p)); 325 std::optional<Length> perspectiveLength; 326 if (!firstValue.isValueID()) { 327 if (firstValue.isLength()) 328 perspectiveLength = convertToFloatLength(&firstValue, conversionData); 329 else { 330 // This is a quirk that should go away when 3d transforms are finalized. 331 // FIXME: https://bugs.webkit.org/show_bug.cgi?id=232669 332 // This does not deal properly with calc(), because we aren't passing conversionData here. 333 double doubleValue = firstValue.doubleValue(); 334 if (doubleValue < 0) { 335 operations.clear(); 336 return false; 337 } 338 perspectiveLength = Length(clampToPositiveInteger(doubleValue), LengthType::Fixed); 339 } 340 } else 341 ASSERT(firstValue.valueID() == CSSValueNone); 342 343 operations.append(PerspectiveTransformOperation::create(perspectiveLength)); 340 344 break; 341 345 } -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r285235 r285255 1832 1832 static bool consumePerspective(CSSParserTokenRange& args, CSSParserMode cssParserMode, RefPtr<CSSFunctionValue>& transformValue) 1833 1833 { 1834 if (args.peek().id() == CSSValueNone) { 1835 transformValue->append(consumeIdent(args).releaseNonNull()); 1836 return true; 1837 } 1838 1834 1839 if (auto parsedValue = consumeLength(args, cssParserMode, ValueRange::NonNegative)) { 1835 1840 transformValue->append(parsedValue.releaseNonNull()); … … 1837 1842 } 1838 1843 1839 auto perspective = consumeNumberRaw(args); 1840 if (!perspective || *perspective < 0) 1841 return false; 1842 transformValue->append(CSSPrimitiveValue::create(*perspective, CSSUnitType::CSS_PX)); 1843 return true; 1844 if (auto perspective = consumeNumberRaw(args, ValueRange::NonNegative)) { 1845 transformValue->append(CSSPrimitiveValue::create(*perspective, CSSUnitType::CSS_PX)); 1846 return true; 1847 } 1848 1849 return false; 1844 1850 } 1845 1851 -
trunk/Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp
r276141 r285255 46 46 47 47 if (blendToIdentity) { 48 double p = floatValueForLength(m_p, 1); 48 if (!m_p) 49 return PerspectiveTransformOperation::create(m_p); 50 51 double p = floatValueForLength(*m_p, 1); 49 52 p = WebCore::blend(p, 1.0, context); // FIXME: this seems wrong. https://bugs.webkit.org/show_bug.cgi?id=52700 50 53 return PerspectiveTransformOperation::create(Length(clampToPositiveInteger(p), LengthType::Fixed)); … … 52 55 53 56 const PerspectiveTransformOperation* fromOp = downcast<PerspectiveTransformOperation>(from); 54 Length fromP = fromOp ? fromOp->m_p : Length(m_p.type()); 55 Length toP = m_p; 57 if (!fromOp) 58 return *this; 59 60 auto fromP = fromOp->m_p; 61 auto toP = m_p; 56 62 57 63 TransformationMatrix fromT; 64 if (fromP) 65 fromT.applyPerspective(floatValueForLength(*fromP, 1)); 66 58 67 TransformationMatrix toT; 59 fromT.applyPerspective(floatValueForLength(fromP, 1)); 60 toT.applyPerspective(floatValueForLength(toP, 1)); 68 if (toP) 69 toT.applyPerspective(floatValueForLength(*toP, 1)); 70 61 71 toT.blend(fromT, context.progress); 62 72 TransformationMatrix::Decomposed4Type decomp; … … 72 82 void PerspectiveTransformOperation::dump(TextStream& ts) const 73 83 { 74 ts << type() << "(" << m_p << ")"; 84 ts << type() << "("; 85 if (!m_p) 86 ts << "none"; 87 else 88 ts << m_p; 89 ts << ")"; 75 90 } 76 91 -
trunk/Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h
r276141 r285255 29 29 #include "LengthFunctions.h" 30 30 #include "TransformOperation.h" 31 #include <optional> 31 32 #include <wtf/Ref.h> 32 33 … … 37 38 class PerspectiveTransformOperation final : public TransformOperation { 38 39 public: 39 static Ref<PerspectiveTransformOperation> create(const Length& p)40 static Ref<PerspectiveTransformOperation> create(const std::optional<Length>& p) 40 41 { 41 42 return adoptRef(*new PerspectiveTransformOperation(p)); … … 47 48 } 48 49 49 Lengthperspective() const { return m_p; }50 std::optional<Length> perspective() const { return m_p; } 50 51 51 52 private: 52 bool isIdentity() const override { return ! floatValueForLength(m_p, 1); }53 bool isIdentity() const override { return !m_p || !floatValueForLength(*m_p, 1); } 53 54 bool isAffectedByTransformOrigin() const override { return !isIdentity(); } 54 55 bool isRepresentableIn2D() const final { return false; } … … 58 59 bool apply(TransformationMatrix& transform, const FloatSize&) const override 59 60 { 60 transform.applyPerspective(floatValueForLength(m_p, 1)); 61 if (m_p) 62 transform.applyPerspective(floatValueForLength(*m_p, 1)); 61 63 return false; 62 64 } … … 66 68 void dump(WTF::TextStream&) const final; 67 69 68 PerspectiveTransformOperation(const Length& p)70 PerspectiveTransformOperation(const std::optional<Length>& p) 69 71 : TransformOperation(PERSPECTIVE) 70 72 , m_p(p) 71 73 { 72 ASSERT( p.isFixed());74 ASSERT(!p || (*p).isFixed()); 73 75 } 74 76 75 Lengthm_p;77 std::optional<Length> m_p; 76 78 }; 77 79
Note: See TracChangeset
for help on using the changeset viewer.