void ShapeMaker::curveToR( double _cx, double _cy, double ax, double ay ) { int cx = roundX(factorx * ( _cx ) ); int cy = roundY(factory * ( _cy ) ); int x = roundX(factorx * ( ax - _cx ) ); int y = roundY(factory * ( ay - _cy) ); smoothx = lastx + _cx; smoothy = lasty + _cy; diffx += cx + x; diffy += cy + y; CurveTo *segment = new CurveTo; segment->setType(2); segment->setbits( SWFMaxBitsNeeded( true, 4, x, y, cx, cy ) ); segment->setx1( cx ); segment->sety1( cy ); segment->setx2( x ); segment->sety2( y ); edges->append( segment ); minmax( x+cx+(lastx*factorx), y+cy+(lasty*factory) ); lastx += ax; lasty += ay; smoothx = ax - _cx; smoothy = ay - _cy; }
void ShapeMaker::lineToR(double _x, double _y) { int x = roundX(factorx * (_x)); int y = roundY(factory * (_y)); diffx += x; diffy += y; SWF::LineTo *segment = new SWF::LineTo; segment->setType(1); segment->setx(x); segment->sety(y); edges->append(segment); minmax(x+(lastx*factorx), y+(lasty*factory)); lastx += _x; lasty += _y; }
void ShapeMaker::doSetup( double _x, double _y, bool hasMoveTo, int _fillStyle0, int _fillStyle1, int _lineStyle ) { // append shapesetup (whithout styles, this is glyph only for now) ShapeSetup *setup = new ShapeSetup; if( _fillStyle0 != -1 ) { setup->setfillStyle0( _fillStyle0 ); setup->sethasFillStyle0( 1 ); } if( _fillStyle1 != -1 ) { setup->setfillStyle1( _fillStyle1 ); setup->sethasFillStyle1( 1 ); } if( _lineStyle != -1 ) { setup->setlineStyle( _lineStyle ); setup->sethasLineStyle( 1 ); } if( hasMoveTo ) { roundReset(); int x = roundX(factorx * ( _x ) ); int y = roundY(factory * ( _y ) ); diffx = diffy = 0; setup->setxybits( SWFMaxBitsNeeded( true, 2, x, y ) ); setup->sethasMoveTo( 1 ); setup->setx( x ); setup->sety( y ); minmax( x, y ); lastx = _x; lasty = _y; lastsetupx = _x; lastsetupy = _y; } edges->append( setup ); // fprintf(stderr,"setup %i/%i\n", x, y ); }