// Path: saklib/src/main/java/com/wanjian/sak/layer/Layer.java
// public abstract class Layer implements EventListener {
//   private ViewRootImpl viewRootImpl;
//   private Config config;
//   private Application application;
//   private LayerRoot layerRoot;
//   private RenderNodeCompact renderNode;
//   private View rootView;
//   private boolean isEnable;
// 
//   public Layer() {
// 
//   }
// 
//   public RenderNodeCompact getRenderNode() {
//     return renderNode;
//   }
// 
//   public final void attach(Config config, ViewRootImpl viewRoot, View rootView, Application application, LayerRoot layerRoot) {
//     this.viewRootImpl = viewRoot;
//     this.config = config;
//     this.application = application;
//     this.layerRoot = layerRoot;
//     this.rootView = rootView;
//     renderNode = RenderNodeCompact.create(getClass().getName());
//     onAttach(getRootView());
//   }
// 
// //
// //  private final Canvas requireCanvas() {
// //    return CanvasHolder.requireCanvasFor(viewRootImpl);
// //  }
// //
// //  private final void releaseCanvas() {
// //    CanvasHolder.releaseCanvasFor(viewRootImpl);
// //  }
// 
//   protected void invalidate() {
// //    renderNode.setLeftTopRightBottom(0, 0, getRootView().getWidth(), getRootView().getHeight());
// //    DisplayListCanvas displayListCanvas = renderNode.start(getRootView().getWidth(), getRootView().getHeight());
// //    onDraw(displayListCanvas);
// //    renderNode.end(displayListCanvas);
//     View view = getRootView();
//     if (view == null) {
//       return;
//     }
//     Canvas canvas = renderNode.beginRecording(view.getWidth(), view.getHeight());
//     draw(canvas);
//     renderNode.endRecording(canvas);
//     layerRoot.invalidate();
//   }
// 
//   private void draw(Canvas canvas) {
//     if (isEnable == false) {
//       canvas.drawColor(0);
//       return;
//     }
//     onDraw(canvas);
//   }
// 
//   public final boolean isEnable() {
//     return isEnable;
//   }
// 
//   public final void enable(boolean enable) {
//     isEnable = enable;
//     invalidate();
//     onEnableChange(enable);
//   }
// 
//   protected void onEnableChange(boolean enable) {
//   }
// 
//   protected void onDraw(Canvas canvas) {
// 
//   }
// 
//   @Override
//   public final void beforeTraversal(View rootView) {
//     onBeforeTraversal(rootView);
//   }
// 
//   @Override
//   public final void afterTraversal(View rootView) {
//     onAfterTraversal(rootView);
//   }
// 
//   @Override
//   public final boolean beforeInputEvent(View rootView, InputEvent event) {
//     //rootView.invalidate();
//     return onBeforeInputEvent(rootView, event);
//   }
// 
//   @Override
//   public final void afterInputEvent(View rootView, InputEvent event) {
//     //rootView.invalidate();
//     onAfterInputEvent(rootView, event);
//   }
// 
//   protected View getRootView() {
//     return rootView;
//   }
// 
//   protected void onBeforeTraversal(View rootView) {
//   }
// 
//   protected void onAfterTraversal(View rootView) {
//   }
// 
//   protected boolean onBeforeInputEvent(View rootView, InputEvent event) {
//     return false;
//   }
// 
//   protected void onAfterInputEvent(View rootView, InputEvent event) {
//   }
// 
//   protected void onAttach(View rootView) {
// 
//   }
// 
//   protected Application getContext() {
//     return application;
//   }
// }
// 
// Path: saklib/src/main/java/com/wanjian/sak/utils/BitmapCreater.java
// public class BitmapCreater {
//     public static Bitmap create(int w, int h, Bitmap.Config config) {
// 
//         Check.isNull(config, "config");
//         if (w <= 0) {
//             new IllegalArgumentException("w can not be <= 0").printStackTrace();
//             return null;
//         }
//         if (h <= 0) {
//             new IllegalArgumentException("h can not be <= 0").printStackTrace();
//             return null;
//         }
//         for (int i = 0; i < 3; i++) {
//             try {
//                 return Bitmap.createBitmap(w, h, config);
//             } catch (Throwable e) {
//                 Runtime.getRuntime().gc();
//             }
//         }
//         return null;
//     }
// }
// 
// Path: saklib/src/main/java/com/wanjian/sak/utils/ScreenUtils.java
// public class ScreenUtils {
// 
//   public static int dp2px(Context context, int dip) {
//     float density = context.getResources().getDisplayMetrics().density;
//     return (int) (dip * density + 0.5);
//   }
// 
//   public static int px2dp(Context context, float pxValue) {
//     final float scale = context.getResources().getDisplayMetrics().density;
//     return (int) (pxValue / scale + 0.5f);
//   }
// 
// }


import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.view.InputEvent;
import android.view.MotionEvent;
import android.view.View;
import com.wanjian.sak.layer.Layer;
import com.wanjian.sak.utils.BitmapCreater;
import com.wanjian.sak.utils.ScreenUtils;
package com.wanjian.sak.layer.impl;



public class TakeColorLayer extends Layer {
  private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  private Paint txtPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
  private int x;
  private int y;
  private int r;
  private boolean consume;
  private float lastX, lastY;
  private Bitmap bitmap;
  private int strokeWidth;
  private Path path;
  private Matrix matrix = new Matrix();
  private Rect mRect = new Rect();

