/** * @brief Changes the default animation name of the sprite. * @param default_animation_name The new default animation name. */ void SpriteModel::set_default_animation_name( const QString& default_animation_name) { QString old_default_animation_name = get_default_animation_name(); if (default_animation_name == old_default_animation_name) { return; } sprite.set_default_animation_name(default_animation_name.toStdString()); emit default_animation_changed( old_default_animation_name, default_animation_name); // Notify data change Index old_index(old_default_animation_name); Index new_index(default_animation_name); if (animation_exists(old_index)) { QModelIndex model_index = get_model_index(old_index); emit dataChanged(model_index, model_index); } if (animation_exists(new_index)) { QModelIndex model_index = get_model_index(new_index); emit dataChanged(model_index, model_index); } }
void NetCdfConfigureDialog::reverseNorthSouth(double* data, size_t width, size_t height) { double* cp_array = new double[width*height]; for (size_t i=0; i<height; i++) { for (size_t j=0; j<width; j++) { size_t old_index((width*height)-(width*(i+1))); size_t new_index(width*i); cp_array[new_index+j] = data[old_index+j]; } } size_t length(height*width); for (size_t i=0; i<length; i++) data[i] = cp_array[i]; delete[] cp_array; }
ReedMullerSystematicCoder::ReedMullerSystematicCoder(int order, int length_power) : ReedMullerCoder(order, length_power), signal_permutation_(std::valarray<bool>(signal_length_ * signal_length_)), signal_inverse_permutation_(std::valarray<bool>(signal_length_ * signal_length_)), code_permutation_(std::valarray<bool>(code_length_ * code_length_)), code_inverse_permutation_(std::valarray<bool>(code_length_ * code_length_)) { // Finding the new order of columns from generator matrix making it triangular. // The value -1 means this element wasn't processed. std::vector<int> new_index(code_length_, -1); std::vector<int> old_index(code_length_, -1); for (int new_column = 0; new_column < signal_length_; ++new_column) { for (int old_column = 0; old_column < code_length_; ++old_column) { if (Weight(generator_[std::slice(new_column * code_length_ + old_column, signal_length_ - new_column, code_length_)]) == 1 && Weight(generator_[std::slice((new_column + 1) * code_length_ + old_column, signal_length_ - new_column - 1, code_length_)]) == 0) { new_index[new_column] = old_column; old_index[old_column] = new_column; break; } } } // Permutation of columns from generator matrix for (int new_column = signal_length_; new_column < code_length_; ++new_column) { for (int old_column = 0; old_column < code_length_; ++old_column) { if (old_index[old_column] == -1) { new_index[new_column] = old_column; old_index[old_column] = new_column; break; } } } for (int row = 0; row < code_length_; ++row) { code_permutation_[row * code_length_ + old_index[row]] = 1; code_inverse_permutation_[row * code_length_ + new_index[row]] = 1; } for (int column = 0; column < signal_length_; ++column) { signal_inverse_permutation_[std::slice(column, signal_length_, signal_length_)] = generator_[std::slice(new_index[column], signal_length_, code_length_)]; } // Filling signal_permutation_ by rows since source matrix have triangular form. // Product of signal_permutation_ and square submatrix of generator matrix with // new order of columns must be the identity matrix. std::valarray<bool> permutation_row(signal_length_); std::valarray<bool> generator_column(signal_length_); int element_value = 0; for (int row = 0; row < signal_length_; ++row) { for (int column = 0; column < signal_length_; ++column) { permutation_row = signal_permutation_[std::slice(row * signal_length_, signal_length_, 1)]; generator_column = generator_[std::slice(new_index[column], signal_length_, code_length_)]; // Product of permutation row and generator column must be 1 on diagonal and 0 else. element_value = (Weight(permutation_row * generator_column) % 2) != (row == column); signal_permutation_[row * signal_length_ + column] = element_value; } } }