initial commit

This commit is contained in:
2010-04-05 23:38:59 +02:00
commit e7e0b39e82
150 changed files with 28636 additions and 0 deletions
+117
View File
@@ -0,0 +1,117 @@
FIND_PACKAGE( GLUT )
LINK_LIBRARIES( oglft ${FREETYPE2_LIBRARIES})
INCLUDE_DIRECTORIES( ${PROJECT_BINARY_DIR} )
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} )
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} )
INCLUDE_DIRECTORIES( ${FREETYPE2_INCLUDE_DIR}
${FREETYPE2_INCLUDE_DIR}/freetype2
)
INCLUDE_DIRECTORIES( ${GLUT_INCLUDE_DIR} )
IF( ENABLE_QT )
IF( DESIRED_QT_VERSION EQUAL 3)
INCLUDE_DIRECTORIES( ${QT_INCLUDE_DIR} )
LINK_LIBRARIES( oglft ${FREETYPE2_LIBRARIES} ${QT_LIBRARIES} )
ELSEIF( DESIRED_QT_VERSION EQUAL 4 )
INCLUDE_DIRECTORIES( ${QT_QTCORE_INCLUDE_DIR} )
INCLUDE_DIRECTORIES( ${QT_QTGUI_INCLUDE_DIR} )
INCLUDE_DIRECTORIES( ${QT_QTOPENGL_INCLUDE_DIR} )
LINK_LIBRARIES( oglft ${FREETYPE2_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} )
ENDIF( DESIRED_QT_VERSION EQUAL 3)
ENDIF( ENABLE_QT )
ADD_EXECUTABLE(
tutorial1
tutorial1.cpp
)
TARGET_LINK_LIBRARIES(
tutorial1
${GLUT_LIBRARIES}
)
ADD_EXECUTABLE(
tutorial2
tutorial2.cpp
)
TARGET_LINK_LIBRARIES(
tutorial2
${GLUT_LIBRARIES}
)
ADD_EXECUTABLE(
tutorial3
tutorial3.cpp
)
TARGET_LINK_LIBRARIES(
tutorial3
${GLUT_LIBRARIES}
)
ADD_EXECUTABLE(
tutorial3
tutorial3.cpp
)
TARGET_LINK_LIBRARIES(
tutorial3
${GLUT_LIBRARIES}
)
ADD_EXECUTABLE(
demo
demo.cpp
)
TARGET_LINK_LIBRARIES(
demo
${GLUT_LIBRARIES}
)
ADD_EXECUTABLE(
demo2
demo2.cpp
)
TARGET_LINK_LIBRARIES(
demo2
${GLUT_LIBRARIES}
)
IF( ENABLE_QT )
IF( DESIRED_QT_VERSION EQUAL 3 )
KDE3_AUTOMOC( demo3.cpp speedtest.cpp )
ELSEIF( DESIRED_QT_VERSION EQUAL 4 )
QT4_AUTOMOC( demo3.cpp speedtest.cpp )
ENDIF( DESIRED_QT_VERSION EQUAL 3 )
ADD_EXECUTABLE(
demo3
demo3.cpp
)
TARGET_LINK_LIBRARIES(
demo3
${OPENGL_LIBRARIES}
)
ADD_EXECUTABLE(
speedtest
speedtest.cpp
)
TARGET_LINK_LIBRARIES(
speedtest
${OPENGL_LIBRARIES}
)
ENDIF( ENABLE_QT )
# Copy some files needed by demo3 into the tests directory.
FILE( GLOB images *.png )
FOREACH( test_png ${images} )
GET_FILENAME_COMPONENT( png_file ${test_png} NAME )
CONFIGURE_FILE( ${test_png}
"${CMAKE_CURRENT_BINARY_DIR}/${png_file}" COPYONLY )
ENDFOREACH( test_png ${images} )
@@ -0,0 +1,211 @@
/*
* Demo3UnicodeExample.h: Sample font for demo3 example.
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
FT_Byte Demo3UnicodeExample_ttf[] = {
0,1,0,0,0,11,0,128,0,3,0,48,79,83,47,50,
83,120,128,90,0,0,0,188,0,0,0,86,99,109,97,112,
135,81,49,45,0,0,1,20,0,0,1,114,99,118,116,32,
5,238,9,153,0,0,2,136,0,0,0,36,103,108,121,102,
105,160,31,169,0,0,2,172,0,0,4,178,104,101,97,100,
212,135,107,129,0,0,7,96,0,0,0,54,104,104,101,97,
6,249,3,88,0,0,7,152,0,0,0,36,104,109,116,120,
20,76,1,64,0,0,7,188,0,0,0,40,108,111,99,97,
6,150,5,39,0,0,7,228,0,0,0,22,109,97,120,112,
0,78,0,250,0,0,7,252,0,0,0,32,110,97,109,101,
88,93,109,50,0,0,8,28,0,0,3,72,112,111,115,116,
11,139,233,133,0,0,11,100,0,0,0,100,0,1,3,232,
1,144,0,5,0,12,0,200,0,200,0,0,0,200,0,200,
0,200,0,0,0,200,0,49,1,2,0,0,2,0,5,3,
0,0,0,0,0,0,0,0,1,131,0,0,0,96,0,0,
0,0,0,0,0,0,80,102,69,100,0,64,0,0,34,43,
3,164,255,52,0,0,3,164,0,204,0,0,0,1,0,0,
0,0,0,0,0,0,0,2,0,3,0,1,0,0,0,20,
0,1,0,0,0,0,0,108,0,4,0,88,0,0,0,18,
0,16,0,3,0,2,3,169,3,195,3,200,33,38,33,146,
34,7,34,25,34,43,255,255,0,0,3,169,3,195,3,200,
33,38,33,146,34,7,34,25,34,43,255,255,252,90,252,65,
252,61,222,221,222,116,222,0,221,239,221,222,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,6,0,0,1,0,0,0,0,0,0,0,1,3,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,33,2,121,0,0,0,86,
0,83,1,30,0,100,0,12,0,74,2,25,0,92,2,222,
0,90,0,50,3,176,0,41,0,102,0,78,0,2,0,33,
0,0,1,110,2,154,0,3,0,7,0,46,177,1,0,47,
60,178,7,4,0,237,50,177,6,5,220,60,178,3,2,0,
237,50,0,177,3,0,47,60,178,5,4,0,237,50,178,7,
6,1,252,60,178,1,2,0,237,50,51,17,33,17,37,33,
17,33,33,1,77,254,212,1,11,254,245,2,154,253,102,33,
2,88,0,1,0,48,0,0,2,206,2,234,0,38,0,137,
0,177,20,2,63,176,21,47,176,37,51,176,38,51,177,0,
3,237,177,1,3,237,177,18,3,237,177,19,3,237,176,6,
47,176,28,51,176,29,51,176,30,51,177,10,4,237,1,176,
0,47,176,38,51,177,36,5,237,177,37,5,237,176,2,47,
176,3,51,176,4,51,176,5,51,177,6,6,237,177,33,6,
237,177,34,6,237,177,35,6,237,176,21,176,36,16,222,176,
22,50,177,19,5,237,177,20,5,237,176,23,176,34,16,222,
176,24,50,176,25,50,177,15,6,237,177,16,6,237,177,17,
6,237,177,40,16,16,204,48,49,55,51,38,53,39,54,55,
54,55,54,23,22,23,22,23,22,21,20,7,51,21,33,53,
54,61,1,54,39,38,7,38,7,49,6,23,20,23,21,33,
48,160,151,1,1,101,24,28,74,120,92,58,104,36,16,152,
160,254,226,178,3,71,63,95,110,66,53,2,177,254,226,86,
127,182,1,165,99,23,17,50,5,4,37,65,127,55,61,182,
128,86,81,83,216,2,127,82,72,1,2,96,78,104,220,85,
81,0,0,2,0,34,255,243,2,98,2,32,0,19,0,35,
0,98,0,177,8,7,63,176,9,47,176,10,51,177,27,8,
237,177,28,8,237,177,29,8,237,177,0,9,63,176,19,47,
177,1,8,237,177,2,8,237,1,176,13,47,176,14,51,176,
15,51,176,16,51,177,23,10,237,177,24,10,237,177,25,10,
237,176,31,176,24,16,222,176,32,50,176,33,50,177,3,10,
237,177,4,10,237,177,5,10,237,177,6,10,237,177,37,5,
16,204,48,49,1,21,35,22,21,23,20,7,6,35,34,47,
1,38,61,1,52,55,54,23,7,6,7,6,23,6,23,22,
23,54,55,54,39,52,39,38,2,98,145,66,1,73,68,108,
108,66,5,70,73,106,154,87,94,40,22,2,2,81,33,44,
102,38,19,1,75,35,2,19,73,62,130,1,143,67,67,65,
5,70,136,2,141,68,96,40,63,2,87,49,65,134,48,20,
1,1,95,47,61,130,50,23,0,1,0,61,255,52,2,157,
2,19,0,34,0,118,0,176,26,47,176,27,51,177,0,11,
237,177,1,11,237,177,9,11,237,177,10,11,237,177,17,11,
237,177,18,11,237,1,176,0,47,176,33,51,176,34,51,177,
1,12,237,177,2,12,237,177,3,12,237,176,8,176,1,16,
222,176,9,50,176,27,50,176,28,50,177,10,12,237,177,11,
12,237,177,25,12,237,177,26,12,237,176,14,176,10,16,222,
176,15,50,176,16,50,176,17,50,177,18,12,237,177,19,12,
237,177,20,12,237,177,36,18,16,204,48,49,19,51,17,22,
23,22,23,22,23,17,51,17,54,55,54,61,1,17,51,17,
6,7,6,7,6,7,21,35,53,38,39,38,39,38,39,61,
89,2,19,13,29,39,68,90,124,32,13,89,1,24,20,51,
59,103,90,138,63,43,9,5,1,2,19,254,250,97,34,25,
20,26,3,1,211,254,45,4,86,38,76,1,1,6,254,253,
122,47,39,35,38,3,192,192,5,68,48,55,32,76,0,1,
0,39,0,78,3,216,1,182,0,18,0,37,0,176,11,47,
176,12,51,177,13,13,237,177,14,13,237,1,176,12,47,176,
13,51,177,3,14,237,177,4,14,237,177,20,3,16,204,48,
49,1,22,31,1,21,6,7,6,7,35,54,55,33,53,33,
38,39,53,39,3,10,91,64,51,86,76,19,26,39,47,52,
252,227,3,29,51,20,26,1,182,98,41,27,23,44,78,20,
29,101,54,51,66,36,1,51,0,2,0,14,0,0,2,103,
2,182,0,2,0,5,0,23,0,176,3,47,176,5,51,177,
0,15,237,177,1,15,237,1,177,7,1,47,204,48,49,19,
33,1,3,27,1,14,2,88,254,198,168,200,220,2,182,253,
74,2,140,254,29,1,227,0,0,1,0,92,1,53,0,195,
1,156,0,3,0,37,0,176,0,47,176,3,51,177,1,16,
237,177,2,16,237,1,176,0,47,176,1,51,177,2,16,237,
177,3,16,237,177,5,2,16,204,48,49,19,53,51,21,92,
103,1,54,102,102,0,0,1,255,255,255,145,1,25,3,164,
0,46,0,29,176,0,47,176,26,51,176,38,51,176,45,51,
176,46,51,177,16,17,237,177,21,17,237,177,22,17,237,48,
49,27,1,54,55,54,55,54,23,22,21,22,7,6,35,34,
39,38,7,6,31,1,22,7,3,6,7,6,39,38,39,38,
55,54,55,54,23,22,23,22,63,1,54,39,38,39,38,17,
100,9,9,70,14,16,31,22,9,1,28,9,10,17,21,18,
15,8,1,4,20,1,8,4,41,25,43,25,17,21,6,3,
9,20,29,11,7,22,15,1,8,5,1,1,18,1,218,1,
10,155,29,6,2,1,28,13,14,35,13,4,18,19,15,9,
17,72,251,86,254,222,147,52,35,1,1,16,20,35,15,9,
22,11,5,8,24,14,1,15,48,12,8,158,1,1,0,0,
0,1,0,0,0,0,0,0,248,61,157,109,95,15,60,245,
0,19,3,232,0,0,0,0,184,197,19,226,0,0,0,0,
184,197,19,226,255,255,255,52,3,216,3,164,0,0,0,8,
0,2,0,0,0,0,0,0,0,1,0,0,3,32,255,56,
0,0,4,11,255,255,0,10,3,216,0,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,10,1,176,0,33,
0,0,0,0,1,77,0,0,2,248,0,48,2,142,0,34,
2,236,0,61,4,11,0,39,2,136,0,14,1,38,0,92,
1,35,255,255,0,0,0,43,0,43,0,43,0,171,1,22,
1,137,1,190,1,222,1,253,2,89,0,0,0,1,0,0,
0,10,0,47,0,2,0,0,0,0,0,2,0,0,0,64,
0,1,0,0,0,64,0,137,0,0,0,0,0,0,0,21,
1,2,0,1,0,0,0,0,0,0,0,65,0,0,0,1,
0,0,0,0,0,1,0,21,0,66,0,1,0,0,0,0,
0,2,0,7,0,88,0,1,0,0,0,0,0,3,0,47,
0,96,0,1,0,0,0,0,0,4,0,21,0,144,0,1,
0,0,0,0,0,5,0,7,0,166,0,1,0,0,0,0,
0,6,0,19,0,174,0,0,0,3,0,0,0,0,0,130,
0,194,0,0,0,3,0,0,0,1,0,42,1,70,0,0,
0,3,0,0,0,2,0,14,1,114,0,0,0,3,0,0,
0,3,0,94,1,130,0,0,0,3,0,0,0,4,0,42,
1,226,0,0,0,3,0,0,0,5,0,14,2,14,0,0,
0,3,0,0,0,6,0,38,2,30,0,3,0,1,4,9,
0,0,0,130,0,194,0,3,0,1,4,9,0,1,0,42,
1,70,0,3,0,1,4,9,0,2,0,14,1,114,0,3,
0,1,4,9,0,3,0,94,1,130,0,3,0,1,4,9,
0,4,0,42,1,226,0,3,0,1,4,9,0,5,0,14,
2,14,0,3,0,1,4,9,0,6,0,38,2,30,67,114,
101,97,116,101,100,32,98,121,32,65,108,108,101,110,32,66,
97,114,110,101,116,116,32,119,105,116,104,32,80,102,97,69,
100,105,116,32,49,46,48,32,40,104,116,116,112,58,47,47,
112,102,97,101,100,105,116,46,115,102,46,110,101,116,41,0,
68,101,109,111,51,32,85,110,105,99,111,100,101,32,69,120,
97,109,112,108,101,0,82,101,103,117,108,97,114,0,80,102,
97,69,100,105,116,32,49,46,48,32,58,32,68,101,109,111,
51,32,85,110,105,99,111,100,101,32,69,120,97,109,112,108,
101,32,58,32,50,53,45,50,45,50,48,55,50,0,68,101,
109,111,51,32,85,110,105,99,111,100,101,32,69,120,97,109,
112,108,101,0,48,48,49,46,48,48,48,0,68,101,109,111,
51,85,110,105,99,111,100,101,69,120,97,109,112,108,101,0,
0,67,0,114,0,101,0,97,0,116,0,101,0,100,0,32,
0,98,0,121,0,32,0,65,0,108,0,108,0,101,0,110,
0,32,0,66,0,97,0,114,0,110,0,101,0,116,0,116,
0,32,0,119,0,105,0,116,0,104,0,32,0,80,0,102,
0,97,0,69,0,100,0,105,0,116,0,32,0,49,0,46,
0,48,0,32,0,40,0,104,0,116,0,116,0,112,0,58,
0,47,0,47,0,112,0,102,0,97,0,101,0,100,0,105,
0,116,0,46,0,115,0,102,0,46,0,110,0,101,0,116,
0,41,0,0,0,68,0,101,0,109,0,111,0,51,0,32,
0,85,0,110,0,105,0,99,0,111,0,100,0,101,0,32,
0,69,0,120,0,97,0,109,0,112,0,108,0,101,0,0,
0,82,0,101,0,103,0,117,0,108,0,97,0,114,0,0,
0,80,0,102,0,97,0,69,0,100,0,105,0,116,0,32,
0,49,0,46,0,48,0,32,0,58,0,32,0,68,0,101,
0,109,0,111,0,51,0,32,0,85,0,110,0,105,0,99,
0,111,0,100,0,101,0,32,0,69,0,120,0,97,0,109,
0,112,0,108,0,101,0,32,0,58,0,32,0,50,0,53,
0,45,0,50,0,45,0,50,0,48,0,55,0,50,0,0,
0,68,0,101,0,109,0,111,0,51,0,32,0,85,0,110,
0,105,0,99,0,111,0,100,0,101,0,32,0,69,0,120,
0,97,0,109,0,112,0,108,0,101,0,0,0,48,0,48,
0,49,0,46,0,48,0,48,0,48,0,0,0,68,0,101,
0,109,0,111,0,51,0,85,0,110,0,105,0,99,0,111,
0,100,0,101,0,69,0,120,0,97,0,109,0,112,0,108,
0,101,0,0,0,2,0,0,0,0,0,0,255,156,0,50,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,10,0,0,0,1,0,2,1,2,1,3,
1,4,1,5,1,6,1,7,0,156,7,117,110,105,48,51,
65,57,5,115,105,103,109,97,3,112,115,105,10,97,114,114,
111,119,114,105,103,104,116,8,103,114,97,100,105,101,110,116,
7,117,110,105,50,50,49,57,
};
const int Demo3UnicodeExample_ttf_size = sizeof( Demo3UnicodeExample_ttf );
@@ -0,0 +1,949 @@
SplineFontDB: 1.0
FontName: Demo3UnicodeExample
FullName: Demo3 Unicode Example
FamilyName: Demo3 Unicode Example
Weight: Medium
Copyright: Created by Allen Barnett with PfaEdit 1.0 (http://pfaedit.sf.net)
Version: 001.000
ItalicAngle: 0
UnderlinePosition: -100
UnderlineWidth: 50
Ascent: 800
Descent: 200
FSType: 12
PfmFamily: 17
TTFWeight: 400
TTFWidth: 5
Panose: 2 0 5 3 0 0 0 0 0 0
Encoding: 26
DisplaySize: -24
AntiAlias: 1
BeginChars: 65536 263
StartChar: space
Encoding: 32 32
Width: 1000
EndChar
StartChar: exclam
Encoding: 33 33
Width: 1000
EndChar
StartChar: quotedbl
Encoding: 34 34
Width: 1000
EndChar
StartChar: numbersign
Encoding: 35 35
Width: 1000
EndChar
StartChar: dollar
Encoding: 36 36
Width: 1000
EndChar
StartChar: percent
Encoding: 37 37
Width: 1000
EndChar
StartChar: ampersand
Encoding: 38 38
Width: 1000
EndChar
StartChar: quotesingle
Encoding: 39 39
Width: 1000
EndChar
StartChar: parenleft
Encoding: 40 40
Width: 1000
EndChar
StartChar: parenright
Encoding: 41 41
Width: 1000
EndChar
StartChar: asterisk
Encoding: 42 42
Width: 1000
EndChar
StartChar: plus
Encoding: 43 43
Width: 1000
EndChar
StartChar: comma
Encoding: 44 44
Width: 1000
EndChar
StartChar: hyphen
Encoding: 45 45
Width: 1000
EndChar
StartChar: period
Encoding: 46 46
Width: 1000
EndChar
StartChar: slash
Encoding: 47 47
Width: 1000
EndChar
StartChar: zero
Encoding: 48 48
Width: 1000
EndChar
StartChar: one
Encoding: 49 49
Width: 1000
EndChar
StartChar: two
Encoding: 50 50
Width: 1000
EndChar
StartChar: three
Encoding: 51 51
Width: 1000
EndChar
StartChar: four
Encoding: 52 52
Width: 1000
EndChar
StartChar: five
Encoding: 53 53
Width: 1000
EndChar
StartChar: six
Encoding: 54 54
Width: 1000
EndChar
StartChar: seven
Encoding: 55 55
Width: 1000
EndChar
StartChar: eight
Encoding: 56 56
Width: 1000
EndChar
StartChar: nine
Encoding: 57 57
Width: 1000
EndChar
StartChar: colon
Encoding: 58 58
Width: 1000
EndChar
StartChar: semicolon
Encoding: 59 59
Width: 1000
EndChar
StartChar: less
Encoding: 60 60
Width: 1000
EndChar
StartChar: equal
Encoding: 61 61
Width: 1000
EndChar
StartChar: greater
Encoding: 62 62
Width: 1000
EndChar
StartChar: question
Encoding: 63 63
Width: 1000
EndChar
StartChar: at
Encoding: 64 64
Width: 1000
EndChar
StartChar: A
Encoding: 65 65
Width: 1000
EndChar
StartChar: B
Encoding: 66 66
Width: 1000
EndChar
StartChar: C
Encoding: 67 67
Width: 1000
EndChar
StartChar: D
Encoding: 68 68
Width: 1000
EndChar
StartChar: E
Encoding: 69 69
Width: 1000
EndChar
StartChar: F
Encoding: 70 70
Width: 1000
EndChar
StartChar: G
Encoding: 71 71
Width: 1000
EndChar
StartChar: H
Encoding: 72 72
Width: 1000
EndChar
StartChar: I
Encoding: 73 73
Width: 1000
EndChar
StartChar: J
Encoding: 74 74
Width: 1000
EndChar
StartChar: K
Encoding: 75 75
Width: 1000
EndChar
StartChar: L
Encoding: 76 76
Width: 1000
EndChar
StartChar: M
Encoding: 77 77
Width: 1000
EndChar
StartChar: N
Encoding: 78 78
Width: 1000
EndChar
StartChar: O
Encoding: 79 79
Width: 1000
EndChar
StartChar: P
Encoding: 80 80
Width: 1000
EndChar
StartChar: Q
Encoding: 81 81
Width: 1000
EndChar
StartChar: R
Encoding: 82 82
Width: 1000
EndChar
StartChar: S
Encoding: 83 83
Width: 1000
EndChar
StartChar: T
Encoding: 84 84
Width: 1000
EndChar
StartChar: U
Encoding: 85 85
Width: 1000
EndChar
StartChar: V
Encoding: 86 86
Width: 1000
EndChar
StartChar: W
Encoding: 87 87
Width: 1000
EndChar
StartChar: X
Encoding: 88 88
Width: 1000
EndChar
StartChar: Y
Encoding: 89 89
Width: 1000
EndChar
StartChar: Z
Encoding: 90 90
Width: 1000
EndChar
StartChar: bracketleft
Encoding: 91 91
Width: 1000
EndChar
StartChar: backslash
Encoding: 92 92
Width: 1000
EndChar
StartChar: bracketright
Encoding: 93 93
Width: 1000
EndChar
StartChar: asciicircum
Encoding: 94 94
Width: 1000
EndChar
StartChar: underscore
Encoding: 95 95
Width: 1000
EndChar
StartChar: grave
Encoding: 96 96
Width: 1000
EndChar
StartChar: a
Encoding: 97 97
Width: 1000
EndChar
StartChar: b
Encoding: 98 98
Width: 1000
EndChar
StartChar: c
Encoding: 99 99
Width: 1000
EndChar
StartChar: d
Encoding: 100 100
Width: 1000
EndChar
StartChar: e
Encoding: 101 101
Width: 1000
EndChar
StartChar: f
Encoding: 102 102
Width: 1000
EndChar
StartChar: g
Encoding: 103 103
Width: 1000
EndChar
StartChar: h
Encoding: 104 104
Width: 1000
EndChar
StartChar: i
Encoding: 105 105
Width: 1000
EndChar
StartChar: j
Encoding: 106 106
Width: 1000
EndChar
StartChar: k
Encoding: 107 107
Width: 1000
EndChar
StartChar: l
Encoding: 108 108
Width: 1000
EndChar
StartChar: m
Encoding: 109 109
Width: 1000
EndChar
StartChar: n
Encoding: 110 110
Width: 1000
EndChar
StartChar: o
Encoding: 111 111
Width: 1000
EndChar
StartChar: p
Encoding: 112 112
Width: 1000
EndChar
StartChar: q
Encoding: 113 113
Width: 1000
EndChar
StartChar: r
Encoding: 114 114
Width: 1000
EndChar
StartChar: s
Encoding: 115 115
Width: 1000
EndChar
StartChar: t
Encoding: 116 116
Width: 1000
EndChar
StartChar: u
Encoding: 117 117
Width: 1000
EndChar
StartChar: v
Encoding: 118 118
Width: 1000
EndChar
StartChar: w
Encoding: 119 119
Width: 1000
EndChar
StartChar: x
Encoding: 120 120
Width: 1000
EndChar
StartChar: y
Encoding: 121 121
Width: 1000
EndChar
StartChar: z
Encoding: 122 122
Width: 1000
EndChar
StartChar: braceleft
Encoding: 123 123
Width: 1000
EndChar
StartChar: bar
Encoding: 124 124
Width: 1000
EndChar
StartChar: braceright
Encoding: 125 125
Width: 1000
EndChar
StartChar: asciitilde
Encoding: 126 126
Width: 1000
EndChar
StartChar: nonbreakingspace
Encoding: 160 160
Width: 1000
EndChar
StartChar: exclamdown
Encoding: 161 161
Width: 1000
EndChar
StartChar: cent
Encoding: 162 162
Width: 1000
EndChar
StartChar: sterling
Encoding: 163 163
Width: 1000
EndChar
StartChar: currency
Encoding: 164 164
Width: 1000
EndChar
StartChar: yen
Encoding: 165 165
Width: 1000
EndChar
StartChar: brokenbar
Encoding: 166 166
Width: 1000
EndChar
StartChar: section
Encoding: 167 167
Width: 1000
EndChar
StartChar: dieresis
Encoding: 168 168
Width: 1000
EndChar
StartChar: copyright
Encoding: 169 169
Width: 1000
EndChar
StartChar: ordfeminine
Encoding: 170 170
Width: 1000
EndChar
StartChar: guillemotleft
Encoding: 171 171
Width: 1000
EndChar
StartChar: logicalnot
Encoding: 172 172
Width: 1000
EndChar
StartChar: softhyphen
Encoding: 173 173
Width: 1000
EndChar
StartChar: registered
Encoding: 174 174
Width: 1000
EndChar
StartChar: macron
Encoding: 175 175
Width: 1000
EndChar
StartChar: degree
Encoding: 176 176
Width: 1000
EndChar
StartChar: plusminus
Encoding: 177 177
Width: 1000
EndChar
StartChar: twosuperior
Encoding: 178 178
Width: 1000
EndChar
StartChar: threesuperior
Encoding: 179 179
Width: 1000
EndChar
StartChar: acute
Encoding: 180 180
Width: 1000
EndChar
StartChar: mu
Encoding: 181 181
Width: 1000
EndChar
StartChar: paragraph
Encoding: 182 182
Width: 1000
EndChar
StartChar: periodcentered
Encoding: 183 183
Width: 1000
EndChar
StartChar: cedilla
Encoding: 184 184
Width: 1000
EndChar
StartChar: onesuperior
Encoding: 185 185
Width: 1000
EndChar
StartChar: ordmasculine
Encoding: 186 186
Width: 1000
EndChar
StartChar: guillemotright
Encoding: 187 187
Width: 1000
EndChar
StartChar: onequarter
Encoding: 188 188
Width: 1000
EndChar
StartChar: onehalf
Encoding: 189 189
Width: 1000
EndChar
StartChar: threequarters
Encoding: 190 190
Width: 1000
EndChar
StartChar: questiondown
Encoding: 191 191
Width: 1000
EndChar
StartChar: Agrave
Encoding: 192 192
Width: 1000
EndChar
StartChar: Aacute
Encoding: 193 193
Width: 1000
EndChar
StartChar: Acircumflex
Encoding: 194 194
Width: 1000
EndChar
StartChar: Atilde
Encoding: 195 195
Width: 1000
EndChar
StartChar: Adieresis
Encoding: 196 196
Width: 1000
EndChar
StartChar: Aring
Encoding: 197 197
Width: 1000
EndChar
StartChar: AE
Encoding: 198 198
Width: 1000
EndChar
StartChar: Ccedilla
Encoding: 199 199
Width: 1000
EndChar
StartChar: Egrave
Encoding: 200 200
Width: 1000
EndChar
StartChar: Eacute
Encoding: 201 201
Width: 1000
EndChar
StartChar: Ecircumflex
Encoding: 202 202
Width: 1000
EndChar
StartChar: Edieresis
Encoding: 203 203
Width: 1000
EndChar
StartChar: Igrave
Encoding: 204 204
Width: 1000
EndChar
StartChar: Iacute
Encoding: 205 205
Width: 1000
EndChar
StartChar: Icircumflex
Encoding: 206 206
Width: 1000
EndChar
StartChar: Idieresis
Encoding: 207 207
Width: 1000
EndChar
StartChar: Eth
Encoding: 208 208
Width: 1000
EndChar
StartChar: Ntilde
Encoding: 209 209
Width: 1000
EndChar
StartChar: Ograve
Encoding: 210 210
Width: 1000
EndChar
StartChar: Oacute
Encoding: 211 211
Width: 1000
EndChar
StartChar: Ocircumflex
Encoding: 212 212
Width: 1000
EndChar
StartChar: Otilde
Encoding: 213 213
Width: 1000
EndChar
StartChar: Odieresis
Encoding: 214 214
Width: 1000
EndChar
StartChar: multiply
Encoding: 215 215
Width: 1000
EndChar
StartChar: Oslash
Encoding: 216 216
Width: 1000
EndChar
StartChar: Ugrave
Encoding: 217 217
Width: 1000
EndChar
StartChar: Uacute
Encoding: 218 218
Width: 1000
EndChar
StartChar: Ucircumflex
Encoding: 219 219
Width: 1000
EndChar
StartChar: Udieresis
Encoding: 220 220
Width: 1000
EndChar
StartChar: Yacute
Encoding: 221 221
Width: 1000
EndChar
StartChar: Thorn
Encoding: 222 222
Width: 1000
EndChar
StartChar: germandbls
Encoding: 223 223
Width: 1000
EndChar
StartChar: agrave
Encoding: 224 224
Width: 1000
EndChar
StartChar: aacute
Encoding: 225 225
Width: 1000
EndChar
StartChar: acircumflex
Encoding: 226 226
Width: 1000
EndChar
StartChar: atilde
Encoding: 227 227
Width: 1000
EndChar
StartChar: adieresis
Encoding: 228 228
Width: 1000
EndChar
StartChar: aring
Encoding: 229 229
Width: 1000
EndChar
StartChar: ae
Encoding: 230 230
Width: 1000
EndChar
StartChar: ccedilla
Encoding: 231 231
Width: 1000
EndChar
StartChar: egrave
Encoding: 232 232
Width: 1000
EndChar
StartChar: eacute
Encoding: 233 233
Width: 1000
EndChar
StartChar: ecircumflex
Encoding: 234 234
Width: 1000
EndChar
StartChar: edieresis
Encoding: 235 235
Width: 1000
EndChar
StartChar: igrave
Encoding: 236 236
Width: 1000
EndChar
StartChar: iacute
Encoding: 237 237
Width: 1000
EndChar
StartChar: icircumflex
Encoding: 238 238
Width: 1000
EndChar
StartChar: idieresis
Encoding: 239 239
Width: 1000
EndChar
StartChar: eth
Encoding: 240 240
Width: 1000
EndChar
StartChar: ntilde
Encoding: 241 241
Width: 1000
EndChar
StartChar: ograve
Encoding: 242 242
Width: 1000
EndChar
StartChar: oacute
Encoding: 243 243
Width: 1000
EndChar
StartChar: ocircumflex
Encoding: 244 244
Width: 1000
EndChar
StartChar: otilde
Encoding: 245 245
Width: 1000
EndChar
StartChar: odieresis
Encoding: 246 246
Width: 1000
EndChar
StartChar: divide
Encoding: 247 247
Width: 1000
EndChar
StartChar: oslash
Encoding: 248 248
Width: 1000
EndChar
StartChar: ugrave
Encoding: 249 249
Width: 1000
EndChar
StartChar: uacute
Encoding: 250 250
Width: 1000
EndChar
StartChar: ucircumflex
Encoding: 251 251
Width: 1000
EndChar
StartChar: udieresis
Encoding: 252 252
Width: 1000
EndChar
StartChar: yacute
Encoding: 253 253
Width: 1000
EndChar
StartChar: thorn
Encoding: 254 254
Width: 1000
EndChar
StartChar: ydieresis
Encoding: 255 255
Width: 1000
EndChar
StartChar: uni03A9
Encoding: 937 937
Width: 760
Flags: W
HStem: 0 86.5<55 192 560 711> 662.5 82.6191<368 400>
VStem: 48.5 285.5<1 81> 56.5 100.5<368 416> 432.5 285<1 81> 610.5 99<368 416>
Fore
48.5 86.5 m 1
208.5 86.5 l 1
107.167 171.167 56.5 274.5 56.5 396.5 c 1
56.7101 536.75 118.58 644.249 209.5 699.75 c 1
297.509 759.342 465.523 760.85 554.25 703.5 c 1
642.338 648.475 711.166 540.692 709.5 396.5 c 1
709.5 274.5 658.833 171.167 557.5 86.5 c 1
717.5 86.5 l 1
717.5 0 l 1
432.5 0 l 1
432.5 81 l 1
551.167 136.333 610.5 236.5 610.5 381.5 c 1
613.683 531.395 525.526 663.23 384.5 662.5 c 1
242.961 665.005 154.417 531.689 157 386.5 c 1
157 239.5 216 137.667 334 81 c 1
334 0 l 1
48.5 0 l 1
48.5 86.5 l 1
EndSplineSet
MinimumDistance: x5,-1
EndChar
StartChar: sigma
Encoding: 963 963
Width: 654
Flags: W
HStem: -11.9998 73.9998<282 299.31> 458 73<466 594> 468.5 74.5483<280.625 302.587>
VStem: 34 92.5<243 265 265.575 298.829> 440 91.5<243 291>
Fore
609.5 531 m 1
609.5 458 l 1
465 458 l 1
509.333 416.667 531.5 352.333 531.5 265 c 0
531.5 170 507.25 100.083 458.75 55.25 c 1
367.585 -35.1072 191 -34.6289 104 58 c 1
57.333 104.667 34 173.833 34 265.5 c 0
34 359.833 58.25 429.667 106.75 475 c 1
176.138 537.884 259.745 558.789 367 531 c 1
609.5 531 l 1
280.5 468.5 m 1
180.415 465.592 122.839 382.568 126.5 265 c 1
124.033 145.734 177.982 64.8142 282 62 c 1
387.637 63.1845 442.118 149.124 440 265.5 c 1
439.941 377.605 391.876 470.041 280.5 468.5 c 1
EndSplineSet
MinimumDistance: x3,-1
EndChar
StartChar: psi
Encoding: 968 968
Width: 748
Flags: W
HStem: -203.5 734.5<320 410>
VStem: 61 89.5<244 530> 320 90<-188 -12 65 530> 579 89.5<244 530>
Fore
61 531 m 1
150.5 531 l 1
150.5 269 l 1
151.992 173.54 157.865 130.981 213.25 92.75 c 1
239.083 75.583 274.667 65.833 320 63.5 c 1
320 531 l 1
410 531 l 1
410 63.5 l 1
489.519 66.7047 544.824 98.0574 565.75 154.25 c 1
574.583 179.75 579 218 579 269 c 2
579 531 l 1
668.5 531 l 1
668.5 272 l 1
666.618 133.548 653.5 84.7044 571.5 29.25 c 1
532.5 4.08301 478.667 -9.66699 410 -12 c 1
410 -203.5 l 1
320 -203.5 l 1
320 -12 l 1
229.595 -8.79161 164.247 11.9517 118.75 61.25 c 1
67.0712 119.571 62.4383 155.542 61 272 c 1
61 531 l 1
EndSplineSet
MinimumDistance: x11,-1
EndChar
StartChar: arrowright
Encoding: 8594 8594
Width: 1035
Flags: W
HStem: 233 50.5<55 836>
VStem: 39.5 944.5<249 271>
Fore
777.5 438 m 1
848.958 360.788 901.645 310.333 984 271.5 c 1
984 249 l 1
897.46 204.953 850.008 159.158 777 78.5 c 1
738.5 78.5 l 1
769.833 145.5 802.667 197 837 233 c 1
39.5 233 l 1
39.5 283.5 l 1
837 283.5 l 1
782.642 353.947 781.915 354.515 739.5 438 c 1
777.5 438 l 1
EndSplineSet
MinimumDistance: x1,-1
EndChar
StartChar: gradient
Encoding: 8711 8711
Width: 648
Flags: W
HStem: 652.5 41<134 551>
DStem: 14.5 693.5 132.5 652.5 300.5 0 332 169 552 652.5 614.5 693.5 332 169 300.5 0
Fore
14.5 693.5 m 1
614.5 693.5 l 1
300.5 0 l 1
14.5 693.5 l 1
132.5 652.5 m 1
332 169 l 1
552 652.5 l 1
132.5 652.5 l 1
EndSplineSet
MinimumDistance: x1,-1
EndChar
StartChar: uni2219
Encoding: 8729 8729
Width: 294
Flags: W
HStem: 309.5 102.5<108 194>
VStem: 92.5 102.5<325 411>
Fore
92.5 309.5 m 1
92.5 412 l 1
195 412 l 1
195 309.5 l 1
92.5 309.5 l 1
EndSplineSet
MinimumDistance: x2,-1
EndChar
StartChar: integral
Encoding: 8747 8747
Width: 291
Flags: W
VStem: 100.5 77.8252<327.709 474>
Fore
100.5 474 m 1
109 739.5 l 1
114.542 833.138 134.534 923.622 217.5 931.5 c 1
247.522 933.096 280.447 905.565 280 878 c 1
280.849 848.918 261.127 825.941 234 826 c 1
222.333 826 209.667 832 196 844 c 1
176.357 863.99 153.522 851.038 156 822 c 1
156 808 157.5 783.833 160.5 749.5 c 1
184.169 438.285 182.123 484.679 171 123 c 1
168.333 24.667 153.333 -41.833 126 -76.5 c 1
101.122 -110.714 47.8807 -123.362 16.5 -93 c 1
-3.17021 -74.8996 -6.32757 -33.0899 12.75 -13.5 c 1
30.257 5.46361 62.8625 4.28698 79.5 -16 c 1
93.653 -31.3569 104.804 -38.4598 118 -25 c 1
129.244 -4.11259 121.392 22.5244 119 58.5 c 1
106.667 163.5 100.5 302 100.5 474 c 1
EndSplineSet
EndChar
EndChars
EndSplineFont
Binary file not shown.
@@ -0,0 +1,470 @@
/*
* Demo3UnicodeExample2.h: Additional symbols for demo3 example.
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
FT_Byte lCSymbols_ttf[] = {
0,1,0,0,0,12,0,128,0,3,0,64,79,83,47,50,
81,97,77,142,0,0,0,204,0,0,0,86,99,109,97,112,
224,46,4,241,0,0,1,36,0,0,1,82,99,118,116,32,
4,48,5,221,0,0,2,120,0,0,0,34,103,108,121,102,
109,46,45,11,0,0,2,156,0,0,18,254,104,101,97,100,
211,187,118,221,0,0,21,156,0,0,0,54,104,104,101,97,
6,115,1,120,0,0,21,212,0,0,0,36,104,109,116,120,
28,67,1,223,0,0,21,248,0,0,0,100,107,101,114,110,
251,84,252,187,0,0,22,92,0,0,0,162,108,111,99,97,
51,201,56,104,0,0,23,0,0,0,0,52,109,97,120,112,
0,94,1,24,0,0,23,52,0,0,0,32,110,97,109,101,
31,28,131,163,0,0,23,84,0,0,3,167,112,111,115,116,
142,120,183,88,0,0,26,252,0,0,1,4,0,1,3,232,
1,144,0,5,0,12,0,200,0,200,0,0,0,200,0,200,
0,200,0,0,0,200,0,49,1,2,0,0,2,0,5,3,
0,0,0,0,0,0,0,0,0,3,16,0,0,8,0,0,
0,0,0,0,0,0,80,102,69,100,0,64,0,32,224,25,
2,234,255,52,0,90,2,234,0,204,0,0,0,1,0,0,
0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,28,
0,1,0,0,0,0,0,76,0,3,0,1,0,0,0,28,
0,4,0,48,0,0,0,8,0,8,0,2,0,0,33,4,
224,10,224,25,255,255,0,0,33,4,224,0,224,16,255,255,
222,255,32,4,31,255,0,1,0,0,0,0,0,0,0,0,
0,0,1,6,0,0,1,0,0,0,0,0,0,0,1,3,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,33,2,121,0,86,0,83,
0,100,0,97,1,202,0,37,0,46,1,112,0,43,0,242,
0,48,0,41,0,237,0,0,0,21,0,0,0,2,0,33,
0,0,1,110,2,154,0,3,0,7,0,46,177,1,0,47,
60,178,7,4,0,237,50,177,6,5,220,60,178,3,2,0,
237,50,0,177,3,0,47,60,178,5,4,0,237,50,178,7,
6,1,252,60,178,1,2,0,237,50,51,17,33,17,37,33,
17,33,33,1,77,254,212,1,11,254,245,2,154,253,102,33,
2,88,0,1,0,7,255,52,2,246,2,234,0,47,0,110,
0,176,11,47,176,12,51,177,9,2,237,177,10,2,237,176,
32,47,176,33,51,176,34,51,177,24,3,237,177,25,3,237,
177,26,3,237,1,176,17,47,176,18,51,176,19,51,176,20,
51,177,39,4,237,177,40,4,237,177,41,4,237,177,42,4,
237,176,12,47,176,13,51,176,45,51,176,46,51,177,0,5,
237,177,7,5,237,177,8,5,237,177,9,5,237,177,47,5,
237,176,12,16,177,10,6,237,177,11,6,237,48,49,37,54,
55,23,6,7,6,15,1,21,33,21,33,53,38,47,1,38,
61,1,52,55,54,55,54,51,50,23,22,23,7,38,47,1,
34,7,6,15,1,6,29,1,20,23,22,23,17,51,1,141,
130,31,97,46,161,24,26,1,1,105,254,54,183,70,1,39,
122,22,25,80,97,176,81,20,13,96,45,128,23,135,63,12,
8,3,23,112,39,42,97,76,31,150,24,185,47,7,3,1,
108,86,194,19,166,1,91,104,1,198,100,18,14,44,136,35,
43,22,141,11,1,100,19,22,8,68,72,1,201,67,23,7,
1,198,0,2,0,21,1,97,1,5,2,216,0,12,0,30,
0,109,0,176,7,47,176,8,51,176,9,51,177,10,7,237,
177,17,7,237,177,18,7,237,177,19,7,237,176,26,176,10,
16,222,176,27,50,176,28,50,177,1,7,237,177,2,7,237,
177,3,7,237,1,176,0,47,176,1,51,176,11,51,176,12,
51,177,13,8,237,177,14,8,237,177,30,8,237,176,21,176,
13,16,222,176,22,50,176,23,50,176,24,50,177,5,8,237,
177,6,8,237,177,7,8,237,177,32,6,16,204,48,49,19,
52,51,50,23,22,21,20,35,34,39,38,53,55,20,23,51,
22,51,50,55,54,61,1,52,39,38,35,34,7,6,21,120,
85,26,8,119,53,30,37,47,20,1,21,31,31,21,21,21,
21,32,31,18,23,2,29,187,101,32,54,187,38,45,102,2,
90,30,30,30,30,88,2,90,30,30,27,33,0,1,0,55,
1,104,0,191,2,216,0,13,0,41,0,176,0,47,176,1,
51,177,11,9,237,177,12,9,237,177,13,9,237,1,176,1,
47,176,2,51,177,0,8,237,177,13,8,237,177,15,0,16,
204,48,49,19,35,17,6,7,6,7,53,54,55,54,63,1,
51,191,45,17,26,26,21,37,29,27,12,1,29,1,104,1,
31,16,15,16,8,44,18,25,25,23,1,0,0,1,0,15,
1,104,1,2,2,216,0,37,0,96,0,176,1,47,176,2,
51,177,0,10,237,177,37,10,237,176,15,176,0,16,222,176,
16,50,176,17,50,177,23,7,237,177,24,7,237,177,25,7,
237,1,176,2,47,176,3,51,177,0,11,237,177,1,11,237,
177,28,11,237,177,29,11,237,177,30,11,237,176,29,16,177,
10,8,237,177,11,8,237,177,12,8,237,177,13,8,237,177,
25,8,237,177,39,0,16,204,48,49,1,21,35,38,55,53,
54,55,54,55,54,61,1,52,39,38,35,34,7,21,7,39,
54,63,1,50,23,22,31,1,20,15,1,6,7,6,15,1,
1,2,242,2,36,21,38,60,21,21,41,13,15,56,13,3,
46,8,82,29,70,31,10,2,1,38,1,21,48,52,13,6,
1,147,43,37,42,1,24,32,49,28,28,25,1,43,16,5,
50,1,23,5,89,15,2,50,17,20,15,44,43,1,23,41,
44,17,10,0,0,1,0,21,1,97,1,6,2,216,0,52,
0,133,0,176,48,47,176,49,51,176,50,51,177,2,7,237,
177,3,7,237,177,4,7,237,176,13,176,2,16,222,176,14,
50,176,15,50,177,17,0,237,177,18,0,237,177,19,0,237,
176,26,176,17,16,222,176,27,50,176,28,50,177,33,7,237,
177,34,7,237,177,35,7,237,1,176,21,47,176,22,51,176,
23,51,176,24,51,176,35,51,177,38,8,237,177,39,8,237,
177,40,8,237,177,41,8,237,176,8,47,176,9,51,176,10,
51,176,11,51,177,44,12,237,177,45,12,237,177,46,12,237,
177,54,45,16,204,48,49,19,55,22,51,50,55,61,1,54,
61,1,52,39,38,35,34,7,55,23,50,55,54,61,1,52,
39,38,35,34,7,39,54,55,54,51,50,23,49,22,21,23,
20,7,22,31,1,20,7,6,35,34,39,38,22,44,15,57,
47,21,8,40,15,17,13,19,5,7,55,16,4,34,12,14,
56,10,45,13,63,16,18,59,31,17,1,51,59,8,2,57,
30,37,71,32,11,1,201,6,72,41,1,1,15,17,1,47,
18,6,4,39,1,38,11,12,1,38,14,5,66,8,73,17,
5,42,23,29,1,51,24,13,60,17,65,32,17,57,20,0,
0,2,0,6,1,104,1,4,2,215,0,10,0,13,0,114,
0,176,1,47,176,2,51,176,8,51,176,9,51,177,3,13,
237,177,6,13,237,177,7,13,237,177,11,13,237,177,13,13,
237,177,4,6,16,204,177,5,6,16,204,177,10,1,16,204,
177,0,1,16,204,1,176,0,47,176,1,51,176,11,51,176,
12,51,177,5,8,237,177,6,8,237,177,9,8,237,177,10,
8,237,177,4,6,16,204,177,8,6,16,204,177,7,6,16,
204,177,3,1,16,204,177,2,1,16,204,177,15,7,16,204,
48,49,19,53,35,53,55,51,21,51,21,35,21,39,53,7,
166,160,168,36,50,50,44,115,1,104,88,41,237,237,41,88,
129,165,165,0,0,1,0,21,1,97,1,9,2,210,0,36,
0,102,0,176,32,47,176,33,51,176,34,51,177,3,7,237,
177,4,7,237,177,5,7,237,176,12,176,3,16,222,176,13,
50,176,14,50,177,22,13,237,177,23,13,237,177,24,13,237,
176,19,176,22,16,222,176,20,50,177,17,10,237,177,18,10,
237,1,176,7,47,176,8,51,176,9,51,176,10,51,176,24,
51,177,27,12,237,177,28,12,237,177,29,12,237,177,30,12,
237,177,38,29,16,204,48,49,19,55,22,31,1,50,55,54,
61,1,52,39,38,35,34,7,39,55,51,21,35,7,54,51,
50,23,21,22,29,1,20,7,6,35,34,39,38,21,47,9,
47,15,51,19,7,46,15,17,44,22,43,36,182,146,20,33,
36,66,32,16,57,30,38,76,30,9,1,200,4,58,10,1,
49,18,21,1,59,19,5,35,5,189,44,98,23,55,1,27,
35,1,75,36,19,60,19,0,0,2,0,19,1,97,1,6,
2,216,0,29,0,47,0,136,0,176,17,47,176,18,51,176,
19,51,177,33,7,237,177,34,7,237,177,35,7,237,176,42,
176,33,16,222,176,43,50,176,44,50,176,45,50,177,8,13,
237,177,9,13,237,177,10,13,237,176,2,176,8,16,222,176,
3,50,176,4,50,177,25,7,237,177,26,7,237,177,27,7,
237,177,28,7,237,1,176,21,47,176,22,51,176,23,51,176,
24,51,177,6,10,237,177,7,10,237,176,10,47,176,37,51,
176,38,51,176,39,51,176,40,51,177,12,8,237,177,13,8,
237,177,14,8,237,177,15,8,237,177,49,14,16,204,48,49,
1,7,38,35,34,7,6,21,54,51,50,23,22,29,1,20,
7,6,35,34,39,38,39,53,52,55,54,51,50,23,7,20,
23,22,51,50,55,54,61,1,52,39,38,39,35,34,7,6,
0,255,45,13,49,48,23,13,32,57,64,30,14,52,27,36,
56,35,35,1,117,7,8,73,24,177,36,18,21,46,17,6,
41,11,14,5,47,19,7,2,125,4,58,57,30,55,49,57,
28,33,1,73,34,18,41,41,94,2,184,11,1,63,186,52,
25,11,49,16,19,1,56,19,6,1,44,16,0,1,0,24,
1,104,1,6,2,210,0,16,0,43,0,176,0,47,176,16,
51,177,1,10,237,177,2,10,237,176,9,47,176,10,47,1,
176,0,47,176,1,51,177,2,14,237,177,3,14,237,177,18,
2,16,204,48,49,19,53,51,21,6,7,6,7,6,7,35,
54,55,52,55,54,55,24,238,71,42,6,4,14,3,46,5,
86,1,17,19,2,166,44,35,75,120,16,15,46,55,140,129,
2,1,25,21,0,3,0,20,1,97,1,7,2,216,0,32,
0,51,0,69,0,207,0,176,24,47,176,25,51,176,26,51,
177,55,7,237,177,56,7,237,177,57,7,237,176,17,176,55,
16,222,176,31,50,176,64,50,176,65,50,176,66,50,177,36,
7,237,177,37,7,237,177,38,7,237,176,3,176,36,16,222,
176,45,50,176,46,50,176,47,50,177,5,7,237,177,6,7,
237,177,7,7,237,1,176,28,47,176,29,51,176,30,51,176,
31,51,177,52,8,237,177,53,8,237,177,68,8,237,177,69,
8,237,176,1,47,176,2,51,176,3,51,176,27,51,177,33,
8,237,177,34,8,237,177,50,8,237,177,51,8,237,176,40,
47,176,41,51,176,42,51,176,43,51,177,12,8,237,177,13,
8,237,177,14,8,237,177,15,8,237,176,59,47,176,60,51,
176,61,51,176,62,51,177,17,8,237,177,18,8,237,177,19,
8,237,177,20,8,237,177,21,8,237,177,22,8,237,177,71,
21,16,204,48,49,19,38,53,52,55,54,51,50,31,1,21,
23,22,29,1,20,7,22,23,20,29,1,20,7,6,35,34,
39,38,61,1,52,55,39,20,23,22,51,50,55,54,61,1,
52,39,38,35,34,15,1,6,21,7,20,23,22,51,50,55,
54,61,1,52,39,38,35,34,7,6,21,90,54,54,23,28,
63,29,1,1,12,54,67,2,58,28,34,72,33,16,67,6,
37,11,12,40,14,5,35,12,13,38,16,1,4,15,40,16,
19,48,19,7,41,16,19,47,19,7,2,47,20,55,59,25,
10,46,1,1,1,21,25,1,53,20,22,69,1,1,1,67,
30,14,52,26,33,1,73,19,77,42,13,4,34,10,11,1,
39,15,5,32,1,11,11,170,48,19,8,40,15,17,1,48,
20,7,40,15,17,0,0,2,0,21,1,97,1,7,2,216,
0,35,0,58,0,133,0,176,32,47,176,33,51,176,34,51,
177,2,7,237,177,3,7,237,177,4,7,237,176,11,176,2,
16,222,176,12,50,176,13,50,177,7,13,237,177,8,13,237,
177,53,13,237,177,54,13,237,177,55,13,237,176,41,176,8,
16,222,176,42,50,176,43,50,177,21,7,237,177,22,7,237,
177,23,7,237,1,176,16,47,176,17,51,176,18,51,176,19,
51,177,13,8,237,177,49,8,237,177,50,8,237,177,51,8,
237,176,6,47,176,7,51,176,8,51,176,9,51,177,28,10,
237,177,29,10,237,177,30,10,237,48,49,19,55,22,51,50,
55,54,53,55,39,6,15,1,34,39,53,38,61,1,52,55,
54,51,50,31,1,21,23,22,21,20,7,6,35,34,39,55,
52,39,34,49,38,35,34,15,1,21,7,21,6,21,20,23,
22,51,50,55,54,53,28,43,11,50,61,19,5,1,1,27,
52,8,65,30,14,54,27,34,72,34,1,4,15,60,30,41,
76,22,179,37,1,14,18,45,20,1,1,7,39,15,19,52,
15,4,1,189,4,58,79,24,28,2,8,43,4,1,58,1,
27,33,1,73,34,17,64,1,1,8,36,67,132,43,22,67,
185,54,22,9,45,1,1,1,1,18,21,50,21,8,52,14,
15,0,0,1,0,0,255,243,1,2,2,234,0,3,0,20,
176,0,47,176,1,47,176,2,47,176,3,47,1,177,5,2,
47,204,48,49,21,19,51,3,212,46,214,12,2,246,253,10,
0,2,0,21,255,249,1,5,1,112,0,12,0,31,0,113,
0,176,7,47,176,8,51,176,9,51,177,10,7,237,177,17,
7,237,177,18,7,237,177,19,7,237,176,26,176,10,16,222,
176,27,50,176,28,50,177,1,7,237,177,2,7,237,177,3,
7,237,1,176,0,47,176,1,51,176,11,51,176,12,51,177,
13,8,237,177,14,8,237,177,30,8,237,177,31,8,237,176,
21,176,13,16,222,176,22,50,176,23,50,176,24,50,177,5,
8,237,177,6,8,237,177,7,8,237,177,33,6,16,204,48,
49,55,52,51,50,23,22,21,20,35,34,39,38,53,55,20,
23,51,22,51,50,55,54,61,1,52,39,38,35,34,7,6,
21,21,120,85,26,8,119,53,30,37,47,20,1,21,31,31,
21,21,21,21,32,31,18,23,181,187,101,32,54,187,38,45,
102,2,90,30,30,30,30,88,2,90,30,30,27,33,89,0,
0,1,0,55,0,0,0,191,1,112,0,13,0,42,0,177,
0,15,63,176,1,51,177,11,9,237,177,12,9,237,177,13,
9,237,1,176,1,47,176,2,51,177,0,8,237,177,13,8,
237,177,15,0,16,204,48,49,51,35,17,6,7,6,7,53,
54,55,54,63,1,51,191,45,17,26,26,21,37,29,27,12,
1,29,1,31,16,15,16,8,44,18,25,25,23,1,0,1,
0,15,0,0,1,2,1,112,0,38,0,101,0,177,1,15,
63,176,2,51,177,0,10,237,177,38,10,237,176,14,176,0,
16,222,176,15,50,176,16,50,177,23,7,237,177,24,7,237,
177,25,7,237,1,176,2,47,176,3,51,177,0,11,237,177,
1,11,237,177,28,11,237,177,29,11,237,177,30,11,237,177,
31,11,237,176,28,16,177,9,8,237,177,10,8,237,177,11,
8,237,177,12,8,237,177,25,8,237,177,40,0,16,204,48,
49,37,21,35,38,55,54,55,54,55,54,61,1,52,39,38,
35,34,7,29,1,7,39,54,63,1,50,23,21,22,29,1,
20,15,1,6,7,6,15,1,1,2,242,2,36,21,38,60,
21,21,41,13,15,56,13,3,46,8,82,29,70,31,13,38,
1,21,48,52,13,6,43,43,38,42,24,32,49,28,28,25,
1,43,16,5,50,1,1,22,5,89,15,2,50,1,22,28,
1,44,43,1,23,41,44,17,10,0,0,1,0,21,255,249,
1,6,1,112,0,51,0,133,0,176,47,47,176,48,51,176,
49,51,177,2,7,237,177,3,7,237,177,4,7,237,176,11,
176,2,16,222,176,12,50,176,13,50,177,15,0,237,177,16,
0,237,177,17,0,237,176,24,176,15,16,222,176,25,50,176,
26,50,177,31,7,237,177,32,7,237,177,33,7,237,1,176,
19,47,176,20,51,176,21,51,176,22,51,176,33,51,177,37,
8,237,177,38,8,237,177,39,8,237,177,40,8,237,176,6,
47,176,7,51,176,8,51,176,9,51,177,43,12,237,177,44,
12,237,177,45,12,237,177,53,44,16,204,48,49,63,1,22,
51,50,55,54,61,1,52,39,38,35,34,7,55,23,50,55,
54,61,1,52,39,38,35,34,7,39,54,55,54,51,50,31,
1,49,22,21,23,20,7,22,31,1,20,7,6,39,34,39,
38,22,44,15,57,47,21,8,40,15,17,13,19,5,7,55,
16,4,34,12,14,56,10,45,13,63,16,18,61,30,1,15,
1,51,59,8,2,57,30,37,71,32,11,97,6,72,41,16,
18,1,47,18,6,4,39,1,38,11,12,1,38,14,5,66,
8,73,17,5,43,1,22,28,1,51,24,13,60,17,65,32,
18,1,57,20,0,2,0,6,0,0,1,4,1,111,0,10,
0,13,0,111,0,177,0,15,63,176,10,51,176,1,222,176,
2,50,176,8,50,176,9,50,177,3,13,237,177,6,13,237,
177,7,13,237,177,11,13,237,177,13,13,237,177,4,6,16,
204,177,5,6,16,204,1,176,0,47,176,1,51,176,11,51,
176,12,51,177,5,8,237,177,6,8,237,177,9,8,237,177,
10,8,237,177,4,6,16,204,177,8,6,16,204,177,7,6,
16,204,177,3,1,16,204,177,2,1,16,204,177,15,7,16,
204,48,49,51,53,35,53,55,51,21,51,21,35,21,39,53,
7,166,160,168,36,50,50,44,115,88,41,237,237,41,88,129,
165,165,0,1,0,21,255,249,1,9,1,106,0,36,0,106,
0,176,32,47,176,33,51,176,34,51,177,3,7,237,177,4,
7,237,177,5,7,237,177,6,7,237,176,13,176,3,16,222,
176,14,50,176,15,50,177,23,13,237,177,24,13,237,177,25,
13,237,176,20,176,23,16,222,176,21,50,177,18,10,237,177,
19,10,237,1,176,8,47,176,9,51,176,10,51,176,11,51,
176,25,51,177,27,12,237,177,28,12,237,177,29,12,237,177,
30,12,237,177,38,29,16,204,48,49,63,1,22,23,22,51,
50,55,54,61,1,52,39,38,35,34,7,39,55,51,21,35,
7,54,51,50,23,22,29,1,20,7,6,35,34,39,38,21,
47,9,47,7,8,51,19,7,46,15,17,44,22,43,36,182,
146,20,33,36,66,32,16,57,30,38,76,30,9,96,4,58,
10,1,49,18,21,1,59,19,5,35,5,189,44,98,23,55,
28,35,1,75,36,19,60,19,0,2,0,12,255,249,0,255,
1,112,0,31,0,49,0,129,0,176,17,47,176,18,51,176,
19,51,177,35,7,237,177,36,7,237,177,37,7,237,176,44,
176,35,16,222,176,45,50,176,46,50,177,8,13,237,177,9,
13,237,177,10,13,237,176,2,176,8,16,222,176,3,50,176,
4,50,177,25,7,237,177,26,7,237,177,27,7,237,1,176,
21,47,176,22,51,176,23,51,176,24,51,177,6,10,237,177,
7,10,237,176,10,47,176,39,51,176,40,51,176,41,51,176,
42,51,177,12,8,237,177,13,8,237,177,14,8,237,177,15,
8,237,177,51,14,16,204,48,49,19,7,38,35,34,7,6,
21,54,51,50,23,22,29,1,20,7,6,35,34,39,38,39,
53,52,63,1,50,23,21,22,23,7,20,23,22,51,50,55,
54,61,1,52,39,38,35,34,7,6,21,248,45,13,49,48,
23,13,32,57,64,30,14,52,27,35,57,35,35,1,117,15,
73,24,5,2,184,36,18,21,46,17,6,41,13,17,47,19,
7,1,21,4,58,57,30,55,49,57,28,33,1,73,34,18,
41,41,94,2,184,11,1,63,1,12,14,159,52,25,11,49,
16,19,1,56,19,7,44,16,18,0,0,1,0,24,0,0,
1,6,1,106,0,14,0,44,0,177,9,15,63,176,10,51,
176,0,222,176,14,50,177,1,10,237,177,2,10,237,1,176,
0,47,176,1,51,177,2,14,237,177,3,14,237,177,16,2,
16,204,48,49,19,53,51,21,6,7,6,7,6,7,35,54,
55,54,55,24,238,71,42,6,4,14,3,46,5,86,18,19,
1,62,44,35,75,120,16,15,46,55,140,129,27,22,0,3,
0,20,255,249,1,7,1,112,0,29,0,47,0,65,0,203,
0,176,20,47,176,21,51,176,22,51,177,51,7,237,177,52,
7,237,177,53,7,237,176,14,176,51,16,222,176,27,50,176,
60,50,176,61,50,176,62,50,177,33,7,237,177,34,7,237,
177,35,7,237,176,3,176,33,16,222,176,42,50,176,43,50,
176,44,50,177,5,7,237,177,6,7,237,177,7,7,237,1,
176,24,47,176,25,51,176,26,51,176,27,51,177,48,8,237,
177,49,8,237,177,64,8,237,177,65,8,237,176,1,47,176,
2,51,176,3,51,176,23,51,177,30,8,237,177,31,8,237,
177,46,8,237,177,47,8,237,176,37,47,176,38,51,176,39,
51,176,40,51,177,9,8,237,177,10,8,237,177,11,8,237,
177,12,8,237,176,55,47,176,56,51,176,57,51,176,58,51,
177,14,8,237,177,15,8,237,177,16,8,237,177,17,8,237,
177,18,8,237,177,67,17,16,204,48,49,55,38,53,52,55,
54,51,50,23,22,29,1,20,7,22,23,20,49,20,7,6,
35,34,39,38,61,1,52,55,50,39,20,23,22,51,50,55,
54,61,1,52,39,38,35,34,7,6,21,7,20,23,22,51,
50,55,54,61,1,52,39,38,35,34,7,6,21,90,54,54,
23,28,63,29,14,54,67,2,58,28,34,72,33,16,65,2,
6,37,11,12,40,14,5,35,12,13,38,16,5,15,40,16,
19,48,19,7,41,16,19,47,19,7,199,20,55,59,25,10,
46,22,27,1,53,20,22,69,3,67,30,14,52,26,33,1,
72,20,77,42,13,4,34,10,11,1,39,15,5,32,11,12,
170,48,19,8,40,15,17,1,48,20,7,40,15,17,0,2,
0,21,255,249,1,7,1,112,0,33,0,52,0,133,0,176,
29,47,176,30,51,176,31,51,177,2,7,237,177,3,7,237,
177,4,7,237,176,11,176,2,16,222,176,12,50,176,13,50,
177,7,13,237,177,8,13,237,177,47,13,237,177,48,13,237,
177,49,13,237,176,39,176,8,16,222,176,40,50,176,41,50,
177,20,7,237,177,21,7,237,177,22,7,237,1,176,15,47,
176,16,51,176,17,51,176,18,51,177,13,8,237,177,43,8,
237,177,44,8,237,177,45,8,237,176,6,47,176,7,51,176,
8,51,176,9,51,177,25,10,237,177,26,10,237,177,27,10,
237,48,49,63,1,22,51,50,55,54,53,55,39,6,15,1,
34,39,38,61,1,52,55,54,51,50,31,1,22,21,20,7,
6,35,34,39,38,55,52,39,34,49,38,35,34,7,6,21,
20,23,22,51,50,55,54,53,28,43,11,50,40,22,23,1,
1,27,52,8,65,30,14,54,27,34,72,34,5,15,60,30,
41,76,22,3,182,37,1,14,18,46,20,8,39,15,19,52,
15,4,85,4,58,35,36,60,2,8,43,4,1,58,27,34,
1,73,34,17,64,10,36,67,132,43,22,67,11,174,54,22,
9,46,20,22,50,21,8,52,14,15,0,0,0,1,0,0,
0,0,0,0,233,217,10,104,95,15,60,245,0,19,3,232,
0,0,0,0,184,207,153,237,0,0,0,0,184,207,153,237,
0,0,255,52,2,246,2,234,0,0,0,8,0,2,0,0,
0,0,0,0,0,1,0,0,3,32,255,56,0,90,2,142,
0,0,255,152,2,246,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,25,1,176,0,33,0,0,0,0,
1,77,0,0,2,142,0,7,1,15,0,21,0,235,0,55,
1,31,0,15,1,23,0,21,1,23,0,6,1,30,0,21,
1,28,0,19,1,25,0,24,1,28,0,20,1,23,0,21,
1,27,0,0,1,15,0,21,0,235,0,55,1,31,0,15,
1,25,0,21,1,22,0,6,1,31,0,21,1,21,0,12,
1,25,0,24,1,28,0,20,1,31,0,21,0,0,0,1,
0,0,0,158,0,1,0,24,0,96,0,4,255,208,0,4,
0,4,0,0,0,4,0,14,255,122,0,5,0,5,0,0,
0,5,0,14,255,152,0,6,0,6,0,0,0,6,0,14,
255,150,0,7,0,14,255,122,0,8,0,14,255,122,0,9,
0,14,255,115,0,10,0,14,255,115,0,11,0,14,255,92,
0,12,0,14,255,115,0,13,0,14,255,115,0,14,0,14,
255,211,0,14,0,15,255,107,0,14,0,16,255,85,0,14,
0,17,255,107,0,14,0,18,255,115,0,14,0,19,255,92,
0,14,0,20,255,100,0,14,0,21,255,107,0,14,0,22,
255,130,0,14,0,23,255,100,0,14,0,24,255,107,0,0,
0,0,0,43,0,43,0,43,0,171,1,16,1,64,1,172,
2,58,2,140,2,246,3,128,3,180,4,125,5,19,5,42,
5,146,5,193,6,47,6,188,7,11,7,118,7,255,8,49,
8,241,9,127,0,1,0,0,0,25,0,70,0,3,0,0,
0,0,0,2,0,0,0,1,0,1,0,0,0,64,0,207,
0,0,0,0,0,0,0,26,1,62,0,1,0,0,0,0,
0,0,0,65,0,0,0,1,0,0,0,0,0,1,0,9,
0,66,0,1,0,0,0,0,0,2,0,7,0,76,0,1,
0,0,0,0,0,3,0,34,0,84,0,1,0,0,0,0,
0,4,0,9,0,119,0,1,0,0,0,0,0,5,0,7,
0,129,0,1,0,0,0,0,0,6,0,9,0,137,0,0,
0,3,0,0,0,0,0,130,0,147,0,0,0,3,0,0,
0,1,0,18,1,23,0,0,0,3,0,0,0,2,0,14,
1,43,0,0,0,3,0,0,0,3,0,68,1,59,0,0,
0,3,0,0,0,4,0,18,1,129,0,0,0,3,0,0,
0,5,0,14,1,149,0,0,0,3,0,0,0,6,0,18,
1,165,0,3,0,1,4,9,0,0,0,130,0,147,0,3,
0,1,4,9,0,1,0,18,1,23,0,3,0,1,4,9,
0,2,0,14,1,43,0,3,0,1,4,9,0,3,0,68,
1,59,0,3,0,1,4,9,0,4,0,18,1,129,0,3,
0,1,4,9,0,5,0,14,1,149,0,3,0,1,4,9,
0,6,0,18,1,165,0,3,0,1,0,0,0,4,0,34,
1,185,0,3,0,1,0,0,0,8,0,44,1,221,0,3,
0,1,0,0,0,11,0,46,2,11,0,3,0,1,0,0,
0,13,0,6,2,59,0,3,0,1,0,0,0,14,0,36,
2,67,67,114,101,97,116,101,100,32,98,121,32,65,108,108,
101,110,32,66,97,114,110,101,116,116,32,119,105,116,104,32,
80,102,97,69,100,105,116,32,49,46,48,32,40,104,116,116,
112,58,47,47,112,102,97,101,100,105,116,46,115,102,46,110,
101,116,41,0,108,67,83,121,109,98,111,108,115,0,82,101,
103,117,108,97,114,0,80,102,97,69,100,105,116,32,49,46,
48,32,58,32,108,67,83,121,109,98,111,108,115,32,58,32,
50,45,51,45,50,48,55,50,0,108,67,83,121,109,98,111,
108,115,0,48,48,49,46,48,48,48,0,108,67,83,121,109,
98,111,108,115,0,0,67,0,114,0,101,0,97,0,116,0,
101,0,100,0,32,0,98,0,121,0,32,0,65,0,108,0,
108,0,101,0,110,0,32,0,66,0,97,0,114,0,110,0,
101,0,116,0,116,0,32,0,119,0,105,0,116,0,104,0,
32,0,80,0,102,0,97,0,69,0,100,0,105,0,116,0,
32,0,49,0,46,0,48,0,32,0,40,0,104,0,116,0,
116,0,112,0,58,0,47,0,47,0,112,0,102,0,97,0,
101,0,100,0,105,0,116,0,46,0,115,0,102,0,46,0,
110,0,101,0,116,0,41,0,0,0,108,0,67,0,83,0,
121,0,109,0,98,0,111,0,108,0,115,0,0,0,82,0,
101,0,103,0,117,0,108,0,97,0,114,0,0,0,80,0,
102,0,97,0,69,0,100,0,105,0,116,0,32,0,49,0,
46,0,48,0,32,0,58,0,32,0,108,0,67,0,83,0,
121,0,109,0,98,0,111,0,108,0,115,0,32,0,58,0,
32,0,50,0,45,0,51,0,45,0,50,0,48,0,55,0,
50,0,0,0,108,0,67,0,83,0,121,0,109,0,98,0,
111,0,108,0,115,0,0,0,48,0,48,0,49,0,46,0,
48,0,48,0,48,0,0,0,108,0,67,0,83,0,121,0,
109,0,98,0,111,0,108,0,115,0,0,0,108,0,105,0,
103,0,110,0,117,0,109,0,67,0,65,0,68,0,32,0,
83,0,121,0,109,0,98,0,111,0,108,0,115,0,0,0,
108,0,105,0,103,0,110,0,117,0,109,0,32,0,67,0,
111,0,109,0,112,0,117,0,116,0,105,0,110,0,103,0,
44,0,32,0,73,0,110,0,99,0,46,0,0,0,119,0,
119,0,119,0,46,0,108,0,105,0,103,0,110,0,117,0,
109,0,99,0,111,0,109,0,112,0,117,0,116,0,105,0,
110,0,103,0,46,0,99,0,111,0,109,0,0,0,71,0,
80,0,76,0,0,0,104,0,116,0,116,0,112,0,58,0,
47,0,47,0,119,0,119,0,119,0,46,0,103,0,110,0,
117,0,46,0,111,0,114,0,103,0,0,0,0,2,0,0,
0,0,0,0,255,156,0,50,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,
0,1,0,2,1,2,1,3,1,4,1,5,1,6,1,7,
1,8,1,9,1,10,1,11,1,12,1,13,1,14,1,15,
1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,
7,117,110,105,50,49,48,52,7,117,110,105,69,48,48,48,
7,117,110,105,69,48,48,49,7,117,110,105,69,48,48,50,
7,117,110,105,69,48,48,51,7,117,110,105,69,48,48,52,
7,117,110,105,69,48,48,53,7,117,110,105,69,48,48,54,
7,117,110,105,69,48,48,55,7,117,110,105,69,48,48,56,
7,117,110,105,69,48,48,57,7,117,110,105,69,48,48,65,
7,117,110,105,69,48,49,48,7,117,110,105,69,48,49,49,
7,117,110,105,69,48,49,50,7,117,110,105,69,48,49,51,
7,117,110,105,69,48,49,52,7,117,110,105,69,48,49,53,
7,117,110,105,69,48,49,54,7,117,110,105,69,48,49,55,
7,117,110,105,69,48,49,56,7,117,110,105,69,48,49,57,
};
const int lCSymbols_ttf_size = sizeof( lCSymbols_ttf );
Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

+378
View File
@@ -0,0 +1,378 @@
/*
* demo.cpp: Demo of the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <unistd.h>
#include <cstdlib>
#include <iostream>
#include <GL/glut.h>
#include <OGLFT.h>
static const char* USAGE = " fontfile";
static const char* commands = "a/A: char rotate X, s/S: char rotate Y, d/D: char rotate Z, f/F: string rotate, r: reset all";
static const char* text = "The quick brown fox jumps over a lazy dog.";
static const float point_size = 16;
static OGLFT::Monochrome* commands_face;
static OGLFT::Monochrome* monochrome_face;
static OGLFT::Grayscale* grayscale_face;
static OGLFT::Translucent* translucent_face;
static OGLFT::Outline* outline_face;
static OGLFT::Filled* filled_face;
#ifndef OGLFT_NO_SOLID
static OGLFT::Solid* solid_face;
#else
static OGLFT::Monochrome* solid_face;
#endif
static OGLFT::MonochromeTexture* monochrome_texture_face;
static OGLFT::GrayscaleTexture* grayscale_texture_face;
static OGLFT::TranslucentTexture* translucent_texture_face;
static float dy;
static int viewport_width;
static int viewport_height;
static void init ( int /*argc*/, char* argv[] )
{
std::cout << glGetString( GL_VENDOR ) << " " << glGetString( GL_RENDERER ) << " "
<< glGetString( GL_VERSION ) << std::endl;
commands_face = new OGLFT::Monochrome( argv[1], point_size / 2. );
commands_face->setHorizontalJustification( OGLFT::Face::CENTER );
monochrome_face = new OGLFT::Monochrome( argv[1], point_size );
monochrome_face->setHorizontalJustification( OGLFT::Face::CENTER );
monochrome_face->setForegroundColor( 1., 0., 0., 1. );
if ( !monochrome_face->isValid() ) {
std::cerr << "failed to open face. exiting." << std::endl;
exit( 1 );
}
grayscale_face = new OGLFT::Grayscale( argv[1], point_size );
grayscale_face->setHorizontalJustification( OGLFT::Face::CENTER );
grayscale_face->setForegroundColor( 0., 0., .5, 1. );
grayscale_face->setBackgroundColor( 0., 1., 1., 1. );
translucent_face = new OGLFT::Translucent( argv[1], point_size );
translucent_face->setHorizontalJustification( OGLFT::Face::CENTER );
translucent_face->setForegroundColor( 0., .5, 0., 1. );
outline_face = new OGLFT::Outline( argv[1], point_size );
outline_face->setHorizontalJustification( OGLFT::Face::CENTER );
outline_face->setForegroundColor( 1., 1., 0., 1. );
filled_face = new OGLFT::Filled( argv[1], point_size );
filled_face->setHorizontalJustification( OGLFT::Face::CENTER );
filled_face->setForegroundColor( .5, 0., 1., 1. );
#ifndef OGLFT_NO_SOLID
solid_face = new OGLFT::Solid( argv[1], point_size );
solid_face->setDepth( 10. );
solid_face->setCharacterRotationX( 25. );
solid_face->setCharacterRotationY( 25. );
solid_face->setTessellationSteps( 3 );
#else
solid_face = new OGLFT::Monochrome( argv[1], point_size );
#endif
solid_face->setHorizontalJustification( OGLFT::Face::CENTER );
solid_face->setForegroundColor( 1., .5, 0., 1. );
monochrome_texture_face = new OGLFT::MonochromeTexture( argv[1], point_size );
monochrome_texture_face->setHorizontalJustification( OGLFT::Face::CENTER );
monochrome_texture_face->setForegroundColor( 0., .5, .75, 1. );
grayscale_texture_face = new OGLFT::GrayscaleTexture( argv[1], point_size );
grayscale_texture_face->setHorizontalJustification( OGLFT::Face::CENTER );
grayscale_texture_face->setForegroundColor( 0.9, .65, .9, 1. );
grayscale_texture_face->setBackgroundColor( 0.5, .5, .75, 0.3 );
translucent_texture_face = new OGLFT::TranslucentTexture( argv[1], point_size );
translucent_texture_face->setHorizontalJustification( OGLFT::Face::CENTER );
translucent_texture_face->setForegroundColor( 0.75, 1., .75, 1. );
// Set various general parameters which don't affect performance (yet).
glClearColor( .75, .75, .75, 1. );
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
#if defined(GL_RASTER_POSITION_UNCLIPPED_IBM)
glEnable( GL_RASTER_POSITION_UNCLIPPED_IBM );
#endif
glEnable( GL_LIGHT0 );
glDisable( GL_DITHER );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );
}
static void reshape ( int width, int height )
{
viewport_width = width;
viewport_height = height;
glViewport( 0, 0, viewport_width, viewport_height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, viewport_width, 0, viewport_height, -100, 100 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
dy = viewport_height / ( 9 + 1 );
}
static void reset ( void )
{
monochrome_face->setCharacterRotationZ( 0 );
monochrome_face->setStringRotation( 0 );
grayscale_face->setCharacterRotationZ( 0 );
grayscale_face->setStringRotation( 0 );
translucent_face->setCharacterRotationZ( 0 );
translucent_face->setStringRotation( 0 );
outline_face->setCharacterRotationX( 0 );
outline_face->setCharacterRotationY( 0 );
outline_face->setCharacterRotationZ( 0 );
outline_face->setStringRotation( 0 );
filled_face->setCharacterRotationX( 0 );
filled_face->setCharacterRotationY( 0 );
filled_face->setCharacterRotationZ( 0 );
filled_face->setStringRotation( 0 );
#ifndef OGLFT_NO_SOLID
solid_face->setCharacterRotationX( 25. );
solid_face->setCharacterRotationY( 25. );
#endif
solid_face->setCharacterRotationZ( 0 );
solid_face->setStringRotation( 0 );
monochrome_texture_face->setCharacterRotationX( 0 );
monochrome_texture_face->setCharacterRotationY( 0 );
monochrome_texture_face->setCharacterRotationZ( 0 );
monochrome_texture_face->setStringRotation( 0 );
grayscale_texture_face->setCharacterRotationX( 0 );
grayscale_texture_face->setCharacterRotationY( 0 );
grayscale_texture_face->setCharacterRotationZ( 0 );
grayscale_texture_face->setStringRotation( 0 );
translucent_texture_face->setCharacterRotationX( 0 );
translucent_texture_face->setCharacterRotationY( 0 );
translucent_texture_face->setCharacterRotationZ( 0 );
translucent_texture_face->setStringRotation( 0 );
glViewport( 0, 0, viewport_width, viewport_height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, viewport_width, 0, viewport_height, -100, 100 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
static void char_rotate_x ( float dx )
{
outline_face->setCharacterRotationX( outline_face->characterRotationX()+dx );
filled_face->setCharacterRotationX( filled_face->characterRotationX()+dx );
#ifndef OGLFT_NO_SOLID
solid_face->setCharacterRotationX( solid_face->characterRotationX()+dx );
#endif
monochrome_texture_face->setCharacterRotationX(
monochrome_texture_face->characterRotationX()+dx );
grayscale_texture_face->setCharacterRotationX(
grayscale_texture_face->characterRotationX()+dx );
translucent_texture_face->setCharacterRotationX(
translucent_texture_face->characterRotationX()+dx );
}
static void char_rotate_y ( float dy )
{
outline_face->setCharacterRotationY( outline_face->characterRotationY()+dy );
filled_face->setCharacterRotationY( filled_face->characterRotationY()+dy );
#ifndef OGLFT_NO_SOLID
solid_face->setCharacterRotationY( solid_face->characterRotationY()+dy );
#endif
monochrome_texture_face->setCharacterRotationY(
monochrome_texture_face->characterRotationY()+dy );
grayscale_texture_face->setCharacterRotationY(
grayscale_texture_face->characterRotationY()+dy );
translucent_texture_face->setCharacterRotationY(
translucent_texture_face->characterRotationY()+dy );
}
static void char_rotate_z ( float dz )
{
monochrome_face->setCharacterRotationZ( monochrome_face->characterRotationZ()+dz );
grayscale_face->setCharacterRotationZ( grayscale_face->characterRotationZ()+dz );
translucent_face->setCharacterRotationZ( translucent_face->characterRotationZ()+dz );
outline_face->setCharacterRotationZ( outline_face->characterRotationZ()+dz );
filled_face->setCharacterRotationZ( filled_face->characterRotationZ()+dz );
solid_face->setCharacterRotationZ( solid_face->characterRotationZ()+dz );
monochrome_texture_face->setCharacterRotationZ( monochrome_texture_face->characterRotationZ()+dz );
grayscale_texture_face->setCharacterRotationZ( grayscale_texture_face->characterRotationZ()+dz );
translucent_texture_face->setCharacterRotationZ( translucent_texture_face->characterRotationZ()+dz );
}
static void string_rotate ( float dz )
{
monochrome_face->setStringRotation( monochrome_face->stringRotation()+dz );
grayscale_face->setStringRotation( grayscale_face->stringRotation()+dz );
translucent_face->setStringRotation( translucent_face->stringRotation()+dz );
outline_face->setStringRotation( outline_face->stringRotation()+dz );
filled_face->setStringRotation( filled_face->stringRotation()+dz );
solid_face->setStringRotation( solid_face->stringRotation()+dz );
monochrome_texture_face->setStringRotation( monochrome_texture_face->stringRotation()+dz );
grayscale_texture_face->setStringRotation( grayscale_texture_face->stringRotation()+dz );
translucent_texture_face->setStringRotation( translucent_texture_face->stringRotation()+dz );
}
static void display ( void )
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glPushMatrix();
// Draw everything centered
glTranslatef( viewport_width/2., 0., 0. );
commands_face->draw( 0., 0., commands );
glTranslatef( 0., dy, 0. );
monochrome_face->draw( 0., 0., text );
glTranslatef( 0., dy, 0. );
grayscale_face->draw( 0., 0., text );
glEnable( GL_BLEND );
glTranslatef( 0., dy, 0. );
translucent_face->draw( 0., 0., text );
glDisable( GL_BLEND );
glTranslatef( 0., dy, 0. );
outline_face->draw( 0., 0., text );
glTranslatef( 0., dy, 0. );
filled_face->draw( 0., 0., text );
glTranslatef( 0., dy, 0. );
#ifndef OGLFT_NO_SOLID
glEnable( GL_LIGHTING );
glEnable( GL_DEPTH_TEST );
glEnable( GL_COLOR_MATERIAL );
solid_face->draw( 0., 0., text );
glDisable( GL_COLOR_MATERIAL );
glDisable( GL_DEPTH_TEST );
glDisable( GL_LIGHTING );
#else
solid_face->draw( 0., 0., "<Note: Solid face not available in library>" );
#endif
glEnable( GL_TEXTURE_2D );
glEnable( GL_BLEND );
glEnable( GL_DEPTH_TEST );
glTranslatef( 0., dy, 0. );
monochrome_texture_face->draw( 0., 0., text );
glTranslatef( 0., dy, 0. );
grayscale_texture_face->draw( 0., 0., text );
glTranslatef( 0., dy, 0. );
translucent_texture_face->draw( 0., 0., text );
glDisable( GL_DEPTH_TEST );
glDisable( GL_BLEND );
glDisable( GL_TEXTURE_2D );
glPopMatrix();
glutSwapBuffers();
}
static void key ( unsigned char key, int /*x*/, int /*y*/ )
{
switch ( key ) {
case 'a':
char_rotate_x( -4 ); break;
case 'A':
char_rotate_x( 4 ); break;
case 's':
char_rotate_y( -4 ); break;
case 'S':
char_rotate_y( 4 ); break;
case 'd':
char_rotate_z( -4 ); break;
case 'D':
char_rotate_z( 4 ); break;
case 'f':
string_rotate( -4 ); break;
case 'F':
string_rotate( 4 ); break;
case 'r': case 'R':
reset(); break;
case 27:
exit( 0 );
default:
return;
}
glutPostRedisplay();
}
static void done ( void )
{
delete monochrome_face;
delete grayscale_face;
delete translucent_face;
delete outline_face;
delete filled_face;
delete solid_face;
delete monochrome_texture_face;
delete grayscale_texture_face;
delete translucent_texture_face;
}
int main ( int argc, char* argv[] )
{
if ( argc != 2 ) {
std::cerr << argv[0] << USAGE << std::endl;
return 1;
}
glutInit( &argc, argv );
glutInitWindowSize( 500, 500 );
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow( argv[0] );
init( argc, argv );
atexit( done );
glutReshapeFunc( reshape );
glutDisplayFunc( display );
glutKeyboardFunc( key );
glutMainLoop();
return 0;
}
+183
View File
@@ -0,0 +1,183 @@
/*
* demo2.cpp: Second Demo of the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <iostream>
#include <GL/glut.h>
#include <OGLFT.h>
#include FT_MULTIPLE_MASTERS_H
static const char* USAGE = " fontfile";
static FT_Library library;
static FT_Face ft_face;
static FT_Multi_Master master_info;
static FT_Long axis_averages[T1_MAX_MM_AXIS];
#if 0
static OGLFT::Filled* oglft_face;
#else
static OGLFT::Monochrome* oglft_face;
#endif
static int viewport_width;
static int viewport_height;
static void init ( int /*argc*/, char* argv[] )
{
std::cout << glGetString( GL_VENDOR ) << " " << glGetString( GL_RENDERER ) << " "
<< glGetString( GL_VERSION ) << std::endl;
library = OGLFT::Library::instance();
FT_Error error;
error = FT_New_Face( library, argv[1], 0, &ft_face );
if ( error != 0 ) {
std::cerr << "Could not create a font from file \"" << argv[1] << "\""
<< std::endl;
exit( 1 );
}
error = FT_Get_Multi_Master( ft_face, &master_info );
if ( error != 0 ) {
std::cerr << "Font file \"" << argv[1]
<< "\" does not contain a multi master font" << std::endl;
exit( 1 );
}
for ( unsigned int i = 0; i < master_info.num_axis; i++ )
axis_averages[i] = ( master_info.axis[i].minimum +
master_info.axis[i].maximum ) / 2;
FT_Set_MM_Design_Coordinates( ft_face, master_info.num_axis, axis_averages );
#if 0
oglft_face = new OGLFT::Filled( ft_face, 14 );
#else
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
glEnable( GL_RASTER_POSITION_UNCLIPPED_IBM );
oglft_face = new OGLFT::Monochrome( ft_face, 14 );
#endif
oglft_face->setHorizontalJustification( OGLFT::Face::LEFT );
oglft_face->setForegroundColor( 1., 0., 0. );
oglft_face->setCompileMode( OGLFT::Face::IMMEDIATE );
}
static void reshape ( int width, int height )
{
viewport_width = width;
viewport_height = height;
glViewport( 0, 0, viewport_width, viewport_height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, viewport_width, 0, viewport_height, -100, 100 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
static void display ( void )
{
const int BUFSIZE = 128;
char buffer[BUFSIZE];
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glPushMatrix();
snprintf( buffer, sizeof(buffer), "There are %d axes", master_info.num_axis );
GLfloat y = 480.;
oglft_face->draw( 0., y, buffer );
for ( unsigned int i = 0; i < master_info.num_axis; i++ ) {
FT_Set_MM_Design_Coordinates( ft_face, master_info.num_axis, axis_averages );
snprintf( buffer, sizeof(buffer), "%s: min: %ld max: %ld",
master_info.axis[i].name,
master_info.axis[i].minimum, master_info.axis[i].maximum );
y -= 20.;
oglft_face->draw( 0., y, buffer );
FT_Long axis_average = axis_averages[i];
FT_Long d_axis = (master_info.axis[i].maximum - master_info.axis[i].minimum)/4;
axis_averages[i] = master_info.axis[i].minimum;
for ( int j = 0; j <= 4; j++ ) {
FT_Set_MM_Design_Coordinates( ft_face, master_info.num_axis, axis_averages );
snprintf( buffer, sizeof(buffer), " Style at axis = %ld\n", axis_averages[i] );
y -= 20.;
oglft_face->draw( 0., y, buffer );
axis_averages[i] += d_axis;
}
axis_averages[i] = axis_average;
}
glPopMatrix();
glutSwapBuffers();
}
static void key ( unsigned char key, int /*x*/, int /*y*/ )
{
switch ( key ) {
case 'q':
case 27:
exit( 0 );
default:
return;
}
glutPostRedisplay();
}
static void done ( void )
{
}
int main ( int argc, char* argv[] )
{
if ( argc != 2 ) {
std::cerr << argv[0] << USAGE << std::endl;
return 1;
}
glutInit( &argc, argv );
glutInitWindowSize( 500, 500 );
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow( argv[0] );
init( argc, argv );
atexit( done );
glutReshapeFunc( reshape );
glutDisplayFunc( display );
glutKeyboardFunc( key );
glutMainLoop();
return 0;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+89
View File
@@ -0,0 +1,89 @@
/* -*- c++ -*-
* speedtest.h: Header for Performance test for the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef SPEEDTEST_H
#define SPEEDTEST_H
#include <stdlib.h>
#include <qgl.h>
#include <qqueue.h>
#include <qtimer.h>
// Little animation vignettes. The function calls essentially follow
// those of the Qt OpenGL widget and are called at the corresponding times.
struct Vignette {
virtual ~Vignette ( void ) {}
virtual unsigned int frame_count ( void ) = 0;
virtual void init ( void ) = 0;
virtual void view ( GLdouble /*left*/, GLdouble /*right*/,
GLdouble /*bottom*/, GLdouble /*top*/ )
{}
virtual void reset ( void )
{}
virtual bool input ( QKeyEvent* e )
{
if ( e->key() == Qt::Key_Escape ) exit( 0 );
return false;
}
virtual void draw ( int frame_number ) = 0;
virtual void finish ( void ) = 0;
};
// Yet another OpenGL view widget.
class CharacterView : public QGLWidget {
Q_OBJECT
GLsizei window_width_, window_height_;
GLdouble view_width_, view_height_;
GLdouble view_left_, view_right_, view_bottom_, view_top_;
GLdouble rot_x_, rot_y_, rot_z_;
QTimer redraw_timer_;
QTimer performance_timer_;
unsigned int frame_counter_;
unsigned int counter_snapshot_;
unsigned int animation_frame_count_;
unsigned int iteration_counter_;
unsigned int maximum_iterations_;
static const unsigned int PERFORMANCE_SAMPLE_RATE_HZ = 1;
static const unsigned int MAXIMUM_ITERATIONS = 4;
QQueue<Vignette> vignettes;
protected slots:
void redraw ( void );
void measure_performance ( void );
public:
CharacterView ( const char* text, const char* fontfile,
QWidget* parent = 0, const char* name = 0 );
protected:
void initializeGL ( void );
void resizeGL ( int w, int h );
void paintGL ( void );
void keyPressEvent ( QKeyEvent* e );
void resetView ( void );
};
#endif /* SPEEDTEST_H */
Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/perl
use strict;
# Convert the file given on the commandline into something which
# can be compiled with C and linked into an executable.
# Use the generated object module with the following declarations:
# extern unsigned char ${ARGV[0]}[]; /* Array of data */
# extern int ${ARGV[0]}_size; /* Size of array */
# Note, .'s in the argument filename are converted to _'s
open FILE, $ARGV[0] or die "usage: $0 file";
# "Slurp the whole file"
undef $/;
my $contents = <FILE>;
# Replace .'s in the filename with _'s (since . is an operator in C)
my $label = $ARGV[0];
$label =~ s/\./_/;
print "FT_Byte $label\[\] = {\n";
for ( my $i = 0; $i < length $contents; $i += 16 ) {
print join( ",", unpack( "C*", substr( $contents, $i, 16 ) ) ), ",\n";
}
print "};\n";
print "const int ${label}_size = sizeof( $label );\n";
@@ -0,0 +1,98 @@
/*
* tutorial1.cpp: Tutorial for the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <iostream>
#include <GL/glut.h>
#include <OGLFT.h> // Note: this will depend on where you've installed OGLFT
// Declare a Face variable of the desired style
OGLFT::Monochrome* monochrome;
void init ( const char* filename )
{
// Create a new face given the font filename and a size
monochrome = new OGLFT::Monochrome( filename, 36 );
// Always check to make sure the face was properly constructed
if ( monochrome == 0 || !monochrome->isValid() ) {
std::cerr << "Could not construct face from " << filename << std::endl;
return;
}
// Set the face color to red
monochrome->setForegroundColor( 1., 0., 0. );
// For the raster styles, it is essential that the pixel store
// unpacking alignment be set to 1
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
// Set the window's background color
glClearColor( .75, .75, .75, 1. );
}
static void display ( void )
{
// First clear the window ...
glClear( GL_COLOR_BUFFER_BIT );
// ... then draw the string
monochrome->draw( 0., 250., "Hello, World!" );
}
static void reshape ( int width, int height )
{
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, width, 0, height, -1, 1 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
int main ( int argc, char* argv[] )
{
// Check to be sure the user specified something as a font file name
if ( argc != 2 ) {
std::cerr << "usage: " << argv[0] << " fontfile" << std::endl;
return 1;
}
// Standard GLUT setup commands
glutInit( &argc, argv );
glutInitWindowSize( 500, 500 );
glutInitDisplayMode( GLUT_RGB ); // Note: OGLFT really only works in RGB mode
glutCreateWindow( argv[0] );
init( argv[1] );
glutReshapeFunc( reshape );
glutDisplayFunc( display );
glutMainLoop();
return 0;
}
+131
View File
@@ -0,0 +1,131 @@
/*
* tutorial2.cpp: Tutorial for the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <iostream>
#include <GL/glut.h>
#include <OGLFT.h> // Note: this will depend on where you've installed OGLFT
#define USE_BITMAP_FACE
// Declare a Face variable of the desired style
#if defined( USE_BITMAP_FACE )
OGLFT::Monochrome* face;
#else
OGLFT::Filled* face;
#endif
void init ( const char* filename )
{
// Create a new face given the font filename and a size
#if defined( USE_BITMAP_FACE )
face = new OGLFT::Monochrome( filename, 36 );
#else
face = new OGLFT::Filled( filename, 36 );
#endif
// Always check to make sure the face was properly constructed
if ( face == 0 || !face->isValid() ) {
std::cerr << "Could not construct face from " << filename << std::endl;
return;
}
// Set the face color to red
face->setForegroundColor( 1., 0., 0. );
// Use centered justification
face->setHorizontalJustification( OGLFT::Face::CENTER );
// For the raster styles, it is essential that the pixel store
// unpacking alignment be set to 1
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
// Set the window's background color
glClearColor( .75, .75, .75, 1. );
}
static void display ( void )
{
// First clear the window ...
glClear( GL_COLOR_BUFFER_BIT );
// ... then draw the string
face->draw( 250., 250., "Hello, World!" );
glutSwapBuffers();
}
static void reshape ( int width, int height )
{
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, width, 0, height, -1, 1 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
static void idle ( void )
{
// Retrieve the current value of the string's rotation and increment
// it by 4 degrees
face->setStringRotation( face->stringRotation() + 4 );
#if !defined(WIN32)
// Too fast even without acceleration
struct timespec request = { 0, 40000000 };
nanosleep( &request, 0 );
#else
Sleep( 40 );
#endif
glutPostRedisplay();
}
int main ( int argc, char* argv[] )
{
// Check to be sure the user specified something as a font file name
if ( argc != 2 ) {
std::cerr << "usage: " << argv[0] << " fontfile" << std::endl;
return 1;
}
// Standard GLUT setup commands
glutInit( &argc, argv );
glutInitWindowSize( 500, 500 );
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE ); // Note: OGLFT really only works in RGB mode
glutCreateWindow( argv[0] );
init( argv[1] );
glutReshapeFunc( reshape );
glutDisplayFunc( display );
glutIdleFunc( idle );
glutMainLoop();
return 0;
}
+282
View File
@@ -0,0 +1,282 @@
/*
* tutorial3.cpp: Tutorial for the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <iostream>
#if defined(_MSC_VER)
#define _USE_MATH_DEFINES
#endif
#include <cmath>
#include <ctime>
#include <vector> // The STL vector
#include <algorithm> // The STL algorithms
#include <GL/glut.h>
#include <OGLFT.h> // Note: this will depend on where you've installed OGLFT
// A Face variable of the desired style
#ifndef OGLFT_NO_SOLID
OGLFT::Solid* solid;
#else // If Solid is not defined, use Filled instead
OGLFT::Filled* solid;
#endif
// The Bounding Box for the string
OGLFT::BBox bbox;
// A vector of OpenGL display list names
OGLFT::DisplayLists dlists;
// A vector of displacements defining the ocean
struct vertex {
float y;
float nx, ny;
};
std::vector< vertex > ocean_vertices;
void init ( const char* filename )
{
// Create a new face given the font filename and a size
#ifndef OGLFT_NO_SOLID
solid = new OGLFT::Solid( filename, 36 );
#else
solid = new OGLFT::Filled( filename, 36 );
#endif
// Always check to make sure the face was properly constructed
if ( solid == 0 || !solid->isValid() ) {
std::cerr << "Could not construct face from " << filename << std::endl;
return;
}
const float AMPLITUDE = 25.;
GLuint dlist = glGenLists( 2*13 );
// The per character display lists are executed before the glyph is
// rendered; so, the first display list must contain an absolute
// transformation, but the subsequent ones must contain relative
// transformations. However, we need complete sets of both transformations,
// starting with a place holder for the first (absolute) transformation
dlists.push_back( 0 );
// Next, generate a sequence of relative displacements
for ( int i=0; i<13; i++ ) {
float dy = AMPLITUDE * ( sinf( (i+1) * 2.f * (float)M_PI / 13.f ) -
sinf( i * 2.f * (float)M_PI / 13.f ) );
glNewList( dlist, GL_COMPILE );
glTranslatef( 0., dy, 0. );
glEndList();
dlists.push_back( dlist );
dlist++;
}
// Next, generate a sequence of absolute displacements
for ( int i=0; i<13; i++ ) {
float y = AMPLITUDE * sinf( i * 2.f * (float)M_PI / 13.f );
glNewList( dlist, GL_COMPILE );
glTranslatef( 0., y, 0. );
glEndList();
dlists.push_back( dlist );
dlist++;
}
// Finally, copy the first absolute displacement into the first element
// of the display list vector
dlists[0] = dlists[13+1];
// Use centered justification
solid->setHorizontalJustification( OGLFT::Face::CENTER );
#ifndef OGLFT_NO_SOLID
// Make the glyphs rather thick
solid->setDepth( 10. );
#endif
// Apply the per character display lists
solid->setCharacterDisplayLists( dlists );
// Get the size of the string before it is transformed
bbox = solid->measure( "Hello, World!" );
// Make it (sea) green
solid->setForegroundColor( 143.f/255.f, 188.f/255.f, 143.f/255.f );
// Set the window's background color
glClearColor( .5, .5, .5, 1. );
// Build an "ocean" for the characters to float upon (a higher resolution
// version of the absolute displacements which we'll cycle through)
for ( int i = 0; i <= 52; i++ ) {
float s = sinf( i * 2.f * (float)M_PI / 52.f );
float c = cosf( i * 2.f * (float)M_PI / 52.f );
vertex v;
v.y = AMPLITUDE * s;
v.nx = c;
v.ny = s;
ocean_vertices.push_back( v );
}
// Enable lighting and the depth test
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glEnable( GL_COLOR_MATERIAL );
glEnable( GL_DEPTH_TEST );
}
static int offset = 0;
static void display ( void )
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glPushMatrix();
solid->draw( 250., 250., "Hello, World!" );
glTranslatef( 254.f - ( bbox.x_max_ + bbox.x_min_ ) / 2.f, 255.f, 0.f );
glBegin( GL_QUAD_STRIP );
glColor3f( 0., 0., 1. );
for ( int i=0; i<=52; i++ ) {
float x = i * ( bbox.x_max_ - bbox.x_min_ ) / 52;
glNormal3f( ocean_vertices[(i+offset)%53].nx,
ocean_vertices[(i+offset)%53].ny,
0 );
glVertex3f( x, ocean_vertices[(i+offset)%53].y, -100. );
glVertex3f( x, ocean_vertices[(i+offset)%53].y, 100. );
}
offset = offset < 48 ? offset+4 : 0;
glEnd();
glPopMatrix();
glutSwapBuffers();
}
static void reshape ( int width, int height )
{
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, width, 0, height, -200, 200 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
// Rotate the model slightly out of the XY plane so it looks 3D
// (note we rotate the model instead of the view so that the lighting
// is fixed relative to the view instead of the model)
glTranslatef( width/2.f, height/2.f, 0.f );
glRotatef( 25.f, 1.f, 0.f, 0.f );
glRotatef( 25.f, 0.f, 1.f, 0.f );
glTranslatef( -width/2.f, -height/2.f, 0. );
}
static void idle ( void )
{
// Use the STL rotate algorithm to animate the transformation display lists.
// First, rotate the lists containing the relative displacements
OGLFT::DLI first = solid->characterDisplayLists().begin()+1;
OGLFT::DLI next = first + 1;
OGLFT::DLI last = first + 13;
rotate( first, next, last );
// Next, rotate the the lists containing the absolute displacements
first = solid->characterDisplayLists().begin() + 13 + 1;
next = first + 1;
last = first + 13;
rotate( first, next, last );
// Finally, copy the current absolute displacement into the leading element
solid->characterDisplayLists()[0] = solid->characterDisplayLists()[13+1];
glutPostRedisplay();
#if !defined(WIN32)
// Too fast even without acceleration
struct timespec request = { 0, 80000000 };
nanosleep( &request, 0 );
#else
Sleep( 800 );
#endif
}
static void key ( unsigned char c, int /*x*/, int /*y*/ )
{
switch ( c ) {
case 'q':
case 27:
exit( 0 );
}
}
int main ( int argc, char* argv[] )
{
// Check to be sure the user specified something as a font file name
if ( argc != 2 ) {
std::cerr << "usage: " << argv[0] << " fontfile" << std::endl;
return 1;
}
// Standard GLUT setup commands
glutInit( &argc, argv );
glutInitWindowSize( 500, 500 );
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
glutCreateWindow( argv[0] );
init( argv[1] );
glutReshapeFunc( reshape );
glutDisplayFunc( display );
glutKeyboardFunc( key );
glutIdleFunc( idle );
glutMainLoop();
return 0;
}
+99
View File
@@ -0,0 +1,99 @@
/* -*- c++ -*-
* speedtest.h: Header for Performance test for the OGLFT library
* Copyright (C) 2002 lignum Computing, Inc. <oglft@lignumcomputing.com>
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef VIGNETTE_H
#define VIGNETTE_H
#include <stdlib.h>
#if OGLFT_QT_VERSION == 3
#include <qgl.h>
#include <qqueue.h>
#include <qtimer.h>
#elif OGLFT_QT_VERSION == 4
#include <QGLWidget>
#include <QQueue>
#include <QTimer>
#include <QKeyEvent>
#endif
// Little animation vignettes. The function calls essentially follow
// those of the Qt OpenGL widget and are called at the corresponding times.
struct Vignette {
virtual ~Vignette ( void ) {}
virtual unsigned int frame_count ( void ) = 0;
virtual unsigned int frame_rate ( void ) = 0;
virtual void init ( void ) = 0;
virtual void view ( GLdouble /*left*/, GLdouble /*right*/,
GLdouble /*bottom*/, GLdouble /*top*/ )
{}
virtual void reset ( void )
{}
virtual bool input ( QKeyEvent* e )
{
if ( e->key() == Qt::Key_Escape ) exit( 0 );
return false;
}
virtual void draw ( unsigned int frame_number ) = 0;
virtual void finish ( void ) = 0;
};
// Yet another OpenGL view widget.
class CharacterView : public QGLWidget {
Q_OBJECT
GLsizei window_width_, window_height_;
GLdouble view_width_, view_height_;
GLdouble view_left_, view_right_, view_bottom_, view_top_;
bool flank_speed_;
QTimer redraw_timer_;
QTimer performance_timer_;
unsigned int frame_counter_;
unsigned int counter_snapshot_;
unsigned int animation_frame_count_;
unsigned int animation_frame_rate_;
unsigned int animation_frame_counter_;
static const unsigned int PERFORMANCE_SAMPLE_RATE_HZ = 1;
#if OGLFT_QT_VERSION == 3
QQueue<Vignette> vignettes;
#elif OGLFT_QT_VERSION == 4
QQueue<Vignette*> vignettes;
#endif
protected slots:
void redraw ( void );
void measure_performance ( void );
public:
CharacterView ( bool flank_speed, const char* fontfile,
QWidget* parent = 0, const char* name = 0 );
protected:
void initializeGL ( void );
void resizeGL ( int w, int h );
void paintGL ( void );
void keyPressEvent ( QKeyEvent* e );
void resetView ( void );
};
#endif /* VIGNETTE_H */