1 /*
2   ==============================================================================
3 
4    This file is part of the JUCE library.
5    Copyright (c) 2020 - Raw Material Software Limited
6 
7    JUCE is an open source library subject to commercial or open-source
8    licensing.
9 
10    By using JUCE, you agree to the terms of both the JUCE 6 End-User License
11    Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
12 
13    End User License Agreement: www.juce.com/juce-6-licence
14    Privacy Policy: www.juce.com/juce-privacy-policy
15 
16    Or: You may also use this code under the terms of the GPL v3 (see
17    www.gnu.org/licenses).
18 
19    JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20    EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21    DISCLAIMED.
22 
23   ==============================================================================
24 */
25 
26 namespace juce
27 {
28 
29 //==============================================================================
30 /**
31     A type of ImagePixelData that stores its image data in an OpenGL
32     framebuffer, allowing a JUCE Image object to wrap a framebuffer.
33 
34     By creating an Image from an instance of an OpenGLFrameBufferImage,
35     you can then use a Graphics object to draw into the framebuffer using normal
36     JUCE 2D operations.
37 
38     @see Image, ImageType, ImagePixelData, OpenGLFrameBuffer
39 
40     @tags{OpenGL}
41 */
42 class JUCE_API  OpenGLImageType     : public ImageType
43 {
44 public:
45     OpenGLImageType();
46     ~OpenGLImageType() override;
47 
48     ImagePixelData::Ptr create (Image::PixelFormat, int width, int height, bool shouldClearImage) const override;
49     int getTypeID() const override;
50 
51     static OpenGLFrameBuffer* getFrameBufferFrom (const Image&);
52 };
53 
54 } // namespace juce
55