public bool SetFieldProperty(String field, String name, int value, int[] inst) {
if (writer == null)
throw new Exception("This AcroFields instance is read-only.");
Item item = (Item)fields[field];
if (item == null)
return false;
InstHit hit = new InstHit(inst);
if (Util.EqualsIgnoreCase(name, "flags")) {
PdfNumber num = new PdfNumber(value);
for (int k = 0; k < item.Size; ++k) {
if (hit.IsHit(k)) {
item.GetMerged(k).Put(PdfName.F, num);
item.GetWidget(k).Put(PdfName.F, num);
MarkUsed(item.GetWidget(k));
}
}
}
else if (Util.EqualsIgnoreCase(name, "setflags")) {
for (int k = 0; k < item.Size; ++k) {
if (hit.IsHit(k)) {
PdfNumber num = item.GetWidget(k).GetAsNumber(PdfName.F);
int val = 0;
if (num != null)
val = num.IntValue;
num = new PdfNumber(val | value);
item.GetMerged(k).Put(PdfName.F, num);
item.GetWidget(k).Put(PdfName.F, num);
MarkUsed(item.GetWidget(k));
}
}
}
else if (Util.EqualsIgnoreCase(name, "clrflags")) {
for (int k = 0; k < item.Size; ++k) {
if (hit.IsHit(k)) {
PdfDictionary widget = item.GetWidget( k );
PdfNumber num = widget.GetAsNumber(PdfName.F);
int val = 0;
if (num != null)
val = num.IntValue;
num = new PdfNumber(val & (~value));
item.GetMerged(k).Put(PdfName.F, num);
widget.Put(PdfName.F, num);
MarkUsed(widget);
}
}
}
else if (Util.EqualsIgnoreCase(name, "fflags")) {
PdfNumber num = new PdfNumber(value);
for (int k = 0; k < item.Size; ++k) {
if (hit.IsHit(k)) {
item.GetMerged(k).Put(PdfName.FF, num);
item.GetValue(k).Put(PdfName.FF, num);
MarkUsed(item.GetValue(k));
}
}
}
else if (Util.EqualsIgnoreCase(name, "setfflags")) {
for (int k = 0; k < item.Size; ++k) {
if (hit.IsHit(k)) {
PdfDictionary valDict = item.GetValue( k );
PdfNumber num = valDict.GetAsNumber( PdfName.FF );
int val = 0;
if (num != null)
val = num.IntValue;
num = new PdfNumber(val | value);
item.GetMerged(k).Put(PdfName.FF, num);
valDict.Put(PdfName.FF, num);
MarkUsed(valDict);
}
}
}
else if (Util.EqualsIgnoreCase(name, "clrfflags")) {
for (int k = 0; k < item.Size; ++k) {
if (hit.IsHit(k)) {
PdfDictionary valDict = item.GetValue( k );
PdfNumber num = valDict.GetAsNumber(PdfName.FF);
int val = 0;
if (num != null)
val = num.IntValue;
num = new PdfNumber(val & (~value));
item.GetMerged(k).Put(PdfName.FF, num);
valDict.Put(PdfName.FF, num);
MarkUsed(valDict);
}
}
}
else
return false;
return true;
}