blob: 44c93475aecdbe843c51f1c74d85dbab94dff21b [file] [log] [blame]
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.graphics.cts;
import dalvik.annotation.KnownFailure;
import android.graphics.AvoidXfermode;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Bitmap.Config;
import junit.framework.TestCase;
public class AvoidXfermodeTest extends TestCase {
/*
* ToBeFixed: This test ought to work with a TOLERANCE of 0. See bug 2034547.
*/
private static final int TOLERANCE = 255;
private static final int BASE_SIZE = 50;
private static final int BITMAP_HEIGHT = BASE_SIZE * 2;
private static final int BITMAP_WIDTH = BASE_SIZE * 2;
public void testAvoidXfermode() {
Paint greenPaint;
Paint redAvoidingGreenPaint;
Paint blueTargetingGreenPaint;
greenPaint = new Paint();
greenPaint.setColor(Color.GREEN);
AvoidXfermode avoidMode =
new AvoidXfermode(greenPaint.getColor(), TOLERANCE, AvoidXfermode.Mode.AVOID);
redAvoidingGreenPaint = new Paint();
redAvoidingGreenPaint.setColor(Color.RED);
redAvoidingGreenPaint.setXfermode(avoidMode);
AvoidXfermode targetMode =
new AvoidXfermode(greenPaint.getColor(), TOLERANCE, AvoidXfermode.Mode.TARGET);
blueTargetingGreenPaint = new Paint();
blueTargetingGreenPaint.setColor(Color.BLUE);
blueTargetingGreenPaint.setXfermode(targetMode);
Bitmap b = Bitmap.createBitmap(BITMAP_WIDTH, BITMAP_HEIGHT, Config.ARGB_8888);
b.eraseColor(Color.BLACK);
Canvas canvas = new Canvas(b);
// vertical bar on the left
canvas.drawRect(0f, 0f, BASE_SIZE, 2 * BASE_SIZE, greenPaint);
// horizontal bar on top
canvas.drawRect(0f, 0f, 2 * BASE_SIZE, BASE_SIZE, redAvoidingGreenPaint);
// horizontal bar at bottom
canvas.drawRect(0f, BASE_SIZE, 2 * BASE_SIZE, 2 * BASE_SIZE, blueTargetingGreenPaint);
assertEquals(Color.GREEN, b.getPixel(BASE_SIZE / 2, BASE_SIZE / 2));
assertEquals(Color.RED, b.getPixel(BASE_SIZE + BASE_SIZE / 2, BASE_SIZE / 2));
assertEquals(Color.BLUE, b.getPixel(BASE_SIZE / 2, BASE_SIZE + BASE_SIZE / 2));
assertEquals(Color.BLACK, b.getPixel(BASE_SIZE + BASE_SIZE / 2, BASE_SIZE + BASE_SIZE / 2));
}
}