Android Open Source - Sketcher Sat Val Picker






From Project

Back to project page Sketcher.

License

The source code is released under:

Apache License

If you think the Android project Sketcher listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.sketcher.colorpicker;
//from  w  ww  .  java 2  s. c  o m
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ComposeShader;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.PorterDuff;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class SatValPicker extends View implements Picker {
  private Picker.OnColorChangedListener mListener = null;
  private final Paint mColor = new Paint();
  private final Paint mGradient = new Paint(Paint.ANTI_ALIAS_FLAG);
  private final Paint mTrackerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
  private float mHue = 0;

  public SatValPicker(Context context, AttributeSet attrs) {
    super(context, attrs);

    mGradient.setStyle(Paint.Style.STROKE);
    mGradient.setStrokeWidth(0);

    mTrackerPaint.setStyle(Style.STROKE);
    mTrackerPaint.setStrokeWidth(1);
    mTrackerPaint.setColor(Color.WHITE);
  }

  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    applyChages(w, h);
  }

  private void applyChages(int w, int h) {
    Shader valGradient = new LinearGradient(0, 0, 0, h, Color.WHITE,
        Color.BLACK, Shader.TileMode.CLAMP);

    int rgb = Color.HSVToColor(new float[] { mHue, 1f, 1f });
    Shader satGradient = new LinearGradient(0, 0, w, 0, Color.WHITE, rgb,
        Shader.TileMode.CLAMP);

    ComposeShader shader = new ComposeShader(valGradient, satGradient,
        PorterDuff.Mode.MULTIPLY);

    mGradient.setShader(shader);
    invalidate();
  }

  @Override
  public void setColor(int color) {
    mColor.setColor(color);

    float[] hsv = Utils.color2HSV(color);

    mHue = hsv[0];

    applyChages(getWidth(), getHeight());
  }

  @Override
  public void setOnColorChangedListener(Picker.OnColorChangedListener listener) {
    mListener = listener;
  }

  @Override
  protected void onDraw(Canvas canvas) {
    canvas.drawPaint(mGradient);

    float[] hsv = Utils.color2HSV(mColor.getColor());

    float x = hsv[1] * getWidth();
    float y = (1 - hsv[2]) * getHeight();
    canvas.drawCircle(x, y, 4, mTrackerPaint);
  }

  @Override
  public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    case MotionEvent.ACTION_MOVE:
      float sat = event.getX() / getWidth();
      float val = 1 - event.getY() / getHeight();

      mColor.setColor(Color.HSVToColor(0xFF,
          new float[] { mHue, sat, val }));

      mListener.colorChanged(mColor);
      invalidate();
      return true;
    }

    return false;
  }
}




Java Source Code List

org.sketcher.AboutDialog.java
org.sketcher.Controller.java
org.sketcher.FileHelper.java
org.sketcher.HistoryHelper.java
org.sketcher.SketcherApplication.java
org.sketcher.Sketcher.java
org.sketcher.Style.java
org.sketcher.Surface.java
org.sketcher.colorpicker.AlphaPicker.java
org.sketcher.colorpicker.HuePicker.java
org.sketcher.colorpicker.PickerDialog.java
org.sketcher.colorpicker.Picker.java
org.sketcher.colorpicker.PreviewView.java
org.sketcher.colorpicker.SatValPicker.java
org.sketcher.colorpicker.Utils.java
org.sketcher.style.ChromeStyle.java
org.sketcher.style.CirclesStyle.java
org.sketcher.style.EraserStyle.java
org.sketcher.style.FurStyle.java
org.sketcher.style.GridStyle.java
org.sketcher.style.LongfurStyle.java
org.sketcher.style.RibbonStyle.java
org.sketcher.style.ShadedStyle.java
org.sketcher.style.SimpleStyle.java
org.sketcher.style.SketchyStyle.java
org.sketcher.style.SquaresStyle.java
org.sketcher.style.StylesFactory.java
org.sketcher.style.WebStyle.java