  @Override
  protected void onAttach(View rootView) {
    super.onAttach(rootView);
    x = getRootView().getWidth() / 2;
    y = getRootView().getHeight() / 2;
// Path: saklib/src/main/java/com/wanjian/sak/layer/Layer.java
// public abstract class Layer implements EventListener {
//   private ViewRootImpl viewRootImpl;
//   private Config config;
//   private Application application;
//   private LayerRoot layerRoot;
//   private RenderNodeCompact renderNode;
//   private View rootView;
//   private boolean isEnable;
// 
//   public Layer() {
// 
//   }
// 
//   public RenderNodeCompact getRenderNode() {
//     return renderNode;
//   }
// 
//   public final void attach(Config config, ViewRootImpl viewRoot, View rootView, Application application, LayerRoot layerRoot) {
//     this.viewRootImpl = viewRoot;
//     this.config = config;
//     this.application = application;
//     this.layerRoot = layerRoot;
//     this.rootView = rootView;
//     renderNode = RenderNodeCompact.create(getClass().getName());
//     onAttach(getRootView());
//   }
// 
// //
// //  private final Canvas requireCanvas() {
// //    return CanvasHolder.requireCanvasFor(viewRootImpl);
// //  }
// //
// //  private final void releaseCanvas() {
// //    CanvasHolder.releaseCanvasFor(viewRootImpl);
// //  }
// 
//   protected void invalidate() {
// //    renderNode.setLeftTopRightBottom(0, 0, getRootView().getWidth(), getRootView().getHeight());
// //    DisplayListCanvas displayListCanvas = renderNode.start(getRootView().getWidth(), getRootView().getHeight());
// //    onDraw(displayListCanvas);
// //    renderNode.end(displayListCanvas);
//     View view = getRootView();
//     if (view == null) {
//       return;
//     }
//     Canvas canvas = renderNode.beginRecording(view.getWidth(), view.getHeight());
//     draw(canvas);
//     renderNode.endRecording(canvas);
//     layerRoot.invalidate();
//   }
// 
//   private void draw(Canvas canvas) {
//     if (isEnable == false) {
//       canvas.drawColor(0);
//       return;
//     }
//     onDraw(canvas);
//   }
// 
//   public final boolean isEnable() {
//     return isEnable;
//   }
// 
//   public final void enable(boolean enable) {
//     isEnable = enable;
//     invalidate();
//     onEnableChange(enable);
//   }
// 
//   protected void onEnableChange(boolean enable) {
//   }
// 
//   protected void onDraw(Canvas canvas) {
// 
//   }
// 
//   @Override
//   public final void beforeTraversal(View rootView) {
//     onBeforeTraversal(rootView);
//   }
// 
//   @Override
//   public final void afterTraversal(View rootView) {
//     onAfterTraversal(rootView);
//   }
// 
//   @Override
//   public final boolean beforeInputEvent(View rootView, InputEvent event) {
//     //rootView.invalidate();
//     return onBeforeInputEvent(rootView, event);
//   }
// 
//   @Override
//   public final void afterInputEvent(View rootView, InputEvent event) {
//     //rootView.invalidate();
//     onAfterInputEvent(rootView, event);
//   }
// 
//   protected View getRootView() {
//     return rootView;
//   }
// 
//   protected void onBeforeTraversal(View rootView) {
//   }
// 
//   protected void onAfterTraversal(View rootView) {
//   }
// 
//   protected boolean onBeforeInputEvent(View rootView, InputEvent event) {
//     return false;
//   }
// 
//   protected void onAfterInputEvent(View rootView, InputEvent event) {
//   }
// 
//   protected void onAttach(View rootView) {
// 
//   }
// 
//   protected Application getContext() {
//     return application;
//   }
// }
// 
// Path: saklib/src/main/java/com/wanjian/sak/utils/BitmapCreater.java
// public class BitmapCreater {
//     public static Bitmap create(int w, int h, Bitmap.Config config) {
// 
//         Check.isNull(config, "config");
//         if (w <= 0) {
//             new IllegalArgumentException("w can not be <= 0").printStackTrace();
//             return null;
//         }
//         if (h <= 0) {
//             new IllegalArgumentException("h can not be <= 0").printStackTrace();
//             return null;
//         }
//         for (int i = 0; i < 3; i++) {
//             try {
//                 return Bitmap.createBitmap(w, h, config);
//             } catch (Throwable e) {
//                 Runtime.getRuntime().gc();
//             }
//         }
//         return null;
//     }
// }
// 
// Path: saklib/src/main/java/com/wanjian/sak/utils/ScreenUtils.java
// public class ScreenUtils {
// 
//   public static int dp2px(Context context, int dip) {
//     float density = context.getResources().getDisplayMetrics().density;
//     return (int) (dip * density + 0.5);
//   }
// 
//   public static int px2dp(Context context, float pxValue) {
//     final float scale = context.getResources().getDisplayMetrics().density;
//     return (int) (pxValue / scale + 0.5f);
//   }
// 
// }


// Path: saklib/src/main/java/com/wanjian/sak/layer/impl/TakeColorLayer.java
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.view.InputEvent;
import android.view.MotionEvent;
import android.view.View;
import com.wanjian.sak.layer.Layer;
import com.wanjian.sak.utils.BitmapCreater;
import com.wanjian.sak.utils.ScreenUtils;

package com.wanjian.sak.layer.impl;



public class TakeColorLayer extends Layer {
  private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  private Paint txtPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
  private int x;
  private int y;
  private int r;
  private boolean consume;
  private float lastX, lastY;
  private Bitmap bitmap;
  private int strokeWidth;
  private Path path;
  private Matrix matrix = new Matrix();
  private Rect mRect = new Rect();

  @Override
  protected void onAttach(View rootView) {
    super.onAttach(rootView);
    x = getRootView().getWidth() / 2;
    y = getRootView().getHeight() / 2;
    r = ScreenUtils.dp2px(getContext(), 60);