-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.html
executable file
·163 lines (140 loc) · 7.72 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<!-- BEGIN META TAG INFO -->
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="home" href="http://developer.apple.com/">
<link rel="find" href="http://developer.apple.com/search/">
<link rel="stylesheet" type="text/css" href="../../documentation/css/adcstyle.css" title="fonts">
<script language="JavaScript" src="../../documentation/js/adc.js" type="text/javascript"></script>
<!-- END META TAG INFO -->
<!-- BEGIN TITLE -->
<title>GLChildWindowDemo</title>
<!-- END TITLE -->
<script language="JavaScript">
function JumpToNewPage() {
window.location=document.scpopupmenu.gotop.value;
return true;
}
</script>
</head>
<!-- BEGIN BODY OPEN -->
<body><a name="//apple_ref/doc/uid/DTS10000526" title="GLChildWindowDemo"></a>
<!--END BODY OPEN -->
<!-- START CENTER OPEN -->
<center>
<!-- END CENTER OPEN -->
<!-- BEGIN LOGO AND SEARCH -->
<!--#include virtual="/includes/adcnavbar"-->
<!-- END LOGO AND SEARCH -->
<!-- START BREADCRUMB -->
<div id="breadcrumb">
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td scope="row"><img width="340" height="10" src="images/1dot.gif" alt=""></td>
<td><img width="340" height="10" src="images/1dot.gif" alt=""></td>
</tr>
<tr valign="middle">
<td align="left" colspan="2">
<a href="http://developer.apple.com/">ADC Home</a> > <a href="../../referencelibrary/index.html">Reference Library</a> > <a href="../../samplecode/index.html">Sample Code</a> > <a href="../../samplecode/GraphicsImaging/index.html">Graphics & Imaging</a> > <a href="../../samplecode/GraphicsImaging/idxOpenGL-date.html">OpenGL</a> >
</td>
</tr>
<tr>
<td colspan="2" scope="row"><img width="680" height="35" src="images/1dot.gif" alt=""></td>
</tr>
</table>
</div>
<!-- END BREADCRUMB -->
<!-- START MAIN CONTENT -->
<!-- START TITLE GRAPHIC AND INTRO-->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td><h1><div id="pagehead">GLChildWindowDemo</div></h1></td>
</tr>
</table>
<!-- END TITLE GRAPHIC AND INTRO -->
<!-- START WIDE COLUMN -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td id="scdetails">
<p><strong>Version:</strong> 1.0</p>
<p><strong>Posted:</strong> 2003-04-21</p>
<p><strong>Build Requirements:</strong> N/A</p>
<p><strong>Runtime Requirements:</strong> Mac OS X ProjectBuilder, Mac OS X 10.2 or later.</p>
<form name="scpopupmenu" onSubmit="return false;" method=post>
<p><strong>View Source Code:</strong>
<select name="gotop" onChange="JumpToNewPage();" style="width:340px"><option selected value="ingnore">Select File</option>
<option value="listing1.html">/Demo2DOverlayView.h</option>
<option value="listing2.html">/Demo2DOverlayView.m</option>
<option value="listing3.html">/DemoController.h</option>
<option value="listing4.html">/DemoController.m</option>
<option value="listing5.html">/DemoGLOverlayView.h</option>
<option value="listing6.html">/DemoGLOverlayView.m</option>
<option value="listing7.html">/DemoGLView.h</option>
<option value="listing8.html">/DemoGLView.m</option>
<option value="listing9.html">/DemoOverlayView.h</option>
<option value="listing10.html">/DemoOverlayView.m</option>
<option value="listing11.html">/DemoWindow.h</option>
<option value="listing12.html">/DemoWindow.m</option>
<option value="listing13.html">/GLChildWindowDemo_main.m</option>
<option value="listing14.html">/NSViewOverlays.h</option>
<option value="listing15.html">/NSViewOverlays.m</option>
<option value="listing16.html">/ReadMe.txt</option></select>
</p>
</form>
<p><strong><a href="GLChildWindowDemo.zip">Download Sample</a></strong> (“GLChildWindowDemo.zip”, 51.9K)<BR>
<strong><a href="GLChildWindowDemo.dmg">Download Sample</a></strong> (“GLChildWindowDemo.dmg”, 93.3K)</p>
</td>
</tr>
<tr>
<td scope="row"><img width="680" height="10" src="images/1dot.gif" alt=""><br>
<img height="1" width="680" src="images/1dot_919699.gif" alt=""><br>
<img width="680" height="20" src="images/1dot.gif" alt=""></td>
</tr>
<tr>
<td scope="row">
<h2>Description</h2>
<p>This demo shows off a way of using Cocoa's child windows along with Quartz Extreme to provide 2D or 3D overlays above 3D content. The user interface is fairly straightforward, with some colorwell objects on the right to let you play with the OpenGL lighting on the cube, a radio button to switch between 2D and 3D overlay, and a checkbox to make the background of the 3D cube view opaque or transparent. The 2D and 3D overlay views both do basically the same thing, except that the 2D code also does a little bit of text rendering. The DemoOverlayView superclass handles the line animation, while the Demo2DOverlayView and DemoGLOverlayView subclasses handle the actual drawing for the two different rendering APIs. Probably the most interesting code lives in the NSViewOverlays.m source file. This code contains a number of utility NSWindow and NSView subclasses that help implement a category on NSView that adds the ability to transparently add an "overlay" view to another view. The API is actually very small and should be obvious in it's use (check out NSViewOverlays.h for the API). Getting everything right can be a little bit tricky, and this code goes to great lengths to ensure a flicker-free display when resizing the content along with the child windows. This app uses a convenient call in Carbon.framework that can be used to temporarily disable screen updates while we repaint a number of windows and views. Once that's done, screen updates are re-enabled and everything is updated on the screen at once. Comments and bugs are welcome at: <http://developer.apple.com/bugreporter> Requirements: ProjectBuilder, Mac OS X 10.2 or later. Keywords: OpenGL, Cocoa, child window</p>
<h2>Document Revision History</h2>
<table cellspacing="0" class="graybox" width="680">
<tr>
<th width="100">Date</th>
<th width="580">Notes</th>
</tr>
<tr><td scope="row">2003-04-21</td><td>Shows using Cocoa's child windows and Quartz Extreme to provide 2D/3D overlays above 3D content. </td></tr>
</table>
</td>
</tr>
</table>
<!-- END WIDE COLUMN -->
<!-- END MAIN CONTENT -->
<table width="680" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><div style="width: 100%; height: 1px; background-color: #919699; margin-top: 5px; margin-bottom: 15px"></div></td>
</tr>
<tr>
<td align="center"><br/>
<table border="0" cellpadding="0" cellspacing="0" class="graybox">
<tr>
<th>Did this document help you?</th>
</tr>
<tr>
<td>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=1&url=/samplecode/GLChildWindowDemo/index.html%3Fid%3DDTS10000526-1.0&media=dvd" target=_new>Yes</a>: Tell us what works for you.</div>
<div style="margin-bottom: 8px"><a href="http://developer.apple.com/feedback/?v=2&url=/samplecode/GLChildWindowDemo/index.html%3Fid%3DDTS10000526-1.0&media=dvd" target=_new>It’s good, but:</a> Report typos, inaccuracies, and so forth.</div>
<div><a href="http://developer.apple.com/feedback/?v=3&url=/samplecode/GLChildWindowDemo/index.html%3Fid%3DDTS10000526-1.0&media=dvd" target=_new>It wasn’t helpful</a>: Tell us what would have helped.</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- START BOTTOM APPLE NAVIGATION -->
<!--#include virtual="/includes/footer"-->
<!-- END BOTTOM APPLE NAVIGATION -->
<!-- START CENTER CLOSE -->
</center>
<!-- END CENTER CLOSE -->
</body>
</html>