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