Subversion Repositories Applications.gtt

Rev

Rev 60 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*
 * This work is hereby released into the Public Domain.
 * To view a copy of the public domain dedication,
 * visit http://creativecommons.org/licenses/publicdomain/ or send a letter to
 * Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
 *
 */
 
require_once dirname(__FILE__)."/../Graph.class.php";

/**
 * Objects capable of being positioned
 *
 * @package Artichow
 */
interface awPositionable {

        /**
         * Left align
         *
         * @var int
         */
        const LEFT = 1;

        /**
         * Right align
         *
         * @var int
         */
        const RIGHT = 2;

        /**
         * Center align
         *
         * @var int
         */
        const CENTER = 3;

        /**
         * Top align
         *
         * @var int
         */
        const TOP = 4;

        /**
         * Bottom align
         *
         * @var int
         */
        const BOTTOM = 5;

        /**
         * Middle align
         *
         * @var int
         */
        const MIDDLE = 6;
        
        /**
         * Change alignment
         *
         * @param int $h Horizontal alignment
         * @param int $v Vertical alignment
         */
        public function setAlign($h = NULL, $v = NULL);
        
}

registerInterface('Positionable');

/**
 * Manage left, right, top and bottom sides
 *
 * @package Artichow
 */
class awSide {

        /**
         * Left side
         *
         * @var int
         */
        public $left = 0;

        /**
         * Right side
         *
         * @var int
         */
        public $right = 0;

        /**
         * Top side
         *
         * @var int
         */
        public $top = 0;

        /**
         * Bottom side
         *
         * @var int
         */
        public $bottom = 0;
        
        /**
         * Build the side
         *
         * @param mixed $left
         * @param mixed $right
         * @param mixed $top
         * @param mixed $bottom
         */
        public function __construct($left = NULL, $right = NULL, $top = NULL, $bottom = NULL) {
                $this->set($left, $right, $top, $bottom);
        }
        
        
        /**
         * Change side values
         *
         * @param mixed $left
         * @param mixed $right
         * @param mixed $top
         * @param mixed $bottom
         */
        public function set($left = NULL, $right = NULL, $top = NULL, $bottom = NULL) {
        
                if($left !== NULL) {
                        $this->left = (float)$left;
                }
                if($right !== NULL) {
                        $this->right = (float)$right;
                }
                if($top !== NULL) {
                        $this->top = (float)$top;
                }
                if($bottom !== NULL) {
                        $this->bottom = (float)$bottom;
                }
                
        }
        
        
        /**
         * Add values to each side
         *
         * @param mixed $left
         * @param mixed $right
         * @param mixed $top
         * @param mixed $bottom
         */
        public function add($left = NULL, $right = NULL, $top = NULL, $bottom = NULL) {
        
                if($left !== NULL) {
                        $this->left += (float)$left;
                }
                if($right !== NULL) {
                        $this->right += (float)$right;
                }
                if($top !== NULL) {
                        $this->top += (float)$top;
                }
                if($bottom !== NULL) {
                        $this->bottom += (float)$bottom;
                }
                
        }

}

registerClass('Side');
?>