<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>246822</bug_id>
          
          <creation_ts>2022-10-20 12:22:08 -0700</creation_ts>
          <short_desc>Add the class FilterTargetSwitcher</short_desc>
          <delta_ts>2022-10-20 14:29:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198416</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1907122</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-10-20 12:22:08 -0700</bug_when>
    <thetext>This will manage applying a filter to a certain area of drawings with the minimum changes in the existing code. All it needs is a set of callbacks in the existing caller class. And the caller can either add this line of code to the drawing function:

FilterTargetSwitcher targetSwitcher(*this, bounds);

Or a line like this one if calculating the bounds is expensive:

FilterTargetSwitcher targetSwitcher(*this, []() {
    return path.fastBoundingRect();
});

The constructor of FilterTargetSwitcher will ask the client if there a filter to apply or not. If there is a filter, it will switch the drawing to a temporary ImageBuffer. The client has to make sure all the drawing code from now on will use the context of this ImageBuffer. The destructor will apply the filter to the temporary ImageBuffer and then composite filtered ImageBuffer to the client drawing context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907124</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-20 12:30:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/101394417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907126</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-10-20 12:31:42 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/5596</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1907155</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-20 14:29:12 -0700</bug_when>
    <thetext>Committed 255802@main (5a02a23fcd77): &lt;https://commits.webkit.org/255802@main&gt;

Reviewed commits have been landed. Closing PR #5596 and removing active labels.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>