1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.gallery3d.filtershow.filters; 18 19 import android.graphics.Bitmap; 20 import android.graphics.Canvas; 21 import android.graphics.Paint; 22 import android.graphics.Path; 23 import android.graphics.RectF; 24 25 public class ImageFilterParametricBorder extends ImageFilter { 26 private FilterColorBorderRepresentation mParameters = null; 27 28 public ImageFilterParametricBorder() { 29 mName = "Border"; 30 } 31 32 public void useRepresentation(FilterRepresentation representation) { 33 FilterColorBorderRepresentation parameters = (FilterColorBorderRepresentation) representation; 34 mParameters = parameters; 35 } 36 37 public FilterColorBorderRepresentation getParameters() { 38 return mParameters; 39 } 40 41 private void applyHelper(Canvas canvas, int w, int h) { 42 if (getParameters() == null) { 43 return; 44 } 45 Path border = new Path(); 46 border.moveTo(0, 0); 47 float bs = getParameters().getBorderSize() / 100.0f * w; 48 float r = getParameters().getBorderRadius() / 100.0f * w; 49 border.lineTo(0, h); 50 border.lineTo(w, h); 51 border.lineTo(w, 0); 52 border.lineTo(0, 0); 53 border.addRoundRect(new RectF(bs, bs, w - bs, h - bs), 54 r, r, Path.Direction.CW); 55 56 Paint paint = new Paint(); 57 paint.setAntiAlias(true); 58 paint.setColor(getParameters().getColor()); 59 canvas.drawPath(border, paint); 60 } 61 62 @Override 63 public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) { 64 Canvas canvas = new Canvas(bitmap); 65 applyHelper(canvas, bitmap.getWidth(), bitmap.getHeight()); 66 return bitmap; 67 } 68 69 } 70