bool XYVirtualKeyboard::a2zkey_clicked(int unicode, int key) { #ifdef XYINPUT alreadyInputLetters.append(QChar(unicode).toLower()); search_begin(alreadyInputLetters); #else search_begin(alreadyInputLetters); if (alreadyInputLetters.size() > 26) // 如果查询内容太长google库崩溃 { return true; } alreadyInputLetters += QChar(unicode); unsigned cand_num = googlePinyin->search(alreadyInputLetters.toLower()); translateHView->dataStrings.clear(); for (unsigned i = 0; i < cand_num; i++) { QString str = googlePinyin->get_candidate(i); translateHView->dataStrings.append(str); } translateHView->move(0, 0); translateHView->update(); loadLetterLabel(); #endif return true; }
bool XYVirtualKeyboard::backspace_clicked() { #ifdef XYINPUT if (!alreadyInputLetters.isEmpty()) { alreadyInputLetters = alreadyInputLetters.left(alreadyInputLetters.size() - 1); if (!alreadyInputLetters.isEmpty()) { search_begin(alreadyInputLetters); } else { clear_history(); } } #else if (letterLabel->text().isEmpty()) { return false; } unsigned cand_num; int already_cand_num = alreadySelectTranslates.size(); if (already_cand_num > 0) { // remove last choose alreadySelectTranslates.removeLast(); cand_num = googlePinyin->unchoose(); } else { // remove last input key int spell_len = alreadyInputLetters.length(); alreadyInputLetters.truncate(spell_len - 1); cand_num = googlePinyin->del_search(spell_len - 1); } if (cand_num == 0) { search_closure(); } else { translateHView->dataStrings.clear(); for (unsigned i = 0; i < cand_num; i++) { QString str = googlePinyin->get_candidate(i); translateHView->dataStrings.append(str); } translateHView->move(0, 0); translateHView->update(); } loadLetterLabel(); #endif return true; }
void XonoticPlayerModelSelector_configureXonoticPlayerModelSelector(entity me) { float sortbuf, glob, i; string fn; glob = search_begin(language_filename(get_model_datafilename(string_null, -1, "txt")), TRUE, TRUE); if (glob < 0) return; me.configureXonoticImage(me, string_null, -1); sortbuf = buf_create(); for(i = 0; i < search_getsize(glob); ++i) { // select model #i! fn = search_getfilename(glob, i); if(!get_model_parameters(fn, -1)) continue; bufstr_add(sortbuf, sprintf("%-128s%s", get_model_parameters_name, fn), 1); } search_end(glob); buf_sort(sortbuf, 128, 0); me.numModels = buf_getsize(sortbuf); me.bufModels = buf_create(); for(i = 0; i < me.numModels; ++i) { fn = substring(bufstr_get(sortbuf, i), 128, -1); if(!get_model_parameters(fn, -1)) error("But it JUST worked!"); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_TITLE, get_model_parameters_name); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_IMAGE, strcat("/", substring(get_model_datafilename(get_model_parameters_modelname, get_model_parameters_modelskin, "tga"), 0, -5))); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_MODEL, get_model_parameters_modelname); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_SKIN, ftos(get_model_parameters_modelskin)); get_model_parameters_desc = strcat(get_model_parameters_desc, "\n"); if(get_model_parameters_sex) get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nSex: %s", get_model_parameters_sex)); if(get_model_parameters_weight) get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nWeight: %g kg", get_model_parameters_weight)); if(get_model_parameters_age) get_model_parameters_desc = strcat(get_model_parameters_desc, sprintf("\nAge: %g", get_model_parameters_age)); while(substring(get_model_parameters_desc, -1, 1) == "\n") get_model_parameters_desc = substring(get_model_parameters_desc, 0, -2); bufstr_set(me.bufModels, BUFMODELS_COUNT*i+BUFMODELS_DESC, get_model_parameters_desc); } buf_del(sortbuf); get_model_parameters(string_null, 0); me.loadCvars(me); // this will select the initial model, depending on the current cvars me.go(me, 0); // this will set the vars for the selected model }
void add( const mass_point_vector_type &mp ) { if( m_indices.size() != mp.size() ) m_indices.resize( mp.size() ); if( m_permutated_indices.size() != mp.size() ) m_permutated_indices.resize( mp.size() ); thrust::counting_iterator<unsigned int> search_begin(0); // determine the index of each particle thrust::transform( mp.begin() , mp.end() , m_indices.begin() , mp_to_indices( m_num_of_bins , m_height , m_x_min , m_x_max ) ); // sort according to the indices thrust::copy( search_begin , search_begin + mp.size() , m_permutated_indices.begin() ); thrust::sort_by_key( m_indices.begin() , m_indices.end() , m_permutated_indices.begin() ); // calculate the center of mass velocity of each bins thrust::reduce_by_key( m_indices.begin() , m_indices.end() , thrust::make_transform_iterator( thrust::make_permutation_iterator( mp.begin() , m_permutated_indices.begin() ) , mp_to_vel() ) , m_keys.begin() , m_av.begin() ); // add the center of mass velocity to the bins thrust::transform( m_bins.begin() , m_bins.end() , m_av.begin() , m_bins.begin() , thrust::plus< point_type >() ); // find the beginning of each bucket's list of points thrust::lower_bound( m_indices.begin() , m_indices.end() , search_begin , search_begin + m_num_of_bins + 1 , m_bucket_begin.begin() ); // find the end of each bucket's list of points thrust::upper_bound( m_indices.begin(), m_indices.end() , search_begin , search_begin + m_num_of_bins + 1 , m_bucket_end.begin() ); // take the difference between bounds to find each bucket’s size thrust::transform( m_bucket_end.begin() , m_bucket_end.end() , m_bucket_begin.begin() , m_bucket_sizes.begin() , thrust::minus<unsigned int>() ); // add the bucket size to the counts thrust::transform( m_counts.begin() , m_counts.end() , m_bucket_sizes.begin() , m_counts.begin() , thrust::plus< size_type >() ); }
void NexuizDemoList_getDemos(entity me) { string s; if(me.filterString) //subdirectory in filterString allowed s=strcat("demos/*", me.filterString, "*.dem"); else s="demos/*.dem"; //dprint("Search demos with the pattern ", s, "\n"); if(me.listDemo >= 0) search_end(me.listDemo); me.listDemo = search_begin(s, FALSE, TRUE); if(me.listDemo < 0) me.nItems=0; else me.nItems=search_getsize(me.listDemo); }
void InstantAction_LoadMap(entity btn, entity dummy) { float glob, i, n, fh; string s; glob = search_begin("maps/*.instantaction", TRUE, TRUE); if(glob < 0) return; i = ceil(random() * search_getsize(glob)) - 1; fh = fopen(search_getfilename(glob, i), FILE_READ); search_end(glob); if(fh < 0) return; while((s = fgets(fh))) { if(substring(s, 0, 4) == "set ") s = substring(s, 4, strlen(s) - 4); n = tokenize_console(s); if(argv(0) == "bot_number") cvar_set("bot_number", argv(1)); else if(argv(0) == "skill") cvar_set("skill", argv(1)); else if(argv(0) == "timelimit") cvar_set("timelimit_override", argv(1)); else if(argv(0) == "fraglimit") cvar_set("fraglimit_override", argv(1)); else if(argv(0) == "changelevel") { fclose(fh); localcmd("\nmenu_loadmap_prepare\n"); MapInfo_SwitchGameType(MAPINFO_TYPE_DEATHMATCH); MapInfo_LoadMap(argv(1)); cvar_set("lastlevel", "1"); return; } } fclose(fh); }
void regions(cuda::Param<T> out, cuda::CParam<char> in, cudaTextureObject_t tex) { const dim3 threads(THREADS_X, THREADS_Y); const int blk_x = divup(in.dims[0], threads.x*2); const int blk_y = divup(in.dims[1], threads.y*2); const dim3 blocks(blk_x, blk_y); CUDA_LAUNCH((initial_label<T,n_per_thread>), blocks, threads, out, in); POST_LAUNCH_CHECK(); int h_continue = 1; while (h_continue) { h_continue = 0; CUDA_CHECK(cudaMemcpyToSymbolAsync(continue_flag, &h_continue, sizeof(int), 0, cudaMemcpyHostToDevice, cuda::getActiveStream())); CUDA_LAUNCH((update_equiv<T, 16, n_per_thread, full_conn>), blocks, threads, out, tex); POST_LAUNCH_CHECK(); CUDA_CHECK(cudaMemcpyFromSymbolAsync(&h_continue, continue_flag, sizeof(int), 0, cudaMemcpyDeviceToHost, cuda::getActiveStream())); CUDA_CHECK(cudaStreamSynchronize(cuda::getActiveStream())); } // Now, perform the final relabeling. This converts the equivalency // map from having unique labels based on the lowest pixel in the // component to being sequentially numbered components starting at // 1. int size = in.dims[0] * in.dims[1]; auto tmp = cuda::memAlloc<T>(size); CUDA_CHECK(cudaMemcpyAsync(tmp.get(), out.ptr, size * sizeof(T), cudaMemcpyDeviceToDevice, cuda::getActiveStream())); // Wrap raw device ptr thrust::device_ptr<T> wrapped_tmp = thrust::device_pointer_cast(tmp.get()); // Sort the copy THRUST_SELECT(thrust::sort, wrapped_tmp, wrapped_tmp + size); // Take the max element which is the number // of label assignments to compute. const int num_bins = wrapped_tmp[size - 1] + 1; // If the number of label assignments is two, // then either the entire input image is one big // component(1's) or it has only one component other than // background(0's). Either way, no further // post-processing of labels is required. if (num_bins<=2) return; cuda::ThrustVector<T> labels(num_bins); // Find the end of each section of values thrust::counting_iterator<T> search_begin(0); THRUST_SELECT(thrust::upper_bound, wrapped_tmp, wrapped_tmp + size, search_begin, search_begin + num_bins, labels.begin()); THRUST_SELECT(thrust::adjacent_difference, labels.begin(), labels.end(), labels.begin()); // Operators for the scan clamp_to_one<T> clamp; thrust::plus<T> add; // Perform scan -- this computes the correct labels for each component THRUST_SELECT(thrust::transform_exclusive_scan, labels.begin(), labels.end(), labels.begin(), clamp, 0, add); // Apply the correct labels to the equivalency map CUDA_LAUNCH((final_relabel<T,n_per_thread>), blocks,threads, out, in, thrust::raw_pointer_cast(&labels[0])); POST_LAUNCH_CHECK(); }