mirror of
https://github.com/peterosterlund2/droidfish.git
synced 2025-04-02 18:30:44 +02:00
GradientPanel cleanup
Move common functionality to the base class.
This commit is contained in:
parent
fca44e4262
commit
47b093446c
@ -18,27 +18,15 @@ package net.margaritov.preference.colorpicker;
|
|||||||
|
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.LinearGradient;
|
import android.graphics.LinearGradient;
|
||||||
import android.graphics.Paint;
|
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.graphics.Shader;
|
import android.graphics.Shader;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
|
||||||
class AlphaGradientPanel extends GradientPanel {
|
class AlphaGradientPanel extends GradientPanel {
|
||||||
private float RECTANGLE_TRACKER_OFFSET = 2f;
|
|
||||||
|
|
||||||
private Paint trackerPaint = new Paint();
|
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
AlphaGradientPanel(RectF rect, AHSVColor color, float density) {
|
AlphaGradientPanel(RectF rect, AHSVColor color, float density) {
|
||||||
super(rect, color, density, getAlphaPattern(rect, density));
|
super(rect, color, density, getAlphaPattern(rect, density));
|
||||||
|
|
||||||
RECTANGLE_TRACKER_OFFSET *= density;
|
|
||||||
|
|
||||||
trackerPaint.setColor(0xff1c1c1c);
|
|
||||||
trackerPaint.setStyle(Paint.Style.STROKE);
|
|
||||||
trackerPaint.setStrokeWidth(2f * density);
|
|
||||||
trackerPaint.setAntiAlias(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Drawable getAlphaPattern(RectF rect, float density) {
|
private static Drawable getAlphaPattern(RectF rect, float density) {
|
||||||
@ -60,16 +48,10 @@ class AlphaGradientPanel extends GradientPanel {
|
|||||||
gradientPaint.setShader(alphaShader);
|
gradientPaint.setShader(alphaShader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected void drawTracker(Canvas canvas) {
|
protected void drawTracker(Canvas canvas) {
|
||||||
float rectWidth = 4 * density / 2;
|
|
||||||
Point p = alphaToPoint(color.getAlpha());
|
Point p = alphaToPoint(color.getAlpha());
|
||||||
RectF r = new RectF();
|
drawRectangleTracker(canvas, p, true);
|
||||||
r.left = p.x - rectWidth;
|
|
||||||
r.right = p.x + rectWidth;
|
|
||||||
r.top = rect.top - RECTANGLE_TRACKER_OFFSET;
|
|
||||||
r.bottom = rect.bottom + RECTANGLE_TRACKER_OFFSET;
|
|
||||||
|
|
||||||
canvas.drawRoundRect(r, 2, 2, trackerPaint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -216,7 +216,7 @@ public class ColorPickerView extends View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setUpSatValPanel() {
|
private void setUpSatValPanel() {
|
||||||
final RectF dRect = mDrawingRect;
|
RectF dRect = mDrawingRect;
|
||||||
float panelSide = dRect.height() - BORDER_WIDTH_PX * 2;
|
float panelSide = dRect.height() - BORDER_WIDTH_PX * 2;
|
||||||
panelSide -= PANEL_SPACING + ALPHA_PANEL_HEIGHT;
|
panelSide -= PANEL_SPACING + ALPHA_PANEL_HEIGHT;
|
||||||
|
|
||||||
@ -230,7 +230,7 @@ public class ColorPickerView extends View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setUpHuePanel() {
|
private void setUpHuePanel() {
|
||||||
final RectF dRect = mDrawingRect;
|
RectF dRect = mDrawingRect;
|
||||||
|
|
||||||
float left = dRect.right - HUE_PANEL_WIDTH + BORDER_WIDTH_PX;
|
float left = dRect.right - HUE_PANEL_WIDTH + BORDER_WIDTH_PX;
|
||||||
float right = dRect.right - BORDER_WIDTH_PX;
|
float right = dRect.right - BORDER_WIDTH_PX;
|
||||||
@ -242,7 +242,7 @@ public class ColorPickerView extends View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setUpAlphaPanel() {
|
private void setUpAlphaPanel() {
|
||||||
final RectF dRect = mDrawingRect;
|
RectF dRect = mDrawingRect;
|
||||||
|
|
||||||
float left = dRect.left + BORDER_WIDTH_PX;
|
float left = dRect.left + BORDER_WIDTH_PX;
|
||||||
float right = dRect.right - BORDER_WIDTH_PX;
|
float right = dRect.right - BORDER_WIDTH_PX;
|
||||||
|
@ -32,6 +32,7 @@ abstract class GradientPanel {
|
|||||||
|
|
||||||
private Paint borderPaint = new Paint();
|
private Paint borderPaint = new Paint();
|
||||||
protected Paint gradientPaint = new Paint();
|
protected Paint gradientPaint = new Paint();
|
||||||
|
protected Paint trackerPaint = new Paint();
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
GradientPanel(RectF rect, AHSVColor color, float density, Drawable background) {
|
GradientPanel(RectF rect, AHSVColor color, float density, Drawable background) {
|
||||||
@ -40,6 +41,11 @@ abstract class GradientPanel {
|
|||||||
this.density = density;
|
this.density = density;
|
||||||
this.background = background;
|
this.background = background;
|
||||||
borderPaint.setColor(0xff6E6E6E);
|
borderPaint.setColor(0xff6E6E6E);
|
||||||
|
|
||||||
|
trackerPaint.setColor(0xff1c1c1c);
|
||||||
|
trackerPaint.setStyle(Paint.Style.STROKE);
|
||||||
|
trackerPaint.setStrokeWidth(2f * density);
|
||||||
|
trackerPaint.setAntiAlias(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean contains(Point point) {
|
boolean contains(Point point) {
|
||||||
@ -73,4 +79,18 @@ abstract class GradientPanel {
|
|||||||
|
|
||||||
/** Draw "current color" tracker marker. */
|
/** Draw "current color" tracker marker. */
|
||||||
abstract protected void drawTracker(Canvas canvas);
|
abstract protected void drawTracker(Canvas canvas);
|
||||||
|
|
||||||
|
protected void drawRectangleTracker(Canvas canvas, Point p, boolean horizontal) {
|
||||||
|
float size = 2f * density;
|
||||||
|
RectF r = new RectF(rect);
|
||||||
|
r.inset(-size, -size);
|
||||||
|
if (horizontal) {
|
||||||
|
r.left = p.x - size;
|
||||||
|
r.right = p.x + size;
|
||||||
|
} else {
|
||||||
|
r.top = p.y - size;
|
||||||
|
r.bottom = p.y + size;
|
||||||
|
}
|
||||||
|
canvas.drawRoundRect(r, 2, 2, trackerPaint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,30 +19,17 @@ package net.margaritov.preference.colorpicker;
|
|||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.LinearGradient;
|
import android.graphics.LinearGradient;
|
||||||
import android.graphics.Paint;
|
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.graphics.Shader;
|
import android.graphics.Shader;
|
||||||
|
|
||||||
public class HueGradientPanel extends GradientPanel {
|
public class HueGradientPanel extends GradientPanel {
|
||||||
private float RECTANGLE_TRACKER_OFFSET = 2f;
|
|
||||||
|
|
||||||
private Paint trackerPaint = new Paint();
|
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
HueGradientPanel(RectF rect, AHSVColor color, float density) {
|
HueGradientPanel(RectF rect, AHSVColor color, float density) {
|
||||||
super(rect, color, density, null);
|
super(rect, color, density, null);
|
||||||
|
|
||||||
RECTANGLE_TRACKER_OFFSET *= density;
|
|
||||||
|
|
||||||
Shader hueShader = new LinearGradient(rect.left, rect.top, rect.left, rect.bottom,
|
Shader hueShader = new LinearGradient(rect.left, rect.top, rect.left, rect.bottom,
|
||||||
buildHueColorArray(), null, Shader.TileMode.CLAMP);
|
buildHueColorArray(), null, Shader.TileMode.CLAMP);
|
||||||
gradientPaint.setShader(hueShader);
|
gradientPaint.setShader(hueShader);
|
||||||
|
|
||||||
trackerPaint.setColor(0xff1c1c1c);
|
|
||||||
trackerPaint.setStyle(Paint.Style.STROKE);
|
|
||||||
trackerPaint.setStrokeWidth(2f * density);
|
|
||||||
trackerPaint.setAntiAlias(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private int[] buildHueColorArray() {
|
private int[] buildHueColorArray() {
|
||||||
@ -56,16 +43,10 @@ public class HueGradientPanel extends GradientPanel {
|
|||||||
protected void setGradientPaint() {
|
protected void setGradientPaint() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected void drawTracker(Canvas canvas) {
|
protected void drawTracker(Canvas canvas) {
|
||||||
float rectHeight = 4 * density / 2;
|
|
||||||
Point p = hueToPoint(color.getHSV()[0]);
|
Point p = hueToPoint(color.getHSV()[0]);
|
||||||
RectF r = new RectF();
|
drawRectangleTracker(canvas, p, false);
|
||||||
r.left = rect.left - RECTANGLE_TRACKER_OFFSET;
|
|
||||||
r.right = rect.right + RECTANGLE_TRACKER_OFFSET;
|
|
||||||
r.top = p.y - rectHeight;
|
|
||||||
r.bottom = p.y + rectHeight;
|
|
||||||
|
|
||||||
canvas.drawRoundRect(r, 2, 2, trackerPaint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -30,8 +30,6 @@ public class SatValGradientPanel extends GradientPanel {
|
|||||||
|
|
||||||
private Shader valShader;
|
private Shader valShader;
|
||||||
|
|
||||||
private Paint trackerPaint = new Paint();
|
|
||||||
|
|
||||||
/** Constructor. */
|
/** Constructor. */
|
||||||
SatValGradientPanel(RectF rect, AHSVColor color, float density) {
|
SatValGradientPanel(RectF rect, AHSVColor color, float density) {
|
||||||
super(rect, color, density, null);
|
super(rect, color, density, null);
|
||||||
@ -40,10 +38,6 @@ public class SatValGradientPanel extends GradientPanel {
|
|||||||
|
|
||||||
valShader = new LinearGradient(rect.left, rect.top, rect.left, rect.bottom,
|
valShader = new LinearGradient(rect.left, rect.top, rect.left, rect.bottom,
|
||||||
0xffffffff, 0xff000000, Shader.TileMode.CLAMP);
|
0xffffffff, 0xff000000, Shader.TileMode.CLAMP);
|
||||||
|
|
||||||
trackerPaint.setStyle(Paint.Style.STROKE);
|
|
||||||
trackerPaint.setStrokeWidth(2f * density);
|
|
||||||
trackerPaint.setAntiAlias(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,6 +53,7 @@ public class SatValGradientPanel extends GradientPanel {
|
|||||||
gradientPaint.setShader(shader);
|
gradientPaint.setShader(shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
protected void drawTracker(Canvas canvas) {
|
protected void drawTracker(Canvas canvas) {
|
||||||
float[] hsv = color.getHSV();
|
float[] hsv = color.getHSV();
|
||||||
Point p = satValToPoint(hsv[1], hsv[2]);
|
Point p = satValToPoint(hsv[1], hsv[2]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user