void TextLookAndFeel::drawToggleButton(Graphics& g, ToggleButton& button, bool isMouseOverButton, bool isButtonDown) { if (button.getToggleState()) g.setColour(Colour(0xffffc400)); else g.setColour(Colour(0xff313131)); g.fillRect(button.getLocalBounds()); g.setColour(Colour(0xff565656)); g.drawRect(button.getLocalBounds()); if (isButtonDown) { g.setColour(Colour(0x11000000)); g.fillRect(button.getLocalBounds()); } else if (isMouseOverButton) { g.setColour(Colour(0x11ffffff)); g.fillRect(button.getLocalBounds()); } }
void ProjucerLookAndFeel::drawToggleButton (Graphics& g, ToggleButton& button, bool isMouseOverButton, bool isButtonDown) { ignoreUnused (isMouseOverButton, isButtonDown); if (! button.isEnabled()) g.setOpacity (0.5f); bool isTextEmpty = button.getButtonText().isEmpty(); bool isPropertyComponentChild = (dynamic_cast<BooleanPropertyComponent*> (button.getParentComponent()) != nullptr); auto bounds = button.getLocalBounds(); auto sideLength = isPropertyComponentChild ? 25 : bounds.getHeight(); auto rectBounds = isTextEmpty ? bounds : bounds.removeFromLeft (jmin (sideLength, bounds.getWidth() / 3)); rectBounds = rectBounds.withSizeKeepingCentre (sideLength, sideLength).reduced (4); g.setColour (button.findColour (ToggleButton::tickDisabledColourId)); g.drawRoundedRectangle (rectBounds.toFloat(), 2.0f, 1.0f); if (button.getToggleState()) { g.setColour (button.findColour (ToggleButton::tickColourId)); const auto tick = getTickShape (0.75f); g.fillPath (tick, tick.getTransformToScaleToFit (rectBounds.reduced (2).toFloat(), false)); } if (! isTextEmpty) { bounds.removeFromLeft (5); const auto fontSize = jmin (15.0f, button.getHeight() * 0.75f); g.setFont (fontSize); g.setColour (isPropertyComponentChild ? findColour (widgetTextColourId) : button.findColour (ToggleButton::textColourId)); g.drawFittedText (button.getButtonText(), bounds, Justification::centredLeft, 2); } }