summaryrefslogtreecommitdiff
path: root/app/Report/ReportPdfCell.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Report/ReportPdfCell.php')
-rw-r--r--app/Report/ReportPdfCell.php242
1 files changed, 125 insertions, 117 deletions
diff --git a/app/Report/ReportPdfCell.php b/app/Report/ReportPdfCell.php
index 8b7f17d586..d12ae523cb 100644
--- a/app/Report/ReportPdfCell.php
+++ b/app/Report/ReportPdfCell.php
@@ -20,126 +20,134 @@ use Fisharebest\Webtrees\Functions\FunctionsRtl;
/**
* Class ReportPdfCell
*/
-class ReportPdfCell extends ReportBaseCell {
- /**
- * PDF Cell renderer
- *
- * @param ReportTcpdf $renderer
- */
- public function render($renderer) {
+class ReportPdfCell extends ReportBaseCell
+{
+ /**
+ * PDF Cell renderer
+ *
+ * @param ReportTcpdf $renderer
+ */
+ public function render($renderer)
+ {
- // Set up the text style
- if (($renderer->getCurrentStyle()) != ($this->styleName)) {
- $renderer->setCurrentStyle($this->styleName);
- }
- $temptext = str_replace('#PAGENUM#', $renderer->PageNo(), $this->text);
- // underline «title» part of Source item
- $temptext = str_replace(['«', '»'], ['<u>', '</u>'], $temptext);
- $match = [];
- // Indicates if the cell background must be painted (1) or transparent (0)
- if ($this->fill == 1) {
- if (!empty($this->bgcolor)) {
- // HTML color to RGB
- if (preg_match('/#?(..)(..)(..)/', $this->bgcolor, $match)) {
- $r = hexdec($match[1]);
- $g = hexdec($match[2]);
- $b = hexdec($match[3]);
- $renderer->SetFillColor($r, $g, $b);
- }
- } // If no color set then don't fill
- else {
- $this->fill = 0;
- }
- }
- // Paint the Border color if set
- if (!empty($this->bocolor)) {
- // HTML color to RGB
- if (preg_match('/#?(..)(..)(..)/', $this->bocolor, $match)) {
- $r = hexdec($match[1]);
- $g = hexdec($match[2]);
- $b = hexdec($match[3]);
- $renderer->SetDrawColor($r, $g, $b);
- }
- }
- // Paint the text color or they might use inherited colors by the previous function
- if (preg_match('/#?(..)(..)(..)/', $this->tcolor, $match)) {
- $r = hexdec($match[1]);
- $g = hexdec($match[2]);
- $b = hexdec($match[3]);
- $renderer->SetTextColor($r, $g, $b);
- } else {
- $renderer->SetTextColor(0, 0, 0);
- }
+ // Set up the text style
+ if (($renderer->getCurrentStyle()) != ($this->styleName)) {
+ $renderer->setCurrentStyle($this->styleName);
+ }
+ $temptext = str_replace('#PAGENUM#', $renderer->PageNo(), $this->text);
+ // underline «title» part of Source item
+ $temptext = str_replace([
+ '«',
+ '»',
+ ], [
+ '<u>',
+ '</u>',
+ ], $temptext);
+ $match = [];
+ // Indicates if the cell background must be painted (1) or transparent (0)
+ if ($this->fill == 1) {
+ if (!empty($this->bgcolor)) {
+ // HTML color to RGB
+ if (preg_match('/#?(..)(..)(..)/', $this->bgcolor, $match)) {
+ $r = hexdec($match[1]);
+ $g = hexdec($match[2]);
+ $b = hexdec($match[3]);
+ $renderer->SetFillColor($r, $g, $b);
+ }
+ } // If no color set then don't fill
+ else {
+ $this->fill = 0;
+ }
+ }
+ // Paint the Border color if set
+ if (!empty($this->bocolor)) {
+ // HTML color to RGB
+ if (preg_match('/#?(..)(..)(..)/', $this->bocolor, $match)) {
+ $r = hexdec($match[1]);
+ $g = hexdec($match[2]);
+ $b = hexdec($match[3]);
+ $renderer->SetDrawColor($r, $g, $b);
+ }
+ }
+ // Paint the text color or they might use inherited colors by the previous function
+ if (preg_match('/#?(..)(..)(..)/', $this->tcolor, $match)) {
+ $r = hexdec($match[1]);
+ $g = hexdec($match[2]);
+ $b = hexdec($match[3]);
+ $renderer->SetTextColor($r, $g, $b);
+ } else {
+ $renderer->SetTextColor(0, 0, 0);
+ }
- // If current position (left)
- if ($this->left == '.') {
- $cX = $renderer->GetX();
- } // For static position add margin (also updates X)
- else {
- $cX = $renderer->addMarginX($this->left);
- }
+ // If current position (left)
+ if ($this->left == '.') {
+ $cX = $renderer->GetX();
+ } // For static position add margin (also updates X)
+ else {
+ $cX = $renderer->addMarginX($this->left);
+ }
- // Check the width if set to page wide OR set by xml to larger then page wide
- if ($this->width == 0 || $this->width > $renderer->getRemainingWidthPDF()) {
- $this->width = $renderer->getRemainingWidthPDF();
- }
- // For current position
- if ($this->top == '.') {
- $this->top = $renderer->GetY();
- } else {
- $renderer->SetY($this->top);
- }
+ // Check the width if set to page wide OR set by xml to larger then page wide
+ if ($this->width == 0 || $this->width > $renderer->getRemainingWidthPDF()) {
+ $this->width = $renderer->getRemainingWidthPDF();
+ }
+ // For current position
+ if ($this->top == '.') {
+ $this->top = $renderer->GetY();
+ } else {
+ $renderer->SetY($this->top);
+ }
- // Check the last cell height and adjust the current cell height if needed
- if ($renderer->lastCellHeight > $this->height) {
- $this->height = $renderer->lastCellHeight;
- }
- // Check for pagebreak
- if (!empty($temptext)) {
- $cHT = $renderer->getNumLines($temptext, $this->width);
- $cHT = $cHT * $renderer->getCellHeightRatio() * $renderer->getCurrentStyleHeight();
- $cM = $renderer->getMargins();
- // Add padding
- if (is_array($cM['cell'])) {
- $cHT += ($cM['padding_bottom'] + $cM['padding_top']);
- } else {
- $cHT += ($cM['cell'] * 2);
- }
- // Add a new page if needed
- if ($renderer->checkPageBreakPDF($cHT)) {
- $this->top = $renderer->GetY();
- }
- $temptext = FunctionsRtl::spanLtrRtl($temptext, 'BOTH');
- }
- // HTML ready - last value is true
- $renderer->MultiCell(
- $this->width,
- $this->height,
- $temptext,
- $this->border,
- $this->align,
- $this->fill,
- $this->newline,
- $cX,
- $this->top,
- $this->reseth,
- $this->stretch,
- true
- );
- // Reset the last cell height for the next line
- if ($this->newline >= 1) {
- $renderer->lastCellHeight = 0;
- } // OR save the last height if heigher then before
- elseif ($renderer->lastCellHeight < $renderer->getLastH()) {
- $renderer->lastCellHeight = $renderer->getLastH();
- }
+ // Check the last cell height and adjust the current cell height if needed
+ if ($renderer->lastCellHeight > $this->height) {
+ $this->height = $renderer->lastCellHeight;
+ }
+ // Check for pagebreak
+ if (!empty($temptext)) {
+ $cHT = $renderer->getNumLines($temptext, $this->width);
+ $cHT = $cHT * $renderer->getCellHeightRatio() * $renderer->getCurrentStyleHeight();
+ $cM = $renderer->getMargins();
+ // Add padding
+ if (is_array($cM['cell'])) {
+ $cHT += ($cM['padding_bottom'] + $cM['padding_top']);
+ } else {
+ $cHT += ($cM['cell'] * 2);
+ }
+ // Add a new page if needed
+ if ($renderer->checkPageBreakPDF($cHT)) {
+ $this->top = $renderer->GetY();
+ }
+ $temptext = FunctionsRtl::spanLtrRtl($temptext, 'BOTH');
+ }
+ // HTML ready - last value is true
+ $renderer->MultiCell(
+ $this->width,
+ $this->height,
+ $temptext,
+ $this->border,
+ $this->align,
+ $this->fill,
+ $this->newline,
+ $cX,
+ $this->top,
+ $this->reseth,
+ $this->stretch,
+ true
+ );
+ // Reset the last cell height for the next line
+ if ($this->newline >= 1) {
+ $renderer->lastCellHeight = 0;
+ } // OR save the last height if heigher then before
+ elseif ($renderer->lastCellHeight < $renderer->getLastH()) {
+ $renderer->lastCellHeight = $renderer->getLastH();
+ }
- // Set up the url link if exists ontop of the cell
- if (!empty($this->url)) {
- $renderer->Link($cX, $this->top, $this->width, $this->height, $this->url);
- }
- // Reset the border and the text color to black or they will be inherited
- $renderer->SetDrawColor(0, 0, 0);
- $renderer->SetTextColor(0, 0, 0);
- }
+ // Set up the url link if exists ontop of the cell
+ if (!empty($this->url)) {
+ $renderer->Link($cX, $this->top, $this->width, $this->height, $this->url);
+ }
+ // Reset the border and the text color to black or they will be inherited
+ $renderer->SetDrawColor(0, 0, 0);
+ $renderer->SetTextColor(0, 0, 0);
+ }
}