10f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh/* 20f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * Copyright (C) 2010 The Android Open Source Project 30f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * 40f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * Licensed under the Apache License, Version 2.0 (the "License"); 50f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * you may not use this file except in compliance with the License. 60f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * You may obtain a copy of the License at 70f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * 80f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * http://www.apache.org/licenses/LICENSE-2.0 90f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * 100f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * Unless required by applicable law or agreed to in writing, software 110f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * distributed under the License is distributed on an "AS IS" BASIS, 120f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * See the License for the specific language governing permissions and 140f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * limitations under the License. 150f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh */ 160f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 170f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsiehpackage com.android.photoeditor.filters; 180f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 190f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsiehimport com.android.photoeditor.Photo; 200f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 210f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh/** 220f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * Image filter for photo editing. 230f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh */ 240f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsiehpublic abstract class Filter { 250f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 260f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh private boolean isValid; 270f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 280f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh protected void validate() { 290f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh isValid = true; 300f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh } 310f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 320f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh /** 330f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * Some filters, e.g. lighting filters, are initially invalid until set up with parameters while 340f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * others, e.g. sepia or flip filters, are initially valid without parameters. 350f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh */ 360f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh public boolean isValid() { 370f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh return isValid; 380f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh } 390f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh 400f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh /** 410f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * Processes the source bitmap and matrix and output the destination bitmap and matrix. 420f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * 430f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * @param src source photo as the input. 440f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh * @param dst destination photo having the same dimension as source photo as the output. 450f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh */ 460f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh public abstract void process(Photo src, Photo dst); 470f8a40e4cfdc5f6cd47c22e81f69ed0446067c54Andrew Hsieh} 48