nuclear@6: /* nuclear@6: GoatKit - a themable/animated widget toolkit for games nuclear@6: Copyright (C) 2014 John Tsiombikas nuclear@6: nuclear@6: This program is free software: you can redistribute it and/or modify nuclear@6: it under the terms of the GNU Lesser General Public License as published by nuclear@6: the Free Software Foundation, either version 3 of the License, or nuclear@6: (at your option) any later version. nuclear@6: nuclear@6: This program is distributed in the hope that it will be useful, nuclear@6: but WITHOUT ANY WARRANTY; without even the implied warranty of nuclear@6: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nuclear@6: GNU Lesser General Public License for more details. nuclear@6: nuclear@6: You should have received a copy of the GNU Lesser General Public License nuclear@6: along with this program. If not, see . nuclear@6: */ nuclear@6: #include "checkbox.h" nuclear@6: #include "boolanm.h" nuclear@6: nuclear@6: namespace goatkit { nuclear@6: nuclear@6: struct CheckBoxImpl { nuclear@6: BoolAnim checked; nuclear@6: }; nuclear@6: nuclear@6: CheckBox::CheckBox() nuclear@6: { nuclear@6: cbox = new CheckBoxImpl; nuclear@6: cbox->checked = false; nuclear@6: cbox->checked.set_transition_duration(60); nuclear@6: } nuclear@6: nuclear@6: CheckBox::~CheckBox() nuclear@6: { nuclear@6: delete cbox; nuclear@6: } nuclear@6: nuclear@6: const char *CheckBox::get_type_name() const nuclear@6: { nuclear@6: return "checkbox"; nuclear@6: } nuclear@6: nuclear@6: nuclear@6: void CheckBox::check() nuclear@6: { nuclear@6: cbox->checked.change(true); nuclear@6: } nuclear@6: nuclear@6: void CheckBox::uncheck() nuclear@6: { nuclear@6: cbox->checked.change(false); nuclear@6: } nuclear@6: nuclear@6: float CheckBox::get_checked() const nuclear@6: { nuclear@6: return cbox->checked.get_value(); nuclear@6: } nuclear@6: nuclear@6: bool CheckBox::is_checked() const nuclear@6: { nuclear@6: return cbox->checked.get_state(); nuclear@6: } nuclear@6: nuclear@6: void CheckBox::toggle() nuclear@6: { nuclear@6: if(is_checked()) { nuclear@6: uncheck(); nuclear@6: } else { nuclear@6: check(); nuclear@6: } nuclear@6: } nuclear@6: nuclear@6: void CheckBox::on_click() nuclear@6: { nuclear@6: toggle(); nuclear@6: nuclear@6: Event ev; nuclear@6: ev.type = EV_CHANGE; nuclear@6: handle_event(ev); nuclear@6: } nuclear@6: nuclear@6: } // namespace goatkit