--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/core/com.nokia.carbide.cpp.ui.tests/src/com/nokia/carbide/cpp/ui/tests/TestMaskedImageModel.java Tue Mar 24 22:20:21 2009 -0500
@@ -0,0 +1,284 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.carbide.cpp.ui.tests;
+
+import com.nokia.carbide.cpp.ui.images.*;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.*;
+
+/**
+ * Test basic IMaskedFileImageModel variants and behavior
+ *
+ */
+public class TestMaskedImageModel extends BaseTest {
+
+ private IImageLoader fileImageLoader;
+ private IPath projectPath;
+ private IPath imageDirPath;
+
+ /* (non-Javadoc)
+ * @see junit.framework.TestCase#setUp()
+ */
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ fileImageLoader = ImageModelFactory.createImageLoader(false);
+ projectPath = getProjectPath();
+ imageDirPath = projectPath.append("data/images");
+ }
+
+ /* (non-Javadoc)
+ * @see junit.framework.TestCase#tearDown()
+ */
+ @Override
+ protected void tearDown() throws Exception {
+ fileImageLoader.dispose();
+ super.tearDown();
+ }
+
+ public void testWithMask() throws CoreException {
+ IImageContainerModel container = ImageModelFactory.createNullImageContainerModel(
+ imageDirPath, fileImageLoader);
+
+ IMaskedFileImageModel model = ImageModelFactory.createMaskedFileImageModel(
+ container,
+ new Path("list_icon.bmp"), new Path("list_icon_mask.bmp"),
+ IMaskedFileImageModel.MaskCompositionMethod.TILING);
+ assertNotNull(model);
+ assertEquals(IMaskedFileImageModel.MaskCompositionMethod.TILING, model.getMaskCompositionMethod());
+
+ ImageDescriptor descriptor;
+ descriptor = model.getImageDescriptor(null);
+ assertNotNull(descriptor);
+ ImageDescriptor descriptor2 = model.getImageDescriptor(null);
+
+ // check caching
+ ImageData data = descriptor.getImageData();
+ assertNotNull(data);
+ ImageData data2 = descriptor2.getImageData();
+ assertNotNull(data2);
+ assertSame(data, data2);
+
+ // make sure the expected pixels are transparent in the expected way
+ checkImage(data, 42, 29,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(15, 14, new RGB(255, 255, 102))
+ });
+
+ // check no caching
+ descriptor = model.getImageDescriptor(new Point(42*2, 29*2));
+ assertNotNull(descriptor);
+ data = descriptor.getImageData();
+ descriptor2 = model.getImageDescriptor(new Point(42*2, 29*2));
+ data2 = descriptor2.getImageData();
+ assertNotSame(data, data2);
+
+ checkImage(data, 42*2, 29*2,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(15*2, 14*2, new RGB(255, 255, 102))
+ });
+
+ }
+
+ public void testNoMask() throws CoreException {
+ IImageContainerModel container = ImageModelFactory.createNullImageContainerModel(imageDirPath, fileImageLoader);
+
+ IMaskedFileImageModel model = ImageModelFactory.createMaskedFileImageModel(
+ container,
+ new Path("list_icon.bmp"), null,
+ IMaskedFileImageModel.MaskCompositionMethod.TILING);
+ assertNotNull(model);
+ assertEquals(IMaskedFileImageModel.MaskCompositionMethod.TILING, model.getMaskCompositionMethod());
+
+ ImageDescriptor descriptor;
+ descriptor = model.getImageDescriptor(null);
+ assertNotNull(descriptor);
+ ImageDescriptor descriptor2 = model.getImageDescriptor(null);
+
+ // check caching
+ ImageData data = descriptor.getImageData();
+ assertNotNull(data);
+ ImageData data2 = descriptor2.getImageData();
+ assertNotNull(data2);
+ assertSame(data, data2);
+
+ // make sure the expected pixels are not transparent
+ checkImage(data, 42, 29,
+ new Pixel[] {
+ new Pixel(0, 0, new RGB(221, 0, 221)),
+ new Pixel(15, 14, new RGB(255, 255, 102))
+ });
+
+ // check no caching
+ descriptor = model.getImageDescriptor(new Point(42*2, 29*2));
+ assertNotNull(descriptor);
+ data = descriptor.getImageData();
+ descriptor2 = model.getImageDescriptor(new Point(42*2, 29*2));
+ data2 = descriptor2.getImageData();
+ assertNotSame(data, data2);
+
+ checkImage(data, 42*2, 29*2,
+ new Pixel[] {
+ new Pixel(0, 0, new RGB(221, 0, 221)),
+ new Pixel(15*2, 14*2, new RGB(255, 255, 102))
+ });
+
+ }
+
+ public void testTiledMask1() throws CoreException {
+ IImageContainerModel container = ImageModelFactory.createNullImageContainerModel(imageDirPath, fileImageLoader);
+
+ IMaskedFileImageModel model = ImageModelFactory.createMaskedFileImageModel(
+ container,
+ new Path("list_icon.bmp"), new Path("mark_icon_mask.bmp"),
+ IMaskedFileImageModel.MaskCompositionMethod.TILING);
+ assertNotNull(model);
+ assertEquals(IMaskedFileImageModel.MaskCompositionMethod.TILING, model.getMaskCompositionMethod());
+
+ ImageDescriptor descriptor;
+ descriptor = model.getImageDescriptor(null);
+ assertNotNull(descriptor);
+ ImageDescriptor descriptor2 = model.getImageDescriptor(null);
+
+ // check caching
+ ImageData data = descriptor.getImageData();
+ assertNotNull(data);
+ ImageData data2 = descriptor2.getImageData();
+ assertNotNull(data2);
+ assertSame(data, data2);
+
+ // check transparency... the checkmark is tiled 1.5 times horizontally, about,
+ // and slightly more than once vertically
+ checkImage(data, 42, 29,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(8, 8, transparent),
+ new Pixel(19, 10, new RGB(221, 0, 221)),
+ new Pixel(15, 14, new RGB(255, 255, 102)),
+ new Pixel(31, 14, new RGB(255, 204, 0)),
+ new Pixel(29, 23, transparent),
+ new Pixel(41, 28, transparent),
+ });
+
+ // scaled
+ descriptor = model.getImageDescriptor(new Point(42*2, 29*2));
+ assertNotNull(descriptor);
+
+ data = descriptor.getImageData();
+ assertNotNull(data);
+
+ // check transparency... both the image and mask should be scaled
+ checkImage(data, 42*2, 29*2,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(8*2, 8*2, transparent),
+ new Pixel(19*2, 10*2, new RGB(221, 0, 221)),
+ new Pixel(15*2, 14*2, new RGB(255, 255, 102)),
+ new Pixel(31*2, 14*2, new RGB(255, 204, 0)),
+ new Pixel(29*2, 23*2, transparent),
+ new Pixel(41*2, 28*2, transparent),
+ });
+
+ }
+
+ public void testTiledMask2() throws CoreException {
+ IImageContainerModel container = ImageModelFactory.createNullImageContainerModel(imageDirPath, fileImageLoader);
+
+ IMaskedFileImageModel model = ImageModelFactory.createMaskedFileImageModel(
+ container,
+ new Path("four_dots.bmp"), new Path("mark_icon_mask.bmp"),
+ IMaskedFileImageModel.MaskCompositionMethod.TILING);
+ assertNotNull(model);
+ assertEquals(IMaskedFileImageModel.MaskCompositionMethod.TILING, model.getMaskCompositionMethod());
+
+ ImageDescriptor descriptor;
+ descriptor = model.getImageDescriptor(null);
+ assertNotNull(descriptor);
+ ImageDescriptor descriptor2 = model.getImageDescriptor(null);
+
+ // check caching
+ ImageData data = descriptor.getImageData();
+ assertNotNull(data);
+ ImageData data2 = descriptor2.getImageData();
+ assertNotNull(data2);
+ assertSame(data, data2);
+
+ // check transparency... the checkmark is much larger so the whole thing
+ // becomes invisible
+ checkImage(data, 2, 2,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(1, 1, transparent),
+ new Pixel(1, 0, transparent),
+ new Pixel(0, 1, transparent),
+ });
+
+ // scaled
+ descriptor = model.getImageDescriptor(new Point(2*24, 2*24));
+ assertNotNull(descriptor);
+
+ data = descriptor.getImageData();
+ assertNotNull(data);
+
+ // check transparency... both the image and mask should be scaled, and
+ // the result is still fully invisible
+ checkImage(data, 2*24, 2*24,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(23, 23, transparent),
+ new Pixel(23, 0, transparent),
+ new Pixel(0, 23, transparent),
+ new Pixel(12, 12, transparent),
+ });
+ }
+
+ public void testScaledMask1() throws CoreException {
+ IImageContainerModel container = ImageModelFactory.createNullImageContainerModel(imageDirPath, fileImageLoader);
+
+ IMaskedFileImageModel model = ImageModelFactory.createMaskedFileImageModel(
+ container,
+ new Path("four_dots.bmp"), new Path("mark_icon_mask.bmp"),
+ IMaskedFileImageModel.MaskCompositionMethod.SCALING);
+ assertNotNull(model);
+ assertEquals(IMaskedFileImageModel.MaskCompositionMethod.SCALING, model.getMaskCompositionMethod());
+
+ ImageDescriptor descriptor;
+ descriptor = model.getImageDescriptor(new Point(26, 26));
+ assertNotNull(descriptor);
+
+ ImageData data = descriptor.getImageData();
+ assertNotNull(data);
+
+ // check transparency... the checkmark is much larger, but scaled up to fit
+ checkImage(data, 26, 26,
+ new Pixel[] {
+ new Pixel(0, 0, transparent),
+ new Pixel(25, 25, transparent),
+ new Pixel(18, 11, new RGB(0, 255, 0)), //upper-right
+ new Pixel(6, 18, new RGB(0, 0, 255)), //lower-left
+ new Pixel(14, 16, new RGB(255, 255, 0)), //lower-right
+ });
+
+ }
+
+}