/* TranslationEditorDialog::onRBColourSelected * Called when the 'colour gradient' translation type radio button is * selected *******************************************************************/ void TranslationEditorDialog::onRBColourSelected(wxCommandEvent& e) { // Swap to target colour panel showGradientTarget(); // If a range is selected int index = list_translations->GetSelection(); if (index >= 0) { // Remove it translation.removeRange(index); // Recreate it translation.addRange(TRANS_COLOUR, index); TransRangeColour* tr = (TransRangeColour*)translation.getRange(index); // Origin range tr->setOStart(pal_canvas_original->getSelectionStart()); tr->setOEnd(pal_canvas_original->getSelectionEnd()); // Target colour gradient wxColour sc = cp_range_begin->GetColour(); wxColour ec = cp_range_end->GetColour(); tr->setDStart(rgba_t(sc.Red(), sc.Green(), sc.Blue())); tr->setDEnd(rgba_t(ec.Red(), ec.Green(), ec.Blue())); // Update UI updateListItem(index); openRange(index); updatePreviews(); } }
/* TranslationEditorDialog::setEndColour * Sets the current translation range's destination ending colour * to [col] *******************************************************************/ void TranslationEditorDialog::setEndColour(rgba_t col) { // Get currently selected translation range TransRange* tr = translation.getRange(list_translations->GetSelection()); // Check its type if (tr->getType() == TRANS_COLOUR) { // Colour range TransRangeColour* tcr = (TransRangeColour*)tr; // Set destination end colour tcr->setDEnd(col); } else if (tr->getType() == TRANS_DESAT) { // Desaturated colour range TransRangeDesat* tdr = (TransRangeDesat*)tr; // Determine end colour float er = MathStuff::clamp(col.r / 127.0f, 0, 2); float eg = MathStuff::clamp(col.g / 127.0f, 0, 2); float eb = MathStuff::clamp(col.b / 127.0f, 0, 2); // Set destination end colour tdr->setDEnd(er, eg, eb); } // Set gradient box end colour gb_gradient->setEndCol(col); // Update UI gb_gradient->Refresh(); updateListItem(list_translations->GetSelection()); updatePreviews(); }