RE: [PEAR] Re: [PEAR-DEV] Re: Image_Graph Help Please
| From: | Kilbride, James | Date: | Thu, 15 Sep 2005 18:25:30 +0000 |
| Subject: | RE: [PEAR] Re: [PEAR-DEV] Re: Image_Graph Help Please | ||
| Groups: | php.pear.general | ||
| Request: | Send a blank email to pear-general+get-20988@lists.php.net to get a copy of this message | ||
Steve,
What is this base_graph_display.php? Can you provide it? I've been
learning the graph package myself so maybe I'll see something in it that
is missing for the factory calls.
Have you tried the test files to see that they work correctly?
James Kilbride
> -----Original Message-----
> From: Steve Brown [mailto:Steve.Brown@ddpky.com]
> Sent: Thursday, September 15, 2005 2:19 PM
> To: Jesper Veggerby Hansen
> Cc: pear-general@lists.php.net
> Subject: RE: [PEAR] Re: [PEAR-DEV] Re: Image_Graph Help Please
>
> Jesper,
>
> This is my graph.php document. I haven't changed
> anything. It is the original code from the download. I
> uninstalled everything earlier and reloaded the pear files.
> I had Image_Graph-0.6.0 on there and now I have
> Image_Graph-0.5.0. I don't believe this matters. I will
> change it back to 0.6.0 later.
>
> The base_graph_display.php file has a require_once
> ('Image/Graph.php'); statement.
>
> Thanks,
> Steve
>
> <?php
>
> /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
>
> /**
> * Image_Graph - Main class for the graph creation.
> *
> * PHP versions 4 and 5
> *
> * LICENSE: This library is free software; you can
> redistribute it and/or modify
> * it under the terms of the GNU Lesser General Public
> License as published by
> * the Free Software Foundation; either version 2.1 of the
> License, or (at your
> * option) any later version. This library is distributed in
> the hope that it
> * will be useful, but WITHOUT ANY WARRANTY; without even the
> implied warranty
> * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> See the GNU Lesser
> * General Public License for more details. You should have
> received a copy of
> * the GNU Lesser General Public License along with this
> library; if not, write
> * to the Free Software Foundation, Inc., 59 Temple Place,
> Suite 330, Boston, MA
> * 02111-1307 USA
> *
> * @category Images
> * @package Image_Graph
> * @author Jesper Veggerby <pear.nosey@veggerby.dk>
> * @copyright Copyright (C) 2003, 2004 Jesper Veggerby Hansen
> * @license http://www.gnu.org/copyleft/lesser.html LGPL
> License 2.1
> * @version CVS: $Id: Graph.php,v 1.52 2005/08/08 19:09:19
> nosey Exp
> $
> * @link http://pear.php.net/package/Image_Graph
> */
>
> /**
> * Include file PEAR/ErrorStack.php - for error handling */
> require_once 'PEAR/ErrorStack.php';
>
> /**
> * Include file Image/Graph/Element.php
> */
> require_once 'Image/Graph/Element.php';
>
> /**
> * Include file Image/Graph/Constants.php */ require_once
> 'Image/Graph/Constants.php';
>
> /**
> * Main class for the graph creation.
> *
> * This is the main class, it manages the canvas and performs
> the final output
> * by sequentialy making the elements output their results.
> The final output is
> * handled using the {@link Image_Canvas} classes which makes
> it possible
> * to use different engines (fx GD, PDFlib, libswf, etc) for
> output to several
> * formats with a non-intersecting API.
> *
> * This class also handles coordinates and the correct
> managment of setting the
> * correct coordinates on child elements.
> *
> * @category Images
> * @package Image_Graph
> * @author Jesper Veggerby <pear.nosey@veggerby.dk>
> * @copyright Copyright (C) 2003, 2004 Jesper Veggerby Hansen
> * @license http://www.gnu.org/copyleft/lesser.html LGPL
> License 2.1
> * @version Release: 0.5.0
> * @link http://pear.php.net/package/Image_Graph
> */
> class Image_Graph extends Image_Graph_Element {
>
> /**
> * Show generation time on graph
> * @var bool
> * @access private
> */
> var $_showTime = false;
>
> /**
> * Display errors on the canvas
> * @var boolean
> * @access private
> */
> var $_displayErrors = false;
>
> /**
> * Image_Graph [Constructor].
> *
> * If passing the 3 parameters they are defined as follows:'
> *
> * Fx.:
> *
> * $Graph =& new Image_Graph(400, 300);
> *
> * or using the factory method:
> *
> * $Graph =& Image_Graph::factory('graph', array(400, 300));
> *
> * This causes a 'png' canvas to be created by default.
> *
> * Otherwise use a single parameter either as an
> associated array or passing
> * the canvas along to the constructor:
> *
> * 1) Create a new canvas with the following parameters:
> *
> * 'canvas' - The canvas type, can be any of 'gd', 'jpg',
> 'png' or 'svg'
> * (more to come) - if omitted the default is 'gd'
> *
> * 'width' - The width of the graph
> *
> * 'height' - The height of the graph
> *
> * An example of this usage:
> *
> * $Graph =& Image_Graph::factory('graph',
> arrray(array('width' => 400,
> * 'height' => 300, 'canvas' => 'jpg')));
> *
> * NB! In ths case remember the "double" array (see {@link
> Image_Graph::
> * factory()})
> *
> * 2) Use the canvas specified, pass a valid Image_Canvas as
> * parameter. Remember to pass by reference, i. e. &$canvas,
> fx.:
> *
> * $Graph =& new Image_Graph($Canvas);
> *
> * or using the factory method:
> *
> * $Graph =& Image_Graph::factory('graph', $Canvas));
> *
> * @param mixed $params The width of the graph, an indexed array
> * describing a new canvas or a valid {@link Image_Canvas} object
> * @param int $height The height of the graph in pixels
> * @param bool $createTransparent Specifies whether the
> graph should be
> * created with a transparent background (fx for PNG's - note:
> transparent
> * PNG's is not supported by Internet Explorer!)
> */
>
> //$Graph =& Image_Graph::factory('graph',
> arrray(array('width' => 400,
> //'height' => 300, 'canvas' => 'jpg')));
>
> //$Graph =& Image_Graph::factory('graph', $Canvas));
>
> function &Image_Graph($params, $height = false,
> $createTransparent =
> false)
> {
> parent::Image_Graph_Element();
>
> $this->setFont(Image_Graph::factory('Image_Graph_Font'));
>
> if (defined('IMAGE_GRAPH_DEFAULT_CANVAS_TYPE')) {
> $canvasType = IMAGE_GRAPH_DEFAULT_CANVAS_TYPE;
> } else {
> $canvasType = 'png'; // use GD as default, if
> nothing else is specified
> }
>
> if (is_array($params)) {
> if (isset($params['canvas'])) {
> $canvasType = $params['canvas'];
> }
>
> $width = 0;
> $height = 0;
>
> if (isset($params['width'])) {
> $width = $params['width'];
> }
>
> if (isset($params['height'])) {
> $height = $params['height'];
> }
> } elseif (is_a($params, 'Image_Canvas')) {
> $this->_canvas =& $params;
> $width = $this->_canvas->getWidth();
> $height = $this->_canvas->getHeight();
> }
>
> if (is_int($params)) {
> $width = $params;
> }
>
> if ($this->_canvas == null) {
> include_once 'Image/Canvas.php';
> $this->_canvas =&
> Image_Canvas::factory(
> $canvasType,
> array('width' => $width, 'height' => $height)
> );
> }
>
> $this->_setCoords(0, 0, $width - 1, $height - 1);
> }
>
> /**
> * Gets the canvas for this graph.
> *
> * The canvas is set by either passing it to the
> constructor {@link
> * Image_Graph::ImageGraph()} or using the {@link
> Image_Graph::setCanvas()}
> * method.
> *
> * @return Image_Canvas The canvas used by this graph
> * @access private
> * @since 0.3.0dev2
> */
> function &_getCanvas()
> {
> return $this->_canvas;
> }
>
> /**
> * Sets the canvas for this graph.
> *
> * Calling this method makes this graph use the newly
> specified canvas for
> * handling output. This method should be called whenever multiple
> * 'outputs' are required. Invoke this method after calls
> to {@link
> * Image_Graph:: done()} has been performed, to switch canvass.
> *
> * @param Image_Canvas $canvas The new canvas
> * @return Image_Canvas The new canvas
> * @since 0.3.0dev2
> */
> function &setCanvas(&$canvas)
> {
> $this->_canvas =& $canvas;
> $this->_setCoords(
> 0,
> 0,
> $this->_canvas->getWidth() - 1,
> $this->_canvas->getHeight() - 1
> );
> return $this->_canvas;
> }
>
> /**
> * Gets a very precise timestamp
> *
> * @return The number of seconds to a lot of decimals
> * @access private
> */
> function _getMicroTime()
> {
> list($usec, $sec) = explode(' ', microtime());
> return ((float)$usec + (float)$sec);
> }
>
> /**
> * Gets the width of this graph.
> *
> * The width is returned as 'defined' by the canvas.
> *
> * @return int the width of this graph
> */
> function width()
> {
> return $this->_canvas->getWidth();
> }
>
> /**
> * Gets the height of this graph.
> *
> * The height is returned as 'defined' by the canvas.
> *
> * @return int the height of this graph
> */
> function height()
> {
> return $this->_canvas->getHeight();
> }
>
> /**
> * Enables displaying of errors on the output.
> *
> * Use this method to enforce errors to be displayed on
> the output.
> Calling
> * this method makes PHP uses this graphs error handler
> as default {@link
> * Image_Graph::_default_error_handler()}.
> */
> function displayErrors()
> {
> $this->_displayErrors = true;
> set_error_handler(array(&$this, '_default_error_handler'));
> }
>
> /**
> * Sets the log method for this graph.
> *
> * Use this method to enable logging. This causes any
> errors caught
> * by either the error handler {@see Image_Graph::displayErrors()}
> * or explicitly by calling {@link
> Image_Graph_Common::_error()} be
> * logged using the specified logging method.
> *
> * If a filename is specified as log method, a Log object
> is created (using
> * the 'file' handler), with a handle of 'Image_Graph Error Log'.
> *
> * Logging requires {@link Log}.
> *
> * @param mixed $log The log method, either a Log object
> or filename to log
> * to
> * @since 0.3.0dev2
> */
> function setLog($log)
> {
> $stack =& $this->_getErrorStack();
> if (is_string($log)) {
> include_once 'Log.php';
> $log =& Log::factory('file', $log, 'Image_Graph
> Error Log');
> }
> $stack->setLogger($log);
> }
>
> /**
> * Factory method to create Image_Graph objects.
> *
> * Used for 'lazy including', i.e. loading only what is
> necessary, when it
> * is necessary. If only one parameter is required for
> the constructor of
> * the class simply pass this parameter as the $params
> parameter, unless the
> * parameter is an array or a reference to a value, in
> that case you must
> * 'enclose' the parameter in an array. Similar if the
> constructor takes
> * more than one parameter specify the parameters in an array, i.e
> *
> * Image_Graph::factory('MyClass', array($param1,
> $param2, &$param3));
> *
> * Variables that need to be passed by reference *must*
> have the &
> * before the variable, i.e:
> *
> * Image_Graph::factory('line', &$Dataset);
> *
> * or
> *
> * Image_graph::factory('bar', array(array(&$Dataset1,
> &$Dataset2),
> * 'stacked'));
> *
> * Class name can be either of the following:
> *
> * 1 The 'real' Image_Graph class name, i.e.
> Image_Graph_Plotarea or
> * Image_Graph_Plot_Line
> *
> * 2 Short class name (leave out Image_Graph) and retain
> case, i.e.
> * Plotarea, Plot_Line *not* plot_line
> *
> * 3 Class name 'alias', the following are supported:
> *
> * 'graph' = Image_Graph
> *
> * 'plotarea' = Image_Graph_Plotarea
> *
> * 'line' = Image_Graph_Plot_Line
> *
> * 'area' = Image_Graph_Plot_Area
> *
> * 'bar' = Image_Graph_Plot_Bar
> *
> * 'pie' = Image_Graph_Plot_Pie
> *
> * 'radar' = Image_Graph_Plot_Radar
> *
> * 'step' = Image_Graph_Plot_Step
> *
> * 'impulse' = Image_Graph_Plot_Impulse
> *
> * 'dot' or 'scatter' = Image_Graph_Plot_Dot
> *
> * 'smooth_line' = Image_Graph_Plot_Smoothed_Line
> *
> * 'smooth_area' = Image_Graph_Plot_Smoothed_Area
>
> * 'dataset' = Image_Graph_Dataset_Trivial
> *
> * 'random' = Image_Graph_Dataset_Random
> *
> * 'function' = Image_Graph_Dataset_Function
> *
> * 'vector' = Image_Graph_Dataset_VectorFunction
> *
> * 'axis' = Image_Graph_Axis
> *
> * 'axis_log' = Image_Graph_Axis_Logarithmic
> *
> * 'title' = Image_Graph_Title
> *
> * 'line_grid' = Image_Graph_Grid_Lines
> *
> * 'bar_grid' = Image_Graph_Grid_Bars
> *
> * 'polar_grid' = Image_Graph_Grid_Polar
> *
> * 'legend' = Image_Graph_Legend
> *
> * 'font' = Image_Graph_Font
> *
> * 'ttf_font' = Image_Graph_Font
> *
> * 'Image_Graph_Font_TTF' = Image_Graph_Font (to maintain BC with
> Image_Graph_Font_TTF)
> *
> * 'gradient' = Image_Graph_Fill_Gradient
> *
> * 'icon_marker' = Image_Graph_Marker_Icon
> *
> * 'value_marker' = Image_Graph_Marker_Value
> *
> * @param string $class The class for the new object
> * @param mixed $params The paramaters to pass to the constructor
> * @return object A new object for the class
> * @static
> */
> function &factory($class, $params = null)
> {
> static $Image_Graph_classAliases = array(
> 'graph' => 'Image_Graph',
> 'plotarea' => 'Image_Graph_Plotarea',
>
>
> 'line' => 'Image_Graph_Plot_Line',
> 'area' => 'Image_Graph_Plot_Area',
> 'bar' => 'Image_Graph_Plot_Bar',
> 'smooth_line' =>
> 'Image_Graph_Plot_Smoothed_Line',
> 'smooth_area' =>
> 'Image_Graph_Plot_Smoothed_Area',
> 'pie' => 'Image_Graph_Plot_Pie',
> 'radar' => 'Image_Graph_Plot_Radar',
> 'step' => 'Image_Graph_Plot_Step',
> 'impulse' => 'Image_Graph_Plot_Impulse',
> 'dot' => 'Image_Graph_Plot_Dot',
> 'scatter' => 'Image_Graph_Plot_Dot',
>
> 'dataset' =>
> 'Image_Graph_Dataset_Trivial',
> 'random' =>
> 'Image_Graph_Dataset_Random',
> 'function' =>
> 'Image_Graph_Dataset_Function',
> 'vector' =>
> 'Image_Graph_Dataset_VectorFunction',
>
> 'axis' => 'Image_Graph_Axis',
> 'axis_log' =>
> 'Image_Graph_Axis_Logarithmic',
>
> 'title' => 'Image_Graph_Title',
>
> 'line_grid' => 'Image_Graph_Grid_Lines',
> 'bar_grid' => 'Image_Graph_Grid_Bars',
> 'polar_grid' => 'Image_Graph_Grid_Polar',
>
> 'legend' => 'Image_Graph_Legend',
> 'font' => 'Image_Graph_Font',
> 'ttf_font' => 'Image_Graph_Font',
> 'Image_Graph_Font_TTF' =>
> 'Image_Graph_Font', // BC with Image_Graph_Font_TTF
> 'gradient' => 'Image_Graph_Fill_Gradient',
>
> 'icon_marker' => 'Image_Graph_Marker_Icon',
> 'value_marker' => 'Image_Graph_Marker_Value'
> );
>
> if (substr($class, 0, 11) != 'Image_Graph') {
> if (isset($Image_Graph_classAliases[$class])) {
> $class = $Image_Graph_classAliases[$class];
> } else {
> $class = 'Image_Graph_' . $class;
> }
> }
>
> include_once str_replace('_', '/', $class) . '.php';
>
> if (is_array($params)) {
> switch (count($params)) {
> case 1:
> return new $class(
> $params[0]
> );
> break;
>
> case 2:
> return new $class(
> $params[0],
> $params[1]
> );
> break;
>
> case 3:
> return new $class(
> $params[0],
> $params[1],
> $params[2]
> );
> break;
>
> case 4:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3]
> );
> break;
>
> case 5:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3],
> $params[4]
> );
> break;
>
> case 6:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3],
> $params[4],
> $params[5]
> );
> break;
>
> case 7:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3],
> $params[4],
> $params[5],
> $params[6]
> );
> break;
>
> case 8:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3],
> $params[4],
> $params[5],
> $params[6],
> $params[7]
> );
> break;
>
> case 9:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3],
> $params[4],
> $params[5],
> $params[6],
> $params[7],
> $params[8]
> );
> break;
>
> case 10:
> return new $class(
> $params[0],
> $params[1],
> $params[2],
> $params[3],
> $params[4],
> $params[5],
> $params[6],
> $params[7],
> $params[8],
> $params[9]
> );
> break;
>
> default:
> return new $class();
> break;
>
> }
> } else {
> if ($params == null) {
> return new $class();
> } else {
> return new $class($params);
> }
> }
> }
>
> /**
> * Factory method to create layouts.
> *
> * This method is used for easy creation, since using {@link
> Image_Graph::
> * factory()} does not work with passing newly created
> objects from
> * Image_Graph::factory() as reference, this is something that is
> * fortunately fixed in PHP5. Also used for 'lazy including', i.e.
> loading
> * only what is necessary, when it is necessary.
> *
> * Use {@link Image_Graph::horizontal()} or {@link
> Image_Graph::vertical()}
> * instead for easier access.
> *
> * @param mixed $layout The type of layout, can be either
> 'Vertical'
> * or 'Horizontal' (case sensitive)
> * @param Image_Graph_Element $part1 The 1st part of the layout
> * @param Image_Graph_Element $part2 The 2nd part of the layout
> * @param int $percentage The percentage of the layout to split at
> * @return Image_Graph_Layout The newly created layout object
> * @static
> */
> function &layoutFactory($layout, &$part1, &$part2,
> $percentage = 50)
> {
> include_once "Image/Graph/Layout/$layout.php";
> $class = "Image_Graph_Layout_$layout";
> return new $class($part1, $part2, $percentage);
> }
>
> /**
> * Factory method to create horizontal layout.
> *
> * See {@link Image_Graph::layoutFactory()}
> *
> * @param Image_Graph_Element $part1 The 1st (left) part
> of the layout
> * @param Image_Graph_Element $part2 The 2nd (right) part
> of the layout
> * @param int $percentage The percentage of the layout to split at
> * (percentage of total height from the left side)
> * @return Image_Graph_Layout The newly created layout object
> * @static
> */
> function &horizontal(&$part1, &$part2, $percentage = 50)
> {
> return Image_Graph::layoutFactory('Horizontal',
> $part1, $part2, $percentage);
> }
>
> /**
> * Factory method to create vertical layout.
> *
> * See {@link Image_Graph::layoutFactory()}
> *
> * @param Image_Graph_Element $part1 The 1st (top) part
> of the layout
> * @param Image_Graph_Element $part2 The 2nd (bottom)
> part of the layout
> * @param int $percentage The percentage of the layout to split at
> * (percentage of total width from the top edge)
> * @return Image_Graph_Layout The newly created layout object
> * @static
> */
> function &vertical(&$part1, &$part2, $percentage = 50)
> {
> return Image_Graph::layoutFactory('Vertical', $part1,
> $part2, $percentage);
> }
>
> /**
> * The error handling routine set by set_error_handler().
> *
> * This method is used internaly by Image_Graph and PHP
> as a proxy for {@link
> * Image_Graph::_error()}.
> *
> * @param string $error_type The type of error being handled.
> * @param string $error_msg The error message being handled.
> * @param string $error_file The file in which the error occurred.
> * @param integer $error_line The line in which the error
> occurred.
> * @param string $error_context The context in which the
> error occurred.
> * @access private
> */
> function _default_error_handler($error_type, $error_msg,
> $error_file, $error_line, $error_context)
> {
> switch( $error_type ) {
> case E_ERROR:
> $level = 'error';
> break;
>
> case E_USER_ERROR:
> $level = 'user error';
> break;
>
> case E_WARNING:
> $level = 'warning';
> break;
>
> case E_USER_WARNING:
> $level = 'user warning';
> break;
>
> case E_NOTICE:
> $level = 'notice';
> break;
>
> case E_USER_NOTICE:
> $level = 'user notice';
> break;
>
> default:
> $level = '(unknown)';
> break;
>
> }
>
> $this->_error("PHP $level: $error_msg",
> array(
> 'type' => $error_type,
> 'file' => $error_file,
> 'line' => $error_line,
> 'context' => $error_context
> )
> );
> }
>
> /**
> * Displays the errors on the error stack.
> *
> * Invoking this method cause all errors on the error
> stack to be displayed
> * on the graph-output, by calling the {@link
> Image_Graph::_displayError()}
> * method.
> *
> * @access private
> */
> function _displayErrors()
> {
> $stack =& $this->_getErrorStack();
> if ($stack->hasErrors()) {
> $errors = $stack->getErrors();
> if (is_array($errors)) {
> $y = 0;
> foreach ($errors as $error) {
> $this->_displayError(0, $y, $error);
> $y += 20;
> }
> }
> }
> }
>
> /**
> * Display an error from the error stack.
> *
> * This method writes error messages caught from the {@link
> Image_Graph::
> * _default_error_handler()} if
> {@Image_Graph::displayErrors()} was invoked,
> * and the error explicitly set by the system using {@link
> * Image_Graph_Common::_error()}.
> *
> * @param int $x The horizontal position of the error message
> * @param int $y The vertical position of the error message
> * @param array $error The error context
> *
> * @access private
> */
> function _displayError($x, $y, $error)
> {
> $canvas =& $error['params']['canvas'];
> if (is_a($canvas, 'Image_Canvas')) {
> $canvas->setFont(array('font' => 1, 'color' =>
> 'black'));
> $canvas->write($x, $y, $error['message']);
> }
> }
>
> /**
> * Enable caching of the output.
> *
> * Any change at all to any part of the graph makes it
> output again.
> Do
> * *NOT* use caching with plots using {@link
> Image_Graph_Dataset_Random},
> * since the graph will (always) change. The specified
> cache directory must
> * exist prior to caching.
> *
> * Requires {@link Cache}.
> *
> * @param string $cacheDir The directory where cached
> files are put.
> If
> * false caching is disabled.
> */
> function cache($cacheDir = 'cache/')
> {
> $this->_cache = $cacheDir;
> }
>
> /**
> * Outputs this graph using the canvas.
> *
> * This causes the graph to make all elements perform
> their output.
> Their
> * result is 'written' to the output using the canvas,
> which also performs
> * the actual output, fx. it being to a file or directly
> to the browser
> * (in the latter case, the canvas will also make sure
> the correct HTTP
> * headers are sent, making the browser handle the output
> correctly, if
> * supported by it).
> *
> * Parameters are the ones supported by the canvas,
> common ones are:
> *
> * 'filename' To output to a file instead of browser
> *
> * 'tohtml' Return a HTML string that encompasses the
> current graph/canvas - this
> * implies an implicit save using the following parameters:
> 'filename' The "temporary"
> * filename of the graph, 'filepath' A path in the file
> system where Image_Graph can
> * store the output (this file must be in DOCUMENT_ROOT
> scope), 'urlpath' The URL that the
> * 'filepath' corresponds to (i.e. filepath + filename
> must be reachable from a browser using
> * urlpath + filename)
> *
> * @param mixed $param The output parameters to pass to the canvas
> * @return bool Was the output 'good' (true) or 'bad' (false).
> */
> function done($param = false)
> {
> $this->_reset();
> return $this->_done($param);
> }
>
> /**
> * Outputs this graph using the canvas.
> *
> * This causes the graph to make all elements perform
> their output.
> Their
> * result is 'written' to the output using the canvas,
> which also performs
> * the actual output, fx. it being to a file or directly
> to the browser
> * (in the latter case, the canvas will also make sure
> the correct HTTP
> * headers are sent, making the browser handle the output
> correctly, if
> * supported by it).
> *
> * @param mixed $param The output parameters to pass to the canvas
> * @return bool Was the output 'good' (true) or 'bad' (false).
> * @access private
> */
> function _done($param = false)
> {
> $useCached = false;
> $timeStart = $this->_getMicroTime();
>
> if ($useCached === false) {
> if ($this->_shadow) {
> $this->setPadding(20);
> $this->_setCoords(
> $this->_left,
> $this->_top,
> $this->_right - 10,
> $this->_bottom - 10);
> }
>
> $this->_updateCoords();
>
>
> if ($this->_getBackground()) {
> $this->_canvas->rectangle(
> array(
> 'x0' => $this->_left,
> 'y0' => $this->_top,
> 'x1' => $this->_right,
> 'y1' => $this->_bottom
> )
> );
> }
>
> $result = parent::_done();
>
> if ($this->_displayErrors) {
> $this->_displayErrors();
> }
>
> $timeEnd = $this->_getMicroTime();
>
> if (($this->_showTime) ||
> ((isset($param['showtime'])) &&
> ($param['showtime'] ===
> true))
> ) {
> $text = 'Generated in ' .
> sprintf('%0.3f', $timeEnd - $timeStart) . ' sec';
> $this->write(
> $this->_right,
> $this->_bottom,
> $text,
> IMAGE_GRAPH_ALIGN_RIGHT +
> IMAGE_GRAPH_ALIGN_BOTTOM,
> array('color' => 'red')
> );
> }
>
> }
>
> if (isset($param['filename'])) {
> if ($param['tohtml']) {
> return $this->_canvas->toHtml($param);
> }
> else {
> return $this->_canvas->save($param);
> }
> } else {
> return $this->_canvas->show($param);
> }
> }
> }
>
> ?>
>
> Steve Brown
> Systems Analyst
> Delta Dental Plan of Kentucky
> (502) 736-4646
> Steve.Brown@ddpky.com
>
> -----Original Message-----
> From: Jesper Veggerby Hansen [mailto:pear.nosey@veggerby.dk]
> Sent: Thursday, September 15, 2005 2:10 PM
> To: Steve Brown
> Subject: Re: [PEAR] Re: [PEAR-DEV] Re: Image_Graph Help Please
>
> Hi Steve,
>
> Could you please provide some code of what you are actually
> doing, I'm shooting in blind here!
>
> What I mean by "class id" is the name of the class or the
> alias. The factory method simply instantiates the class and
> does the include for you in at the same time, so you need to
> write something like
>
> $Plotarea =& Image_Graph::factory('plotarea');
>
> What it looks like is that you have done something like:
>
> $Plotarea =& Image_Graph::factory('');
>
> Although that might not be the case which is why some could
> would help alot!
>
> And for the future please:
> 1) Write only to one mailing list
> 2) Reply-all so the mailing list will also receive the answer
> (so that others may use the information)
>
> /Jesper
>
> Steve Brown wrote:
> > What should the class id be defined as in graph.php? I thought the
> > default package settings would work. Is the class id defined under
> > class Image_Graph extends Image_Graph_Element within graph.php?
> >
> > Steve Brown
> > Systems Analyst
> > Delta Dental Plan of Kentucky
> > (502) 736-4646
> > Steve.Brown@ddpky.com
> >
> > -----Original Message-----
> > From: Jesper Veggerby Hansen [mailto:pear.nosey@veggerby.dk]
> > Sent: Thursday, September 15, 2005 1:51 PM
> > To: Steve Brown
> > Cc: pear-general@lists.php.net
> > Subject: [PEAR] Re: [PEAR-DEV] Re: Image_Graph Help Please
> >
> > Hi Steve,
> >
> > If seems like you are calling Image_Graph::factory() with a "blank"
> > class id(?)
> >
> > /Jesper
> >
> > BTW. Please only send package questions to 1 mailing list:
> > pear-general@lists.php.net
> >
> > Steve Brown wrote:
> >
> >>Why do I keep getting the following errors on
> base_graph_display.php?
> >
> > I
> >
> >>haven't changed any of the default settings and all the dependency
> >>packages are included. There was no need for a include
> >>'Image/Graph.php'; statement because the base_graph_display.php
> >
> > document
> >
> >>already includes require_once ('Image_Graph.php');.
> >>
> >>
> >>
> >>Warning: imagealphablending(): supplied argument is not a
> valid Image
> >>resource in c:\php5\PEAR\Image\Canvas\GD.php on line 161
> >>
> >>
> >>
> >>Warning: imagecolorallocate(): supplied argument is not a
> valid Image
> >>resource in c:\php5\PEAR\Image\Canvas\Color.php on line 65
> >>
> >>
> >>
> >>Warning: imagesetthickness(): supplied argument is not a
> valid Image
> >>resource in c:\php5\PEAR\Image\Canvas\GD.php on line 233
> >>
> >>
> >>
> >>Warning: imagesetthickness(): supplied argument is not a
> valid Image
> >>resource in c:\php5\PEAR\Image\Canvas\GD.php on line 1518
> >>
> >>
> >>
> >>Warning: Image_Graph::factory(Image/Graph/.php): failed to open
> >
> > stream:
> >
> >>No such file or directory in c:\php5\PEAR\Image\Graph.php
> on line 443
> >>
> >>
> >>
> >>Warning: Image_Graph::factory(): Failed opening
> 'Image/Graph/.php' for
> >>inclusion (include_path='c:\php5\PEAR') in
> >
> > c:\php5\PEAR\Image\Graph.php
> >
> >>on line 443
> >>
> >>
> >>
> >>Fatal error: Class 'Image_Graph_' not found in
> >>c:\php5\PEAR\Image\Graph.php on line 561
> >>
> >>
> >>
> >>Steve Brown
> >>
> >>Systems Analyst
> >>
> >>Delta Dental Plan of Kentucky
> >>
> >>(502) 736-4646
> >>
> >>Steve.Brown@ddpky.com
> >>
> >>
> >>
> >>
> >
> >
>
> --
> PEAR General Mailing List (http://pear.php.net/) To
> unsubscribe, visit: http://www.php.net/unsub.php
>
>