Re: Two more demos - converted from exmaples in OpenGL redbook
Kang Zhao <[email protected]> Sat, 25 May 2013 10:31:04 +0800
| Newsgroups | gmane.comp.python.opengl.devel |
|---|---|
| Message-ID | <CAKChtJ24phWak=i5yBE6M3ZSQHifDoHS8i-YtJFa+oFrKvFpaA@mail.gmail.com> |
--001a11c231de0e068f04dd81b5ca Content-Type: multipart/alternative; boundary=001a11c231de0e068b04dd81b5c8 --001a11c231de0e068b04dd81b5c8 Content-Type: text/plain; charset=ISO-8859-1 Sorry that I realized the two .py files I atatched in previous mail contained some typos and obsolete codes. The updated files are attached. Kang On Sat, May 25, 2013 at 10:08 AM, Kang Zhao <[email protected]> wrote: > Hello developers, > > During my study of pyOpenGL, I converted two more examples in OpenGL > redbook with pyOpenGL, which I didn't find under "PyOpenGLDemo\redbook" > with PyOpenGLDemo package. The files are attached. > > Please feel free to include them into the PyOpenGLDemo package if you > don't see any issue. PS, I am not sure what is the right practice to > contribute such files, thus I simply email them to this list. > > You may find the codes are not perfectly Pythonic. I did it by intention > to keep the codes look the same as the original C code as possible. And > please feel free to polish them as needed - I am still on my way in > learning Python. :) > > Regards, > Kang > > --001a11c231de0e068b04dd81b5c8 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>Sorry that I realized the two .py files I atatched in= previous mail contained some typos and obsolete codes.<br><br></div>The up= dated files are attached.<br><br>Kang<br></div><div class=3D"gmail_extra"><= br> <br><div class=3D"gmail_quote">On Sat, May 25, 2013 at 10:08 AM, Kang Zhao = <span dir=3D"ltr"><<a href=3D"mailto:[email protected]" target=3D"_b= lank">[email protected]</a>></span> wrote:<br><blockquote class=3D"g= mail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-l= eft:1ex"> <div dir=3D"ltr"><div><div><div><div>Hello developers,<br><br></div>During = my study of pyOpenGL, I converted two more examples in OpenGL redbook=A0 wi= th pyOpenGL, which I didn't find under "PyOpenGLDemo\redbook"= with PyOpenGLDemo package. The files are attached. <br> <br></div>Please feel free to include them into the PyOpenGLDemo package if= you don't see any issue.=A0 PS, I am not sure what is the right practi= ce to contribute such files, thus I simply email them to this list.<br><br> </div>You may find the codes are not perfectly Pythonic. I did it by intent= ion to keep the codes look the same as the original C code as possible. And= please feel free to polish them as needed - I am still on my way in learni= ng Python. :)<br> <br></div><div>Regards,<br></div>Kang<br><br></div> </blockquote></div><br></div> --001a11c231de0e068b04dd81b5c8-- --001a11c231de0e068f04dd81b5ca Content-Type: application/octet-stream; name="select.py" Content-Disposition: attachment; filename="select.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hh46k0zp2 IyEvdXNyL2Jpbi9weXRob24NCg0KIyBUaGlzIGlzIHN0YXRlbWVudCBpcyByZXF1aXJlZCBieSB0 aGUgYnVpbGQgc3lzdGVtIHRvIHF1ZXJ5IGJ1aWxkIGluZm8NCmlmIF9fbmFtZV9fID09ICdfX2J1 aWxkX18nOg0KICAgIHJhaXNlIEV4Y2VwdGlvbg0KDQonJycNCnNlbGVjdC5jIGZyb20gdGhlIFJl ZGJvb2sgZXhhbXBsZXMuICANCkNvbnZlcnRlZCB0byBQeXRob24gYnkgS2FuZyBaaGFvICh6aGFv a2FuZy5jbkBnbWFpbC5jb20pIE1heSwyMDEzLg0KVGVzdGVkIHdpdGggUHlPcGVuR0wgMy4wLjIN Cg0KLyoNCiAqIENvcHlyaWdodCAoYykgMTk5My0xOTk5LCBTaWxpY29uIEdyYXBoaWNzLCBJbmMu DQogKiBBTEwgUklHSFRTIFJFU0VSVkVEIA0KICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1v ZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgDQogKiBhbnkgcHVycG9zZSBh bmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3Zl DQogKiBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGgg dGhlIGNvcHlyaWdodCBub3RpY2UNCiAqIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVh ciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IA0KICogdGhlIG5hbWUgb2Yg U2lsaWNvbiBHcmFwaGljcywgSW5jLiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZw0KICogb3Ig cHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRo b3V0IHNwZWNpZmljLA0KICogd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiANCiAqDQogKiBUSEUg TUFURVJJQUwgRU1CT0RJRUQgT04gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBUTyBZT1UgIkFT LUlTIg0KICogQU5EIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MsIElNUExJ RUQgT1IgT1RIRVJXSVNFLA0KICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdB UlJBTlRZIE9GIE1FUkNIQU5UQUJJTElUWSBPUg0KICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBJTiBOTyBFVkVOVCBTSEFMTCBTSUxJQ09ODQogKiBHUkFQSElDUywgSU5DLiAg QkUgTElBQkxFIFRPIFlPVSBPUiBBTllPTkUgRUxTRSBGT1IgQU5ZIERJUkVDVCwNCiAqIFNQRUNJ QUwsIElOQ0lERU5UQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPRiBBTlkN CiAqIEtJTkQsIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIsIElOQ0xVRElORyBXSVRIT1VUIExJ TUlUQVRJT04sDQogKiBMT1NTIE9GIFBST0ZJVCwgTE9TUyBPRiBVU0UsIFNBVklOR1MgT1IgUkVW RU5VRSwgT1IgVEhFIENMQUlNUyBPRg0KICogVEhJUkQgUEFSVElFUywgV0hFVEhFUiBPUiBOT1Qg U0lMSUNPTiBHUkFQSElDUywgSU5DLiAgSEFTIEJFRU4NCiAqIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggTE9TUywgSE9XRVZFUiBDQVVTRUQgQU5EIE9ODQogKiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQ0K ICogUE9TU0VTU0lPTiwgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQogKiAN CiAqIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgDQogKiBVc2UsIGR1cGxp Y2F0aW9uLCBvciBkaXNjbG9zdXJlIGJ5IHRoZSBHb3Zlcm5tZW50IGlzIHN1YmplY3QgdG8NCiAq IHJlc3RyaWN0aW9ucyBzZXQgZm9ydGggaW4gRkFSIDUyLjIyNy4xOShjKSgyKSBvciBzdWJwYXJh Z3JhcGgNCiAqIChjKSgxKShpaSkgb2YgdGhlIFJpZ2h0cyBpbiBUZWNobmljYWwgRGF0YSBhbmQg Q29tcHV0ZXIgU29mdHdhcmUNCiAqIGNsYXVzZSBhdCBERkFSUyAyNTIuMjI3LTcwMTMgYW5kL29y IGluIHNpbWlsYXIgb3Igc3VjY2Vzc29yDQogKiBjbGF1c2VzIGluIHRoZSBGQVIgb3IgdGhlIERP RCBvciBOQVNBIEZBUiBTdXBwbGVtZW50Lg0KICogVW5wdWJsaXNoZWQtLSByaWdodHMgcmVzZXJ2 ZWQgdW5kZXIgdGhlIGNvcHlyaWdodCBsYXdzIG9mIHRoZQ0KICogVW5pdGVkIFN0YXRlcy4gIENv bnRyYWN0b3IvbWFudWZhY3R1cmVyIGlzIFNpbGljb24gR3JhcGhpY3MsDQogKiBJbmMuLCAyMDEx IE4uICBTaG9yZWxpbmUgQmx2ZC4sIE1vdW50YWluIFZpZXcsIENBIDk0MDM5LTczMTEuDQogKg0K ICogT3BlbkdMKFIpIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgU2lsaWNvbiBHcmFwaGlj cywgSW5jLg0KICovDQoNCi8qDQogKiBzZWxlY3QuYw0KICogVGhpcyBpcyBhbiBpbGx1c3RyYXRp b24gb2YgdGhlIHNlbGVjdGlvbiBtb2RlIGFuZCANCiAqIG5hbWUgc3RhY2ssIHdoaWNoIGRldGVj dHMgd2hldGhlciBvYmplY3RzIHdoaWNoIGNvbGxpZGUgDQogKiB3aXRoIGEgdmlld2luZyB2b2x1 bWUuICBGaXJzdCwgZm91ciB0cmlhbmdsZXMgYW5kIGEgDQogKiByZWN0YW5ndWxhciBib3ggcmVw cmVzZW50aW5nIGEgdmlld2luZyB2b2x1bWUgYXJlIGRyYXduIA0KICogKGRyYXdTY2VuZSByb3V0 aW5lKS4gIFRoZSBncmVlbiB0cmlhbmdsZSBhbmQgeWVsbG93IA0KICogdHJpYW5nbGVzIGFwcGVh ciB0byBsaWUgd2l0aGluIHRoZSB2aWV3aW5nIHZvbHVtZSwgYnV0IA0KICogdGhlIHJlZCB0cmlh bmdsZSBhcHBlYXJzIHRvIGxpZSBvdXRzaWRlIGl0LiAgVGhlbiB0aGUgDQogKiBzZWxlY3Rpb24g bW9kZSBpcyBlbnRlcmVkIChzZWxlY3RPYmplY3RzIHJvdXRpbmUpLiAgDQogKiBEcmF3aW5nIHRv IHRoZSBzY3JlZW4gY2Vhc2VzLiAgVG8gc2VlIGlmIGFueSBjb2xsaXNpb25zIA0KICogb2NjdXIs IHRoZSBmb3VyIHRyaWFuZ2xlcyBhcmUgY2FsbGVkLiAgSW4gdGhpcyBleGFtcGxlLCANCiAqIHRo ZSBncmVlbiB0cmlhbmdsZSBjYXVzZXMgb25lIGhpdCB3aXRoIHRoZSBuYW1lIDEsIGFuZCANCiAq IHRoZSB5ZWxsb3cgdHJpYW5nbGVzIGNhdXNlIG9uZSBoaXQgd2l0aCB0aGUgbmFtZSAzLg0KICov DQoNCicnJw0KDQppbXBvcnQgc3lzICANCnRyeTogIA0KICAgIGZyb20gT3BlbkdMLkdMVVQgaW1w b3J0ICogIA0KICAgIGZyb20gT3BlbkdMLkdMIGltcG9ydCAqICANCiAgICBmcm9tIE9wZW5HTC5H TFUgaW1wb3J0ICogIA0KZXhjZXB0OiAgDQogICAgcHJpbnQgIkVSUk9SOiBQeU9wZW5HTCBub3Qg aW5zdGFsbGVkIHByb3Blcmx5LiIgIA0KICAgIHN5cy5leGl0KCkNCg0KZGVmIGRyYXdUcmlhbmds ZSAoIHgxLCAgeTEsICB4MiwgeTIsICB4MywgIHkzLCAgeik6DQogICAgZ2xCZWdpbiAoR0xfVFJJ QU5HTEVTKTsNCiAgICBnbFZlcnRleDNmICh4MSwgeTEsIHopOw0KICAgIGdsVmVydGV4M2YgKHgy LCB5Miwgeik7DQogICAgZ2xWZXJ0ZXgzZiAoeDMsIHkzLCB6KTsNCiAgICBnbEVuZCAoKTsNCg0K ZGVmIGRyYXdWaWV3Vm9sdW1lICh4MSwgeDIsICB5MSwgeTIsIHoxLCAgejIpOg0KICAgIGdsQ29s b3IzZiAoMS4wLCAxLjAsIDEuMCk7DQogICAgZ2xCZWdpbiAoR0xfTElORV9MT09QKTsNCiAgICBn bFZlcnRleDNmICh4MSwgeTEsIC16MSk7DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkxLCAtejEpOw0K ICAgIGdsVmVydGV4M2YgKHgyLCB5MiwgLXoxKTsNCiAgICBnbFZlcnRleDNmICh4MSwgeTIsIC16 MSk7DQogICAgZ2xFbmQgKCk7DQogICAgDQogICAgZ2xCZWdpbiAoR0xfTElORV9MT09QKTsNCiAg ICBnbFZlcnRleDNmICh4MSwgeTEsIC16Mik7DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkxLCAtejIp Ow0KICAgIGdsVmVydGV4M2YgKHgyLCB5MiwgLXoyKTsNCiAgICBnbFZlcnRleDNmICh4MSwgeTIs IC16Mik7DQogICAgZ2xFbmQgKCk7DQogICAgICAgIA0KICAgIGdsQmVnaW4gKEdMX0xJTkVTKTsg ICMgIDQgbGluZXMNCiAgICBnbFZlcnRleDNmICh4MSwgeTEsIC16MSk7DQogICAgZ2xWZXJ0ZXgz ZiAoeDEsIHkxLCAtejIpOw0KICAgIGdsVmVydGV4M2YgKHgxLCB5MiwgLXoxKTsNCiAgICBnbFZl cnRleDNmICh4MSwgeTIsIC16Mik7DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkxLCAtejEpOw0KICAg IGdsVmVydGV4M2YgKHgyLCB5MSwgLXoyKTsNCiAgICBnbFZlcnRleDNmICh4MiwgeTIsIC16MSk7 DQogICAgZ2xWZXJ0ZXgzZiAoeDIsIHkyLCAtejIpOw0KICAgIGdsRW5kICgpOw0KDQoNCmRlZiBk cmF3U2NlbmUgKCk6DQogICAgZ2xNYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsNCiAgICBnbExv YWRJZGVudGl0eSAoKTsNCiAgICBnbHVQZXJzcGVjdGl2ZSAoNDAuMCwgNC4wLzMuMCwgMS4wLCAx MDAuMCk7DQogICAgDQogICAgZ2xNYXRyaXhNb2RlIChHTF9NT0RFTFZJRVcpOw0KICAgIGdsTG9h ZElkZW50aXR5ICgpOw0KICAgIGdsdUxvb2tBdCAoNy41LCA3LjUsIDEyLjUsIDIuNSwgMi41LCAt NS4wLCAwLjAsIDEuMCwgMC4wKTsNCiAgICBnbENvbG9yM2YgKDAuMCwgMS4wLCAwLjApOyAgICMg IGdyZWVuIHRyaWFuZ2xlDQogICAgZHJhd1RyaWFuZ2xlICgyLjAsIDIuMCwgMy4wLCAyLjAsIDIu NSwgMy4wLCAtNS4wKTsNCiAgICBnbENvbG9yM2YgKDEuMCwgMC4wLCAwLjApOyAgICMgIHJlZCB0 cmlhbmdsZQ0KICAgIGRyYXdUcmlhbmdsZSAoMi4wLCA3LjAsIDMuMCwgNy4wLCAyLjUsIDguMCwg LTUuMCk7DQogICAgZ2xDb2xvcjNmICgxLjAsIDEuMCwgMC4wKTsgICAjIHllbGxvdyB0cmlhbmds ZXMNCiAgICBkcmF3VHJpYW5nbGUgKDIuMCwgMi4wLCAzLjAsIDIuMCwgMi41LCAzLjAsIDAuMCk7 DQogICAgZHJhd1RyaWFuZ2xlICgyLjAsIDIuMCwgMy4wLCAyLjAsIDIuNSwgMy4wLCAtMTAuMCk7 DQogICAgZHJhd1ZpZXdWb2x1bWUgKDAuMCwgNS4wLCAwLjAsIDUuMCwgMC4wLCAxMC4wKTsNCg0K ZGVmIHByb2Nlc3NIaXRzIChoaXRfYnVmZmVyKToNCiAgICBwcmludCAiaGl0cyA9ICVkIiUobGVu KGhpdF9idWZmZXIpKTsgDQogICAgZm9yIGhpdF9yZWNvcmQgaW4gaGl0X2J1ZmZlcjoNCiAgICAg ICAgejEsIHoyLCBuYW1lcyA9IGhpdF9yZWNvcmQNCiAgICAgICAgcHJpbnQgIiBudW1iZXIgb2Yg bmFtZXMgZm9yIGhpdCA9ICVkIiUobGVuKG5hbWVzKSkNCiAgICAgICAgcHJpbnQgIiB6MSBpcyAl ZywiJXoxICsgIiAgejIgaXMgJWciJXoyDQogICAgICAgIHByaW50ICIgdGhlIG5hbWUgaXMgIjsN CiAgICAgICAgcHJpbnQgbmFtZXMNCg0KZGVmIHNlbGVjdE9iamVjdHMoKToNCiAgICBTSVpFID0g NTEyOw0KICAgIGdsU2VsZWN0QnVmZmVyKFNJWkUpOw0KICAgIGdsUmVuZGVyTW9kZSAoR0xfU0VM RUNUKTsNCiAgICANCiAgICBnbEluaXROYW1lcygpOw0KICAgIGdsUHVzaE5hbWUoMCk7DQogICAg DQogICAgZ2xQdXNoTWF0cml4ICgpOw0KICAgIGdsTWF0cml4TW9kZSAoR0xfUFJPSkVDVElPTik7 DQogICAgZ2xMb2FkSWRlbnRpdHkgKCk7DQogICAgZ2xPcnRobyAoMC4wLCA1LjAsIDAuMCwgNS4w LCAwLjAsIDEwLjApOw0KICAgIGdsTWF0cml4TW9kZSAoR0xfTU9ERUxWSUVXKTsNCiAgICBnbExv YWRJZGVudGl0eSAoKTsNCiAgICBnbExvYWROYW1lKDEpOw0KICAgIGRyYXdUcmlhbmdsZSAoMi4w LCAyLjAsIDMuMCwgMi4wLCAyLjUsIDMuMCwgLTUuMCk7DQogICAgZ2xMb2FkTmFtZSgyKTsNCiAg ICBkcmF3VHJpYW5nbGUgKDIuMCwgNy4wLCAzLjAsIDcuMCwgMi41LCA4LjAsIC01LjApOw0KICAg IGdsTG9hZE5hbWUoMyk7DQogICAgZHJhd1RyaWFuZ2xlICgyLjAsIDIuMCwgMy4wLCAyLjAsIDIu NSwgMy4wLCAwLjApOw0KICAgIGRyYXdUcmlhbmdsZSAoMi4wLCAyLjAsIDMuMCwgMi4wLCAyLjUs IDMuMCwgLTEwLjApOw0KICAgIGdsUG9wTWF0cml4ICgpOw0KICAgIGdsRmx1c2ggKCk7DQogICAg DQogICAgaGl0X2J1ZmZlciA9IGdsUmVuZGVyTW9kZSAoR0xfUkVOREVSKTsNCiAgICBwcm9jZXNz SGl0cyAoaGl0X2J1ZmZlcik7IA0KDQpkZWYgaW5pdCAoKToNCiAgICBnbEVuYWJsZShHTF9ERVBU SF9URVNUKTsNCiAgICBnbFNoYWRlTW9kZWwoR0xfRkxBVCk7DQoNCmRlZiBkaXNwbGF5KCk6DQog ICAgZ2xDbGVhckNvbG9yICgwLjAsIDAuMCwgMC4wLCAwLjApOw0KICAgIGdsQ2xlYXIoR0xfQ09M T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOw0KICAgIGRyYXdTY2VuZSAoKTsN CiAgICBzZWxlY3RPYmplY3RzICgpOw0KICAgIGdsRmx1c2goKTsNCg0KaWYgX19uYW1lX18gPT0g Il9fbWFpbl9fIjoNCiAgICBnbHV0SW5pdChzeXMuYXJndik7DQogICAgZ2x1dEluaXREaXNwbGF5 TW9kZSAoR0xVVF9TSU5HTEUgfCBHTFVUX1JHQiB8IEdMVVRfREVQVEgpOw0KICAgIGdsdXRJbml0 V2luZG93U2l6ZSAoMjAwLCAyMDApOw0KICAgIGdsdXRJbml0V2luZG93UG9zaXRpb24gKDEwMCwg MTAwKTsNCiAgICBnbHV0Q3JlYXRlV2luZG93IChzeXMuYXJndlswXSk7DQogICAgaW5pdCgpOw0K ICAgIGdsdXREaXNwbGF5RnVuYyhkaXNwbGF5KTsNCiAgICBnbHV0TWFpbkxvb3AoKTsNCg0K --001a11c231de0e068f04dd81b5ca Content-Type: application/octet-stream; name="picksquare.py" Content-Disposition: attachment; filename="picksquare.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hh46k67q3 IyEvdXNyL2Jpbi9weXRob24NCg0KIyBUaGlzIGlzIHN0YXRlbWVudCBpcyByZXF1aXJlZCBieSB0 aGUgYnVpbGQgc3lzdGVtIHRvIHF1ZXJ5IGJ1aWxkIGluZm8NCmlmIF9fbmFtZV9fID09ICdfX2J1 aWxkX18nOg0KICAgIHJhaXNlIEV4Y2VwdGlvbg0KDQonJycNCg0KcGlja3NxdWFyZS5jIGZyb20g dGhlIFJlZGJvb2sgZXhhbXBsZXMuICANCkNvbnZlcnRlZCB0byBQeXRob24gYnkgS2FuZyBaaGFv ICh6aGFva2FuZy5jbkBnbWFpbC5jb20pIE1heSwyMDEzLg0KVGVzdGVkIHdpdGggUHlPcGVuR0wg My4wLjINCg0KLyoNCiAqIENvcHlyaWdodCAoYykgMTk5My0xOTk5LCBTaWxpY29uIEdyYXBoaWNz LCBJbmMuDQogKiBBTEwgUklHSFRTIFJFU0VSVkVEIA0KICogUGVybWlzc2lvbiB0byB1c2UsIGNv cHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgDQogKiBhbnkgcHVy cG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhl IGFib3ZlDQogKiBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0 IGJvdGggdGhlIGNvcHlyaWdodCBub3RpY2UNCiAqIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IA0KICogdGhlIG5h bWUgb2YgU2lsaWNvbiBHcmFwaGljcywgSW5jLiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZw0K ICogb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2Fy ZSB3aXRob3V0IHNwZWNpZmljLA0KICogd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiANCiAqDQog KiBUSEUgTUFURVJJQUwgRU1CT0RJRUQgT04gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBUTyBZ T1UgIkFTLUlTIg0KICogQU5EIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ms IElNUExJRUQgT1IgT1RIRVJXSVNFLA0KICogSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwg QU5ZIFdBUlJBTlRZIE9GIE1FUkNIQU5UQUJJTElUWSBPUg0KICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBJTiBOTyBFVkVOVCBTSEFMTCBTSUxJQ09ODQogKiBHUkFQSElDUywg SU5DLiAgQkUgTElBQkxFIFRPIFlPVSBPUiBBTllPTkUgRUxTRSBGT1IgQU5ZIERJUkVDVCwNCiAq IFNQRUNJQUwsIElOQ0lERU5UQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBP RiBBTlkNCiAqIEtJTkQsIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIsIElOQ0xVRElORyBXSVRI T1VUIExJTUlUQVRJT04sDQogKiBMT1NTIE9GIFBST0ZJVCwgTE9TUyBPRiBVU0UsIFNBVklOR1Mg T1IgUkVWRU5VRSwgT1IgVEhFIENMQUlNUyBPRg0KICogVEhJUkQgUEFSVElFUywgV0hFVEhFUiBP UiBOT1QgU0lMSUNPTiBHUkFQSElDUywgSU5DLiAgSEFTIEJFRU4NCiAqIEFEVklTRUQgT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggTE9TUywgSE9XRVZFUiBDQVVTRUQgQU5EIE9ODQogKiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRQ0KICogUE9TU0VTU0lPTiwgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUu DQogKiANCiAqIFVTIEdvdmVybm1lbnQgVXNlcnMgUmVzdHJpY3RlZCBSaWdodHMgDQogKiBVc2Us IGR1cGxpY2F0aW9uLCBvciBkaXNjbG9zdXJlIGJ5IHRoZSBHb3Zlcm5tZW50IGlzIHN1YmplY3Qg dG8NCiAqIHJlc3RyaWN0aW9ucyBzZXQgZm9ydGggaW4gRkFSIDUyLjIyNy4xOShjKSgyKSBvciBz dWJwYXJhZ3JhcGgNCiAqIChjKSgxKShpaSkgb2YgdGhlIFJpZ2h0cyBpbiBUZWNobmljYWwgRGF0 YSBhbmQgQ29tcHV0ZXIgU29mdHdhcmUNCiAqIGNsYXVzZSBhdCBERkFSUyAyNTIuMjI3LTcwMTMg YW5kL29yIGluIHNpbWlsYXIgb3Igc3VjY2Vzc29yDQogKiBjbGF1c2VzIGluIHRoZSBGQVIgb3Ig dGhlIERPRCBvciBOQVNBIEZBUiBTdXBwbGVtZW50Lg0KICogVW5wdWJsaXNoZWQtLSByaWdodHMg cmVzZXJ2ZWQgdW5kZXIgdGhlIGNvcHlyaWdodCBsYXdzIG9mIHRoZQ0KICogVW5pdGVkIFN0YXRl cy4gIENvbnRyYWN0b3IvbWFudWZhY3R1cmVyIGlzIFNpbGljb24gR3JhcGhpY3MsDQogKiBJbmMu LCAyMDExIE4uICBTaG9yZWxpbmUgQmx2ZC4sIE1vdW50YWluIFZpZXcsIENBIDk0MDM5LTczMTEu DQogKg0KICogT3BlbkdMKFIpIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgU2lsaWNvbiBH cmFwaGljcywgSW5jLg0KICovDQoNCi8qDQogKiBwaWNrc3F1YXJlLmMNCiAqIFVzZSBvZiBtdWx0 aXBsZSBuYW1lcyBhbmQgcGlja2luZyBhcmUgZGVtb25zdHJhdGVkLiAgDQogKiBBIDN4MyBncmlk IG9mIHNxdWFyZXMgaXMgZHJhd24uICBXaGVuIHRoZSBsZWZ0IG1vdXNlIA0KICogYnV0dG9uIGlz IHByZXNzZWQsIGFsbCBzcXVhcmVzIHVuZGVyIHRoZSBjdXJzb3IgcG9zaXRpb24gDQogKiBoYXZl IHRoZWlyIGNvbG9yIGNoYW5nZWQuDQogKi8NCiANCiAnJycNCg0KaW1wb3J0IHN5cyAgDQp0cnk6 ICANCiAgICBmcm9tIE9wZW5HTC5HTFVUIGltcG9ydCAqICANCiAgICBmcm9tIE9wZW5HTC5HTCBp bXBvcnQgKiAgDQogICAgZnJvbSBPcGVuR0wuR0xVIGltcG9ydCAqICANCmV4Y2VwdDogIA0KICAg IHByaW50ICJFUlJPUjogUHlPcGVuR0wgbm90IGluc3RhbGxlZCBwcm9wZXJseS4iICANCiAgICBz eXMuZXhpdCgpDQoNCiMgIGFtb3VudCBvZiBjb2xvciBmb3IgZWFjaCBzcXVhcmUNCmJvYXJkID0g W1swIGZvciBpIGluIHJhbmdlKDMpXSBmb3IgaiBpbiByYW5nZSgzKV0NCg0KIyBDbGVhciBjb2xv ciB2YWx1ZSBmb3IgZXZlcnkgc3F1YXJlIG9uIHRoZSBib2FyZA0KZGVmIGluaXQoKToNCiAgICBm b3IgaSBpbiByYW5nZSgzKToNCiAgICAgICAgZm9yIGogaW4gcmFuZ2UoMyk6DQogICAgICAgICAg ICBib2FyZFtpXVtqXSA9IDA7DQogICAgZ2xDbGVhckNvbG9yICgwLjAsIDAuMCwgMC4wLCAwLjAp Ow0KDQonJycNCi8qICBUaGUgbmluZSBzcXVhcmVzIGFyZSBkcmF3bi4gIEluIHNlbGVjdGlvbiBt b2RlLCBlYWNoIA0KICogIHNxdWFyZSBpcyBnaXZlbiB0d28gbmFtZXM6ICBvbmUgZm9yIHRoZSBy b3cgYW5kIHRoZSANCiAqICBvdGhlciBmb3IgdGhlIGNvbHVtbiBvbiB0aGUgZ3JpZC4gIFRoZSBj b2xvciBvZiBlYWNoIA0KICogIHNxdWFyZSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyBwb3NpdGlvbiBv biB0aGUgZ3JpZCwgYW5kIA0KICogIHRoZSB2YWx1ZSBpbiB0aGUgYm9hcmRbXVtdIGFycmF5Lg0K ICovDQogJycnDQpkZWYgZHJhd1NxdWFyZXMobW9kZSk6DQogICAgZm9yIGkgaW4gcmFuZ2UoMyk6 DQogICAgICAgIGlmIG1vZGUgPT0gR0xfU0VMRUNUOg0KICAgICAgICAgICAgZ2xMb2FkTmFtZSAo aSk7DQogICAgICAgIGZvciBqIGluIHJhbmdlKDMpOg0KICAgICAgICAgICAgaWYgKG1vZGUgPT0g R0xfU0VMRUNUKToNCiAgICAgICAgICAgICAgICBnbFB1c2hOYW1lIChqKTsgICAgICAgICAgICAg IA0KICAgICAgICAgICAgZ2xDb2xvcjNmIChmbG9hdChpLzMuMCksIGZsb2F0IChqLzMuMCksIGZs b2F0KGJvYXJkW2ldW2pdLzMuMCkgKTsNCiAgICAgICAgICAgIGdsUmVjdGkgKGksIGosIGkrMSwg aisxKTsNCiAgICAgICAgICAgIGlmIG1vZGUgPT0gR0xfU0VMRUNUOg0KICAgICAgICAgICAgICAg IGdsUG9wTmFtZSAoKTsNCg0KJycnDQovKiAgcHJvY2Vzc0hpdHMgcHJpbnRzIG91dCB0aGUgY29u dGVudHMgb2YgdGhlIA0KICogIHNlbGVjdGlvbiBhcnJheS4NCiAqLw0KJycnDQpkZWYgcHJvY2Vz c0hpdHMgKGhpdF9idWZmZXIpOiAgICANCiAgICBwcmludCAiaGl0cyA9ICVkIiUobGVuKGhpdF9i dWZmZXIpKTsgDQogICAgZm9yIGhpdF9yZWNvcmQgaW4gaGl0X2J1ZmZlcjoNCiAgICAgICAgejEs IHoyLCBuYW1lcyA9IGhpdF9yZWNvcmQNCiAgICAgICAgcHJpbnQgIiBudW1iZXIgb2YgbmFtZXMg Zm9yIGhpdCA9ICVkIiUobGVuKG5hbWVzKSkNCiAgICAgICAgcHJpbnQgIiB6MSBpcyAlZywiJXox ICsgIiAgejIgaXMgJWciJXoyDQogICAgICAgIHByaW50ICIgdGhlIG5hbWVzIGFyZSAiOw0KICAg ICAgICBwcmludCBuYW1lcyAgIA0KICAgICAgICBpaSA9IGludChuYW1lc1swXSkNCiAgICAgICAg amogPSBpbnQobmFtZXNbMV0pDQogICAgICAgIGJvYXJkW2lpXVtqal0gPSAoYm9hcmRbaWldW2pq XSArIDEpICUgMzsgICAgDQoNCg0KJycnDQovKiAgcGlja1NxdWFyZXMoKSBzZXRzIHVwIHNlbGVj dGlvbiBtb2RlLCBuYW1lIHN0YWNrLCANCiAqICBhbmQgcHJvamVjdGlvbiBtYXRyaXggZm9yIHBp Y2tpbmcuICBUaGVuIHRoZSANCiAqICBvYmplY3RzIGFyZSBkcmF3bi4NCiAqLw0KICcnJw0KDQoN CmRlZiBwaWNrU3F1YXJlcyhidXR0b24sIHN0YXRlLCB4LCAgeSk6DQogICAgaWYgYnV0dG9uICE9 IEdMVVRfTEVGVF9CVVRUT04gb3Igc3RhdGUgIT0gR0xVVF9ET1dOIDoNCiAgICAgICAgcmV0dXJu Ow0KICAgIA0KICAgIHZpZXdwb3J0ID0gZ2xHZXRJbnRlZ2VydiAoR0xfVklFV1BPUlQpOw0KDQog ICAgQlVGU0laRT01MTINCiAgICBnbFNlbGVjdEJ1ZmZlciAoQlVGU0laRSk7DQogICAgZ2xSZW5k ZXJNb2RlIChHTF9TRUxFQ1QpOw0KICAgIA0KICAgIGdsSW5pdE5hbWVzKCk7DQogICAgZ2xQdXNo TmFtZSgwKTsNCiAgICANCiAgICBnbE1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOw0KICAgIGds UHVzaE1hdHJpeCAoKTsNCiAgICBnbExvYWRJZGVudGl0eSAoKTsNCiAgIA0KICAgICMgIGNyZWF0 ZSA1eDUgcGl4ZWwgcGlja2luZyByZWdpb24gbmVhciBjdXJzb3IgbG9jYXRpb24NCiAgICBnbHVQ aWNrTWF0cml4IChmbG9hdCh4KSwgZmxvYXQodmlld3BvcnRbM10gLSB5KSwgNS4wLCA1LjAsIHZp ZXdwb3J0KTsNCiAgICBnbHVPcnRobzJEICgwLjAsIDMuMCwgMC4wLCAzLjApOw0KICAgIGRyYXdT cXVhcmVzIChHTF9TRUxFQ1QpOw0KDQogICAgZ2xNYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsN CiAgICBnbFBvcE1hdHJpeCAoKTsNCiAgICBnbEZsdXNoICgpOw0KICAgIA0KICAgIGhpdF9idWZm ZXIgPSBnbFJlbmRlck1vZGUgKEdMX1JFTkRFUik7DQogICAgcHJvY2Vzc0hpdHMgKGhpdF9idWZm ZXIpOw0KICAgIGdsdXRQb3N0UmVkaXNwbGF5KCk7DQoNCmRlZiBkaXNwbGF5KCk6DQogICAgZ2xD bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsNCiAgICBkcmF3U3F1YXJlcyAoR0xfUkVOREVSKTsN CiAgICBnbEZsdXNoKCk7DQoNCmRlZiByZXNoYXBlKHcsIGgpOg0KICAgIGdsVmlld3BvcnQoMCwg MCwgdywgaCk7DQogICAgZ2xNYXRyaXhNb2RlKEdMX1BST0pFQ1RJT04pOw0KICAgIGdsTG9hZElk ZW50aXR5KCk7DQogICAgZ2x1T3J0aG8yRCAoMC4wLCAzLjAsIDAuMCwgMy4wKTsNCiAgICBnbE1h dHJpeE1vZGUoR0xfTU9ERUxWSUVXKTsNCiAgICBnbExvYWRJZGVudGl0eSgpOw0KDQoNCiMgTWFp biBMb29wDQppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOg0KICAgIGdsdXRJbml0KHN5cy5hcmd2 KTsNCiAgICBnbHV0SW5pdERpc3BsYXlNb2RlIChHTFVUX1NJTkdMRSB8IEdMVVRfUkdCKTsNCiAg ICBnbHV0SW5pdFdpbmRvd1NpemUgKDEwMCwgMTAwKTsNCiAgICBnbHV0SW5pdFdpbmRvd1Bvc2l0 aW9uICgxMDAsIDEwMCk7DQogICAgZ2x1dENyZWF0ZVdpbmRvdyAoc3lzLmFyZ3ZbMF0pOw0KICAg IGluaXQgKCk7DQogICAgZ2x1dE1vdXNlRnVuYyAocGlja1NxdWFyZXMpOw0KICAgIGdsdXRSZXNo YXBlRnVuYyhyZXNoYXBlKTsNCiAgICBnbHV0RGlzcGxheUZ1bmMoZGlzcGxheSk7IA0KICAgIGds dXRNYWluTG9vcCgpOw0KDQoNCg0KDQo= --001a11c231de0e068f04dd81b5ca Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may --001a11c231de0e068f04dd81b5ca Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ PyOpenGL Homepage http://pyopengl.sourceforge.net _______________________________________________ PyOpenGL-Devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pyopengl-devel --001a11c231de0e068f04dd81b5ca--