/*********************************************************************** * background-color.cpp - Sets the background color palette * * * * This file is part of the Final Cut widget toolkit * * * * Copyright 2019 Markus Gans * * * * The Final Cut is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public License * * as published by the Free Software Foundation; either version 3 of * * the License, or (at your option) any later version. * * * * The Final Cut is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this program. If not, see * * . * ***********************************************************************/ #include #include #include using finalcut::FPoint; using finalcut::FSize; //---------------------------------------------------------------------- // class Background //---------------------------------------------------------------------- class Background : public finalcut::FDialog { public: explicit Background (finalcut::FWidget* = nullptr); private: // Callback method void cb_changed (finalcut::FWidget*, FDataPtr); // Data members finalcut::FSpinBox red{this}; finalcut::FSpinBox green{this}; finalcut::FSpinBox blue{this}; finalcut::FButton quit{"&Quit", this}; }; //---------------------------------------------------------------------- Background::Background (finalcut::FWidget* parent) : FDialog(parent) { // Dialog settings setText ("Background color palette"); setGeometry (FPoint(25, 5), FSize(32, 9)); // Spin boxes red.setGeometry (FPoint(2, 2), FSize(7, 1)); red.setLabelOrientation (finalcut::FLineEdit::label_above); red.setLabelText ("Red"); red.setRange (0, 255); red.setValue (0x80); green.setGeometry (FPoint(12, 2), FSize(7, 1)); green.setLabelOrientation (finalcut::FLineEdit::label_above); green.setLabelText ("Green"); green.setRange (0, 255); green.setValue (0xa4); blue.setGeometry (FPoint(22, 2), FSize(7, 1)); blue.setLabelOrientation (finalcut::FLineEdit::label_above); blue.setLabelText ("Blue"); blue.setRange (0, 255); blue.setValue (0xec); // Set the initial palette values const auto& wc = getFWidgetColors(); finalcut::FTerm::setPalette ( wc.term_bg , red.getValue() , green.getValue() , blue.getValue() ); // Quit button quit.setGeometry(FPoint(19, 5), FSize(10, 1)); // Add some function callbacks quit.addCallback ( "clicked", F_METHOD_CALLBACK (this, &finalcut::FApplication::cb_exitApp) ); red.addCallback ( "changed", F_METHOD_CALLBACK (this, &Background::cb_changed) ); green.addCallback ( "changed", F_METHOD_CALLBACK (this, &Background::cb_changed) ); blue.addCallback ( "changed", F_METHOD_CALLBACK (this, &Background::cb_changed) ); } //---------------------------------------------------------------------- void Background::cb_changed (finalcut::FWidget*, FDataPtr) { const auto& wc = getFWidgetColors(); finalcut::FTerm::setPalette ( wc.term_bg , red.getValue() , green.getValue() , blue.getValue() ); redraw(); updateTerminal(); } //---------------------------------------------------------------------- // main part //---------------------------------------------------------------------- int main (int argc, char* argv[]) { finalcut::FApplication app(argc, argv); Background dialog(&app); app.setMainWidget(&dialog); dialog.show(); return app.exec(); }