1 /* 2 * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 #import <Cocoa/Cocoa.h> 27 28 #import <OpenGL/gl.h> 29 #import <OpenGL/OpenGL.h> 30 31 @protocol GlassOffscreenProtocol 32 33 // as destination (to draw into) 34 - (void)bindForWidth:(GLuint)width andHeight:(GLuint)height; 35 36 // as source (to show) 37 - (GLuint)texture; 38 - (void)blitForWidth:(GLuint)width andHeight:(GLuint)height; 39 40 - (GLuint)width; 41 - (GLuint)height; 42 - (GLuint)fbo; 43 44 @end 45 46 @interface GlassOffscreen : NSObject <GlassOffscreenProtocol> 47 { 48 CGLContextObj _ctx; 49 CGLContextObj _ctxToRestore; 50 51 id<GlassOffscreenProtocol> _offscreen; 52 53 GLboolean _dirty; 54 55 GLfloat _backgroundR; 56 GLfloat _backgroundG; 57 GLfloat _backgroundB; 58 GLfloat _backgroundA; 59 60 CAOpenGLLayer* _layer; 61 } 62 63 - (id)initWithContext:(CGLContextObj)ctx; 64 - (CGLContextObj)getContext; 65 66 - (void)setBackgroundColor:(NSColor*)color; 67 68 - (void)blit; 69 - (GLuint)texture; 70 71 - (CAOpenGLLayer*)getLayer; 72 - (void)setLayer:(CAOpenGLLayer*)new_layer; 73 74 - (GLboolean)isDirty; 75 76 - (void)blitFromOffscreen:(GlassOffscreen*) other_offscreen; 77 78 @end