I18N_Arabic
[ class tree: I18N_Arabic ] [ index: I18N_Arabic ] [ all elements ]

Source for file Hiero.php

Documentation is available at Hiero.php

  1. <?php
  2. /**
  3.  * ----------------------------------------------------------------------
  4.  *  
  5.  * Copyright (c) 2006-2016 Khaled Al-Sham'aa.
  6.  *  
  7.  * http://www.ar-php.org
  8.  *  
  9.  * PHP Version 5
  10.  *  
  11.  * ----------------------------------------------------------------------
  12.  *  
  13.  * LICENSE
  14.  *
  15.  * This program is open source product; you can redistribute it and/or
  16.  * modify it under the terms of the GNU Lesser General Public License (LGPL)
  17.  * as published by the Free Software Foundation; either version 3
  18.  * of the License, or (at your option) any later version.
  19.  *  
  20.  * This program is distributed in the hope that it will be useful,
  21.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  22.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  23.  * GNU Lesser General Public License for more details.
  24.  *  
  25.  * You should have received a copy of the GNU Lesser General Public License
  26.  * along with this program.  If not, see <http://www.gnu.org/licenses/lgpl.txt>.
  27.  *  
  28.  * ----------------------------------------------------------------------
  29.  *  
  30.  * Class Name: Translate English word into Hieroglyphics
  31.  *  
  32.  * Filename:   Hiero.php
  33.  *  
  34.  * Original    Author(s): Khaled Al-Sham'aa <khaled@ar-php.org>
  35.  *  
  36.  * Purpose:    Translate English word into Hieroglyphics
  37.  *              
  38.  * ----------------------------------------------------------------------
  39.  *  
  40.  * Translate English word into Hieroglyphics
  41.  *
  42.  * Royality is made affordable, and within your reach. Now you can have The
  43.  * Royal Cartouche custome made in Egypt in 18 Kt. Gold with your name
  44.  * translated and inscribed in Hieroglyphic.
  45.  * 
  46.  * Originally, the Cartouche was worn only by the Pharaohs or Kings of Egypt.
  47.  * The Pharaoh was considered a living God and his Cartouche was his insignia.
  48.  * The "Magical Oval" in which the Pharaoh's first name was written was intended
  49.  * to protect him from evil spirits both while he lived and in the afterworld
  50.  * when entombed.
  51.  * 
  52.  * Over the past 5000 years the Cartouche has become a universal symbol of long
  53.  * life, good luck and protection from any evil.
  54.  * 
  55.  * Now you can acquire this ancient pendent handmade in Egypt from pure 18 Karat
  56.  * Egyptian gold with your name spelled out in the same way as King Tut, Ramses,
  57.  * Queen Nefertiti did.
  58.  *
  59.  * Example:
  60.  * <code>
  61.  *     include('./I18N/Arabic.php');
  62.  *     $obj = new I18N_Arabic('Hiero');
  63.  * 
  64.  *     $word = $_GET['w'];
  65.  *     $im   = $obj->str2hiero($word);
  66.  *      
  67.  *     header ("Content-type: image/jpeg");
  68.  *     imagejpeg($im, '', 80);
  69.  *     ImageDestroy($im);
  70.  * </code>
  71.  *             
  72.  * @category  I18N
  73.  * @package   I18N_Arabic
  74.  * @author    Khaled Al-Sham'aa <khaled@ar-php.org>
  75.  * @copyright 2006-2016 Khaled Al-Sham'aa
  76.  *    
  77.  * @license   LGPL <http://www.gnu.org/licenses/lgpl.txt>
  78.  * @link      http://www.ar-php.org
  79.  */
  80.  
  81. /**
  82.  * Translate English word into Hieroglyphics
  83.  *  
  84.  * @category  I18N
  85.  * @package   I18N_Arabic
  86.  * @author    Khaled Al-Sham'aa <khaled@ar-php.org>
  87.  * @copyright 2006-2016 Khaled Al-Sham'aa
  88.  *    
  89.  * @license   LGPL <http://www.gnu.org/licenses/lgpl.txt>
  90.  * @link      http://www.ar-php.org
  91.  */ 
  92. {
  93.     private $_language 'Hiero';
  94.  
  95.     /**
  96.      * Loads initialize values
  97.      *
  98.      * @ignore
  99.      */         
  100.     public function __construct ()
  101.     {
  102.     }
  103.  
  104.     /**
  105.      * Set the output language
  106.      *      
  107.      * @param string $value Output language (Hiero or Phoenician)
  108.      *      
  109.      * @return object $this to build a fluent interface
  110.      * @author Khaled Al-Sham'aa <khaled@ar-php.org>
  111.      */
  112.     public function setLanguage($value)
  113.     {
  114.         $value strtolower($value);
  115.         
  116.         if ($value == 'hiero' || $value == 'phoenician'{
  117.             $this->_language $value;
  118.         }
  119.         
  120.         return $this;
  121.     }
  122.  
  123.     /**
  124.      * Get the output language
  125.      *      
  126.      * @return string return current setting of the output language
  127.      * @author Khaled Al-Sham'aa <khaled@ar-php.org>
  128.      */
  129.     public function getLanguage()
  130.     {
  131.         return ucwords($this->_language);
  132.     }
  133.             
  134.     /**
  135.     * Translate Arabic or English word into Hieroglyphics
  136.     *      
  137.     * @param string  $word  Arabic or English word
  138.     * @param string  $dir   Writing direction [ltr, rtl, ttd, dtt] (default ltr)
  139.     * @param string  $lang  Input language [en, ar] (default en)
  140.     * @param integer $red   Value of background red component (default is null)
  141.     * @param integer $green Value of background green component (default is null)
  142.     * @param integer $blue  Value of background blue component (default is null)
  143.     *      
  144.     * @return resource Image resource identifier
  145.     * @author Khaled Al-Sham'aa <khaled@ar-php.org>
  146.     */
  147.     public function str2graph(
  148.         $word$dir 'ltr'$lang 'en'$red null$green null$blue null
  149.     {
  150.         if ($this->_language == 'phoenician'{
  151.             define(MAXH40);
  152.             define(MAXW50);
  153.         else {
  154.             define(MAXH100);
  155.             define(MAXW75);
  156.         }
  157.  
  158.         // Note: there is no theh, khah, thal, dad, zah, and ghain in Phoenician
  159.         $arabic array(
  160.             'ا' => 'alef',
  161.             'ب' => 'beh',
  162.             'ت' => 'teh',
  163.             'ث' => 'theh',
  164.             'ج' => 'jeem',
  165.             'ح' => 'hah',
  166.             'خ' => 'khah',
  167.             'د' => 'dal',
  168.             'ذ' => 'thal',
  169.             'ر' => 'reh',
  170.             'ز' => 'zain',
  171.             'س' => 'seen',
  172.             'ش' => 'sheen',
  173.             'ص' => 'sad',
  174.             'ض' => 'dad',
  175.             'ط' => 'tah',
  176.             'ظ' => 'zah',
  177.             'ع' => 'ain',
  178.             'غ' => 'ghain',
  179.             'ف' => 'feh',
  180.             'ق' => 'qaf',
  181.             'ك' => 'kaf',
  182.             'ل' => 'lam',
  183.             'م' => 'meem',
  184.             'ن' => 'noon',
  185.             'ه' => 'heh',
  186.             'و' => 'waw',
  187.             'ي' => 'yeh'
  188.         );
  189.                 
  190.         if ($lang != 'ar' && $this->_language == 'phoenician'{
  191.             include dirname(__FILE__).'/Transliteration.php';
  192.  
  193.             $temp new Transliteration();
  194.             $word $temp->en2ar($word);
  195.  
  196.             $temp null;
  197.             $lang 'ar';
  198.         }
  199.  
  200.         if ($lang != 'ar'{
  201.             $word strtolower($word);
  202.         else {
  203.             $word str_replace('ة''ت'$word);
  204.             $alef array('ى''ؤ''ئ''ء''آ''إ''أ');
  205.             $word str_replace($alef'?'$word);
  206.         }
  207.         
  208.         $chars array();
  209.         $max   mb_strlen($word'UTF-8');
  210.  
  211.         for ($i 0$i $max$i++{
  212.             $chars[mb_substr($word$i1'UTF-8');
  213.         }
  214.  
  215.         if ($dir == 'rtl' || $dir == 'btt'{
  216.             $chars array_reverse($chars);
  217.         }
  218.  
  219.         $max_w 0;
  220.         $max_h 0;
  221.         
  222.         foreach ($chars as $char{
  223.             if ($lang == 'ar'{
  224.                 $char $arabic[$char];
  225.             }
  226.  
  227.             if (file_exists(dirname(__FILE__)."/images/{$this->_language}/$char.gif")
  228.             ) {
  229.                 list($width, $height) = getimagesize(
  230.                     dirname(__FILE__)."/images/{$this->_language}/$char.gif"
  231.                 );
  232.             } else {
  233.                 $width  = MAXW;
  234.                 $height = MAXH;
  235.             }
  236.             
  237.             if ($dir == 'ltr' || $dir == 'rtl') {
  238.                 $max_w += $width;
  239.                 if ($height > $max_h) { 
  240.                     $max_h = $height; 
  241.                 }
  242.             } else {
  243.                 $max_h += $height;
  244.                 if ($width > $max_w) { 
  245.                     $max_w = $width; 
  246.                 }
  247.             }
  248.         }
  249.  
  250.         $im = imagecreatetruecolor($max_w, $max_h);
  251.         
  252.         if ($red == null) {
  253.             $bck = imagecolorallocate($im, 0, 0, 255);
  254.             imagefill($im, 0, 0, $bck);
  255.  
  256.             // Make the background transparent
  257.             imagecolortransparent($im, $bck);
  258.         } else {
  259.             $bck = imagecolorallocate($im, $red, $green, $blue);
  260.             imagefill($im, 0, 0, $bck);
  261.         }
  262.  
  263.         $current_x = 0;
  264.         
  265.         foreach ($chars as $char) {
  266.             if ($lang == 'ar') {
  267.                 $char = $arabic[$char];
  268.             }
  269.             $filename = dirname(__FILE__)."/images/{$this->_language}/$char.gif";
  270.             
  271.             if ($dir == 'ltr' || $dir == 'rtl') {
  272.                 if (file_exists($filename)) {
  273.                     list($width, $height) = getimagesize($filename);
  274.  
  275.                     $image = imagecreatefromgif($filename);
  276.                     imagecopy(
  277.                         $im, $image, $current_x, $max_h - $height, 
  278.                         0, 0, $width, $height
  279.                     );
  280.                 } else {
  281.                     $width = MAXW;
  282.                 }
  283.     
  284.                 $current_x += $width;
  285.             } else {
  286.                 if (file_exists($filename)) {
  287.                     list($width, $height) = getimagesize($filename);
  288.  
  289.                     $image = imagecreatefromgif($filename);
  290.                     imagecopy($im, $image, 0, $current_y, 0, 0, $width, $height);
  291.                 } else {
  292.                     $height = MAXH;
  293.                 }
  294.     
  295.                 $current_y += $height;
  296.             }
  297.         }
  298.         
  299.         return $im;
  300.     }

Documentation generated on Fri, 01 Jan 2016 10:26:04 +0200 by phpDocumentor 1.4.0