| 
							- /*
 -  * Copyright (C) 2018-2019 Rob van den Berg <rghvdberg at gmail dot org>
 -  *
 -  * This file is part of CharacterCompressor
 -  *
 -  * Nnjas2 is free software: you can redistribute it and/or modify
 -  * it under the terms of the GNU General Public License as published by
 -  * the Free Software Foundation, either version 3 of the License, or
 -  * (at your option) any later version.
 -  *
 -  * CharacterCompressor 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 General Public License for more details.
 -  *
 -  * You should have received a copy of the GNU General Public License
 -  * along with CharacterCompressor.  If not, see <https://www.gnu.org/licenses/>.
 -  */
 - 
 - #include "NanoButton.hpp"
 - #include "Window.hpp"
 - 
 - START_NAMESPACE_DISTRHO
 - 
 - Button::Button(Widget *parent, Callback *cb)
 -     : NanoWidget(parent),
 -       fCallback(cb),
 -       buttonActive(false)
 - {
 -     loadSharedResources();
 -     fNanoFont = findFont(NANOVG_DEJAVU_SANS_TTF);
 -     labelColor = Color(255, 255, 255);
 -     backgroundColor = Color(32,32,32);
 -     Label = "button";
 - }
 - 
 - void Button::onNanoDisplay()
 - {
 -     auto w = getWidth();
 -     auto h = getHeight();
 -     auto margin = 1.0f;
 - 
 -     // Background
 -     beginPath();
 -     fillColor(backgroundColor);
 -     strokeColor(borderColor);
 -     rect(margin, margin, w - 2 * margin, h-2*margin);
 -     fill();
 -     stroke();
 -     closePath();
 - 
 -     //Label
 -     beginPath();
 -     fontFaceId(fNanoFont);
 -     fontSize(14);
 -     fillColor(labelColor);
 -     Rectangle<float> bounds;
 -     textBounds(0, 0, Label.c_str(), NULL, bounds);
 -     // float tw = bounds.getWidth();
 -     // float th = bounds.getHeight();
 -     float tx = w / 2.0f ;
 -     float ty = h / 2.0f;
 -     textAlign(ALIGN_CENTER | ALIGN_MIDDLE);
 - 
 -     fillColor(255, 255, 255, 255);
 -     text(tx, ty, Label.c_str(), NULL);
 -     closePath();
 - }
 - 
 - void Button::setLabel(std::string label)
 - {
 -     Label = label;
 - }
 - 
 - void Button::setLabelColor(const Color color)
 - {
 -     labelColor = color;
 -     borderColor = color;
 - }
 - void Button::setBackgroundColor(const Color color)
 - {
 -     backgroundColor = color;
 - }
 - 
 - bool Button::onMouse(const MouseEvent &ev)
 - {
 -     if (ev.press & contains(ev.pos))
 -     {
 -         buttonActive = true;
 -         setLabelColor(labelColor);     
 -         fCallback->buttonClicked(this, true);
 -         return true;
 -     }
 -     else if (buttonActive)
 -     {
 -         buttonActive = false;
 -         //setLabelColor(Color(128,128,128));
 -         return true;
 -     }
 - 
 -     return false;
 - }
 - 
 - END_NAMESPACE_DISTRHO
 
 
  |