options->fpdfMeasureUnit, $this->getOutputDimensions()); $fpdf->AddPage(); return $fpdf; } public function dump(string|null $file = null, FPDF|null $fpdf = null):string|FPDF{ $this->fpdf = ($fpdf ?? $this->initFPDF()); if($this::moduleValueIsValid($this->options->bgColor)){ $bgColor = $this->prepareModuleValue($this->options->bgColor); [$width, $height] = $this->getOutputDimensions(); /** @phan-suppress-next-line PhanParamTooFewUnpack */ $this->fpdf->SetFillColor(...$bgColor); $this->fpdf->Rect(0, 0, $width, $height, 'F'); } $this->prevColor = null; foreach($this->matrix->getMatrix() as $y => $row){ foreach($row as $x => $M_TYPE){ $this->module($x, $y, $M_TYPE); } } if($this->options->returnResource){ return $this->fpdf; } $pdfData = $this->fpdf->Output('S'); $this->saveToFile($pdfData, $file); if($this->options->outputBase64){ $pdfData = $this->toBase64DataURI($pdfData); } return $pdfData; } /** * Renders a single module */ protected function module(int $x, int $y, int $M_TYPE):void{ if(!$this->drawLightModules && !$this->matrix->isDark($M_TYPE)){ return; } $color = $this->getModuleValue($M_TYPE); if($color !== null && $color !== $this->prevColor){ /** @phan-suppress-next-line PhanParamTooFewUnpack */ $this->fpdf->SetFillColor(...$color); $this->prevColor = $color; } $this->fpdf->Rect(($x * $this->scale), ($y * $this->scale), $this->scale, $this->scale, 'F'); } }