image1 = $image1->get_im(); } else { $this->image1 = $image1; } if ($image2 instanceof BCGDrawing) { $this->image2 = $image2->get_im(); } else { $this->image2 = $image2; } $this->background = $background; $this->space = (int)$space; $this->position = (int)$position; $this->alignment = (int)$alignment; $this->createIm(); } /** * Destroys the image. */ public function __destruct() { imagedestroy($this->im); } /** * Finds the position where the barcode should be aligned. * * @param int $size1 * @param int $size2 * @param int $ailgnment * @return int */ private function findPosition($size1, $size2, $alignment) { $rsize1 = max($size1, $size2); $rsize2 = min($size1, $size2); if ($alignment === self::ALIGN_LEFT) { // Or TOP return 0; } elseif ($alignment === self::ALIGN_CENTER) { return $rsize1 / 2 - $rsize2 / 2; } else { // RIGHT or TOP return $rsize1 - $rsize2; } } /** * Change the alignments. * * @param int $alignment * @return int */ private function changeAlignment($alignment) { if ($alignment === 0) { return 1; } elseif ($alignment === 1) { return 0; } else { return 2; } } /** * Creates the image. */ private function createIm() { $w1 = imagesx($this->image1); $w2 = imagesx($this->image2); $h1 = imagesy($this->image1); $h2 = imagesy($this->image2); if ($this->position === self::POSITION_LEFT || $this->position === self::POSITION_RIGHT) { $w = $w1 + $w2 + $this->space; $h = max($h1, $h2); } else { $w = max($w1, $w2); $h = $h1 + $h2 + $this->space; } $this->im = imagecreatetruecolor($w, $h); imagefill($this->im, 0, 0, $this->background->allocate($this->im)); // We start defining position of images if ($this->position === self::POSITION_TOP) { if ($w1 > $w2) { $posX1 = 0; $posX2 = $this->findPosition($w1, $w2, $this->alignment); } else { $a = $this->changeAlignment($this->alignment); $posX1 = $this->findPosition($w1, $w2, $a); $posX2 = 0; } $posY2 = 0; $posY1 = $h2 + $this->space; } elseif ($this->position === self::POSITION_LEFT) { if ($w1 > $w2) { $posY1 = 0; $posY2 = $this->findPosition($h1, $h2, $this->alignment); } else { $a = $this->changeAlignment($this->alignment); $posY2 = 0; $posY1 = $this->findPosition($h1, $h2, $a); } $posX2 = 0; $posX1 = $w2 + $this->space; } elseif ($this->position === self::POSITION_BOTTOM) { if ($w1 > $w2) { $posX2 = $this->findPosition($w1, $w2, $this->alignment); $posX1 = 0; } else { $a = $this->changeAlignment($this->alignment); $posX2 = 0; $posX1 = $this->findPosition($w1, $w2, $a); } $posY1 = 0; $posY2 = $h1 + $this->space; } else { // defaults to RIGHT if ($w1 > $w2) { $posY2 = $this->findPosition($h1, $h2, $this->alignment); $posY1 = 0; } else { $a = $this->changeAlignment($this->alignment); $posY2 = 0; $posY1 = $this->findPosition($h1, $h2, $a); } $posX1 = 0; $posX2 = $w1 + $this->space; } imagecopy($this->im, $this->image1, $posX1, $posY1, 0, 0, $w1, $h1); imagecopy($this->im, $this->image2, $posX2, $posY2, 0, 0, $w2, $h2); } /** * Returns the new $im created. * * @return resource */ public function get_im() { return $this->im; } } ?>