/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */

/* $Id: ColorWithFallback.java 1616416 2014-08-07 06:46:57Z gadams $ */

package org.apache.fop.util;

import java.awt.Color;
import java.awt.color.ColorSpace;

import org.apache.xmlgraphics.java2d.color.ColorWithAlternatives;

This class is a Color subclass adding a fallback color that FOP uses to re-serialize color specifications as textual functions. The fallback is otherwise not used in producing output formats.
/** * This class is a {@link Color} subclass adding a fallback color that FOP uses to re-serialize * color specifications as textual functions. The fallback is otherwise not used in producing * output formats. */
public class ColorWithFallback extends ColorWithAlternatives { private static final long serialVersionUID = 7913922854959637136L; private final Color fallback;
Creates a new color
Params:
  • cspace – the color space of the primary color
  • components – the color components
  • alpha – the alpha component
  • alternativeColors – the array of alternative colors if applicable (may be null)
  • fallback – the fallback color (usually an sRGB color)
/** * Creates a new color * @param cspace the color space of the primary color * @param components the color components * @param alpha the alpha component * @param alternativeColors the array of alternative colors if applicable (may be null) * @param fallback the fallback color (usually an sRGB color) */
public ColorWithFallback(ColorSpace cspace, float[] components, float alpha, Color[] alternativeColors, Color fallback) { super(cspace, components, alpha, alternativeColors); this.fallback = fallback; }
Copy constructor adding a fallback color.
Params:
  • color – the color to be duplicated
  • fallback – the fallback color (usually an sRGB color)
/** * Copy constructor adding a fallback color. * @param color the color to be duplicated * @param fallback the fallback color (usually an sRGB color) */
public ColorWithFallback(Color color, Color fallback) { this(color.getColorSpace(), color.getColorComponents(null), getAlphaFloat(color), getAlternativeColors(color), fallback); } private static float getAlphaFloat(Color color) { float[] comps = color.getComponents(null); return comps[comps.length - 1]; //Alpha is on last component } private static Color[] getAlternativeColors(Color color) { if (color instanceof ColorWithAlternatives) { ColorWithAlternatives cwa = (ColorWithAlternatives)color; if (cwa.hasAlternativeColors()) { return cwa.getAlternativeColors(); } } return null; }
Returns the fallback color.
Returns:the fallback color
/** * Returns the fallback color. * @return the fallback color */
public Color getFallbackColor() { return this.fallback; } @Override public int hashCode() { return super.hashCode() ^ fallback.hashCode(); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (!super.equals(obj)) { return false; } else if (obj instanceof ColorWithFallback) { ColorWithFallback other = (ColorWithFallback) obj; return other.fallback.equals(fallback); } else { return false; } } }