Package org.apache.forrest.conf

Source Code of org.apache.forrest.conf.SkinconfTransformer

/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* 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 org.apache.forrest.conf;

import java.awt.Color;
import java.io.IOException;
import java.util.Map;

import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.AbstractTransformer;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;

public class SkinconfTransformer
  extends AbstractTransformer {

          /**
     * Setup
     */
    public void setup(SourceResolver resolver, Map objectModel,
                      String src, Parameters parameters)
    throws ProcessingException, SAXException, IOException {
        /*final boolean append = parameters.getParameterAsBoolean("append", false);
        final String  logfilename = parameters.getParameter("logfile", null);*/
    }
   
   /**
     * Receive notification of the beginning of an element.
     */
    public void startElement(String uri, String loc, String raw, Attributes a)
    throws SAXException {
        /*
        this.log ("startElement", "uri="+uri+",local="+loc+",raw="+raw);
        for (int i = 0; i < a.getLength(); i++) {
            this.log ("            ", new Integer(i+1).toString()
                 +". uri="+a.getURI(i)
                 +",local="+a.getLocalName(i)
                 +",qname="+a.getQName(i)
                 +",type="+a.getType(i)
                 +",value="+a.getValue(i));
        }
        */
        Attributes outAttributes = a;
       
        if("color".equals(loc)) {
           
            AttributesImpl newAttributes = new AttributesImpl(a);
           
            String value=null;
            String highlight=null;
            String lowlight=null;
            String font=null;
            String link=null;           
            String vlink=null;
            String hlink=null;
           
            for (int i = 0; i < a.getLength(); i++) {
                if("value".equals(a.getLocalName(i))){
                   value=a.getValue(i);
                }else if("highlight".equals(a.getLocalName(i))){
                   highlight=a.getValue(i);
                }else if("lowlight".equals(a.getLocalName(i))){
                   lowlight=a.getValue(i);
                }else if("font".equals(a.getLocalName(i))){
                   font=a.getValue(i);
                }else if("link".equals(a.getLocalName(i))){
                   link=a.getValue(i);
                }else if("vlink".equals(a.getLocalName(i))){
                   vlink=a.getValue(i);
                }else if("hlink".equals(a.getLocalName(i))){
                   hlink=a.getValue(i);
                }             
            }
           
            if(value==null){
              value="#dd0000";// a default "visible" color
              newAttributes.addAttribute("","value","value","",value);
            }  
           
            Color valueColor = Color.decode(value);
            float brightness = Color.RGBtoHSB(valueColor.getRed(),
                                              valueColor.getGreen(),
                                              valueColor.getBlue(),
                                              null)[2];
           
            if(highlight==null){
                highlight = "#"+Integer.toHexString(valueColor.brighter().getRGB()).substring(2);
                newAttributes.addAttribute("","highlight","highlight","",highlight);
            }

            if(lowlight==null){
                lowlight = "#"+Integer.toHexString(valueColor.darker().getRGB()).substring(2);
                newAttributes.addAttribute("","lowlight","lowlight","",lowlight);
            }  
           
            if(font==null){
                if(brightness<0.5) {
                    font="#ffffff";
                }
                else{  
                    font="#000000";
                }
                newAttributes.addAttribute("","font","font","",font);
            }   

            if(link==null){
                if(brightness<0.5) {
                     link="#7f7fff";
                }
                else{  
                    link="#0000ff";
                }
                newAttributes.addAttribute("","link","link","",link);
            }   

            if(vlink==null){
                if(brightness<0.5) {
                    vlink="#4242a5";
                }
                else{  
                    vlink="#ffffff";
                }
                newAttributes.addAttribute("","vlink","vlink","",link);
            }  
           
            if(hlink==null){
                if(brightness<0.5) {
                    hlink="#0037ff";
                }
                else{  
                    hlink="#6587ff";
                }
                newAttributes.addAttribute("","hlink","hlink","",link);
            }  
           
            outAttributes = newAttributes;
        }
       
        if (super.contentHandler!=null) {
            super.contentHandler.startElement(uri,loc,raw,outAttributes);
        }
    }
}
TOP

Related Classes of org.apache.forrest.conf.SkinconfTransformer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.