139 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.recyclerview.widget;
 | |
| 
 | |
| import android.view.View;
 | |
| import java.lang.annotation.Retention;
 | |
| import java.lang.annotation.RetentionPolicy;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class ViewBoundsCheck {
 | |
|     static final int CVE_PVE_POS = 12;
 | |
|     static final int CVE_PVS_POS = 8;
 | |
|     static final int CVS_PVE_POS = 4;
 | |
|     static final int CVS_PVS_POS = 0;
 | |
|     static final int EQ = 2;
 | |
|     static final int FLAG_CVE_EQ_PVE = 8192;
 | |
|     static final int FLAG_CVE_EQ_PVS = 512;
 | |
|     static final int FLAG_CVE_GT_PVE = 4096;
 | |
|     static final int FLAG_CVE_GT_PVS = 256;
 | |
|     static final int FLAG_CVE_LT_PVE = 16384;
 | |
|     static final int FLAG_CVE_LT_PVS = 1024;
 | |
|     static final int FLAG_CVS_EQ_PVE = 32;
 | |
|     static final int FLAG_CVS_EQ_PVS = 2;
 | |
|     static final int FLAG_CVS_GT_PVE = 16;
 | |
|     static final int FLAG_CVS_GT_PVS = 1;
 | |
|     static final int FLAG_CVS_LT_PVE = 64;
 | |
|     static final int FLAG_CVS_LT_PVS = 4;
 | |
|     static final int GT = 1;
 | |
|     static final int LT = 4;
 | |
|     static final int MASK = 7;
 | |
|     BoundFlags mBoundFlags = new BoundFlags();
 | |
|     final Callback mCallback;
 | |
| 
 | |
|     interface Callback {
 | |
|         View getChildAt(int i);
 | |
| 
 | |
|         int getChildEnd(View view);
 | |
| 
 | |
|         int getChildStart(View view);
 | |
| 
 | |
|         int getParentEnd();
 | |
| 
 | |
|         int getParentStart();
 | |
|     }
 | |
| 
 | |
|     @Retention(RetentionPolicy.SOURCE)
 | |
|     public @interface ViewBounds {
 | |
|     }
 | |
| 
 | |
|     ViewBoundsCheck(Callback callback) {
 | |
|         this.mCallback = callback;
 | |
|     }
 | |
| 
 | |
|     static class BoundFlags {
 | |
|         int mBoundFlags = 0;
 | |
|         int mChildEnd;
 | |
|         int mChildStart;
 | |
|         int mRvEnd;
 | |
|         int mRvStart;
 | |
| 
 | |
|         void addFlags(int i) {
 | |
|             this.mBoundFlags = i | this.mBoundFlags;
 | |
|         }
 | |
| 
 | |
|         int compare(int i, int i2) {
 | |
|             if (i > i2) {
 | |
|                 return 1;
 | |
|             }
 | |
|             return i == i2 ? 2 : 4;
 | |
|         }
 | |
| 
 | |
|         void resetFlags() {
 | |
|             this.mBoundFlags = 0;
 | |
|         }
 | |
| 
 | |
|         void setBounds(int i, int i2, int i3, int i4) {
 | |
|             this.mRvStart = i;
 | |
|             this.mRvEnd = i2;
 | |
|             this.mChildStart = i3;
 | |
|             this.mChildEnd = i4;
 | |
|         }
 | |
| 
 | |
|         BoundFlags() {
 | |
|         }
 | |
| 
 | |
|         boolean boundsMatch() {
 | |
|             int i = this.mBoundFlags;
 | |
|             if ((i & 7) != 0 && (i & compare(this.mChildStart, this.mRvStart)) == 0) {
 | |
|                 return false;
 | |
|             }
 | |
|             int i2 = this.mBoundFlags;
 | |
|             if ((i2 & 112) != 0 && (i2 & (compare(this.mChildStart, this.mRvEnd) << 4)) == 0) {
 | |
|                 return false;
 | |
|             }
 | |
|             int i3 = this.mBoundFlags;
 | |
|             if ((i3 & 1792) != 0 && (i3 & (compare(this.mChildEnd, this.mRvStart) << 8)) == 0) {
 | |
|                 return false;
 | |
|             }
 | |
|             int i4 = this.mBoundFlags;
 | |
|             return (i4 & 28672) == 0 || (i4 & (compare(this.mChildEnd, this.mRvEnd) << 12)) != 0;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     View findOneViewWithinBoundFlags(int i, int i2, int i3, int i4) {
 | |
|         int parentStart = this.mCallback.getParentStart();
 | |
|         int parentEnd = this.mCallback.getParentEnd();
 | |
|         int i5 = i2 > i ? 1 : -1;
 | |
|         View view = null;
 | |
|         while (i != i2) {
 | |
|             View childAt = this.mCallback.getChildAt(i);
 | |
|             this.mBoundFlags.setBounds(parentStart, parentEnd, this.mCallback.getChildStart(childAt), this.mCallback.getChildEnd(childAt));
 | |
|             if (i3 != 0) {
 | |
|                 this.mBoundFlags.resetFlags();
 | |
|                 this.mBoundFlags.addFlags(i3);
 | |
|                 if (this.mBoundFlags.boundsMatch()) {
 | |
|                     return childAt;
 | |
|                 }
 | |
|             }
 | |
|             if (i4 != 0) {
 | |
|                 this.mBoundFlags.resetFlags();
 | |
|                 this.mBoundFlags.addFlags(i4);
 | |
|                 if (this.mBoundFlags.boundsMatch()) {
 | |
|                     view = childAt;
 | |
|                 }
 | |
|             }
 | |
|             i += i5;
 | |
|         }
 | |
|         return view;
 | |
|     }
 | |
| 
 | |
|     boolean isViewWithinBoundFlags(View view, int i) {
 | |
|         this.mBoundFlags.setBounds(this.mCallback.getParentStart(), this.mCallback.getParentEnd(), this.mCallback.getChildStart(view), this.mCallback.getChildEnd(view));
 | |
|         if (i == 0) {
 | |
|             return false;
 | |
|         }
 | |
|         this.mBoundFlags.resetFlags();
 | |
|         this.mBoundFlags.addFlags(i);
 | |
|         return this.mBoundFlags.boundsMatch();
 | |
|     }
 | |
| }
 |