bounds property

Rect bounds

Gets or sets the bounds.

Implementation

Rect get bounds {
  if (_fieldHelper.isLoadedField) {
    final Rect rect = _fieldHelper.getBounds();
    double x = 0;
    double y = 0;
    if (page != null) {
      final PdfDictionary dictionary =
          PdfPageHelper.getHelper(page!).dictionary!;
      if (dictionary.containsKey(PdfDictionaryProperties.cropBox)) {
        PdfArray? cropBox;
        if (dictionary[PdfDictionaryProperties.cropBox] is PdfArray) {
          cropBox = dictionary[PdfDictionaryProperties.cropBox] as PdfArray?;
        } else {
          final PdfReferenceHolder cropBoxHolder =
              dictionary[PdfDictionaryProperties.cropBox]!
                  as PdfReferenceHolder;
          cropBox = cropBoxHolder.object as PdfArray?;
        }
        if ((cropBox![0]! as PdfNumber).value != 0 ||
            (cropBox[1]! as PdfNumber).value != 0 ||
            page!.size.width == (cropBox[2]! as PdfNumber).value ||
            page!.size.height == (cropBox[3]! as PdfNumber).value) {
          x = rect.left - (cropBox[0]! as PdfNumber).value!;
          y = (cropBox[3]! as PdfNumber).value! - (rect.top + rect.height);
        } else {
          y = page!.size.height - (rect.top + rect.height);
        }
      } else if (dictionary.containsKey(PdfDictionaryProperties.mediaBox)) {
        PdfArray? mediaBox;
        if (PdfCrossTable.dereference(
            dictionary[PdfDictionaryProperties.mediaBox]) is PdfArray) {
          mediaBox = PdfCrossTable.dereference(
              dictionary[PdfDictionaryProperties.mediaBox]) as PdfArray?;
        }
        if ((mediaBox![0]! as PdfNumber).value! > 0 ||
            (mediaBox[1]! as PdfNumber).value! > 0 ||
            page!.size.width == (mediaBox[2]! as PdfNumber).value ||
            page!.size.height == (mediaBox[3]! as PdfNumber).value) {
          x = rect.left - (mediaBox[0]! as PdfNumber).value!;
          y = (mediaBox[3]! as PdfNumber).value! - (rect.top + rect.height);
        } else {
          y = page!.size.height - (rect.top + rect.height);
        }
      } else {
        y = page!.size.height - (rect.top + rect.height);
      }
    } else {
      y = rect.top + rect.height;
    }
    return Rect.fromLTWH(x == 0 ? rect.left : x, y == 0 ? rect.top : y,
        rect.width, rect.height);
  } else {
    return _fieldHelper.widget!.bounds;
  }
}
void bounds=(Rect value)

Implementation

set bounds(Rect value) {
  if (value.isEmpty && this is! PdfSignatureField) {
    ArgumentError("bounds can't be empty.");
  }
  if (_fieldHelper.isLoadedField) {
    final Rect rect = value;
    final double height = page!.size.height;
    final List<PdfNumber> values = <PdfNumber>[
      PdfNumber(rect.left),
      PdfNumber(height - (rect.top + rect.height)),
      PdfNumber(rect.left + rect.width),
      PdfNumber(height - rect.top)
    ];
    PdfDictionary dic = _fieldHelper.dictionary!;
    if (!dic.containsKey(PdfDictionaryProperties.rect)) {
      dic = _fieldHelper.getWidgetAnnotation(
          _fieldHelper.dictionary!, _fieldHelper.crossTable);
    }
    dic.setArray(PdfDictionaryProperties.rect, values);
    _fieldHelper.changed = true;
  } else {
    _fieldHelper.widget!.bounds = value;
  }
}