/**
 * Copyright (c) 2015-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

package com.facebook.react.flat;

import android.graphics.Canvas;

/* package */ abstract class AbstractClippingDrawCommand implements DrawCommand {

  private float mClipLeft;
  private float mClipTop;
  private float mClipRight;
  private float mClipBottom;

  public final boolean clipBoundsMatch(
      float clipLeft,
      float clipTop,
      float clipRight,
      float clipBottom) {
    return mClipLeft == clipLeft && mClipTop == clipTop
        && mClipRight == clipRight && mClipBottom == clipBottom;
  }

  public final void setClipBounds(
      float clipLeft,
      float clipTop,
      float clipRight,
      float clipBottom) {
    mClipLeft = clipLeft;
    mClipTop = clipTop;
    mClipRight = clipRight;
    mClipBottom = clipBottom;
  }

  public final float getClipLeft() {
    return mClipLeft;
  }

  public final float getClipTop() {
    return mClipTop;
  }

  public final float getClipRight() {
    return mClipRight;
  }

  public final float getClipBottom() {
    return mClipBottom;
  }

  protected final void applyClipping(Canvas canvas) {
    canvas.clipRect(mClipLeft, mClipTop, mClipRight, mClipBottom);
  }
}

@@ -1372,24 +1372,546 @@
 s canvas) %7B%0A
+    // We put this check here to not clip when we have the default %5B-infinity, infinity%5D bounds,%0A    // since clipRect in those cases is essentially no-op anyway. This is needed to fix a bug that%0A    // shows up during screenshot testing. Note that checking one side is enough, since if one side%0A    // is infinite, all sides will be infinite, since we only set infinite for all sides at the%0A    // same time - conversely, if one side is finite, all sides will be finite.%0A    if (mClipLeft != Float.NEGATIVE_INFINITY) %7B%0A  
     canvas.c
@@ -1965,14 +1965,20 @@
 ottom);%0A
+    %7D%0A
   %7D%0A%7D%0A

Fix screenshot tests for React with nodes