/* * Copyright (C) 2018-2019 Rob van den Berg * * 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 . */ #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 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