<?php
require_once('fpdf.php');

class DielinePDF extends FPDF {
    function DashedLine($x1, $y1, $x2, $y2, $dash=1, $gap=1) {
        // Draw dashed line (crease)
        $this->SetLineWidth(0.2);
        $this->SetDrawColor(100,100,100);
        $style = sprintf('%d on %d off', $dash, $gap);
        $this->SetLineStyle(array('dash' => $style));
        $this->Line($x1, $y1, $x2, $y2);
        $this->SetLineStyle(array()); // reset
    }
    
    function SolidLine($x1, $y1, $x2, $y2) {
        $this->SetLineWidth(0.3);
        $this->SetDrawColor(0,0,0);
        $this->Line($x1, $y1, $x2, $y2);
    }
    
    function TextCentered($text, $x, $y, $w=0) {
        $this->SetFont('Arial','',8);
        $this->SetXY($x, $y);
        if($w) $this->Cell($w, 5, $text, 0, 0, 'C');
        else $this->Cell(0,5,$text,0,0,'C');
    }
}

function drawBox($pdf, $W, $H, $D, $unit='mm') {
    // scale to fit on A4 (max 280mm x 200mm)
    $scale = min(280 / ($W+$D+20), 200 / ($H+$D+20), 1);
    $startX = ($pdf->GetPageWidth() - (($W+$D) * $scale)) / 2;
    $startY = ($pdf->GetPageHeight() - (($H+$D)*2 + 10) * $scale) / 2;
    
    // Draw bottom
    $pdf->SolidLine($startX, $startY, $startX+$W*$scale, $startY);
    $pdf->SolidLine($startX+$W*$scale, $startY, $startX+$W*$scale, $startY+$H*$scale);
    $pdf->SolidLine($startX+$W*$scale, $startY+$H*$scale, $startX, $startY+$H*$scale);
    $pdf->SolidLine($startX, $startY+$H*$scale, $startX, $startY);
    $pdf->TextCentered('Bottom', $startX+$W*$scale/2, $startY+$H*$scale/2-3);
    
    // Front face
    $pdf->SolidLine($startX, $startY+$H*$scale, $startX+$W*$scale, $startY+$H*$scale);
    $pdf->SolidLine($startX+$W*$scale, $startY+$H*$scale, $startX+$W*$scale, $startY+$H*$scale+$D*$scale);
    $pdf->SolidLine($startX+$W*$scale, $startY+$H*$scale+$D*$scale, $startX, $startY+$H*$scale+$D*$scale);
    $pdf->SolidLine($startX, $startY+$H*$scale+$D*$scale, $startX, $startY+$H*$scale);
    $pdf->TextCentered('Front', $startX+$W*$scale/2, $startY+$H*$scale+$D*$scale/2-3);
    
    // Right side
    $pdf->SolidLine($startX+$W*$scale, $startY, $startX+$W*$scale+$D*$scale, $startY);
    $pdf->SolidLine($startX+$W*$scale+$D*$scale, $startY, $startX+$W*$scale+$D*$scale, $startY+$H*$scale);
    $pdf->SolidLine($startX+$W*$scale+$D*$scale, $startY+$H*$scale, $startX+$W*$scale, $startY+$H*$scale);
    // crease line between right and bottom
    $pdf->DashedLine($startX+$W*$scale, $startY, $startX+$W*$scale, $startY+$H*$scale);
    $pdf->TextCentered('Right', $startX+$W*$scale+$D*$scale/2, $startY+$H*$scale/2-3);
    
    // Left side (mirror on other side)
    $pdf->SolidLine($startX-$D*$scale, $startY, $startX, $startY);
    $pdf->SolidLine($startX-$D*$scale, $startY+$H*$scale, $startX, $startY+$H*$scale);
    $pdf->DashedLine($startX, $startY, $startX, $startY+$H*$scale);
    $pdf->TextCentered('Left', $startX-$D*$scale/2, $startY+$H*$scale/2-3);
    
    // Top flaps (simplified)
    $pdf->SolidLine($startX, $startY-$D*$scale, $startX+$W*$scale, $startY-$D*$scale);
    $pdf->DashedLine($startX, $startY, $startX, $startY-$D*$scale);
    $pdf->DashedLine($startX+$W*$scale, $startY, $startX+$W*$scale, $startY-$D*$scale);
    $pdf->TextCentered('Top flap', $startX+$W*$scale/2, $startY-$D*$scale/2-3);
}

