PMA\libraries\gis\GISPolygon::prepareRowAsPng PHP Метод

prepareRowAsPng() публичный Метод

Adds to the PNG image object, the data related to a row in the GIS dataset.
public prepareRowAsPng ( string $spatial, string $label, string $fill_color, array $scale_data, object $image ) : object
$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
$image object Image object
Результат object the modified image object
    public function prepareRowAsPng($spatial, $label, $fill_color, $scale_data, $image)
    {
        // allocate colors
        $black = imagecolorallocate($image, 0, 0, 0);
        $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 = imagecolorallocate($image, $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
        imagefilledpolygon($image, $points_arr, sizeof($points_arr) / 2, $color);
        // print label if applicable
        if (isset($label) && trim($label) != '') {
            imagestring($image, 1, $points_arr[2], $points_arr[3], trim($label), $black);
        }
        return $image;
    }

Usage Example

Пример #1
0
 /**
  * test case for prepareRowAsPng()
  *
  * @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 $image      image object
  *
  * @return void
  * @dataProvider providerForPrepareRowAsPng
  */
 public function testPrepareRowAsPng(
     $spatial, $label, $fill_color, $scale_data, $image
 ) {
     $return = $this->object->prepareRowAsPng(
         $spatial, $label, $fill_color, $scale_data, $image
     );
     $this->assertImage($return);
 }