BitMaskTextProppublic class BitMaskTextProp extends TextProp implements CloneableDefinition of a special kind of property of some text, or its
paragraph. For these properties, a flag in the "contains" header
field tells you the data property family will exist. The value
of the property is itself a mask, encoding several different
(but related) properties |
Fields Summary |
---|
private String[] | subPropNames | private int[] | subPropMasks | private boolean[] | subPropMatches |
Constructors Summary |
---|
public BitMaskTextProp(int sizeOfDataBlock, int maskInHeader, String overallName, String[] subPropNames)
super(sizeOfDataBlock,maskInHeader,"bitmask");
this.subPropNames = subPropNames;
this.propName = overallName;
subPropMasks = new int[subPropNames.length];
subPropMatches = new boolean[subPropNames.length];
// Initialise the masks list
for(int i=0; i<subPropMasks.length; i++) {
subPropMasks[i] = (1 << i);
}
|
Methods Summary |
---|
public java.lang.Object | clone()
BitMaskTextProp newObj = (BitMaskTextProp)super.clone();
// Don't carry over matches, but keep everything
// else as it was
newObj.subPropMatches = new boolean[subPropMatches.length];
return newObj;
| public boolean[] | getSubPropMatches()Fetch the list of if the sub properties match or not return subPropMatches;
| public java.lang.String[] | getSubPropNames()Fetch the list of the names of the sub properties return subPropNames;
| public boolean | getSubValue(int idx)Fetch the true/false status of the subproperty with the given index
return subPropMatches[idx];
| public int | getWriteMask()As we're purely mask based, just set flags for stuff
that is set
return dataValue;
| public void | setSubValue(boolean value, int idx)Set the true/false status of the subproperty with the given index
if(subPropMatches[idx] == value) { return; }
if(value) {
dataValue += subPropMasks[idx];
} else {
dataValue -= subPropMasks[idx];
}
subPropMatches[idx] = value;
| public void | setValue(int val)Set the value of the text property, and recompute the sub
properties based on it
dataValue = val;
// Figure out the values of the sub properties
for(int i=0; i< subPropMatches.length; i++) {
subPropMatches[i] = false;
if((dataValue & subPropMasks[i]) != 0) {
subPropMatches[i] = true;
}
}
|
|