CL_CollisionOutline::CL_CollisionOutline( CL_IODevice &file, const CL_String &file_extension, int alpha_limit, CL_OutlineAccuracy accuracy, bool get_insides) { if( file_extension == "out" ) { CL_SharedPtr<CL_CollisionOutline_Generic> new_impl(new CL_CollisionOutline_Generic( new CL_OutlineProviderFile(file), accuracy_raw )); impl = new_impl; } else { CL_PixelBuffer pbuf = CL_ImageProviderFactory::load(file, file_extension); if( pbuf.get_format() == cl_rgba8 ) { CL_SharedPtr<CL_CollisionOutline_Generic> new_impl(new CL_CollisionOutline_Generic( new CL_OutlineProviderBitmap(pbuf, alpha_limit, get_insides), accuracy)); impl = new_impl; } else { CL_SharedPtr<CL_CollisionOutline_Generic> new_impl(new CL_CollisionOutline_Generic( new CL_OutlineProviderBitmap(pbuf, alpha_limit, get_insides), accuracy_raw)); impl = new_impl; } } set_rotation_hotspot(origin_center); }
CL_CollisionOutline::CL_CollisionOutline( const CL_PixelBuffer &pbuf, int alpha_limit, CL_OutlineAccuracy accuracy) : impl(new CL_CollisionOutline_Generic()) { if( pbuf.get_format() == cl_rgba8 ) { CL_SharedPtr<CL_CollisionOutline_Generic> new_impl(new CL_CollisionOutline_Generic( new CL_OutlineProviderBitmap(pbuf, alpha_limit), accuracy)); impl = new_impl; } else { CL_SharedPtr<CL_CollisionOutline_Generic> new_impl(new CL_CollisionOutline_Generic( new CL_OutlineProviderBitmap(pbuf, alpha_limit), accuracy_raw)); impl = new_impl; } set_rotation_hotspot(origin_center); }
void TAO_FTEC_Group_Manager::add_member ( const FTRT::ManagerInfo & info, CORBA::ULong object_group_ref_version) { TAO_FTRTEC::Log(1, ACE_TEXT("add_member location = <%s>\n"), (const char*)info.the_location[0].id); auto_ptr<TAO_FTEC_Group_Manager_Impl> new_impl(new TAO_FTEC_Group_Manager_Impl); new_impl->my_position = impl_->my_position; size_t pos = impl_->info_list.length(); new_impl->info_list.length(pos+1); for (size_t i = 0; i < pos; ++i) { new_impl->info_list[i] = impl_->info_list[i]; } new_impl->info_list[pos] = info; GroupInfoPublisherBase* publisher = GroupInfoPublisher::instance(); GroupInfoPublisherBase::Info_ptr group_info ( publisher->setup_info(new_impl->info_list, new_impl->my_position, object_group_ref_version)); int last_one = (impl_->my_position == impl_->info_list.length()-1); if (!last_one) { // I am not the last of replica, tell my successor that // a new member has joined in. try{ FTRTEC::Replication_Service::instance()->add_member(info, object_group_ref_version); } catch (const CORBA::Exception&){ // Unable to send request to all the successors. // Now this node become the last replica of the object group. // update the info list again new_impl->info_list.length(new_impl->my_position+2); new_impl->info_list[new_impl->my_position+1] = info; /// group_info = publisher->set_info(..) should be enough. /// However, GCC 2.96 is not happy with that. GroupInfoPublisherBase::Info_ptr group_info1 ( publisher->setup_info(new_impl->info_list, new_impl->my_position, object_group_ref_version)); ACE_auto_ptr_reset(group_info, group_info1.release()); last_one = true; } } if (last_one) { // this is the last replica in the list // synchornize the state with the newly joined replica. FtRtecEventChannelAdmin::EventChannelState state; get_state(state); TAO_OutputCDR cdr; cdr << state; FTRT::State s; if (cdr.begin()->cont()) { ACE_Message_Block* blk; ACE_NEW_THROW_EX(blk, ACE_Message_Block, CORBA::NO_MEMORY()); ACE_CDR::consolidate(blk, cdr.begin()); #if (TAO_NO_COPY_OCTET_SEQUENCES == 1) s.replace(blk->length(), blk); #else // If the replace method is not available, we will need // to do the copy manually. First, set the octet sequence length. CORBA::ULong length = blk->length (); s.length (length); // Now copy over each byte. char* base = blk->data_block ()->base (); for(CORBA::ULong i = 0; i < length; i++) { s[i] = base[i]; } #endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */ blk->release(); } else { #if (TAO_NO_COPY_OCTET_SEQUENCES == 1) s.replace(cdr.begin()->length(), cdr.begin()); #else // If the replace method is not available, we will need // to do the copy manually. First, set the octet sequence length. CORBA::ULong length = cdr.begin ()->length (); s.length (length); // Now copy over each byte. char* base = cdr.begin()->data_block ()->base (); for(CORBA::ULong i = 0; i < length; i++) { s[i] = base[i]; } #endif /* TAO_NO_COPY_OCTET_SEQUENCES == 1 */ } TAO_FTRTEC::Log(2, ACE_TEXT("Setting state\n")); info.ior->set_state(s); info.ior->create_group(new_impl->info_list, object_group_ref_version); TAO_FTRTEC::Log(2, ACE_TEXT("After create_group\n")); } // commit the changes IOGR_Maker::instance()->set_ref_version( object_group_ref_version ); publisher->update_info(group_info); delete impl_; impl_ = new_impl.release(); }