blob: 268df48769aa3d84f4d8ec3242ab7768837825fc [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.flex.swf.tags;
import org.apache.flex.swf.TagType;
import org.apache.flex.swf.types.KerningRecord;
import org.apache.flex.swf.types.Rect;
/**
* Represents a <code>DefineFont2</code> tag in a SWF file.
* <p>
* The DefineFont2 tag extends the functionality of DefineFont. Enhancements
* include the following:
* <ol>
* <li>32-bit entries in the OffsetTable, for fonts with more than 64K glyphs.</li>
* <li>Mapping to device fonts, by incorporating all the functionality of
* DefineFontInfo.</li>
* <li>Font metrics for improved layout of dynamic glyph text.</li>
* </ol>
* DefineFont2 tags are the only font definitions that can be used for dynamic
* text.
*/
public class DefineFont2Tag extends DefineFontTag implements IFontInfo
{
/**
* Constructor.
*/
public DefineFont2Tag()
{
this(TagType.DefineFont2);
}
/**
* Protected constructor for use by subclasses with other tag types.
*/
protected DefineFont2Tag(TagType tagType)
{
super(tagType);
fontInfo = new DefineFontInfo2Tag();
}
private ICharacterTag fontTag;
private IFontInfo fontInfo;
private boolean fontFlagsHasLayout;
private boolean fontFlagsWideOffsets;
private int languageCode;
private int numGlyphs;
private long codeTableOffset;
private int[] codeTable;
private int fontAscent;
private int fontDescent;
private int fontLeading;
private int[] fontAdvanceTable;
private Rect[] fontBoundsTable;
private int kerningCount;
private KerningRecord[] fontKerningTable;
@Override
public ICharacterTag getFontTag()
{
return fontTag;
}
@Override
public void setFontTag(ICharacterTag fontTag)
{
this.fontTag = fontTag;
}
@Override
public String getFontName()
{
return fontInfo.getFontName();
}
@Override
public void setFontName(String fontName)
{
fontInfo.setFontName(fontName);
}
@Override
public int getFontFlagsReserved()
{
return 0;
}
@Override
public void setFontFlagsReserved(int fontFlagsReserved)
{
}
@Override
public boolean isFontFlagsSmallText()
{
return fontInfo.isFontFlagsSmallText();
}
@Override
public void setFontFlagsSmallText(boolean fontFlagsSmallText)
{
fontInfo.setFontFlagsSmallText(fontFlagsSmallText);
}
@Override
public boolean isFontFlagsShiftJIS()
{
return fontInfo.isFontFlagsShiftJIS();
}
@Override
public void setFontFlagsShiftJIS(boolean fontFlagsShiftJIS)
{
fontInfo.setFontFlagsShiftJIS(fontFlagsShiftJIS);
}
@Override
public boolean isFontFlagsANSI()
{
return fontInfo.isFontFlagsANSI();
}
@Override
public void setFontFlagsANSI(boolean fontFlagsANSI)
{
fontInfo.setFontFlagsANSI(fontFlagsANSI);
}
@Override
public boolean isFontFlagsItalic()
{
return fontInfo.isFontFlagsItalic();
}
@Override
public void setFontFlagsItalic(boolean fontFlagsItalic)
{
fontInfo.setFontFlagsItalic(fontFlagsItalic);
}
@Override
public boolean isFontFlagsBold()
{
return fontInfo.isFontFlagsBold();
}
@Override
public void setFontFlagsBold(boolean fontFlagsBold)
{
fontInfo.setFontFlagsBold(fontFlagsBold);
}
@Override
public boolean isFontFlagsWideCodes()
{
return fontInfo.isFontFlagsWideCodes();
}
@Override
public void setFontFlagsWideCodes(boolean fontFlagsWideCodes)
{
fontInfo.setFontFlagsWideCodes(fontFlagsWideCodes);
}
/**
* @return the fontFlagsHasLayout
*/
public boolean isFontFlagsHasLayout()
{
return fontFlagsHasLayout;
}
/**
* @param fontFlagsHasLayout the fontFlagsHasLayout to set
*/
public void setFontFlagsHasLayout(boolean fontFlagsHasLayout)
{
this.fontFlagsHasLayout = fontFlagsHasLayout;
}
/**
* @return the fontFlagsWideOffsets
*/
public boolean isFontFlagsWideOffsets()
{
return fontFlagsWideOffsets;
}
/**
* @param fontFlagsWideOffsets the fontFlagsWideOffsets to set
*/
public void setFontFlagsWideOffsets(boolean fontFlagsWideOffsets)
{
this.fontFlagsWideOffsets = fontFlagsWideOffsets;
}
/**
* @return the languageCode
*/
public int getLanguageCode()
{
return languageCode;
}
/**
* @param languageCode the languageCode to set
*/
public void setLanguageCode(int languageCode)
{
this.languageCode = languageCode;
}
/**
* @return the numGlyphs
*/
public int getNumGlyphs()
{
return numGlyphs;
}
/**
* @param numGlyphs the numGlyphs to set
*/
public void setNumGlyphs(int numGlyphs)
{
this.numGlyphs = numGlyphs;
}
/**
* @return the fontInfo
*/
public IFontInfo getFontInfo()
{
return fontInfo;
}
/**
* @param fontInfo the fontInfo to set
*/
public void setFontInfo(IFontInfo fontInfo)
{
this.fontInfo = fontInfo;
}
/**
* @return the codeTableOffset
*/
public long getCodeTableOffset()
{
return codeTableOffset;
}
/**
* @param value the codeTableOffset to set
*/
public void setCodeTableOffset(long value)
{
this.codeTableOffset = value;
}
/**
* @return the fontAscent
*/
public int getFontAscent()
{
return fontAscent;
}
/**
* @param value the fontAscent to set
*/
public void setFontAscent(int value)
{
this.fontAscent = value;
}
/**
* @return the fontDescent
*/
public int getFontDescent()
{
return fontDescent;
}
/**
* @param fontDescent the fontDescent to set
*/
public void setFontDescent(int fontDescent)
{
this.fontDescent = fontDescent;
}
/**
* @return the fontLeading
*/
public int getFontLeading()
{
return fontLeading;
}
/**
* @param fontLeading the fontLeading to set
*/
public void setFontLeading(int fontLeading)
{
this.fontLeading = fontLeading;
}
/**
* @return the kerningCount
*/
public int getKerningCount()
{
return kerningCount;
}
/**
* @param kerningCount the kerningCount to set
*/
public void setKerningCount(int kerningCount)
{
this.kerningCount = kerningCount;
}
/**
* @return the codeTable
*/
@Override
public int[] getCodeTable()
{
return codeTable;
}
/**
* @param value the codeTable to set
*/
@Override
public void setCodeTable(int[] value)
{
this.codeTable = value;
}
/**
* @return the fontAdvanceTable
*/
public int[] getFontAdvanceTable()
{
return fontAdvanceTable;
}
/**
* @param value the fontAdvanceTable to set
*/
public void setFontAdvanceTable(int[] value)
{
this.fontAdvanceTable = value;
}
/**
* @return the fontBoundsTable
*/
public Rect[] getFontBoundsTable()
{
return fontBoundsTable;
}
/**
* @param value the fontBoundsTable to set
*/
public void setFontBoundsTable(Rect[] value)
{
this.fontBoundsTable = value;
}
/**
* @return the fontKerningTable
*/
public KerningRecord[] getFontKerningTable()
{
return fontKerningTable;
}
/**
* @param value the fontKerningTable to set
*/
public void setFontKerningTable(KerningRecord[] value)
{
this.fontKerningTable = value;
}
}