PMA\libraries\gis\GISPolygon::prepareRowAsPdf PHP Method

prepareRowAsPdf() public method

Adds to the TCPDF instance, the data related to a row in the GIS dataset.
public prepareRowAsPdf ( string $spatial, string $label, string $fill_color, array $scale_data, TCPDF $pdf ) : TCPDF
$spatial string GIS POLYGON object
$label string Label for the GIS POLYGON object
$fill_color string Color for the GIS POLYGON object
$scale_data array Array containing data related to scaling
$pdf TCPDF TCPDF instance
return TCPDF the modified TCPDF instance
    public function prepareRowAsPdf($spatial, $label, $fill_color, $scale_data, $pdf)
    {
        // allocate colors
        $red = hexdec(mb_substr($fill_color, 1, 2));
        $green = hexdec(mb_substr($fill_color, 3, 2));
        $blue = hexdec(mb_substr($fill_color, 4, 2));
        $color = array($red, $green, $blue);
        // Trim to remove leading 'POLYGON((' and trailing '))'
        $polygon = mb_substr($spatial, 9, mb_strlen($spatial) - 11);
        // If the polygon doesn't have an inner polygon
        if (mb_strpos($polygon, "),(") === false) {
            $points_arr = $this->extractPoints($polygon, $scale_data, true);
        } else {
            // Separate outer and inner polygons
            $parts = explode("),(", $polygon);
            $outer = $parts[0];
            $inner = array_slice($parts, 1);
            $points_arr = $this->extractPoints($outer, $scale_data, true);
            foreach ($inner as $inner_poly) {
                $points_arr = array_merge($points_arr, $this->extractPoints($inner_poly, $scale_data, true));
            }
        }
        // draw polygon
        $pdf->Polygon($points_arr, 'F*', array(), $color, true);
        // print label if applicable
        if (isset($label) && trim($label) != '') {
            $pdf->SetXY($points_arr[2], $points_arr[3]);
            $pdf->SetFontSize(5);
            $pdf->Cell(0, 0, trim($label));
        }
        return $pdf;
    }

Usage Example

Example #1
0
 /**
  * test case for prepareRowAsPdf() method
  *
  * @param string $spatial    GIS POLYGON object
  * @param string $label      label for the GIS POLYGON object
  * @param string $fill_color color for the GIS POLYGON object
  * @param array  $scale_data array containing data related to scaling
  * @param object $pdf        TCPDF instance
  *
  * @return void
  * @dataProvider providerForPrepareRowAsPdf
  */
 public function testPrepareRowAsPdf(
     $spatial, $label, $fill_color, $scale_data, $pdf
 ) {
     $return = $this->object->prepareRowAsPdf(
         $spatial, $label, $fill_color, $scale_data, $pdf
     );
     $this->assertInstanceOf('TCPDF', $return);
 }