Click here to Skip to main content
15,895,142 members
Articles / Desktop Programming / Windows Forms

SharpGL: A C# OpenGL Class Library

Rate me:
Please Sign up or sign in to vote.
4.94/5 (178 votes)
7 Apr 2014GPL35 min read 1.9M   63.1K   463  
Use OpenGL in WinForms or WPF applications, directly or with a powerful Scene Graph.
Caligari V00.01BLH             
Grou $'d���>���?�?OR���?��OR���?�?�?PolH��( $'�Torus���>���?�?OR���?��OR�����>���>|0,���;WUU?�>ѳ���?`,W����T?��̽��"���"?��̽��T�,W�>��̽fff�n�Q���̽�ר���K?�5��w��w�?�5����K��ר>�5��r�\�'�H��5��d|��I#D?�А��?�А�I#D�d|�>�А�NLT�.A��А�=���??D���1��1?D���?�=�>D����N��<�D��D����5=?)J:(�����?)J:(�5=�D��>)J:(��L�)J:�)J:(=���??D�=�1��1?D�=�?�=�>D�=��N��<�D�=d|��I#D?�А=�?�А=I#D�d|�>�А=NLT�.A��А=�ר���K?�5�=w��w�?�5�=��K��ר>�5�=r�\�'�H��5�=,W����T?���=��"���"?���=��T�,W�>���=fff�n�Q����=�ַ���]?�5�=?�)�?�)?�5�=��]��ַ>�5�=Z2p��|Z��5�=�1����e?�А=��/���/?�А=��e��1�>�А=~�x��
b��А=Eq¾{�j?D�=3�3�3�3?D�={�j�Eq�>D�=#
~��g�D�=�þ^�l?����5��5?���^�l���>���Eq¾{�j?D��3�3�3�3?D��{�j�Eq�>D��#
~��g�D���1����e?�А���/���/?�А���e��1�>�А�~�x��
b��А��ַ���]?�5��?�)�?�)?�5����]��ַ>�5��Z2p��|Z��5���|کZ2p?�5���
�~�x?�А���#
~?D������?�����#
~?D�=�
�~�x?�А=�|کZ2p?�5�=n�ѩfff?���='�ȩr�\?�5�=.��NLT?�А=�����N?D�=)J����L?)J:(�����N?D��.��NLT?�А�'�ȩr�\?�5��n�ѩfff?��̽����h����Z2p��|Z��5��~�x��
b��А�#
~��g�D��#
~��g�D�=~�x��
b��А=Z2p��|Z��5�=fff�n�Q����=r�\�'�H��5�=NLT�.A��А=��N��<�D�=��L�)J:�)J:(��N��<�D��NLT�.A��А�r�\�'�H��5��fff�n�Q���̽��u�>�?�>�?�>�>�?�>�>�?�>?�>p?�>p?�>p?�>p??p?�>`?�>`?�>`?�>`??`?�>P?�>P?�>P?�>P??P?�>@?�>@?�>@?�>@??@?�>0?�>0?�>0?�>0??0?�> ?�> ?�> ?�> ?? ?�>?�>?�>?�>???�>?�>?�>?�>???�>�>�>�>�>�>�>�>?�>�>�>�>�>�>�>�>�>?�>�>�>�>�>�>�>�>�>?�>�>�>�>�>�>�>�>�>?�>�>@>�>@>�>@>�>@>?@>�>>�>>�>>�>>?>�>�=�>�=�>�=�>�=?�=[>`?��>`??��`?N��>\>`?��?��a?��>��`?Z?33c?xw�>��a? �?�>�ld?��>33c?ED?vve?N��>�ld? �?(f?��>vve?Z?(f?��?gff???�?��??��>@??��??��???N��>??Z?K>?��>K>? �?��<?xw�>��<?ED?N�;?��>N�;? �?��:?N��>��:?Z?��9?��>��9?��?��9??BN	M
	
]^dM	L

		
	
\
]L
K	


	[
\KJ

Z[JIY ZI"H!#"$#X%$Y H!"'G&#('"$)(#W*)$X%G&' ,F+(!- ,')".!-(V/".)W*F+ ,$1E0!-%2$1 ,".&3%2!-U4&3".V/E0$1(6D5%2)7(6$1&3*8)7%2T9*8&3U4D5(6,;C:)7-<,;(6*8.=-<)7S>.=*8T9C:,;0@B?-<1A0@,;.=2B1A-<_C2B.=S>B?0@3EAD1A4F3E0@2B5G4F1ARH5G2B_CAD3E7J@I4F8K7J3E5G9L8K4FQM9L5GRH@I7J;O?N8K<P;O7J9L=Q<P8KPR=Q9LQM?N;ON[<P;O=Q<P^=QPRIbHaG_F]EZDXCVBTAS@U?WNYM\L^K`Jc[r\p]n^lPjQhRe_fSgTiUkVmWoXqYsZtPrTx(y'��(tpa(��?���>��@<�?���=���=�?w:��6?��?���>�?���>���>���>�?�?{.>��L>�?�?�?PolH,
  $'�sTorus�??�?�?�?�?�?��?�??"� ?w�����>?!D>w���K3�>K3�>w���?!D>��>w���Ri�� ?w���?!D���>w���K3��K3�>w�����?!D>w���� �R�w�����?!D�w���K3��K3��w���?!D���w���=�.*� �w���?!D>��w���K3�>K3��w�����>?!D�w�����>�ִ��Z>��f=�ִ�>P�=>P�=�ִ���f=�Z>�ִ��3����>�ִ���f��Z>�ִ�>Pս>P�=�ִ��Z���f=�ִ�����3	��ִ��Z���f��ִ�>Pս>Pս�ִ���f��Z��ִ���M)����ִ���f=�Z��ִ�>P�=>Pս�ִ��Z>��f��ִ���>�ִ>�Z>��f=�ִ>>P�=>P�=�ִ>��f=�Z>�ִ>�3����>�ִ>��f��Z>�ִ>>Pս>P�=�ִ>�Z���f=�ִ>����3	��ִ>�Z���f��ִ>>Pս>Pս�ִ>��f��Z��ִ>��M)����ִ>��f=�Z��ִ>>P�=>Pս�ִ>�Z>��f��ִ>� ?w��>��>?!D>w��>K3�>K3�>w��>?!D>��>w��>Ri�� ?w��>?!D���>w��>K3��K3�>w��>��?!D>w��>� �R�w��>��?!D�w��>K3��K3��w��>?!D���w��>=�.*� �w��>?!D>��w��>K3�>K3��w��>��>?!D�w��>�Z?�ִ>H�I?�D�>�ִ>C�?C�?�ִ>�D�>H�I?�ִ>[�Ʃ�Z?�ִ>�D��H�I?�ִ>C��C�?�ִ>H�I��D�>�ִ>�Z�[�F��ִ>H�I��D���ִ>C��C���ִ>�D��H�I��ִ>��*�Z��ִ>�D�>H�I��ִ>C�?C���ִ>H�I?�D���ִ>�?�x.�^�l?��>�x.��5?�5?�x.���>^�l?�x.�����?�x.��þ^�l?�x.��5��5?�x.�^�l���>�x.�����h��x.�^�l��þ�x.��5��5��x.��þ^�l��x.����*���x.���>^�l��x.��5?�5��x.�^�l?�þ�x.��Z?�ִ�H�I?�D�>�ִ�C�?C�?�ִ��D�>H�I?�ִ�[�Ʃ�Z?�ִ��D��H�I?�ִ�C��C�?�ִ�H�I��D�>�ִ��Z�[�F��ִ�H�I��D���ִ�C��C���ִ��D��H�I��ִ���*�Z��ִ��D�>H�I��ִ�C�?C���ִ�H�I?�D���ִ����>?!�=w�����*?0�>���)�>Rs=�D꾥|�>��=9��Р�>�:->�D�ۂ>�$�<A ��g��>�09��(�>Rs��D꾛��>���>w���Q�?�x�>���;`>;`>9���:->Р�>�D꾍i�=���=A �����>���>w���~x�>Q�?�����=�|�>9��
Rs=(�>�D����=�i�=A ��?!�=���>w���0�>��*?���͹��g��>9��
Rs�)�>�D꾞$�<ۂ>A ��?!Ľ���>w���0����*?�����|�>9���:-�Р�>�D꾞$�ۂ>A ���������>w����x��Q�?����;`�;`>9��Р���:->�D������i�=A ����о���>w���Q��~x�>����|����=9��(蘾Rs=�D꾍i�����=A ������?!�=w�����*�0�>���g���Ө�9��)蘾Rs��D�ۂ��$�<A ������?!Ľw�����*�0������|����9��Р���:-��D�ۂ��$�A ����о����w���Q���x�����;`�;`�9���:-�Р���D꾍i������A ��������оw���~x��Q�������|��9��
Rs�(蘾�D������i��A ��?!Ľ����w���0����*����(��0g���9��
Rs=)蘾�D꾞$�ۂ�A ��?!�=����w���0�>��*������=�|��9���:->Р���D꾞$�<ۂ�A �����>��оw����x�>Q������;`>;`�9��Р�>�:-��D����=�i��A �����>����w���Q�?~x������|�>��9�뾍i�=����A �����>?!Ľw�����*?0�����ۂ>�$�A ��ۂ>�$�<A �>)�>Rs=�D�>�i�=���=A �>Р�>�:->�D�>���=�i�=A �>�:->Р�>�D�>�$�<ۂ>A �>
Rs=(�>�D�>�$�ۂ>A �>Rs�)�>�D�>�����i�=A �>�:-�Р�>�D�>�i�����=A �>Р���:->�D�>ۂ��$�<A �>(蘾Rs=�D�>ۂ��$�A �>)蘾Rs��D�>�i������A �>Р���:-��D�>�����i��A �>�:-�Р���D�>�$�ۂ�A �>
Rs�(蘾�D�>�$�<ۂ�A �>Rs=)蘾�D�>���=�i��A �>�:->Р���D�>�i�=����A �>Р�>�:-��D�>ۂ>�$�A �>(�>Rs��D�>�|�>��=9��>���>?!�=w��>��*?0�>���>g��>#�>09��>;`>;`>9��>���>���>w��>P�?~x�>���>��=�|�>9��>���>���>w��>~x�>P�?���>Pξ�g��>9��>?!�=���>w��>0�>��*?���>��|�>9��>?!Ľ���>w��>0����*?���>�;`�;`>9��>�������>w��>~x��P�?���>�|����=9��>��о���>w��>P��~x�>���>g�����>�9��>����?!�=w��>��*�0�>���>�|����9��>����?!Ľw��>��*�0�����>;`�;`�9��>��о����w��>P��~x�����>��|��9��>������оw��>~x��P�����>�о0g���9��>?!Ľ����w��>0����*����>��=�|��9��>?!�=����w��>0�>��*����>�;`>;`�9��>���>��оw��>~x�>P�����>�|�>��9��>���>����w��>P�?~x�����>���>?!Ľw��>��*?0�����>��#?�s�>9��> HT?��(>|��>Aup?�Q?>�I>V�0?,��/9��>�H�>�H�>9��>��3?�~�>|��>��K?b5?�I>�s�>��#?9��>�~�>��3?|��>b5?��K?�I>����V�0?9��>��(> HT?|��>�Q?>Bup?�I>�s����#?9��>��(� HT?|��>�Q?�Aup?�I>�H���H�>9��>�~��3?|��>b5���K?�I>��#��s�>9��>��3��~�>|��>��K�b5?�I>V�0��	�9��> HT���(>|��>Bup��Q?>�I>��#��s��9��> HT���(�|��>Aup��Q?��I>�H���H��9��>��3��~�|��>��K�b5��I>�s����#�9��>�~��3�|��>b5���K��I>���0V�0�9��>��(� HT�|��>�Q?�Bup��I>�s�>��#�9��>��(> HT�|��>�Q?>Aup��I>�H�>�H��9��>�~�>��3�|��>b5?��K��I>��#?�s��9��>��3?�~�|��>��K?b5��I> HT?��(�|��>Bup?�Q?��I>�cc?=`�>��C>�{?�G>O��/Aup?�Q?>�I� v?�����C>c	.?c	.?��C>&�T?{6?�x.���K?b5?�I�=`�>�cc?��C>|6?&�T?
 )�b5?��K?�I��ש v?��C>�G>�{?�x.��Q?>Aup?�I�=`���cc?��C>�G��{?�x.��Q?�Aup?�I�c	.�c	.?��C>{6�&�T?���b5���K?�I��cc�=`�>��C>&�T�{6?3
)0��K�b5?�I� v�I�0��C>�{��G>P��/Aup��Q?>�I��cc�=`����C>�{��G�O��/Aup��Q?��I�c	.�c	.���C>&�T�{6��x.���K�b5��I�=`���cc���C>|6�&�T�
 )�b5���K��I�ߡ* v���C>�G��{��x.��Q?�Aup��I�=`�>�cc���C>�G>�{��x.��Q?>Aup��I�c	.?c	.���C>{6?&�T����b5?��K��I��cc?=`����C>&�T?{6�3
)0��K?b5��I��{?�G�P��/Aup?�Q?��I��cc?=`�>��C� HT?��(>|��� v?�����C�c	.?c	.?��C���3?�~�>|���=`�>�cc?��C��~�>��3?|����ש v?��C���(> HT?|���=`���cc?��C���(� HT?|���c	.�c	.?��C��~��3?|����cc�=`�>��C���3��~�>|��� v�K�0��C� HT���(>|����cc�=`����C� HT���(�|���c	.�c	.���C���3��~�|���=`���cc���C��~��3�|���ߡ* v���C���(� HT�|���=`�>�cc���C���(> HT�|���c	.?c	.���C��~�>��3�|����cc?=`����C���3?�~�|��� HT?��(�|�����#?�s�>9��V�0?*��/9���H�>�H�>9���s�>��#?9��W��V�0?9���s����#?:���H���H�>9�뾙�#��s�>9��V�0��	�9�뾙�#��s��9���H���H��9���s����#�9��Χ1V�0�9���s�>��#�:���H�>�H��9�뾙�#?�s��9��][�=ƛ,=U)��.x�=.x�=U)��ƛ,=^[�=U)���3׮��=U)��ƛ,�][�=U)��.x��.x�=U)��][нƛ,=U)����}E<0U)��][нƛ,�U)��.x��.x��U)��ƛ,�^[нU)��0B�.��U)��ƛ,=][нU)��.x�=.x��U)��][�=ƛ,�U)����=EG<�U)�>YC�=@�<��ꓻ=��z=����z=蓻=��@�<XC�=��@��XC�=����z�铻=��蓻���z=��YCݽ@�<��YCݽ@����ꓻ���z�����z�蓻���@��XCݽ��@�<XCݽ����z=铻���蓻=��z���YC�=@������=DG<�U)��][�=ƛ,=U)�>YC�=>�<�>.x�=.x�=U)�>蓻=��z=�>ƛ,=][�=U)�>��z=铻=�>pc����=U)�>>�<XC�=�>ƛ,�\[�=U)�>?��XC�=�>.x��.x�=U)�>��z�铻=�>][нƛ,=U)�>铻���z=�>�ὀE<0U)�>YCݽ@�<�>][нƛ,�U)�>YCݽ>���>.x��.x��U)�>蓻���z��>ƛ,�][нU)�>��z�铻��>�f�/��U)�>>��XCݽ�>ƛ,=\[нU)�>?�<XCݽ�>.x�=.x��U)�>��z=铻��>][�=ƛ,�U)�>铻=��z��>YC�=@���>v��>v���YC�=@���>铻=��z��>��z=铻��>?�<XCݽ�>>��XCݽ�>��z�铻��>蓻���z��>YCݽ>���>YCݽ@�<�>铻���z=�>��z�铻=�>?��XC�=�>>�<XC�=�>��z=铻=�>蓻=��z=�>YC�=>�<�>YC�=@����蓻=��z�����z=铻���@�<XCݽ��@��XCݽ����z�蓻���ꓻ���z���YCݽ@����YCݽ@�<��蓻���z=����z�铻=��@��XC�=��@�<XC�=����z=蓻=��ꓻ=��z=��YC�=@�<��][�=ƛ,�U)��.x�=.x��U)��ƛ,=][нU)����)��U)��ƛ,�^[нU)��.x��.x��U)��][нƛ,�U)�����#ͨU)��][нƛ,=U)��.x��.x�=U)��ƛ,�][�=U)���#M���=U)��ƛ,=^[�=U)��.x�=.x�=U)����=U)��][�=ƛ,=U)��\[�=ƛ,�U)�>.x�=.x��U)�>ƛ,=\[нU)�>��)��U)�>ƛ,�\[нU)�>.x��.x��U)�>\[нƛ,�U)�>���#ͨU)�>\[нƛ,=U)�>.x��.x�=U)�>ƛ,�\[�=U)�>�#M���=U)�>ƛ,=\[�=U)�>.x�=.x�=U)�>��=U)�>\[�=ƛ,=U)�>��?�?p?p?@>�=�?=�=�=>�?�=>�=@>�? >@>�=�>�?`>�>�=�>�?�>�>�=�>�?�>�>�=�>�?�>�>�=?�?�>?�=?�???�= ?�?? ?�=0?�?(?0?�=@?�?8?@?�=P?�?H?P?�=`?�?X?`?�=p?�?h?x?>`?�?`?=`?�=`?�=p?�=`?>`?>p? >`?@>`?@>p?`>`?�>`?�>p?�>`?�>`?�>p?�>`?�>`?�>p?�>`?�>`?�>p?�>`??`??p??`??`??p??`? ?`? ?p?(?`?0?`?0?p?8?`?@?`?@?p?H?`?P?`?P?p?X?`?`?`?`?p?h?`?p?`?p?p?x?`?�?��%?�=IzZ?>IzZ?@>IzZ?�>IzZ?�>IzZ?�>IzZ?�>IzZ??IzZ??IzZ? ?IzZ?0?IzZ?@?IzZ?P?IzZ?`?IzZ?p?IzZ?x? ?�? ?= ?�??�= ?�= ?> ? > ?@> ?`> ?�> ?�> ?�> ?�> ?�> ?�> ?�> ?�> ?? ?? ?? ?? ? ? ?(? ?0? ?8? ?@? ?H? ?P? ?X? ?`? ?h? ?p? ?x? ??�??=?�?�>�=?�=?�=?>?>? >?@>?@>?`>?�>?�>?�>?�>?�>?�>?�>?�>?�>?�>?�>?�>????????????? ?? ??(??0??0??8??@??@??H??P??P??X??`??`??h??p??p??x??p?�=�>�?�>=�>�?�>�=�>�=�>�=�>>�>>�> >�>@>�>@>�>`>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>?�>?�>?�>?�>?�>?�> ?�> ?�>(?�>0?�>0?�>8?�>@?�>@?�>H?�>P?�>P?�>X?�>`?�>`?�>h?�>p?�>p?�>x?�>�>�?�>=�>�?@>�=�>�=�>�=�>>�>>�> >�>@>�>@>�>`>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>�>?�>?�>?�>?�>?�>?�> ?�> ?�>(?�>0?�>0?�>8?�>@?�>@?�>H?�>P?�>P?�>X?�>`?�>`?�>h?�>p?�>p?�>x?�>�?�=>�?>=>�=>�=@>�=>>>>@> >>@>>@>@>`>>�>>�>@>�>>�>>�>@>�>>�>>�>@>�>>�>>�>@>�>>?>?@>?>?>?@>?> ?> ?@>(?>0?>0?@>8?>@?>@?@>H?>P?>P?@>X?>`?>`?@>h?>p?>=�?�==�==p?�=p?p?�?�?x?p?�=�?>�=�= >p? >�?@> >�=`>p?`>�?�>`>�=�>p?�>�?�>�>�=�>p?�>�?�>�>�=�>p?�>�?�>�>�=�>p?�>�??�>�=?p??�???�=?p??�? ??�=(?p?(?�?0?(?�=8?p?8?�?@?8?�=H?p?H?�?P?H?�=X?p?X?�?`?X?�=h?p?h?�?p?h?�=x?�?�?x?�==?�=? >?`>?�>?�>?�>?�>?????(??8??H??X??h??x??=�>?�=�> >�>`>�>�>�>�>�>�>�>�>�>?�>?�>(?�>8?�>H?�>X?�>h?�>x?�>=�>�>�=�> >�>`>�>�>�>�>�>�>�>�>�>?�>?�>(?�>8?�>H?�>X?�>h?�>x?�>=@>�>�=@> >@>`>@>�>@>�>@>�>@>�>@>?@>?@>(?@>8?@>H?@>X?@>h?@>x?@>@>�==c�Z?�=c�Z? >c�Z?`>c�Z?�>c�Z?�>c�Z?�>c�Z?�>c�Z??c�Z??c�Z?(?c�Z?8?c�Z?H?c�Z?X?c�Z?h?c�Z?x?c�Z?IzZ?�=��%?=�k%?>��%?�=�k%?@>��%? >�k%?�>��%?`>�k%?�>��%?�>�k%?�>��%?�>�k%?�>��%?�>�k%??��%?�>�k%??��%??�k%? ?��%??�k%?0?��%?(?�k%?@?��%?8?�k%?P?��%?H?�k%?`?��%?X?�k%?p?��%?h?�k%?x?�k%?��%?�?IzZ?=�?�=�? >�?`>�?�>�?�>�?�>�?�>�??�??�?(?�?�q�=�8l?8?�?H?�?�8>�8l?X?�?h?�?�8L>�8l?h�>�8l?h�>�8l?h�>�8l?h�>�8l?4?�8l?4?�8l?4#?�8l?43?�8l?4C?�8l?4S?�8l?4c?�8l?4s?�8l?=��|?{9�=	�C<�8l?x?�?�O=z9�=�=_��={9�= >/�3>|9�=`>/�s>z9�=�>��>z9�=�>��>{9�=�>���>z9�=�>���>z9�=?��?z9�=?��?{9�=(?��,?|9�=8?��<?z9�=H?��L?z9�=X?��\?{9�=h?��l?z9�=x??�`�=4?z9�=?��k?�>�`�=�>��k?���>�8l?��?�8l?h�>z9�=?�`�=4?z9�=�>��k?���>�8l?��?��k?�>�`�=��?�8l?h�>{9�=(?�`�=4#?{9�=�>�`�=���>��k?��>�8l?(?��k?��,?�8l?h�>z9�=8?�`�=43?|9�=�>�`�=�>��k?��>�8l?8?��k?h�>z9�=��<?�8l?`>��k?/�s>�8l?H?��k?H?�`�=4C?z9�=`>�`�=��L?�8l?�8L>|9�= >��k?/�3>�8l?X?�`�=4S?z9�=��W?��k? >�`�=��\?�8l?�8>{9�=h?�`�=4c?{9�=���=��k?_��=�8l?h?��k?���=�`�=��l?�8l?�q�=z9�=x?�`�=4s?z9�=x?��k?���<��k?�O=�8l?=�`�=��|?�8l?
�C<{9�=�rZpWs5t[s5x_{bz8}c�f;
�g�j�>
�k�n�A�o�r�D�s�v�G�w�z�J�{�~�M	����P
�����S"�����V%�����Y
(�����\+��w^v2�`���KLj���NOk���QRl���TUm���WXn���Z[o���]^p���`2���t!v�����w"x�����y#z�����{$|�����}%~�����&�������'�������(�������)�������*�������+�������,������-������.������/������ s�u����1������2������3������4������5������6� �����7�#�����8�&�����9�)�����:�,���;�/���<�2���=�5�
�	�>�8�
��?�;���0����A�@���B�D���C�G��D�J��E�M"�!�F�P
%�$�G�S
(�'�H�V+�*�I�Y.�-�J�\1�0�K�_4�3�L�b7�6�M�e:�9�N�h"=�<�O�k%?�>�@�C�B�A�Q�p-F�E�R�s0I�HSu3L�KTw6O�NUy9R�Q	V{<U�TW}?X�WXB[�ZY�E^�]Z�Ha�`[�Kd�c\�Ng�f] �Qj�i!^#�Tm�l$_&�o�n'P�r�qYp��yaxX�~e}`�	�i�d��m�h��q�l��u�p��y�t��}�x���� 	|����#
��!���&��$���)��'���,
��*���/��-���q���rZs54u3rZu31v\v\pWrZt[x_z8t[z87|6|64s5t[{b}c
;{b;:�9�97z8{b�f�g
�>�f�>=�<�<:;�f�j�k�A�j�A@�?�?=�>�j�n�o�D�n�DC�B�B@�A�n�r�s�G�r�GF�E�EC�D�r�v�w�J�v�JI�H�HF�G�v�z�{	�M�z�ML�K�KI�J�z�~�
�P�~�PO�N�NL�M�~����"�S���SR�Q�QO�P������%�V���VU�T�TR�S������
(�Y���YX�W�WU�V������+�\���\[�Z�ZX�Y������.�_w^�_.�����_^�]�][�\����]vw^�`^�_w^	iI�K��jL�N��kO�Q��lR�T��mU�W��nX�Z��o[�]��p^�`��!�!v�t�����t r �"x�w�����w!v!��#z�y�����y"x��$|�{�����{#z��%~�}�����}$|��&�������%~��'���������&���(���������'����!v�w������1�������0������u0���� r�t����"x�y������2�����1�������#z�{������3�����2�������$|�}������4�����3�������%~�������5�����4�������&���������6�����5�������'���������7�����6�������(���������8�����7�������)���������9�����8�������*���������:�����9�������+���������;���:������,��������<���;������-��������=���<�����.��������>�	�	�=�����/��������?���>�����?�����1��������A�����@����@�>��0������2��������B���A�����3��������C���B�����4��������D���C�����5��������E���D���� �6������� �F�!�!�E����#�7�������#�G�$�$�F� ���&�8�������&�H�'�'�G�#���)�9�������)�I�*�*�H�&���,�:�����,�J�-�-�I�)���/�;����/�K�0�0�J�,��2�<����2�L�3�3�K�/��5�=�	�
��5�M�6�6�L�2��8�>��
�
�8�N�9�9�M�5�
�;�?���
�;�O�<�<�N�8�
�>�O�;��@�A����@�Q�A��A�P�C�?�C�P�n'C�@���D�B����D�R�E�E�Q�@��GC����GSHHR�D��JD����JTKKSG�ME�!�"��MUNNTJ�P
F�$�%�"�P
VQ	Q	UM"�S
G�'�(�%�S
WTTVP
%�VH�*�+�(�VXWWWS
(�YI�-�.�+�YYZZXV+�\J�0�1�.�\Z]]YY.�_K�3�4�1�_[``Z\1�bL�6�7�4�b\cc[_4�eM�9�:�7�e] ff\b7�h"N�<�=�:�h"^#i!i!] e:�k%O�>�?�=�k%_&l$l$^#h"=�n'_&k%?�p-Q�E�F�B�p-a,q+qYq+a,�B�q+`)r�o�r�`*�0r�P�A�B�s0R�HI�F�s0b/t.yat.b/�	t.a,p-F�u3SKL�I�u3c2v1~ev1c2�v1b/s0I�w6TNO�L�w6d5x4�ix4d5�x4c2u3L�y9UQ	R�O�y9e8z7�mz7e8�z7d5w6O�{<VTU�R�{<f;|:�q|:f;�|:e8y9R�}?WWX�U�}?g>~=�u~=g>�~=f;{<U�BXZ[�X�BhA�@�y�@hA��@g>}?X��EY]^�[��EiD�C�}�CiD��ChAB[��HZ`a�^��HjG�F���FjG�!�FiD�E^��K[cd�a��KkJ�I���IkJ�$�IjG�Ha��N\fg�d��NlM�L���LlM�'�LkJ�Kd��Q] i!j�g��QmP�O���OmP�*�OlM�Ng��T^#l$m�j��TnS�R���RnS�-�RmP�Qj��_&n'o�m��oV�U���UoV���UnS�Tm����0`*�(�0oV�o��a,t.ya�XpqY�(��q����`)q+qY�	b/v1~e�	`xya�c2x4�i�d}~e�d5z7�m�h��i�e8|:�q�l��m�f;~=�u�p��q�g>�@�y�t��u�hA�C�}�x��y�iD�F���	|��}�!jG�I���!
�� ���$kJ�L���$��#���'lM�O���'��&���*mP�R���*
��)���-nS�U���-��,����oV�0������/�����(��
hF�H�����HI	i�)�������EF
h���)��gC�E��*�������BCg���*�+����f@�B�����?@f���+�
e=�?��,�������,����<=
e-�������9:dd:�<���
��-�c7�9��	.����
�|67c���.�	b4|6�/���� a s���
�
��/��u34b�1u3�!�����y�x$�[�ZB�A	Q�P#�d�cF�Ea�`"�l�k!�q�p 0�!���N�M���L�K{�zJ�It�sH�Gi�hD�CY�X��-�1 ���,� ��|+�~�r*�v�m)�o�e(�f�\'�^�R&�V�S	@�?
W�]
>�=_�b<�;g�j:�9
n�u
8�7w�}6�5�4�3��2�.�%�U�T/�O���Mat1t�&,
 apa(��=��?���<�?���=���=�?b:#E:\GRAFIX\TRUSPACE\BUMPS\orange.tab�?�?�Q�=END 

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)


Written By
Software Developer
United Kingdom United Kingdom
Follow my blog at www.dwmkerr.com and find out about my charity at www.childrenshomesnepal.org.

Comments and Discussions