function drawCircle($pdf, $diameter, $unit='mm') {
    // Draw a circle with cut line and maybe a smaller crease inside
    $radius = $diameter/2;
    $centerX = $pdf->GetPageWidth()/2;
    $centerY = $pdf->GetPageHeight()/2;
    $scale = min(200 / $diameter, 1);
    $rScaled = $radius * $scale;
    
    $pdf->SetLineWidth(0.3);
    $pdf->SetDrawColor(0,0,0);
    $pdf->Ellipse($centerX, $centerY, $rScaled, $rScaled);
    $pdf->TextCentered('Cut line', $centerX, $centerY-5);
}

function drawEnvelope($pdf, $width, $height, $flap, $unit='mm') {
    // Simple envelope: front rectangle + side flaps + top flap
    $scale = min(250 / ($width+$flap), 180 / ($height+$flap), 1);
    $startX = ($pdf->GetPageWidth() - ($width+$flap)*$scale)/2;
    $startY = ($pdf->GetPageHeight() - ($height+$flap)*$scale)/2;
    
    // Front face
    $pdf->SolidLine($startX, $startY, $startX+$width*$scale, $startY);
    $pdf->SolidLine($startX+$width*$scale, $startY, $startX+$width*$scale, $startY+$height*$scale);
    $pdf->SolidLine($startX+$width*$scale, $startY+$height*$scale, $startX, $startY+$height*$scale);
    $pdf->SolidLine($startX, $startY+$height*$scale, $startX, $startY);
    $pdf->TextCentered('Front', $startX+$width*$scale/2, $startY+$height*$scale/2-3);
    
    // Top flap
    $pdf->SolidLine($startX, $startY-$flap*$scale, $startX+$width*$scale, $startY-$flap*$scale);
    $pdf->DashedLine($startX, $startY, $startX, $startY-$flap*$scale);
    $pdf->DashedLine($startX+$width*$scale, $startY, $startX+$width*$scale, $startY-$flap*$scale);
    $pdf->TextCentered('Flap', $startX+$width*$scale/2, $startY-$flap*$scale/2);
    
    // Bottom flap
    $pdf->SolidLine($startX, $startY+$height*$scale, $startX+$width*$scale, $startY+$height*$scale+$flap*$scale);
    $pdf->DashedLine($startX, $startY+$height*$scale, $startX, $startY+$height*$scale+$flap*$scale);
    $pdf->DashedLine($startX+$width*$scale, $startY+$height*$scale, $startX+$width*$scale, $startY+$height*$scale+$flap*$scale);
    
    // Side flaps (left and right)
    $pdf->SolidLine($startX-$flap*$scale, $startY, $startX, $startY);
    $pdf->DashedLine($startX, $startY, $startX, $startY+$height*$scale);
    $pdf->SolidLine($startX-$flap*$scale, $startY+$height*$scale, $startX, $startY+$height*$scale);
    
    $pdf->SolidLine($startX+$width*$scale, $startY, $startX+$width*$scale+$flap*$scale, $startY);
    $pdf->DashedLine($startX+$width*$scale, $startY, $startX+$width*$scale, $startY+$height*$scale);
    $pdf->SolidLine($startX+$width*$scale, $startY+$height*$scale, $startX+$width*$scale+$flap*$scale, $startY+$height*$scale);
}
?>