123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- <?php
- /**
- * File containing the ezcDocumentPdfDriver class
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package Document
- * @version //autogen//
- * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
- * @access private
- */
- /**
- * Test implemenation of PDF driver mocking actual driver behaviour
- */
- class ezcTestDocumentPdfMockDriver extends ezcDocumentPdfSvgDriver
- {
- protected $style;
- protected $size;
- public $calls = array();
- /**
- * Show a debug dump of all calls to the driver.
- *
- * @return void
- */
- public function debugDump()
- {
- foreach ( $this->calls as $nr => $call )
- {
- echo "\n", $nr, ") ", $call[0], "( ", @implode( ", ", $call[1] ), " )";
- }
- }
- /**
- * Convert values
- *
- * Convert measure values from the PCSS input file into another unit. The
- * input unit is read from the passed value and defaults to milli meters.
- * The output unit can be specified as the second parameter and also
- * default to milli meters.
- *
- * Supported units currently are: mm, px, pt, in
- *
- * @param mixed $input
- * @param string $format
- * @return void
- */
- public function convertValue( $input, $format = 'mm' )
- {
- return parent::convertValue( $input, $format );
- }
- /**
- * Create a new page
- *
- * Create a new page in the PDF document with the given width and height.
- *
- * @param float $width
- * @param float $height
- * @return void
- */
- public function createPage( $width, $height )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Set text formatting option
- *
- * Set a text formatting option. The names of the options are the same used
- * in the PCSS files and need to be translated by the driver to the proper
- * backend calls.
- *
- *
- * @param string $type
- * @param mixed $value
- * @return void
- */
- public function setTextFormatting( $type, $value )
- {
- switch ( $type )
- {
- case 'font-style':
- if ( ( $value === 'oblique' ) ||
- ( $value === 'italic' ) )
- {
- $this->style |= self::FONT_OBLIQUE;
- }
- else
- {
- $this->style &= ~self::FONT_OBLIQUE;
- }
- break;
- case 'font-weight':
- if ( ( $value === 'bold' ) ||
- ( $value === 'bolder' ) )
- {
- $this->style |= self::FONT_BOLD;
- }
- else
- {
- $this->style &= ~self::FONT_BOLD;
- }
- break;
- case 'font-size':
- $this->size = (float) $value;
- break;
- }
- }
- /**
- * Calculate the rendered width of the current word
- *
- * Calculate the width of the passed word, using the currently set text
- * formatting options.
- *
- * @param string $word
- * @return float
- */
- public function calculateWordWidth( $word )
- {
- return iconv_strlen( $word, 'UTF-8' ) * $this->size * .5 *
- ( $this->style & self::FONT_BOLD ? 1.5 : 1 ) *
- ( $this->style & self::FONT_OBLIQUE ? 1.2 : 1 );
- }
- /**
- * Get current line height
- *
- * Return the current line height in millimeter based on the current font
- * and text rendering settings.
- *
- * @return float
- */
- public function getCurrentLineHeight()
- {
- return $this->size;
- }
- /**
- * Draw word at given position
- *
- * Draw the given word at the given position using the currently set text
- * formatting options.
- *
- * @param float $x
- * @param float $y
- * @param string $word
- * @return void
- */
- public function drawWord( $x, $y, $word )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Draw a fileld polygon
- *
- * Draw any filled polygon, filled using the defined color. The color
- * should be passed as an array with the keys "red", "green", "blue" and
- * optionally "alpha". Each key should have a value between 0 and 1
- * associated.
- *
- * The polygon itself is specified as an array of two-tuples, specifying
- * the x and y coordinate of the point.
- *
- * @param array $points
- * @param array $color
- * @return void
- */
- public function drawPolygon( array $points, array $color )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Draw a polyline
- *
- * Draw any non-filled polygon, filled using the defined color. The color
- * should be passed as an array with the keys "red", "green", "blue" and
- * optionally "alpha". Each key should have a value between 0 and 1
- * associated.
- *
- * The polyline itself is specified as an array of two-tuples, specifying
- * the x and y coordinate of the point.
- *
- * The thrid parameter defines the width of the border and the last
- * parameter may optionally be set to false to not close the polygon (draw
- * another line from the last point to the first one).
- *
- * @param array $points
- * @param array $color
- * @param float $width
- * @param bool $close
- * @return void
- */
- public function drawPolyline( array $points, array $color, $width, $close = true )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Add an external link
- *
- * Add an external link to the rectangle specified by its top-left
- * position, width and height. The last parameter is the actual URL to link
- * to.
- *
- * @param float $x
- * @param float $y
- * @param float $width
- * @param float $height
- * @param string $url
- * @return void
- */
- public function addExternalLink( $x, $y, $width, $height, $url )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Add an internal link
- *
- * Add an internal link to the rectangle specified by its top-left
- * position, width and height. The last parameter is the target identifier
- * to link to.
- *
- * @param float $x
- * @param float $y
- * @param float $width
- * @param float $height
- * @param string $target
- * @return void
- */
- public function addInternalLink( $x, $y, $width, $height, $target )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Add an internal link target
- *
- * Add an internal link to the current page. The last parameter
- * is the target identifier.
- *
- * @param string $id
- * @return void
- */
- public function addInternalLinkTarget( $id )
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- /**
- * Generate and return PDF
- *
- * Return the generated binary PDF content as a string.
- *
- * @return string
- */
- public function save()
- {
- $this->calls[] = array( __FUNCTION__, func_get_args() );
- }
- }
- ?>
|