ConFoo: Call for paper is now Open

# SWFShape::drawLineTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawLineToDraws a line

### Descrierea

void SWFShape::drawLineTo ( float `\$x` , float `\$y` )
Avertizare

Această funcție este EXPERIMENTALĂ. Comportamentul acestei funcții, denumirea sa și orice alte aspecte documentate în privința acestei funcții pot să fie modificate fără preaviz într-o versiune viitoare a PHP. Utilizați această funcție la propriul risc.

swfshape::setrightfill() draws a line (using the current line style, set by swfshape::setline()) from the current pen position to point (`x`,`y`) in the shape's coordinate space.

### Valorile întoarse

Nu este întoarsă nici o valoare.

### Vedeți de asemenea

``` If you have the error <<drawlineto(): failed assertion>> : Ming can't handel drawLineToTo if the distance from the previous point is over 8276.7 pixels (mesured empiriticaly) in the vertical or horizontal axis Why ? Coordinates in SWF are in twips (20 twips = 1 pixel) and 2^16 = 65536 = 3276.8 * 20 So we can assume that coordinates of drawLineTo in SWf are relatives to the previous point, and take 16 bits (plus the sign). Or it can be ming that brings this limitation These measures have been made with ming_setScale(20.00000000); This issue doesn't seem to occur with movePenTo Here's how you can handle this : <?php function splitForMing(\$x1, \$y1, \$x2, \$y2) {   \$res = array();   \$nbSegments =  floor(max(abs(\$x2 - \$x1), abs(\$y2 - \$y1)) / 3276) + 1;   for(\$i = 1; \$i < \$nbSegments ; \$i++) { // (\$nbSegments - 1) iterations in the loop : the 1st point is assumed to have been already processed ; the last one is already known             \$res[] = array(\$x1 + (\$x2 - \$x1) * \$i / \$nbSegments, \$y1 + (\$y2 - \$y1) * \$i / \$nbSegments);   }   \$res[] = array(\$x2, \$y2);   return \$res; } ming_setScale(20.00000000); ming_useswfversion(6); // With ming 0.3 \$movie = new SWFMovie(); \$movie->setDimension(20000,8000); \$movie->setBackground(0xcc, 0xcc, 0xcc ); \$movie->setRate(24); \$polygone = new SWFShape(); \$polygone->setRightFill(\$polygone->addFill(0xff, 0, 0)); \$polygone->setLine(20, 0x7f, 0, 0); \$polygone->movePenTo(10000, 500); // No split needed for movePenTo \$tmp = splitForMing(10000, 500, 15000, 500); for( \$i = 0 ; \$i < count(\$tmp) ; \$i++) {      \$polygone->drawLineTo(\$tmp[\$i][0], \$tmp[\$i][1]); // C } \$tmp = splitForMing(15000, 500, 15000, 5500); for( \$i = 0 ; \$i < count(\$tmp) ; \$i++) {      \$polygone->drawLineTo(\$tmp[\$i][0], \$tmp[\$i][1]); // C } \$tmp = splitForMing(15000, 5500, 10000, 500); for( \$i = 0 ; \$i < count(\$tmp) ; \$i++) {      \$polygone->drawLineTo(\$tmp[\$i][0], \$tmp[\$i][1]); // C } \$polygone->drawLineTo(15000, 15000); \$ajout = \$movie->add(\$polygone); \$ajout->setName("test"); \$movie->output(); ?> ```