/** * Draw a cell border. This goes from the current X,Y co-ordinates of the document, and * leaves the document cursor at the top right of the bounding box * @param doc - a TCPDF document * @param width - the width of the cell * @param height - the height of the cell * @param border - the border data */ private function drawCellBorder($doc, $width, $height, $border) { //FIRST GET SOME VARIABLES $line_widths = PdfTableRow::lineWidthsFromBorderData($border); $colour = PdfTableRow::colourFromBorderData($border); //NOW GET ALL THE FOUR POINTS $top_left = array('x' => $doc->GetX(), 'y' => $doc->GetY()); $bottom_left = array('x' => $doc->GetX(), 'y' => $doc->GetY() + $height); $bottom_right = array('x' => $doc->GetX() + $width, 'y' => $doc->GetY() + $height); $top_right = array('x' => $doc->GetX() + $width, 'y' => $doc->GetY()); //DRAW THE LINES, MAKING SURE TO SET THE WIDTHS FIRST //THE LINES GET DRAWN IN THE ORDER top, left, bottom right THE SAME //AS THE ORDER OF THE BORDER WIDTHS $doc->SetDrawColor($colour['R'], $colour['G'], $colour['B']); if ($line_widths['top']) { $doc->SetLineWidth($line_widths['top']); $doc->Line($top_left['x'], $top_left['y'], $top_right['x'], $top_right['y']); } if ($line_widths['left']) { $doc->SetLineWidth($line_widths['left']); $doc->Line($top_left['x'], $top_left['y'], $bottom_left['x'], $bottom_left['y']); } if ($line_widths['bottom']) { $doc->SetLineWidth($line_widths['bottom']); $doc->Line($bottom_left['x'], $bottom_left['y'], $bottom_right['x'], $bottom_right['y']); } if ($line_widths['right']) { $doc->SetLineWidth($line_widths['right']); $doc->Line($top_right['x'], $top_right['y'], $bottom_right['x'], $bottom_right['y']); } }
/** * Return the colour from border data */ public static function colourFromBorderData($data) { $split = explode(';', $data); $ret = PdfTableRow::hexToRgb($split[1]); return $ret; }