/*========================================================================= Program: bbtk Module: $RCSfile: bbwxColourSelectorButton.cxx,v $ Language: C++ Date: $Date: 2008/11/25 11:17:25 $ Version: $Revision: 1.7 $ =========================================================================*/ /* --------------------------------------------------------------------- * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux * * This software is governed by the CeCILL-B license under French law and * abiding by the rules of distribution of free software. You can use, * modify and/ or redistribute the software under the terms of the CeCILL-B * license as circulated by CEA, CNRS and INRIA at the following URL * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited * liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. * ------------------------------------------------------------------------ */ /** * \file * \brief Short description in one line * * Long * description * */ #ifdef _USE_WXWIDGETS_ #include "bbwxColourSelectorButton.h" #include "bbwxPackage.h" namespace bbwx { //------------------------------------------------------------------------- wxColourPickerCtrlWidget::wxColourPickerCtrlWidget( ColourSelectorButton* box, wxWindow *parent, unsigned char cr, unsigned char cg, unsigned char cb ) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL), mBox(box) { bbtkDebugMessage("Process",9,"=> wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<SetPickerCtrlGrowable(false); picker->SetTextCtrlGrowable(false); Connect ( picker->GetId(), wxEVT_COMMAND_COLOURPICKER_CHANGED, wxColourPickerEventHandler( wxColourPickerCtrlWidget::OnColorChange ) ); bbtkDebugMessage("Process",9,"<= wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"< AddGrowableRow(0); sizer -> Add( picker, 1, wxEXPAND, 0 ); panel -> SetSizer(sizer); } wxColourPickerCtrlWidget::~wxColourPickerCtrlWidget() { } //--------------------------------------------------------------------- void wxColourPickerCtrlWidget::OnColorChange(wxColourPickerEvent& e) { UpdateBox(); } //--------------------------------------------------------------------- void wxColourPickerCtrlWidget::UpdateBox() { char col[100]; wxColour c = picker->GetColour(); sprintf(col,"%f %f %f",c.Red()/255.,c.Green()/255.,c.Blue()/255.); // std::cout << col << std::endl; ColourSelectorButton* b = (ColourSelectorButton*)mBox; b->bbSetOutputOut( col ); b->bbSignalOutputModification("Out"); } //-------------------------------------------------------------------------- //------------------------------------------------------------------------- // WxBlackBox implementation //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- BBTK_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox); BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelectorButton); void ColourSelectorButton::bbUserConstructor() { bbSetInputIn("1 1 1"); bbSetOutputOut("1 1 1"); bbSetOutputWidget(0); } void ColourSelectorButton::Process() { wxColourPickerCtrlWidget* w = ( wxColourPickerCtrlWidget* )bbGetOutputWidget(); if (w) { w->UpdateBox(); } else { bbSetOutputOut(bbGetInputIn()); } } /** * \brief Create wxWidget . * * */ void ColourSelectorButton::CreateWidget(wxWindow* parent) { float r,g,b; sscanf( bbGetInputIn().c_str(), "%f %f %f", &r, &g ,&b); unsigned char cr,cg,cb; cr = (unsigned char)(255.*r); cg = (unsigned char)(255.*g); cb = (unsigned char)(255.*b); wxColourPickerCtrlWidget* w = new wxColourPickerCtrlWidget(this, //bbGetWxParent() , parent, cr , cg , cb ); bbSetOutputWidget( w ); } } //namespace bbwx #endif // _USE_WXWIDGETS_