/** * Gets the special field appearance for the radio circle. * @param on <CODE>true</CODE> for the checked state, <CODE>false</CODE> * otherwise * @return the appearance */ public PdfAppearance GetAppearanceRadioCircle(bool on) { PdfAppearance app = PdfAppearance.CreateAppearance(writer, box.Width, box.Height); switch (rotation) { case 90: app.SetMatrix(0, 1, -1, 0, box.Height, 0); break; case 180: app.SetMatrix(-1, 0, 0, -1, box.Width, box.Height); break; case 270: app.SetMatrix(0, -1, 1, 0, 0, box.Width); break; } Rectangle boxc = new Rectangle(app.BoundingBox); float cx = boxc.Width / 2; float cy = boxc.Height / 2; float r = (Math.Min(boxc.Width, boxc.Height) - borderWidth) / 2; if (r <= 0) { return(app); } if (backgroundColor != null) { app.SetColorFill(backgroundColor); app.Circle(cx, cy, r + borderWidth / 2); app.Fill(); } if (borderWidth > 0 && borderColor != null) { app.SetLineWidth(borderWidth); app.SetColorStroke(borderColor); app.Circle(cx, cy, r); app.Stroke(); } if (on) { if (textColor == null) { app.ResetGrayFill(); } else { app.SetColorFill(textColor); } app.Circle(cx, cy, r / 2); app.Fill(); } return(app); }
protected PdfAppearance GetBorderAppearance() { PdfAppearance app = PdfAppearance.CreateAppearance(writer, box.Width, box.Height); switch (rotation) { case 90: app.SetMatrix(0, 1, -1, 0, box.Height, 0); break; case 180: app.SetMatrix(-1, 0, 0, -1, box.Width, box.Height); break; case 270: app.SetMatrix(0, -1, 1, 0, 0, box.Width); break; } app.SaveState(); // background if (backgroundColor != null) { app.SetColorFill(backgroundColor); app.Rectangle(0, 0, box.Width, box.Height); app.Fill(); } // border if (borderStyle == PdfBorderDictionary.STYLE_UNDERLINE) { if (borderWidth != 0 && borderColor != null) { app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.MoveTo(0, borderWidth / 2); app.LineTo(box.Width, borderWidth / 2); app.Stroke(); } } else if (borderStyle == PdfBorderDictionary.STYLE_BEVELED) { if (borderWidth != 0 && borderColor != null) { app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.Rectangle(borderWidth / 2, borderWidth / 2, box.Width - borderWidth, box.Height - borderWidth); app.Stroke(); } // beveled Color actual = backgroundColor; if (actual == null) { actual = Color.WHITE; } app.SetGrayFill(1); DrawTopFrame(app); app.SetColorFill(actual.Darker()); DrawBottomFrame(app); } else if (borderStyle == PdfBorderDictionary.STYLE_INSET) { if (borderWidth != 0 && borderColor != null) { app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.Rectangle(borderWidth / 2, borderWidth / 2, box.Width - borderWidth, box.Height - borderWidth); app.Stroke(); } // inset app.SetGrayFill(0.5f); DrawTopFrame(app); app.SetGrayFill(0.75f); DrawBottomFrame(app); } else { if (borderWidth != 0 && borderColor != null) { if (borderStyle == PdfBorderDictionary.STYLE_DASHED) { app.SetLineDash(3, 0); } app.SetColorStroke(borderColor); app.SetLineWidth(borderWidth); app.Rectangle(borderWidth / 2, borderWidth / 2, box.Width - borderWidth, box.Height - borderWidth); app.Stroke(); if ((options & COMB) != 0 && maxCharacterLength > 1) { float step = box.Width / maxCharacterLength; float yb = borderWidth / 2; float yt = box.Height - borderWidth / 2; for (int k = 1; k < maxCharacterLength; ++k) { float x = step * k; app.MoveTo(x, yb); app.LineTo(x, yt); } app.Stroke(); } } } app.RestoreState(); return(app); }