A Mac-specific class that can create and embed an NSView inside itself. More...
Inherits Component.
Public Member Functions | |
| NSViewComponent () | |
| Create an initially-empty container. | |
| ~NSViewComponent () | |
| Destructor. | |
| void | setView (void *nsView) |
| Assigns an NSView to this peer. | |
| void * | getView () const |
| Returns the current NSView. | |
| void | resizeToFitView () |
| Resizes this component to fit the view that it contains. | |
| void | paint (Graphics &g) |
| Components can override this method to draw their content. | |
A Mac-specific class that can create and embed an NSView inside itself.
To use it, create one of these, put it in place and make sure it's visible in a window, then use setView() to assign an NSView to it. The view will then be moved and resized to follow the movements of this component.
Of course, since the view is a native object, it'll obliterate any juce components that may overlap this component, but that's life.
| NSViewComponent::NSViewComponent | ( | ) |
Create an initially-empty container.
| NSViewComponent::~NSViewComponent | ( | ) |
Destructor.
| void NSViewComponent::setView | ( | void * | nsView ) |
Assigns an NSView to this peer.
The view will be retained and released by this component for as long as it is needed. To remove the current view, just call setView (nullptr).
Note: a void* is used here to avoid including the cocoa headers as part of the juce.h, but the method expects an NSView*.
| void* NSViewComponent::getView | ( | ) | const |
Returns the current NSView.
Note: a void* is returned here to avoid including the cocoa headers as a requirement of juce.h, so you should just cast the object to an NSView*.
| void NSViewComponent::resizeToFitView | ( | ) |
Resizes this component to fit the view that it contains.
| void NSViewComponent::paint | ( | Graphics & | g ) | [virtual] |
Components can override this method to draw their content.
The paint() method gets called when a region of a component needs redrawing, either because the component's repaint() method has been called, or because something has happened on the screen that means a section of a window needs to be redrawn.
Any child components will draw themselves over whatever this method draws. If you need to paint over the top of your child components, you can also implement the paintOverChildren() method to do this.
If you want to cause a component to redraw itself, this is done asynchronously - calling the repaint() method marks a region of the component as "dirty", and the paint() method will automatically be called sometime later, by the message thread, to paint any bits that need refreshing. In Juce (and almost all modern UI frameworks), you never redraw something synchronously.
You should never need to call this method directly - to take a snapshot of the component you could use createComponentSnapshot() or paintEntireComponent().
| g | the graphics context that must be used to do the drawing operations. |
Reimplemented from Component.