2002/css-validator/org/w3c/css/values CssColorCSS21.java,NONE,1.1

Update of /sources/public/2002/css-validator/org/w3c/css/values
In directory hutz:/tmp/cvs-serv17669

Added Files:
	CssColorCSS21.java 
Log Message:


--- NEW FILE: CssColorCSS21.java ---
// $Id: CssColorCSS21.java,v 1.1 2005/09/01 11:59:00 ylafon Exp $
// Author: Jean-Guilhem Rouel
// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.values;

import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;

/**
 * CssColorCSS21<br />
 * Created: Aug 30, 2005 1:53:59 PM<br />
 */
public class CssColorCSS21 extends CssColorCSS2 {

    private static int[] tableColorHash;
    private static int[] tableSystemColorHash;
    
    static {
	// We create the two table containing hashvalues of each color	
	tableColorHash = new int[COLORNAME_CSS21.length];
	for (int i = 0; i < COLORNAME_CSS21.length; i++) {
	    tableColorHash[i] = COLORNAME_CSS21[i].toLowerCase().hashCode();
	}
	
	tableSystemColorHash = new int[SYSTEMCOLORS.length];
	for (int i = 0; i < tableSystemColorHash.length; i++) {
	    tableSystemColorHash[i] = SYSTEMCOLORS[i].toLowerCase().hashCode();
	}
    }
    
    public CssColorCSS21(ApplContext ac, String s) throws InvalidParamException {
	setIdentColor(s, ac);
    }
    
    /**
     * Parse an ident color.
     */  
    private void setIdentColor(String s, ApplContext ac)
	    throws InvalidParamException {
	String lower_s = s.toLowerCase();

	int hash = lower_s.hashCode();
	
	int indexOfColor = searchColor(hash, tableColorHash);
	
	if(indexOfColor != -1) {
	    color = COLORNAME_CSS21[indexOfColor];
	}
	// the color has not been found, search it the system colors	
	else {
	    indexOfColor = searchColor(hash, tableSystemColorHash);
	    if(indexOfColor != -1) {
		color = SYSTEMCOLORS[indexOfColor];	    
	    }
	    // the color does not exist in this profile, this is an error
	    else {
		throw new InvalidParamException("value", s, "color", ac);
	    }
	}
		
	// warning if the capitalization does not correspond to the standard one
	if(!s.equals(color)) {
	    ac.getFrame().addWarning("color.mixed-capitalization", s);
	}	
    }
    
    private int searchColor(int colorHash, int[] tableColorHash) {
	for (int i =0; i < tableColorHash.length; i++) {
	    if (tableColorHash[i] == colorHash) {				
		return i;
	    }
	}
	return -1;
    }
    
}

Received on Thursday, 1 September 2005 11:59:11 UTC