problem converting a drawable to an image with JUCE

53 views Asked by At

I'm trying to render a Drawable to an Image with JUCE and not sure why it's not working. In the code below, which doesn't show any errors or warnings, I get a Drawable from an SVG file and draw it to the upper left of the screen (greenImageDrawable -> drawWithin(g, juce::Rectangle<float>(0, 0, 10, 10), juce::RectanglePlacement::centred, 1.0f);). That part works fine. But the Image (greenImage) doesn't appear. I've tried this with various SVG files. I'm suspecting there's something wrong with the line greenImageDrawable -> draw(g, 1.0f);

#pragma once

#include <JuceHeader.h>

class MainComponent  : public juce::Component
{
public:
    MainComponent() {
        setSize (1000, 1000);
        juce::File svgFile(GreenSVGName);
        greenImageDrawable = juce::Drawable::createFromSVGFile(svgFile);
        greenImage = juce::Image(juce::Image::PixelFormat::ARGB, 200, 200, true);
        juce::Graphics g(greenImage);
        greenImageDrawable -> draw(g, 1.0f);
    }
    ~MainComponent() override {}

    //==============================================================================
    void paint (juce::Graphics& g) override {
        g.fillAll (juce::Colours::white);
        greenImageDrawable -> drawWithin(g, juce::Rectangle<float>(0, 0, 10, 10), juce::RectanglePlacement::centred, 1.0f);
        g.drawImageAt(greenImage, 100, 100);
    }
    void resized() override
    {

    }

private:
    juce::Image greenImage;
    juce::MouseCursor customCursor;
    juce::String GreenSVGName = "/Users/nathanschmidt/Juce Demo/Palestrina/whole_note.svg";
    
    std::unique_ptr<juce::Drawable> greenImageDrawable;
    
    //==============================================================================

    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent)
};


0

There are 0 answers