PHP Classes

File: src/example.php

Recommend this page to a friend!
  Classes of Win Aung Cho   PHP Rectangle Class   src/example.php   Download  
File: src/example.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP Rectangle Class
Perform operations and draw rectangle shapes
Author: By
Last change: Update of src/example.php
Date: 1 year ago
Size: 3,129 bytes
 

Contents

Class file image Download
<?php
/******
 * RECTSLIB CLASS
 *
 * [RECTSLIB] is a utility for the group of rectangles.
 * Lib help you to construct the rectangles in various logical operations such as Union, Intersect abd Subtract.
 * This lib is free for the educational use as long as maintain this header together with this lib.
 * Author: Win Aung Cho
 * Contact winaungcho@gmail.com
 * version 1.0
 * Date: 17-02-2023
 *
 ******/

require_once ("rectslib.php");
$img_width = 640;
$img_height = 480;
 
$img = imagecreatetruecolor($img_width, $img_height);

$black = imagecolorallocate($img, 0, 0, 0);
$white = imagecolorallocate($img, 255, 255, 255);
$grey = imagecolorallocate($img, 128, 128, 128);
$red = imagecolorallocate($img, 255, 0, 0);
$green = imagecolorallocate($img, 0, 255, 0);
$blue = imagecolorallocate($img, 0, 200, 250);
$orange = imagecolorallocate($img, 255, 200, 0);
$brown = imagecolorallocate($img, 220, 110, 0);
$magenta = imagecolorallocate($img, 220, 0, 220);
$indego = imagecolorallocate($img, 220, 110, 110);


$rectslib = new RectsLib();
$A = $rectslib->p1p2(10, 10, 300, 200, "A", $green);
$B = $rectslib->p1p2(40, 30, 200, 300, "B", $red);
$C = $rectslib->p1p2(150, 40, 400, 150, "C", $orange);
$D = $rectslib->p1p2(140, 320, 200, 400, "D", $blue);
$E = $rectslib->p1p2(80, 160, 250, 250, "E", $brown);
$rects = [$A, $B, $C, $D, $E];
echo
$rectslib->showRects($rects);

$mode = 0;
if (isset(
$_GET["m"]))
   
$mode = $_GET["m"];
   
$rectslib->fillRects($img, $rects);
$all = $rectslib->merge($rects, $grey);
$fname = "rectsorigin.png";
echo
"<div style='font-size:30px;'>";
if (
$mode == 0){
    echo
"Original rectangles.";
    echo
"\t<a href='?m=1'>NEXT</a>";
}
if (
$mode == 1){
   
$rectslib->fillRects($img, $all);
   
$rectslib->drawRects($img, $all, $brown);
   
$fname = "rectsuniversal.png";
    echo
"Universal mesh for all rectangles.";
    echo
"\t<a href='?m=2'>NEXT</a>";
}
if (
$mode == 2){
   
$uni = $rectslib->union([$A, $B], [$C, $D]);
   
$rectslib->fillRects($img, $uni);
   
$rectslib->drawRects($img, $uni, $indego);
   
$edges = $rectslib->genEdges($uni);
   
$rectslib->drawEdges($img, $edges, $white);
   
$fname = "rectsunion.png";
    echo
"Union of [A B] & [C D]";
    echo
"\t<a href='?m=3'>NEXT</a>";
}

if (
$mode == 3){
   
$Intersect = $rectslib->intersect([$A, $B, $C, $D], [$B, $E]);
   
$rectslib->fillRects($img, $Intersect);
   
$rectslib->drawRects($img, $Intersect, $indego);
   
$edges = $rectslib->genEdges($Intersect);
   
$rectslib->drawEdges($img, $edges, $white);
   
$fname = "rectsintersect.png";
    echo
"Intersect of [A B C D] & [B E]";
    echo
"\t<a href='?m=4'>NEXT</a>";
}
if (
$mode == 4){
   
$subt = $rectslib->subtract([$A, $B, $C, $D], [$B, $E]);
   
$rectslib->fillRects($img, $subt);
   
$rectslib->drawRects($img, $subt, $indego);
   
$edges = $rectslib->genEdges($subt);
   
$rectslib->drawEdges($img, $edges, $white);
   
$fname = "rectssubtract.png";
    echo
"Subtract [B E] from [A B C D]";
}


imagePng($img, './images/'.$fname);
imagedestroy($img);
echo
"</div><br/>";
echo
"<img src='images/$fname?u=".time()."'/>";;
/*
A-GREEN-{10,10:300,200}
B-RED-{40,30:200,300}
C-ORANGE-{150,40:400,150}
D-BLUE-{140,320:200,400}
E-BROWN-{80,160:250,250}
*/
?>