All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.monte.media.tiff.SetValueFormatter Maven / Gradle / Ivy

There is a newer version: 1.1
Show newest version
/*
 * @(#)IFDEnum.java  1.0  2010-03-22
 * 
 * Copyright (c) 2010 Werner Randelshofer, Goldau, Switzerland.
 * All rights reserved.
 *
 * You may not use, copy or modify this file, except in compliance with the
 * license agreement you entered into with Werner Randelshofer.
 * For details see accompanying license terms.
 */
package org.monte.media.tiff;

import java.util.HashSet;
import java.util.LinkedList;

/**
 * Formats integer values as a set.
 *
 * @author Werner Randelshofer
 * @version 1.0 2010-03-22 Created.
 */
public class SetValueFormatter implements ValueFormatter {

    /** Defines an entry of the set. */
    private class Entry {
        public Entry(String name, int bits) {
            this.name=name;
            this.bits=bits;
            this.mask=bits;
        }
        public Entry(String name, int bits, int mask) {
            this.name=name;
            this.bits=bits;
            this.mask=mask;
        }
        /* the bits that must be set. */
        int bits;
        /* a mask which is considered for the bits. */
        int mask;
        /* the descriptive name of the value. */
        String name;
    }
    private LinkedList setDefinition;

    /** Creates a new enumeration.
     * The enumeration consists of a list of String=Integer or
     * String=Integer Integer pairs.
     * 

* If only one integer is provided, it specifies the bits which must * be set. * If two integers are provided, the second value specifies a bit mask. */ public SetValueFormatter(Object... set) { setDefinition = new LinkedList(); for (int i = 0; i < set.length; ) { if (i setValue=new HashSet(); int intValue = ((Number) value).intValue(); for (Entry elem :setDefinition) { if ((elem.mask&intValue)==elem.bits) { setValue.add(elem.name); } } return setValue; } return value; } @Override public Object prettyFormat(Object value) { if (value instanceof Number) { int intValue = ((Number) value).intValue(); StringBuilder prettyValue=new StringBuilder(); for (Entry elem :setDefinition) { if ((elem.mask&intValue)==elem.bits) { if (prettyValue.length()>0) { prettyValue.append(','); } prettyValue.append(elem.name); } } prettyValue.insert(0, " {"); prettyValue.insert(0,Integer.toHexString(intValue)); prettyValue.insert(0, "0x"); prettyValue.append("}"); return prettyValue.toString(); } return value; } @Override public String descriptionFormat(Object value) { if (value instanceof Number) { int intValue = ((Number) value).intValue(); StringBuilder prettyValue=new StringBuilder(); for (Entry elem :setDefinition) { if ((elem.mask&intValue)==elem.bits) { if (prettyValue.length()>0) { prettyValue.append(','); } prettyValue.append(elem.name); } } return prettyValue.toString(); } return null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy