Bug 84098

Summary: Convert ShadowData and DropShadowFilterOperation to use IntPoint
Product: WebKit Reporter: Levi Weintraub <leviw>
Component: Layout and RenderingAssignee: Levi Weintraub <leviw>
Status: RESOLVED FIXED    
Severity: Normal CC: eae, eric, jchaffraix, macpherson, menard, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 60318    
Attachments:
Description Flags
Patch
none
Patch for landing
none
Patch for landing
none
Patch for landing
none
Archive of layout-test-results from ec2-cq-02 none

Description Levi Weintraub 2012-04-16 16:47:47 PDT
Currently, ShadowData uses LayoutUnits for its x and y, and DropShadowFilterOperation uses ints. After some thought, I've changed my mind about having ShadowData's location as LayoutUnits for now, since we apply it at paint time to the integer RoundedRect, and we'd just end up rounding or truncating repeatedly. If we want to round this value, it should happen upon assignment, and that could have been done without sub-pixel layout. With that in mind, I'm choosing to not do that for now.

I was troubled by the de-coupled coordinates while looking through this code, so I decided that in the spirit of our original tx/ty effort to wrap these values up in an IntPoint.
Comment 1 Levi Weintraub 2012-04-16 17:37:20 PDT
Created attachment 137443 [details]
Patch
Comment 2 Levi Weintraub 2012-04-16 17:37:32 PDT
(In reply to comment #1)
> Created an attachment (id=137443) [details]
> Patch

The new blend function isn't explicitly necessary. Feedback is welcome if you don't think it makes senes.
Comment 3 Eric Seidel (no email) 2012-04-16 17:43:30 PDT
Comment on attachment 137443 [details]
Patch

so blur and spread can't be fractions?
Comment 4 Levi Weintraub 2012-04-16 17:46:06 PDT
(In reply to comment #3)
> (From update of attachment 137443 [details])
> so blur and spread can't be fractions?

Not currently. To be clear, I'm not arguing that this isn't a good change, just that it's orthogonal to what we're focusing on with sub-pixel layout. They could have been floating point before and applied as such. If someone wishes to make that change, I'll be happy to help when this is done :)
Comment 5 Eric Seidel (no email) 2012-04-16 20:41:30 PDT
Comment on attachment 137443 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=137443&action=review

OK.

> Source/WebCore/platform/graphics/filters/FilterOperation.h:380
> +    IntPoint m_location; // FIXME: x and y should location be in Lengths?

Not english?

> Source/WebCore/rendering/style/ShadowData.cpp:87
> +    int shadowLeft = 0;
> +    int shadowRight = 0;
> +    int shadowTop = 0;
> +    int shadowBottom = 0;

We really need some sort of Quad for these sets. This comes up often.
Comment 6 Levi Weintraub 2012-04-16 20:45:35 PDT
Comment on attachment 137443 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=137443&action=review

>> Source/WebCore/platform/graphics/filters/FilterOperation.h:380
>> +    IntPoint m_location; // FIXME: x and y should location be in Lengths?
> 
> Not english?

Hehe, sorry... ended up with a hybridized comment! Should be "location should be in Lengths?"

>> Source/WebCore/rendering/style/ShadowData.cpp:87
>> +    int shadowBottom = 0;
> 
> We really need some sort of Quad for these sets. This comes up often.

Agreed! This project has been nothing if not a good tour of code that needs some refactoring!
Comment 7 Levi Weintraub 2012-04-17 09:37:52 PDT
Created attachment 137547 [details]
Patch for landing
Comment 8 WebKit Review Bot 2012-04-17 10:46:45 PDT
Comment on attachment 137547 [details]
Patch for landing

Rejecting attachment 137547 [details] from commit-queue.

Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2

Last 500 characters of output:
ebCore::FilterOperation::OperationType)
make: *** [out/Debug/obj.target/webkit/Source/WebCore/platform/chromium/support/WebFilterOperation.o] Error 1
make: *** Waiting for unfinished jobs....

Failed to run "['Tools/Scripts/build-webkit', '--debug', '--chromium', '--update-chromium']" exit_code: 2
:Color, WebCore::FilterOperation::OperationType)
make: *** [out/Debug/obj.target/webkit/Source/WebCore/platform/chromium/support/WebFilterOperation.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/12417712
Comment 9 Levi Weintraub 2012-04-17 10:59:01 PDT
Created attachment 137561 [details]
Patch for landing
Comment 10 Levi Weintraub 2012-04-17 11:03:09 PDT
Comment on attachment 137561 [details]
Patch for landing

This is still going to fail with the newest Chromium changes. Circling around...
Comment 11 Levi Weintraub 2012-04-17 12:06:48 PDT
Created attachment 137575 [details]
Patch for landing
Comment 12 WebKit Review Bot 2012-04-17 14:32:50 PDT
Comment on attachment 137575 [details]
Patch for landing

Rejecting attachment 137575 [details] from commit-queue.

New failing tests:
svg/transforms/text-with-pattern-with-svg-transform.svg
Full output: http://queues.webkit.org/results/12424164
Comment 13 WebKit Review Bot 2012-04-17 14:32:56 PDT
Created attachment 137605 [details]
Archive of layout-test-results from ec2-cq-02

The attached test failures were seen while running run-webkit-tests on the commit-queue.
Bot: ec2-cq-02  Port: <class 'webkitpy.common.config.ports.ChromiumXVFBPort'>  Platform: Linux-2.6.35-28-virtual-x86_64-with-Ubuntu-10.10-maverick
Comment 14 Levi Weintraub 2012-04-18 10:05:14 PDT
Comment on attachment 137575 [details]
Patch for landing

Clearing flags on attachment: 137575

Committed r114520: <http://trac.webkit.org/changeset/114520>
Comment 15 Levi Weintraub 2012-04-18 10:05:23 PDT
All reviewed patches have been landed.  Closing bug.