void draw(SWFSprite *movieclip,float ox,float oy,float xr,
float yr,double rot){
double total=std::accumulate(data.begin(),data.end(),0.0, get_value);
if(total<=0.0)return;
for(const_iterator i=data.begin();i!=data.end();++i){
double arc=(i->value/total)*M_PI*2;
i->appearance.draw_pie_slice(movieclip,ox,oy,rot,rot+arc,xr,yr);
rot+=arc;
}
}