Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Destruktor i Try .. Catch

Ostatnio zmodyfikowano 2026-04-06 23:21
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
» 2026-04-06 22:48:14
Działa ponieważ przy każdym wywołaniu funkcji dla sliderów nakładany jest efekt na _edited_layers. W tym przypadku ustawiana wartość dla sliderów to 0,0 i one resetują - nakładają zero efektu na _edited_layers. Więc przywracane są resetowane warstwy. Dlatego wygląda jakby kod był poprawny. Zaraz to poprawię :-)
P-184030
tBane
Temat założony przez niniejszego użytkownika
» 2026-04-06 23:21:58
Ostatecznie tak sie prezentuje destruktor z poprawnym try .. catch

C/C++
Dialog_Brightness_Contrast::~Dialog_Brightness_Contrast() {
   
   
try {
       
if( Dialog_Brightness_Contrast::_state == BrightnessContrastState::Idle ) {
           
_brightness_slider->setValue( 0 );
           
_contrast_slider->setValue( 0 );
           
           
getCurrentAnimation()->getCurrentFrame()->_layers.clear();
           
getCurrentAnimation()->getCurrentFrame()->_layers = _original_layers; // przywracane są orginalne warstwy :-)
           
layers_panel->loadLayersFromCurrentFrame();
       
}
       
else {
           
// is Edited
           
if( selection->_state == SelectionState::Selected ) {
               
sf::Image original_image = getCurrentAnimation()->getCurrentLayer()->_image;
               
pasteImageWithMask( getCurrentAnimation()->getCurrentLayer()->_image, * selection->_resizedImage, selection->_resizedRect.position.x, selection->_resizedRect.position.y, * selection->_resizedMaskImage,( toolbar->_option_transparency->_checkbox->_value == 0 ) ? sf::Color::Transparent
                    : toolbar->_second_color->_color );
               
history->saveStep();
               
canvas->_isEdited = true;
               
selection->normalize( selection->_resizedRect );
               
getCurrentAnimation()->getCurrentLayer()->_image = original_image;
           
}
           
else {
               
history->saveStep();
           
}
        }
    }
   
catch( const std::exception & e ) {
       
std::cerr << "Exception in Dialog_Brightness_Contrast destructor: " << e.what() << std::endl;
   
}
   
catch( ... ) {
       
std::cerr << "Unknown exception in Dialog_Brightness_Contrast destructor" << std::endl;
   
}
}
P-184031
1 « 2 »
Poprzednia strona Strona 2 z 2