Listing 9
void draw_with_clips(SWFSprite *movieclip,float ox,float oy,float xr,float yr,
double rot,const char *prefix){
double total=std::accumulate(data.begin(),data.end(),0.0, get_value);
if(total<=0.0)return;
size_t cnt=1;
for(const_iterator i=data.begin();i!=data.end();++i,++cnt){
double arc=(i->value/total)*M_PI*2;
SWFSprite *clip=new SWFSprite();
i->appearance.draw_pie_slice(clip,ox,oy,rot,rot+arc,xr,yr);
rot+=arc;
clip->nextFrame();
SWFDisplayItem *item=movieclip->add(clip);
char name[64];
sprintf(name,"%s%d",prefix,cnt);
item->setName(name);
}
}