blob: a4ba6af7030ebf62d1239bb014082eb77bc4997b [file] [log] [blame]
<?php
########################################################################################################
# Aastra XML API Classes - AastraIPPhoneImageScreen
# Copyright Aastra Telecom 2008-2010
#
# AastraIPPhoneImageScreen object.
#
# Public methods
#
# Inherited from AastraIPPhone
# setCancelAction(uri) to set the cancel parameter with the URI to be called on Cancel (optional)
# @uri string
# setDestroyOnExit() to set DestroyonExit parameter to 'yes', 'no' by default (optional)
# setBeep() to enable a notification beep with the object (optional)
# setLockIn() to set the Lock-in tag to 'yes' (optional)
# setLockInCall() to set the Lock-in tag to 'call' (optional)
# setTimeout(timeout) to define a specific timeout for the XML object (optional)
# @timeout integer (seconds)
# addSoftkey(index,label,uri,icon_index) to add custom soktkeys to the object (optional)
# @index integer, softkey number
# @label string
# @uri string
# @icon_index integer, icon number
# setRefresh(timeout,URL) to add Refresh parameters to the object (optional)
# @timeout integer (seconds)
# @URL string
# setEncodingUTF8() to change encoding from default ISO-8859-1 to UTF-8 (optional)
# addIcon(index,icon) to add custom icons to the object (optional)
# @index integer, icon index
# @icon string, icon name or definition
# generate() to return the generated XML for the object
# output(flush) to display the object
# @flush boolean optional, output buffer to be flushed out or not.
#
# Specific to the object
# setImage(image) to define the image to be displayed
# @image string
# setGDImage(GDImage) to use a GDImage for display, the size is forced to 40x144
# @GDImage GDImage
# setSPImage(SPImage) to use a SPImage for display, the size is forced to 40x144
# @SPImage SPImage
# setAlignment(vertical,horizontal) to define image alignment
# @vertical string, "left", "right", "center"
# @horizontal string, "left", "right", "center"
# setSize(height,width) to define image size
# @height integer (pixels)
# @width integer (pixels)
# setAllowDTMF() to allow DTMF passthrough on the object
# setScrollUp(uri) to set the URI to be called when the user presses the Up arrow (optional)
# @uri string
# setScrollDown(uri) to set the URI to be called when the user presses the Down arrow (optional)
# @uri string
# setScrollLeft(uri) to set the URI to be called when the user presses the Left arrow (optional)
# @uri string
# setScrollRight(uri) to set the URI to be called when the user presses the Right arrow (optional)
# @uri string
#
# Example
#
# Using a Pixel image
#
# require_once('AastraIPPhoneImageScreen.class.php');
# $images = new AastraIPPhoneImageScreen();
# $images->setDestroyOnExit();
# $images->setSize(40,40);
# $images->setImage('fffffffc02fffffffee4ffffbfffc05fffe7ff7a7ffffffffeffeebd7fffffea6bcfffffe796f3feff6fa289f0a86f4866fa20df42414595dd0134f8037ed1637f0e2522b2dd003b6eb936f05fffbd4f4107bba6eb0080e93715000010b754001281271408c640252081b1b22500013c5c66201368004e04467520dc11067152b82094d418e100247205805494780105002601530020931400020ac5c91088b0f2b08c21c07d0c2006009fdfe81f80efe0107fe0fb1c3ffff8ffc3fffef8f7febffbfcf87ffbff64');
# $images->addSoftkey('1', 'Mail', 'http://myserver.com/script.php?action=1','1');
# $images->addSoftkey('6', 'Exit', 'SoftKey:Exit');
# $images->addIcon('1', 'Icon:Envelope');
# $images->output();
#
# Using a GD image
#
# require_once('AastraIPPhoneGDImage.class.php');
# require_once('AastraIPPhoneImageScreen.class.php');
# $PhoneImageGD = new AastraIPPhoneGDImage();
# $object = new AastraIPPhoneImageScreen();
# $time = strftime("%H:%M");
# $PhoneImageGD->drawttftext(30, 0, 10, 39, $time, 1,'Ni7seg.ttf');
# $object->setGDImage($PhoneImageGD);
# $object->output();
#
# Using a SP image
#
# require_once('AastraIPPhoneImageScreen.class.php');
# $object = new AastraIPPhoneImageScreen();
# require_once('AastraIPPhoneSPImage.class.php');
# $SPimage=new AastraIPPhoneSPImage();
# $SPimage->addIcon('1','286CEE6C2800');
# $SPimage->setBitmap('answered',3,1);
# $SPimage->setText('Jean Valjean',1,'left',3);
# $SPimage->setText('9057604454',2,'left',3);
# $SPimage->setText('Sep 9 10:14am',4,'left',3);
# $SPimage->setText('Use #1# to browse',5,'center');
# $object->setSPImage($SPimage);
# $object->output();
#
########################################################################################################
require_once('AastraIPPhone.class.php');
class AastraIPPhoneImageScreen extends AastraIPPhone {
var $_image;
var $_verticalAlign=NULL;
var $_horizontalAlign=NULL;
var $_height=NULL;
var $_width=NULL;
var $_allowDTMF='';
var $_scrollUp='';
var $_scrollDown='';
var $_scrollLeft='';
var $_scrollRight='';
function setImage($image)
{
$this->_image = $image;
}
function setAlignment($vertical=NULL,$horizontal=NULL)
{
$this->_verticalAlign = $vertical;
$this->_horizontalAlign = $horizontal;
}
function setSize($height,$width)
{
$this->_height = $height;
$this->_width = $width;
}
function setScrollUp($uri)
{
$this->_scrollUp = $uri;
}
function setScrollDown($uri)
{
$this->_scrollDown = $uri;
}
function setScrollLeft($uri)
{
$this->_scrollLeft = $uri;
}
function setScrollRight($uri)
{
$this->_scrollRight = $uri;
}
function setGDImage($GDImage)
{
$img = $GDImage->getGDImage();
$byte = 0;
$i = 0;
$imageHexString = "";
for ($x=0; $x < 144; $x++)
{
for ($y=0; $y < 40; $y++)
{
$rgb = imagecolorat($img, $x, $y);
if ($rgb > 0) $byte = $byte + pow(2,(7-($i%8)));
if ($i%8 == 7)
{
$byteHex = dechex($byte);
if (strlen($byteHex) == 1) $byteHex = "0".$byteHex;
$imageHexString = $imageHexString . $byteHex;
$byte=0;
}
$i++;
}
}
$this->setImage($imageHexString);
$this->setSize(40,144);
}
function setSPImage($SPImage)
{
$this->setImage($SPImage->getSPImage());
$this->setSize(40,144);
}
function setAllowDTMF()
{
$this->_allowDTMF = 'yes';
}
function render()
{
# Beginning of root tag
$out = "<AastraIPPhoneImageScreen";
# DestroyOnExit
if($this->_destroyOnExit == 'yes') $out .= " destroyOnExit=\"yes\"";
# CancelAction
if($this->_cancelAction != "")
{
$cancelAction = $this->escape($this->_cancelAction);
$out .= " cancelAction=\"{$cancelAction}\"";
}
# Beep
if($this->_beep=='yes') $out .= " Beep=\"yes\"";
# Lockin
if($this->_lockin!='') $out .= " LockIn=\"{$this->_lockin}\"";
# Timeout
if($this->_timeout!=0) $out .= " Timeout=\"{$this->_timeout}\"";
# AllowDTMF
if($this->_allowDTMF=='yes') $out .= " allowDTMF=\"yes\"";
# Scrolls up/down/left/right
if($this->_scrollUp!='') $out .= " scrollUp=\"".$this->escape($this->_scrollUp)."\"";
if($this->_scrollDown!='') $out .= " scrollDown=\"".$this->escape($this->_scrollDown)."\"";
if($this->_scrollLeft!='') $out .= " scrollLeft=\"".$this->escape($this->_scrollLeft)."\"";
if($this->_scrollRight!='') $out .= " scrollRight=\"".$this->escape($this->_scrollRight)."\"";
# End of root tag
$out .= ">\n";
# Beginning of Image tag
$out .= "<Image";
# VerticalAlign
if($this->_verticalAlign!=NULL) $out .= " verticalAlign=\"{$this->_verticalAlign}\"";
# HorizontalAlign
if($this->_horizontalAlign!=NULL) $out .= " horizontalAlign=\"{$this->_horizontalAlign}\"";
# Height
if($this->_height!=NULL) $out .= " height=\"{$this->_height}\"";
# Width
if($this->_width!=NULL) $out .= " width=\"{$this->_width}\"";
# Image and end of image tag
$out .= ">{$this->_image}</Image>\n";
# Softkeys
if (isset($this->_softkeys) && is_array($this->_softkeys))
{
foreach ($this->_softkeys as $softkey) $out .= $softkey->render();
}
# Icons
if (isset($this->_icons) && is_array($this->_icons))
{
$IconList=False;
foreach ($this->_icons as $icon)
{
if(!$IconList)
{
$out .= "<IconList>\n";
$IconList=True;
}
$out .= $icon->render();
}
if($IconList) $out .= "</IconList>\n";
}
# End tag
$out .= "</AastraIPPhoneImageScreen>\n";
# Return XML object
return $out;
}
}
?>