/**
* Gets the field appearance.
* @param isRadio <CODE>true</CODE> for a radio field and <CODE>false</CODE>
* for a check field
* @param on <CODE>true</CODE> for the checked state, <CODE>false</CODE>
* otherwise
* @throws IOException on error
* @throws DocumentException on error
* @return the appearance
*/
public PdfAppearance GetAppearance(bool isRadio, bool on)
{
if (isRadio && checkType == TYPE_CIRCLE)
{
return(GetAppearanceRadioCircle(on));
}
PdfAppearance app = GetBorderAppearance();
if (!on)
{
return(app);
}
BaseFont ufont = RealFont;
bool borderExtra = borderStyle == PdfBorderDictionary.STYLE_BEVELED || borderStyle == PdfBorderDictionary.STYLE_INSET;
float h = box.Height - borderWidth * 2;
float bw2 = borderWidth;
if (borderExtra)
{
h -= borderWidth * 2;
bw2 *= 2;
}
float offsetX = (borderExtra ? 2 * borderWidth : borderWidth);
offsetX = Math.Max(offsetX, 1);
float offX = Math.Min(bw2, offsetX);
float wt = box.Width - 2 * offX;
float ht = box.Height - 2 * offX;
float fsize = fontSize;
if (fsize == 0)
{
float bw = ufont.GetWidthPoint(text, 1);
if (bw == 0)
{
fsize = 12;
}
else
{
fsize = wt / bw;
}
float nfsize = h / (ufont.GetFontDescriptor(BaseFont.ASCENT, 1));
fsize = Math.Min(fsize, nfsize);
}
app.SaveState();
app.Rectangle(offX, offX, wt, ht);
app.Clip();
app.NewPath();
if (textColor == null)
{
app.ResetGrayFill();
}
else
{
app.SetColorFill(textColor);
}
app.BeginText();
app.SetFontAndSize(ufont, fsize);
app.SetTextMatrix((box.Width - ufont.GetWidthPoint(text, fsize)) / 2,
(box.Height - ufont.GetAscentPoint(text, fsize)) / 2);
app.ShowText(text);
app.EndText();
app.RestoreState();
return(app);
}