001: /* ====================================================================
002: Licensed to the Apache Software Foundation (ASF) under one or more
003: contributor license agreements. See the NOTICE file distributed with
004: this work for additional information regarding copyright ownership.
005: The ASF licenses this file to You under the Apache License, Version 2.0
006: (the "License"); you may not use this file except in compliance with
007: the License. You may obtain a copy of the License at
008:
009: http://www.apache.org/licenses/LICENSE-2.0
010:
011: Unless required by applicable law or agreed to in writing, software
012: distributed under the License is distributed on an "AS IS" BASIS,
013: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: See the License for the specific language governing permissions and
015: limitations under the License.
016: ==================================================================== */
017:
018: package org.apache.poi.hslf.model.textproperties;
019:
020: /**
021: * Definition of a property of some text, or its paragraph. Defines
022: * how to find out if it's present (via the mask on the paragraph or
023: * character "contains" header field), how long the value of it is,
024: * and how to get and set the value.
025: *
026: * As the exact form of these (such as mask value, size of data
027: * block etc) is different for StyleTextProps and
028: * TxMasterTextProps, the definitions of the standard
029: * TextProps is stored in the different record classes
030: */
031: public class TextProp implements Cloneable {
032: protected int sizeOfDataBlock; // Number of bytes the data part uses
033: protected String propName;
034: protected int dataValue;
035: protected int maskInHeader;
036:
037: /**
038: * Generate the definition of a given type of text property.
039: */
040: public TextProp(int sizeOfDataBlock, int maskInHeader,
041: String propName) {
042: this .sizeOfDataBlock = sizeOfDataBlock;
043: this .maskInHeader = maskInHeader;
044: this .propName = propName;
045: this .dataValue = 0;
046: }
047:
048: /**
049: * Name of the text property
050: */
051: public String getName() {
052: return propName;
053: }
054:
055: /**
056: * Size of the data section of the text property (2 or 4 bytes)
057: */
058: public int getSize() {
059: return sizeOfDataBlock;
060: }
061:
062: /**
063: * Mask in the paragraph or character "contains" header field
064: * that indicates that this text property is present.
065: */
066: public int getMask() {
067: return maskInHeader;
068: }
069:
070: /**
071: * Get the mask that's used at write time. Only differs from
072: * the result of getMask() for the mask based properties
073: */
074: public int getWriteMask() {
075: return getMask();
076: }
077:
078: /**
079: * Fetch the value of the text property (meaning is specific to
080: * each different kind of text property)
081: */
082: public int getValue() {
083: return dataValue;
084: }
085:
086: /**
087: * Set the value of the text property.
088: */
089: public void setValue(int val) {
090: dataValue = val;
091: }
092:
093: /**
094: * Clone, eg when you want to actually make use of one of these.
095: */
096: public Object clone() {
097: try {
098: return super .clone();
099: } catch (CloneNotSupportedException e) {
100: throw new InternalError(e.getMessage());
101: }
102: }
103: }
|