@@ -370,6 +370,12 @@ var CCLScripting = function(workerUrl){
370370 this . __defineSetter__ ( "y" , function ( f ) {
371371 this . setY ( f ) ;
372372 } ) ;
373+ this . __defineGetter__ ( "x" , function ( f ) {
374+ return data . x ;
375+ } ) ;
376+ this . __defineGetter__ ( "y" , function ( f ) {
377+ return data . y ;
378+ } ) ;
373379 this . __defineGetter__ ( "text" , function ( f ) {
374380 return this . DOM . textContent ;
375381 } ) ;
@@ -468,7 +474,8 @@ var CCLScripting = function(workerUrl){
468474 } ;
469475 this . fill = {
470476 fill :"none" ,
471- alpha :1
477+ alpha :1 ,
478+ fillRule :"nonzero"
472479 } ;
473480 var toRGB = function ( number ) {
474481 var string = parseInt ( number ) . toString ( 16 ) ;
@@ -497,7 +504,8 @@ var CCLScripting = function(workerUrl){
497504 var applyFill = function ( p , ref ) {
498505 __ ( p , {
499506 "fill" : ref . fill . fill ,
500- "fill-opacity" : ref . fill . alpha
507+ "fill-opacity" : ref . fill . alpha ,
508+ "fill-rule" : ref . fill . fillRule
501509 } ) ;
502510 } ;
503511
@@ -572,6 +580,53 @@ var CCLScripting = function(workerUrl){
572580 applyStroke ( state . lastPath , this ) ;
573581 }
574582 } ;
583+ this . drawPath = function ( params ) {
584+ var commands = params [ 0 ] ;
585+ var data = params [ 1 ] ;
586+ this . fill . fillRule = ( params [ 2 ] === "nonZero" ? "nonzero" : "evenodd" ) ;
587+ var d = "M0 0" ;
588+ for ( var i = 0 ; i < commands . length ; i ++ ) {
589+ switch ( commands [ i ] ) {
590+ default :
591+ case 0 :{
592+ /* NoOp x0 */
593+ continue ;
594+ } break ;
595+ case 1 : {
596+ /* MoveTo x2 */
597+ d += " M" + data . splice ( 0 , 2 ) . join ( " " ) ;
598+ } break ;
599+ case 2 : {
600+ /* LineTo x2 */
601+ d += " L" + data . splice ( 0 , 2 ) . join ( " " ) ;
602+ } break ;
603+ case 3 : {
604+ /* CurveTo x4 */
605+ d += " Q" + data . splice ( 0 , 4 ) . join ( " " ) ;
606+ } break ;
607+ case 4 : {
608+ /* wide MoveTo x4 */
609+ data . splice ( 0 , 2 ) ;
610+ d += " M" + data . splice ( 0 , 2 ) . join ( " " ) ;
611+ } break ;
612+ case 5 : {
613+ /* wide LineTo x4 */
614+ data . splice ( 0 , 2 ) ;
615+ d += " L" + data . splice ( 0 , 2 ) . join ( " " ) ;
616+ } break ;
617+ case 6 : {
618+ /* CubicCurveTo x6 */
619+ d += " C" + data . splice ( 0 , 6 ) . join ( " " ) ;
620+ } break ;
621+ }
622+ } ;
623+ var path = __ ( "path" , {
624+ "d" : d
625+ } ) ;
626+ applyFill ( path , this ) ;
627+ applyStroke ( path , this ) ;
628+ defaultGroup . appendChild ( path ) ;
629+ } ;
575630 this . beginFill = function ( params ) {
576631 if ( params . length === 0 )
577632 return ;
0 commit comments