Rounded rectangle

## Informations

Author: Christophe Prugnaud

## Description

This script is based on this one and allows to draw a rectangle with some rounded corners. Parameters are:

`x`, `y`: top left corner of the rectangle.
`w`, `h`: width and height.
`r`: radius of the rounded corners.
`corners`: numbers of the corners to be rounded: 1, 2, 3, 4 or any combination (1=top left, 2=top right, 3=bottom right, 4=bottom left).
`style`: same as Rect(): F, D (default), FD or DF.

## Source

``````<?php
require('fpdf.php');

class PDF extends FPDF
{
function RoundedRect(\$x, \$y, \$w, \$h, \$r, \$corners = '1234', \$style = '')
{
\$k = \$this->k;
\$hp = \$this->h;
if(\$style=='F')
\$op='f';
elseif(\$style=='FD' || \$style=='DF')
\$op='B';
else
\$op='S';
\$MyArc = 4/3 * (sqrt(2) - 1);
\$this->_out(sprintf('%.2F %.2F m', (\$x+\$r)*\$k, (\$hp-\$y)*\$k ));

\$xc = \$x+\$w-\$r;
\$yc = \$y+\$r;
\$this->_out(sprintf('%.2F %.2F l', \$xc*\$k, (\$hp-\$y)*\$k ));
if (strpos(\$corners, '2')===false)
\$this->_out(sprintf('%.2F %.2F l', (\$x+\$w)*\$k, (\$hp-\$y)*\$k ));
else
\$this->_Arc(\$xc + \$r*\$MyArc, \$yc - \$r, \$xc + \$r, \$yc - \$r*\$MyArc, \$xc + \$r, \$yc);

\$xc = \$x+\$w-\$r;
\$yc = \$y+\$h-\$r;
\$this->_out(sprintf('%.2F %.2F l', (\$x+\$w)*\$k, (\$hp-\$yc)*\$k));
if (strpos(\$corners, '3')===false)
\$this->_out(sprintf('%.2F %.2F l', (\$x+\$w)*\$k, (\$hp-(\$y+\$h))*\$k));
else
\$this->_Arc(\$xc + \$r, \$yc + \$r*\$MyArc, \$xc + \$r*\$MyArc, \$yc + \$r, \$xc, \$yc + \$r);

\$xc = \$x+\$r;
\$yc = \$y+\$h-\$r;
\$this->_out(sprintf('%.2F %.2F l', \$xc*\$k, (\$hp-(\$y+\$h))*\$k));
if (strpos(\$corners, '4')===false)
\$this->_out(sprintf('%.2F %.2F l', (\$x)*\$k, (\$hp-(\$y+\$h))*\$k));
else
\$this->_Arc(\$xc - \$r*\$MyArc, \$yc + \$r, \$xc - \$r, \$yc + \$r*\$MyArc, \$xc - \$r, \$yc);

\$xc = \$x+\$r ;
\$yc = \$y+\$r;
\$this->_out(sprintf('%.2F %.2F l', (\$x)*\$k, (\$hp-\$yc)*\$k ));
if (strpos(\$corners, '1')===false)
{
\$this->_out(sprintf('%.2F %.2F l', (\$x)*\$k, (\$hp-\$y)*\$k ));
\$this->_out(sprintf('%.2F %.2F l', (\$x+\$r)*\$k, (\$hp-\$y)*\$k ));
}
else
\$this->_Arc(\$xc - \$r, \$yc - \$r*\$MyArc, \$xc - \$r*\$MyArc, \$yc - \$r, \$xc, \$yc - \$r);
\$this->_out(\$op);
}

function _Arc(\$x1, \$y1, \$x2, \$y2, \$x3, \$y3)
{
\$h = \$this->h;
\$this->_out(sprintf('%.2F %.2F %.2F %.2F %.2F %.2F c ', \$x1*\$this->k, (\$h-\$y1)*\$this->k,
\$x2*\$this->k, (\$h-\$y2)*\$this->k, \$x3*\$this->k, (\$h-\$y3)*\$this->k));
}
}
?>``````

## Example

``````<?php
require('rounded_rect2.php');

\$pdf=new PDF();
\$pdf->SetFillColor(192);
\$pdf->RoundedRect(60, 30, 68, 46, 5, '13', 'DF');
\$pdf->Output();
?>``````
View the result here.

ZIP | TGZ
Es ist ein Fehler aufgetreten

# Es ist ein Fehler aufgetreten

## Was ist das Problem?

Bei der Ausführung des Skriptes ist ein Fehler aufgetreten. Irgendetwas funktioniert nicht richtig.

## Wie kann ich das Problem lösen?

Öffnen Sie die aktuelle Log-Datei im Ordner `var/logs` bzw. `app/logs` und suchen Sie die zugehörige Fehlermeldung (normalerweise die letzte).

### Weitere Informationen

Die Skriptausführung wurde gestoppt, weil irgendetwas nicht korrekt funktioniert. Die eigentliche Fehlermeldung wird aus Sicherheitsgründen hinter dieser Meldung verborgen und findet sich in der aktuellen Log-Datei (siehe oben). Wenn Sie die Fehlermeldung nicht verstehen oder nicht wissen, wie das Problem zu beheben ist, durchsuchen Sie die Contao-FAQs oder besuchen Sie die Contao-Supportseite.