diff -r bd595ad770fc -r 1c2f13fd785c web/enmi/Zend/Pdf/Canvas/Interface.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/enmi/Zend/Pdf/Canvas/Interface.php Thu Jan 20 19:30:54 2011 +0100 @@ -0,0 +1,493 @@ + => array( + * => , + * => , + * => , + * ... + * ), + * => array( + * => , + * => , + * => , + * ... + * ), + * ... + * 'ProcSet' => array() + * ) + * + * where ProcSet array is a list of used procedure sets names (strings). + * Allowed procedure set names: 'PDF', 'Text', 'ImageB', 'ImageC', 'ImageI' + * + * @internal + * @return array + */ + public function getResources(); + + /** + * Get drawing instructions stream + * + * It has to be returned as a PDF stream object to make it reusable. + * + * @internal + * @returns Zend_Pdf_Resource_ContentStream + */ + public function getContents(); + + /** + * Return canvas height. + * + * @return float + */ + public function getHeight(); + + /** + * Return canvas width. + * + * @return float + */ + public function getWidth(); + + /** + * Draw a canvas at the specified location + * + * If upper right corner is not specified then canvas heght and width + * are used. + * + * @param Zend_Pdf_Canvas_Interface $canvas + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawCanvas(Zend_Pdf_Canvas_Interface $canvas, $x1, $y1, $x2 = null, $y2 = null); + + /** + * Set fill color. + * + * @param Zend_Pdf_Color $color + * @return Zend_Pdf_Canvas_Interface + */ + public function setFillColor(Zend_Pdf_Color $color); + + /** + * Set line color. + * + * @param Zend_Pdf_Color $color + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineColor(Zend_Pdf_Color $color); + + /** + * Set line width. + * + * @param float $width + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineWidth($width); + + /** + * Set line dashing pattern + * + * Pattern is an array of floats: array(on_length, off_length, on_length, off_length, ...) + * or Zend_Pdf_Page::LINE_DASHING_SOLID constant + * Phase is shift from the beginning of line. + * + * @param mixed $pattern + * @param array $phase + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineDashingPattern($pattern, $phase = 0); + + /** + * Set current font. + * + * @param Zend_Pdf_Resource_Font $font + * @param float $fontSize + * @return Zend_Pdf_Canvas_Interface + */ + public function setFont(Zend_Pdf_Resource_Font $font, $fontSize); + + /** + * Set the style to use for future drawing operations on this page + * + * @param Zend_Pdf_Style $style + * @return Zend_Pdf_Canvas_Interface + */ + public function setStyle(Zend_Pdf_Style $style); + + /** + * Get current font. + * + * @return Zend_Pdf_Resource_Font $font + */ + public function getFont(); + + /** + * Get current font size + * + * @return float $fontSize + */ + public function getFontSize(); + + /** + * Return the style, applied to the page. + * + * @return Zend_Pdf_Style|null + */ + public function getStyle(); + + /** + * Save the graphics state of this page. + * This takes a snapshot of the currently applied style, position, clipping area and + * any rotation/translation/scaling that has been applied. + * + * @throws Zend_Pdf_Exception - if a save is performed with an open path + * @return Zend_Pdf_Page + */ + public function saveGS(); + + /** + * Set the transparancy + * + * $alpha == 0 - transparent + * $alpha == 1 - opaque + * + * Transparency modes, supported by PDF: + * Normal (default), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, + * SoftLight, Difference, Exclusion + * + * @param float $alpha + * @param string $mode + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Canvas_Interface + */ + public function setAlpha($alpha, $mode = 'Normal'); + + /** + * Intersect current clipping area with a circle. + * + * @param float $x + * @param float $y + * @param float $radius + * @param float $startAngle + * @param float $endAngle + * @return Zend_Pdf_Canvas_Interface + */ + public function clipCircle($x, $y, $radius, $startAngle = null, $endAngle = null); + + /** + * Intersect current clipping area with a polygon. + * + * Method signatures: + * drawEllipse($x1, $y1, $x2, $y2); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + * + * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0 + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param float $startAngle + * @param float $endAngle + * @return Zend_Pdf_Canvas_Interface + */ + public function clipEllipse($x1, $y1, $x2, $y2, $startAngle = null, $endAngle = null); + + /** + * Intersect current clipping area with a polygon. + * + * @param array $x - array of float (the X co-ordinates of the vertices) + * @param array $y - array of float (the Y co-ordinates of the vertices) + * @param integer $fillMethod + * @return Zend_Pdf_Canvas_Interface + */ + public function clipPolygon($x, $y, $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING); + + /** + * Intersect current clipping area with a rectangle. + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function clipRectangle($x1, $y1, $x2, $y2); + + /** + * Draw a circle centered on x, y with a radius of radius. + * + * Method signatures: + * drawCircle($x, $y, $radius); + * drawCircle($x, $y, $radius, $fillType); + * drawCircle($x, $y, $radius, $startAngle, $endAngle); + * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType); + * + * + * It's not a really circle, because PDF supports only cubic Bezier curves. + * But _very_ good approximation. + * It differs from a real circle on a maximum 0.00026 radiuses + * (at PI/8, 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 and 15*PI/8 angles). + * At 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 and 7*PI/4 it's exactly a tangent to a circle. + * + * @param float $x + * @param float $y + * @param float $radius + * @param mixed $param4 + * @param mixed $param5 + * @param mixed $param6 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawCircle($x, $y, $radius, $param4 = null, $param5 = null, $param6 = null); + + /** + * Draw an ellipse inside the specified rectangle. + * + * Method signatures: + * drawEllipse($x1, $y1, $x2, $y2); + * drawEllipse($x1, $y1, $x2, $y2, $fillType); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType); + * + * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0 + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param mixed $param5 + * @param mixed $param6 + * @param mixed $param7 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawEllipse($x1, $y1, $x2, $y2, $param5 = null, $param6 = null, $param7 = null); + + /** + * Draw an image at the specified position on the page. + * + * @param Zend_Pdf_Image $image + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2); + + /** + * Draw a LayoutBox at the specified position on the page. + * + * @internal (not implemented now) + * + * @param Zend_Pdf_Element_LayoutBox $box + * @param float $x + * @param float $y + * @return Zend_Pdf_Canvas_Interface + */ + public function drawLayoutBox($box, $x, $y); + + /** + * Draw a line from x1,y1 to x2,y2. + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawLine($x1, $y1, $x2, $y2); + + /** + * Draw a polygon. + * + * If $fillType is Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE or + * Zend_Pdf_Page::SHAPE_DRAW_FILL, then polygon is automatically closed. + * See detailed description of these methods in a PDF documentation + * (section 4.4.2 Path painting Operators, Filling) + * + * @param array $x - array of float (the X co-ordinates of the vertices) + * @param array $y - array of float (the Y co-ordinates of the vertices) + * @param integer $fillType + * @param integer $fillMethod + * @return Zend_Pdf_Canvas_Interface + */ + public function drawPolygon($x, $y, + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE, + $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING); + /** + * Draw a rectangle. + * + * Fill types: + * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) + * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle + * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param integer $fillType + * @return Zend_Pdf_Canvas_Interface + */ + public function drawRectangle($x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE); + + /** + * Draw a rounded rectangle. + * + * Fill types: + * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) + * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle + * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle + * + * radius is an integer representing radius of the four corners, or an array + * of four integers representing the radius starting at top left, going + * clockwise + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param integer|array $radius + * @param integer $fillType + * @return Zend_Pdf_Canvas_Interface + */ + public function drawRoundedRectangle($x1, $y1, $x2, $y2, $radius, + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE); + + /** + * Draw a line of text at the specified position. + * + * @param string $text + * @param float $x + * @param float $y + * @param string $charEncoding (optional) Character encoding of source text. + * Defaults to current locale. + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Canvas_Interface + */ + public function drawText($text, $x, $y, $charEncoding = ''); + + /** + * Close the path by drawing a straight line back to it's beginning. + * + * @internal (needs implementation) + * + * @throws Zend_Pdf_Exception - if a path hasn't been started with pathMove() + * @return Zend_Pdf_Canvas_Interface + */ + public function pathClose(); + + /** + * Continue the open path in a straight line to the specified position. + * + * @internal (needs implementation) + * + * @param float $x - the X co-ordinate to move to + * @param float $y - the Y co-ordinate to move to + * @return Zend_Pdf_Canvas_Interface + */ + public function pathLine($x, $y); + + /** + * Start a new path at the specified position. If a path has already been started, + * move the cursor without drawing a line. + * + * @internal (needs implementation) + * + * @param float $x - the X co-ordinate to move to + * @param float $y - the Y co-ordinate to move to + * @return Zend_Pdf_Canvas_Interface + */ + public function pathMove($x, $y); + + /** + * Rotate the page. + * + * @param float $x - the X co-ordinate of rotation point + * @param float $y - the Y co-ordinate of rotation point + * @param float $angle - rotation angle + * @return Zend_Pdf_Canvas_Interface + */ + public function rotate($x, $y, $angle); + + /** + * Scale coordination system. + * + * @param float $xScale - X dimention scale factor + * @param float $yScale - Y dimention scale factor + * @return Zend_Pdf_Canvas_Interface + */ + public function scale($xScale, $yScale); + + /** + * Translate coordination system. + * + * @param float $xShift - X coordinate shift + * @param float $yShift - Y coordinate shift + * @return Zend_Pdf_Canvas_Interface + */ + public function translate($xShift, $yShift); + + /** + * Translate coordination system. + * + * @param float $x - the X co-ordinate of axis skew point + * @param float $y - the Y co-ordinate of axis skew point + * @param float $xAngle - X axis skew angle + * @param float $yAngle - Y axis skew angle + * @return Zend_Pdf_Canvas_Interface + */ + public function skew($x, $y, $xAngle, $yAngle); + + /** + * Writes the raw data to the page's content stream. + * + * Be sure to consult the PDF reference to ensure your syntax is correct. No + * attempt is made to ensure the validity of the stream data. + * + * @param string $data + * @param string $procSet (optional) Name of ProcSet to add. + * @return Zend_Pdf_Canvas_Interface + */ + public function rawWrite($data, $procSet = null); +}