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

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

The newest version!

package org.monte.media.tiff;

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


public class SetValueFormatter implements ValueFormatter {


    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;
        }

        int bits;

        int mask;

        String name;
    }
    private LinkedList setDefinition;


    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