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);
    }
}