Created
July 29, 2012 04:12
-
-
Save ajstarks/3196007 to your computer and use it in GitHub Desktop.
shapes: draw random shapes using OpenVG (Raspberry pi version)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Generated by font2openvg. See http://developer.hybrid.fi for more information. */ | |
/* converted from font file /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf */ | |
/* font family name: DejaVu Sans */ | |
/* font style name: Book */ | |
static const unsigned char DejaVuSans_glyphInstructions[4753] = { | |
2,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4, | |
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, | |
4,0,2,4,4,10,10,4,10,10,4,10,10,10,10,4,4,4,10,10, | |
4,10,10,4,10,10,10,10,4,0,2,4,10,10,10,10,0,2,4,10, | |
10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, | |
10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0, | |
2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,0,2, | |
4,10,10,4,10,10,4,4,4,10,10,10,10,10,10,10,10,10,10,10, | |
10,4,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10, | |
4,10,10,10,10,4,0,2,4,10,10,10,10,4,10,10,10,10,0,2, | |
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,2, | |
4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4, | |
0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2, | |
10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2, | |
4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,10,10,10, | |
10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10, | |
10,10,4,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,10, | |
10,10,10,10,10,0,2,4,4,4,0,2,4,4,4,4,4,4,4,4, | |
4,4,4,0,2,4,4,4,4,10,10,10,10,10,10,10,10,4,10,10, | |
10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,0,2,4, | |
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4, | |
4,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, | |
10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10, | |
10,10,10,0,2,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10, | |
10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2, | |
4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,0,2, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10,10, | |
4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,4, | |
0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, | |
4,4,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4, | |
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,0,2,4, | |
4,4,0,2,4,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10, | |
4,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,10,10,10, | |
10,4,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10, | |
10,10,10,0,2,4,4,10,10,10,10,4,0,2,4,10,10,10,10,4, | |
4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,4,10,10,10,10,10,10, | |
10,10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, | |
4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,10,10,4,4,4, | |
10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2,4,4, | |
4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,0, | |
2,4,4,4,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10, | |
10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4, | |
0,2,4,10,10,10,10,4,4,4,4,0,2,10,10,10,10,10,10,10, | |
10,0,2,4,4,4,10,10,10,10,10,10,10,10,10,10,0,2,10,10, | |
4,4,4,10,10,4,4,4,4,4,10,10,10,10,0,2,4,4,10,10, | |
10,10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4, | |
10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,4,4, | |
4,4,4,0,2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,0, | |
2,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, | |
4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,4, | |
4,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4, | |
0,2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4, | |
4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,4,4,0,2,4, | |
4,4,10,10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0, | |
2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,4, | |
4,4,4,4,0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10, | |
10,10,10,10,0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,0, | |
2,10,10,10,10,10,10,10,10,0,2,4,4,10,10,10,10,4,10,10, | |
10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,10,10,4, | |
4,4,4,4,4,4,4,4,4,4,10,10,4,0,2,10,10,10,10,10, | |
10,10,10,0,2,10,10,10,10,4,10,10,10,10,4,10,10,10,10,10, | |
10,10,10,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4, | |
10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, | |
10,10,4,4,4,10,10,4,0,2,4,4,4,4,0,2,4,4,4,4, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,4, | |
4,4,10,10,10,10,4,4,4,10,10,10,10,4,4,4,4,4,10,10, | |
10,10,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10, | |
0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10, | |
0,2,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10, | |
10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10, | |
10,10,10,10,10,4,4,4,4,4,0,2,10,10,10,10,4,4,4,4, | |
4,10,10,10,10,4,0,2,4,10,10,10,10,10,10,4,10,10,10,10, | |
10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, | |
4,4,4,10,10,4,4,4,10,10,4,4,4,4,4,4,0,2,4,4, | |
4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4, | |
4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,4, | |
4,0,2,4,4,4,4,4,4,4,4,4,4,4,4,0,2,10,10,4, | |
4,4,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4, | |
4,4,4,0,2,4,4,10,10,4,10,10,4,4,4,10,10,4,10,10, | |
4,4,4,10,10,4,10,10,10,10,4,10,10,4,0,2,4,4,4,4, | |
0,2,4,10,10,4,10,10,10,10,4,10,10,4,4,4,10,10,4,10, | |
10,4,4,4,10,10,4,10,10,4,4,0,2,4,10,10,10,10,10,10, | |
10,10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, | |
4,0,2,4,10,10,10,10,0,2,4,10,10,4,10,10,4,10,10,4, | |
4,4,10,10,10,10,4,4,4,10,10,0,2,4,10,10,10,10,4,4, | |
4,4,4,4,4,4,4,4,4,4,4,4,4,10,10,10,10,0,2,4, | |
4,4,10,10,10,10,4,4,4,10,10,10,10,4,4,4,10,10,10,10, | |
4,4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4, | |
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, | |
4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10, | |
10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10,10,10,10,10, | |
10,10,10,10,10,4,10,10,10,10,10,4,10,10,10,10,10,10,10,10, | |
10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10, | |
10,10,10,10,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, | |
10,10,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,10,10,10, | |
10,4,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4, | |
4,10,10,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2, | |
10,10,10,10,10,10,4,4,0,2,4,4,4,4,4,4,4,0,2,4, | |
4,4,4,4,4,4,0,2,4,4,4,4,4,4,0,2,4,4,4,4, | |
0,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2, | |
10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,2,4,4, | |
4,10,10,10,10,0,2,10,10,10,10,10,10,4,4,4,10,10,4,4, | |
4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, | |
2,10,10,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4, | |
4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,10,10,10, | |
10,10,10,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4,10, | |
10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,10,10,10,10,10, | |
10,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,10, | |
10,10,10,4,10,10,10,10,10,10,10,10,4,4,0,2,4,4,4,4, | |
4,4,4,4,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10, | |
10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4,4,4,4, | |
4,4,4,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0, | |
2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4,4,4,0,2, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4, | |
0,2,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2, | |
4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,4,4,0,2,4, | |
4,4,4,10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4, | |
4,4,0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,4,4, | |
10,10,10,10,10,10,4,10,10,10,10,10,10,0,2,4,4,4,0,2, | |
4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
4,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,4,10,10, | |
10,10,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4,4,4,4, | |
4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4,4,4, | |
4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,0,2,4,4, | |
4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4, | |
0,2,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,4,4,10, | |
10,10,10,4,10,10,10,10,4,4,10,10,10,10,0,2,4,4,4,0, | |
2,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4, | |
4,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,0,2,10,10, | |
10,10,10,10,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,4, | |
4,4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10, | |
10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4,4,4,4, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4, | |
4,4,4,4,4,4,4,0,2,4,4,4,4,4,4,4,0,2,4,4, | |
4,4,4,4,4,4,4,4,4,4,0,2,4,4,4,4,0,2,4,4, | |
4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4, | |
0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,10,10,10,10,4,4,4,4,4,4,0,2,4,4,4,4,4,4, | |
10,10,10,10,4,0,2,4,4,4,4,4,4,4,4,4,4,0,2,4, | |
10,10,10,10,4,4,10,10,10,10,4,10,10,10,10,4,4,10,10,10, | |
10,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, | |
10,0,2,4,4,4,4,0,2,10,10,10,10,10,10,10,10,0,2,10, | |
10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10,10,10, | |
10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,4, | |
4,4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10, | |
10,10,0,2,4,10,10,10,10,4,4,10,10,10,10,4,10,10,10,10, | |
4,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,10,10, | |
10,10,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2, | |
4,4,4,4,4,4,4,4,4,4,4,4,0,2,4,10,10,10,10,10, | |
10,0,2,10,10,10,10,10,10,4,0,2,10,10,10,10,10,10,4,4, | |
4,10,10,10,10,10,10,4,4,4,0,2,4,4,10,10,10,10,4,4, | |
4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,10,10,10,10, | |
4,4,4,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4,10,10, | |
10,10,4,4,4,10,10,10,10,4,0,2,4,4,4,4,4,4,4,0, | |
2,4,4,10,10,10,10,4,4,4,10,10,10,10,4,0,2,4,4,4, | |
4,0,2,4,4,4,4,0,2,4,4,4,4,4,4,4,4,4,0,2, | |
4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,0,2,4, | |
4,10,10,10,10,4,0,2,10,10,10,10,10,10,10,10,4,10,10,10, | |
10,10,10,4,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4, | |
4,4,0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10, | |
10,10,10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4, | |
0,2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10, | |
10,4,4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,0,2, | |
10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4, | |
4,10,10,10,10,4,10,10,10,10,0,2,4,4,4,4,4,4,4,0, | |
2,10,10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10, | |
4,4,10,10,10,10,4,10,10,10,10,0,2,4,10,10,10,10,4,10, | |
10,10,10,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10, | |
10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4,10,10,10,10, | |
4,10,10,10,10,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10, | |
10,10,10,10,10,4,4,0,2,4,4,4,10,10,10,10,10,10,4,4, | |
10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, | |
2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,10,10, | |
10,10,4,4,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,4, | |
4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,4,4, | |
0,2,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10, | |
0,2,10,10,10,10,10,10,4,10,10,10,10,10,10,4,0,2,4,4, | |
10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, | |
0,2,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10,10,10,10, | |
10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0,2,4,4, | |
10,10,10,10,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10,4, | |
0,2,4,4,4,4,4,4,4,0,2,4,4,10,10,10,10,4,10,10, | |
10,10,10,10,10,10,0,2,10,10,10,10,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4, | |
0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,0,2,4,4,4, | |
4,0,2,4,0,2,4,4,4,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10,10,10,10, | |
10,10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,10,10,4,4, | |
4,4,4,4,4,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4, | |
4,4,4,10,10,10,10,0,2,4,10,10,10,10,4,10,10,10,10,4, | |
10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0, | |
2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2,10,10,10, | |
10,10,10,10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4, | |
4,0,2,10,10,10,10,10,10,10,10,0,2,10,10,10,10,10,10,10, | |
10,0,2,4,4,4,4,4,4,4,0,2,10,10,10,10,10,10,10,10, | |
0,2,10,10,10,10,10,10,10,10,0,2,4,10,10,10,10,4,10,10, | |
10,10,4,10,10,10,10,4,10,10,10,10,0,2,10,10,10,10,10,10, | |
10,10,0,2,10,10,10,10,10,10,10,10,0,2,4,4,4,4,0,2, | |
4,4,4,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,4,4, | |
4,4,0,2,4,10,10,10,10,10,10,0,2,10,10,10,10,10,10,4, | |
0,2,10,10,10,10,10,10,4,4,4,10,10,10,10,10,10,4,4,4, | |
0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10,10,10,0,2, | |
4,0,2,4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4, | |
4,10,10,10,10,0,2,4,0,2,4,4,4,4,0,2,4,4,4,10, | |
10,10,10,4,4,4,4,4,10,10,10,10,0,2,4,0,2,4,4,4, | |
4,4,4,4,0,2,4,4,4,10,10,10,10,4,4,4,4,4,10,10, | |
10,10,0,2,4,0,2,4,4,4,4,0,2,4,4,4,4,0,2,10, | |
10,4,4,4,10,10,4,4,4,4,4,4,4,0,2,4,4,4,4,0, | |
2,4,4,4,4,4,10,10,10,10,10,10,10,10,0,2,10,10,10,10, | |
10,10,10,10,0,2,10,10,4,4,4,10,10,4,4,4,4,4,4,4, | |
0,2,4,4,4,4,0,2,4,4,4,4,0 }; | |
static const int DejaVuSans_glyphInstructionIndices[224] = { | |
0,0,14,26,62,104,150,189,195,207,219,239,253,261,267,273,279,299,312,335, | |
366,384,408,437,446,484,513,525,539,548,560,569,601,658,673,704,724,742,756,768, | |
792,806,812,824,837,845,860,872,892,912,937,964,994,1004,1020,1029,1044,1058,1069,1081, | |
1091,1097,1107,1116,1122,1128,1160,1185,1205,1230,1254,1274,1307,1325,1337,1355,1368,1374,1403,1421, | |
1441,1466,1491,1507,1537,1557,1578,1587,1602,1616,1632,1644,1675,1681,1712,1732,1744,1756,1768,1780, | |
1792,1804,1816,1828,1840,1852,1864,1876,1888,1900,1912,1924,1936,1948,1960,1972,1984,1996,2008,2020, | |
2032,2044,2056,2068,2080,2092,2104,2116,2128,2128,2142,2172,2198,2238,2265,2277,2323,2335,2391,2429, | |
2447,2455,2461,2524,2530,2552,2572,2591,2622,2628,2655,2669,2675,2691,2704,2730,2748,2785,2823,2878, | |
2910,2931,2952,2976,3015,3042,3074,3098,3134,3154,3174,3197,3223,3235,3247,3262,3280,3306,3342,3368, | |
3394,3423,3467,3499,3513,3551,3573,3595,3620,3648,3665,3687,3723,3761,3799,3840,3894,3938,3990,4041, | |
4077,4107,4137,4170,4206,4221,4236,4254,4275,4310,4350,4376,4402,4431,4473,4505,4523,4561,4588,4615, | |
4645,4678,4700,4725 }; | |
static const int DejaVuSans_glyphInstructionCounts[224] = { | |
0,14,12,36,42,46,39,6,12,12,20,14,8,6,6,6,20,13,23,31, | |
18,24,29,9,38,29,12,14,9,12,9,32,57,15,31,20,18,14,12,24, | |
14,6,12,13,8,15,12,20,20,25,27,30,10,16,9,15,14,11,12,10, | |
6,10,9,6,6,32,25,20,25,24,20,33,18,12,18,13,6,29,18,20, | |
25,25,16,30,20,21,9,15,14,16,12,31,6,31,20,12,12,12,12,12, | |
12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, | |
12,12,12,12,12,12,12,12,0,14,30,26,40,27,12,46,12,56,38,18, | |
8,6,63,6,22,20,19,31,6,27,14,6,16,13,26,18,37,38,55,32, | |
21,21,24,39,27,32,24,36,20,20,23,26,12,12,15,18,26,36,26,26, | |
29,44,32,14,38,22,22,25,28,17,22,36,38,38,41,54,44,52,51,36, | |
30,30,33,36,15,15,18,21,35,40,26,26,29,42,32,18,38,27,27,30, | |
33,22,25,28 }; | |
static const int DejaVuSans_glyphPointIndices[224] = { | |
0,0,12,22,56,119,192,257,262,281,300,319,332,339,344,349,354,388,400,438, | |
492,508,547,598,606,673,724,734,746,754,764,772,820,923,936,980,1015,1039,1052,1063, | |
1102,1115,1120,1135,1147,1154,1168,1179,1213,1239,1280,1317,1370,1379,1402,1410,1424,1437,1447,1458, | |
1467,1472,1481,1489,1494,1499,1549,1588,1623,1662,1700,1723,1778,1803,1813,1833,1845,1850,1894,1919, | |
1953,1992,2031,2054,2107,2130,2157,2165,2179,2192,2211,2222,2268,2273,2319,2354,2364,2374,2384,2394, | |
2404,2414,2424,2434,2444,2454,2464,2474,2484,2494,2504,2514,2524,2534,2544,2554,2564,2574,2584,2594, | |
2604,2614,2624,2634,2644,2654,2664,2674,2684,2684,2696,2740,2773,2835,2861,2871,2954,2964,3065,3120, | |
3136,3143,3148,3251,3256,3294,3312,3342,3396,3401,3443,3460,3465,3492,3504,3543,3559,3592,3639,3714, | |
3762,3780,3798,3819,3871,3894,3939,3961,4023,4041,4059,4080,4103,4113,4123,4136,4151,4183,4233,4272, | |
4311,4353,4426,4470,4483,4542,4570,4598,4629,4662,4677,4705,4768,4823,4878,4936,5023,5083,5167,5251, | |
5313,5356,5399,5445,5493,5505,5517,5532,5549,5602,5664,5703,5742,5784,5855,5899,5914,5973,6005,6037, | |
6072,6109,6133,6172 }; | |
static const int DejaVuSans_glyphPoints[6201*2] = { | |
13136,10800,21760,10800,21760,0,13136,0,13136,10800,13136,63456,21760,63456,21760,35616,20912,20448,14032,20448, | |
13136,35616,13136,63456,15600,63456,15600,39872,8368,39872,8368,63456,15600,63456,31664,63456,31664,39872,24432,39872, | |
24432,63456,31664,63456,44496,38288,32128,38288,28560,24096,41008,24096,44496,38288,38128,62480,33696,44832,46112,44832, | |
50576,62480,57376,62480,52992,44832,66256,44832,66256,38288,51344,38288,47856,24096,61376,24096,61376,17600,46192,17600, | |
41776,0,34976,0,39360,17600,26896,17600,22528,0,15680,0,20096,17600,6720,17600,6720,24096,21680,24096, | |
25248,38288,11568,38288,11568,44832,26896,44832,31232,62480,38128,62480,29408,-12800,25168,-12800,25120,0,20656,80, | |
16192,1040,11728,2000,7232,3904,7232,11568,11568,8848,16008,7464,20448,6080,25168,6032,25168,25408,15760,26944, | |
11496,30600,7232,34256,7232,40624,7232,47552,11864,51552,16496,55552,25168,56144,25168,66128,29408,66128,29408,56272, | |
33360,56096,37056,55440,40752,54784,44288,53632,44288,46192,40752,47984,37040,48960,33328,49936,29408,50112,29408,31968, | |
39056,30480,43608,26648,48160,22816,48160,16192,48160,9008,43336,4864,38512,720,29408,80,29408,-12800,25168,32720, | |
25168,50144,20224,49600,17632,47344,15040,45088,15040,41360,15040,37696,17440,35656,19840,33616,25168,32720,29408,24560, | |
29408,6160,34800,6880,37544,9224,40288,11568,40288,15392,40288,19120,37672,21336,35056,23552,29408,24560,63280,27920, | |
59584,27920,57480,24776,55376,21632,55376,16016,55376,10496,57480,7328,59584,4160,63280,4160,66896,4160,69000,7328, | |
71104,10496,71104,16016,71104,21584,69000,24752,66896,27920,63280,27920,63280,33328,70000,33328,73952,28648,77904,23968, | |
77904,16016,77904,8080,73928,3424,69952,-1232,63280,-1232,56480,-1232,52528,3424,48576,8080,48576,16016,48576,24016, | |
52552,28672,56528,33328,63280,33328,19424,59200,15760,59200,13664,56032,11568,52864,11568,47344,11568,41728,13648,38584, | |
15728,35440,19424,35440,23120,35440,25224,38584,27328,41728,27328,47344,27328,52832,25200,56016,23072,59200,19424,59200, | |
57808,64608,64608,64608,24912,-1232,18112,-1232,57808,64608,19424,64608,26144,64608,30136,59952,34128,55296,34128,47344, | |
34128,39312,30152,34680,26176,30048,19424,30048,12672,30048,8736,34704,4800,39360,4800,47344,4800,55248,8752,59928, | |
12704,64608,19424,64608,21168,34128,17296,30688,15488,27264,13680,23840,13680,20096,13680,13904,18184,9776,22688,5648, | |
29488,5648,33536,5648,37064,6992,40592,8336,43696,11056,21168,34128,27152,38880,48752,16784,51248,20576,52656,24888, | |
54064,29200,54320,34048,62224,34048,61712,28432,59504,22952,57296,17472,53344,12112,65200,0,54480,0,48400,6240, | |
43984,2464,39144,616,34304,-1232,28736,-1232,18480,-1232,11984,4608,5488,10448,5488,19600,5488,25040,8336,29816, | |
11184,34592,16880,38800,14832,41488,13768,44144,12704,46800,12704,49344,12704,56224,17424,60416,22144,64608,29968,64608, | |
33488,64608,36992,63840,40496,63072,44112,61536,44112,53808,40416,55808,37056,56848,33696,57888,30816,57888,26352,57888, | |
23568,55528,20784,53168,20784,49424,20784,47264,22040,45072,23296,42880,27152,38880,15600,63456,15600,39872,8368,39872, | |
8368,63456,15600,63456,26992,66048,21296,56272,18528,46712,15760,37152,15760,27328,15760,17504,18544,7880,21328,-1744, | |
26992,-11472,20192,-11472,13808,-1488,10648,8160,7488,17808,7488,27328,7488,36800,10632,46408,13776,56016,20192,66048, | |
26992,66048,6976,66048,13776,66048,20144,56016,23312,46408,26480,36800,26480,27328,26480,17808,23312,8160,20144,-1488, | |
13776,-11472,6976,-11472,12624,-1744,15408,7880,18192,17504,18192,27328,18192,37152,15408,46712,12624,56272,6976,66048, | |
40928,52992,25664,44752,40928,36464,38464,32304,24176,40928,24176,24912,19344,24912,19344,40928,5056,32304,2592,36464, | |
17856,44752,2592,52992,5056,57200,19344,48576,19344,64608,24176,64608,24176,48576,38464,57200,40928,52992,40032,54576, | |
40032,30896,63712,30896,63712,23680,40032,23680,40032,0,32896,0,32896,23680,9216,23680,9216,30896,32896,30896, | |
32896,54576,40032,54576,10208,10800,19168,10800,19168,3488,12192,-10112,6720,-10112,10208,3488,10208,10800,4256,27328, | |
27152,27328,27152,20352,4256,20352,4256,27328,9312,10800,18272,10800,18272,0,9312,0,9312,10800,22096,63456, | |
29328,63456,7232,-8080,0,-8080,22096,63456,27664,57808,21040,57808,17704,51280,14368,44752,14368,31664,14368,18608, | |
17704,12088,21040,5568,27664,5568,34336,5568,37672,12088,41008,18608,41008,31664,41008,44752,37672,51280,34336,57808, | |
27664,57808,27664,64608,38336,64608,43968,56168,49600,47728,49600,31664,49600,15648,43968,7208,38336,-1232,27664,-1232, | |
17008,-1232,11376,7208,5744,15648,5744,31664,5744,47728,11376,56168,17008,64608,27664,64608,10800,7232,24816,7232, | |
24816,55632,9568,52576,9568,60400,24736,63456,33328,63456,33328,7232,47344,7232,47344,0,10800,0,10800,7232, | |
16704,7232,46672,7232,46672,0,6368,0,6368,7232,11264,12288,19696,20808,28128,29328,30304,31792,34432,36416, | |
36064,39632,37696,42848,37696,45936,37696,51008,34152,54192,30608,57376,24912,57376,20864,57376,16384,55976,11904,54576, | |
6800,51728,6800,60400,11984,62480,16488,63544,20992,64608,24736,64608,34592,64608,40456,59672,46320,54736,46320,46496, | |
46320,42592,44856,39080,43392,35568,39520,30816,38464,29584,32768,23696,27072,17808,16704,7232,35312,34208,41488,32896, | |
44944,28728,48400,24560,48400,18448,48400,9056,41944,3912,35488,-1232,23584,-1232,19600,-1232,15368,-448,11136,336, | |
6624,1920,6624,10208,10208,8112,14456,7056,18704,6000,23328,6000,31408,6000,35640,9184,39872,12368,39872,18448, | |
39872,24048,35936,27216,32000,30384,24992,30384,17600,30384,17600,37440,25328,37440,31664,37440,35024,39968,38384,42496, | |
38384,47264,38384,52144,34920,54760,31456,57376,24992,57376,21456,57376,17424,56608,13392,55840,8544,54224,8544,61888, | |
13424,63248,17696,63928,21968,64608,25760,64608,35536,64608,41232,60160,46928,55712,46928,48160,46928,42880,43904,39248, | |
40880,35616,35312,34208,32896,55968,11216,22096,32896,22096,32896,55968,30640,63456,41440,63456,41440,22096,50496,22096, | |
50496,14960,41440,14960,41440,0,32896,0,32896,14960,4256,14960,4256,23248,30640,63456,9392,63456,43088,63456, | |
43088,56224,17248,56224,17248,40672,19120,41312,20992,41632,22864,41952,24736,41952,35360,41952,41568,36128,47776,30304, | |
47776,20352,47776,10112,41400,4440,35024,-1232,23424,-1232,19424,-1232,15280,-552,11136,128,6720,1488,6720,10112, | |
10544,8032,14624,7016,18704,6000,23248,6000,30608,6000,34896,9864,39184,13728,39184,20352,39184,26992,34896,30856, | |
30608,34720,23248,34720,19808,34720,16384,33960,12960,33200,9392,31584,9392,63456,28736,35152,22944,35152,19568,31200, | |
16192,27248,16192,20352,16192,13520,19568,9544,22944,5568,28736,5568,34512,5568,37888,9544,41264,13520,41264,20352, | |
41264,27248,37888,31200,34512,35152,28736,35152,45776,62048,45776,54224,42544,55760,39248,56568,35952,57376,32720,57376, | |
24224,57376,19744,51640,15264,45904,14624,34304,17120,38000,20904,39976,24688,41952,29248,41952,38800,41952,44344,36152, | |
49888,30352,49888,20352,49888,10576,44112,4672,38336,-1232,28736,-1232,17728,-1232,11904,7208,6080,15648,6080,31664, | |
6080,46704,13216,55656,20352,64608,32384,64608,35616,64608,38912,63968,42208,63328,45776,62048,7136,63456,47936,63456, | |
47936,59792,24912,0,15936,0,37616,56224,7136,56224,7136,63456,27664,30128,21552,30128,18040,26856,14528,23584, | |
14528,17856,14528,12112,18040,8840,21552,5568,27664,5568,33792,5568,37320,8864,40848,12160,40848,17856,40848,23584, | |
37336,26856,33824,30128,27664,30128,19088,33792,13552,35152,10472,38936,7392,42720,7392,48160,7392,55760,12816,60184, | |
18240,64608,27664,64608,37152,64608,42544,60184,47936,55760,47936,48160,47936,42720,44856,38936,41776,35152,36288,33792, | |
42496,32336,45960,28128,49424,23920,49424,17856,49424,8624,43792,3696,38160,-1232,27664,-1232,17168,-1232,11536,3696, | |
5904,8624,5904,17856,5904,23920,9392,28128,12880,32336,19088,33792,15936,47344,15936,42416,19016,39656,22096,36896, | |
27664,36896,33200,36896,36320,39656,39440,42416,39440,47344,39440,52272,36320,55040,33200,57808,27664,57808,22096,57808, | |
19016,55040,15936,52272,15936,47344,9568,1312,9568,9136,12800,7600,16112,6800,19424,6000,22608,6000,31104,6000, | |
35592,11712,40080,17424,40720,29072,38256,25408,34472,23456,30688,21504,26096,21504,16576,21504,11032,27264,5488,33024, | |
5488,43008,5488,52784,11264,58696,17040,64608,26640,64608,37648,64608,43456,56168,49264,47728,49264,31664,49264,16656, | |
42144,7712,35024,-1232,22992,-1232,19760,-1232,16448,-592,13136,48,9568,1312,26640,28224,32432,28224,35808,32176, | |
39184,36128,39184,43008,39184,49856,35808,53832,32432,57808,26640,57808,20864,57808,17488,53832,14112,49856,14112,43008, | |
14112,36128,17488,32176,20864,28224,26640,28224,10208,10800,19168,10800,19168,0,10208,0,10208,10800,10208,45008, | |
19168,45008,19168,34208,10208,34208,10208,45008,10208,45008,19168,45008,19168,34208,10208,34208,10208,45008,10208,10800, | |
19168,10800,19168,3488,12192,-10112,6720,-10112,10208,3488,10208,10800,63712,42848,19840,27248,63712,11728,63712,4000, | |
9216,23760,9216,30816,63712,50576,63712,42848,9216,39520,63712,39520,63712,32384,9216,32384,9216,39520,9216,22192, | |
63712,22192,63712,14960,9216,14960,9216,22192,9216,42848,9216,50576,63712,30816,63712,23760,9216,4000,9216,11728, | |
52992,27248,9216,42848,16624,10800,25248,10800,25248,0,16624,0,16624,10800,24992,17040,16880,17040,16880,23584, | |
16880,27888,18064,30648,19248,33408,23072,37056,26896,40848,29328,43088,30408,45088,31488,47088,31488,49168,31488,52960, | |
28704,55296,25920,57632,21328,57632,17984,57632,14176,56144,10368,54656,6240,51808,6240,59792,10240,62224,14344,63416, | |
18448,64608,22816,64608,30640,64608,35384,60480,40128,56352,40128,49600,40128,46368,38592,43456,37056,40544,33232,36896, | |
29488,33232,27504,31232,26672,30112,25840,28992,25504,27920,25248,27024,25120,25752,24992,24480,24992,22272,24992,17040, | |
32384,22816,32384,16752,35400,13288,38416,9824,43696,9824,48912,9824,51912,13304,54912,16784,54912,22816,54912,28768, | |
51848,32280,48784,35792,43600,35792,38464,35792,35424,32304,32384,28816,32384,22816,55552,10112,52992,6848,49704,5296, | |
46416,3744,42032,3744,34720,3744,30152,9032,25584,14320,25584,22816,25584,31328,30176,36640,34768,41952,42032,41952, | |
46416,41952,49728,40360,53040,38768,55552,35536,55552,41104,61632,41104,61632,9824,67824,10752,71336,15488,74848,20224, | |
74848,27760,74848,32304,73504,36296,72160,40288,69440,43696,65024,49264,58672,52216,52320,55168,44832,55168,39616,55168, | |
34808,53784,30000,52400,25920,49680,19248,45344,15488,38312,11728,31280,11728,23072,11728,16320,14176,10416,16624,4512, | |
21248,0,25712,-4416,31576,-6736,37440,-9056,44112,-9056,49600,-9056,54888,-7208,60176,-5360,64608,-1920,68432,-6624, | |
63120,-10752,56848,-12944,50576,-15136,44112,-15136,36256,-15136,29288,-12352,22320,-9568,16880,-4256,11440,1056,8592,8048, | |
5744,15040,5744,23072,5744,30816,8632,37824,11520,44832,16880,50144,22352,55552,29536,58416,36720,61280,44752,61280, | |
53760,61280,61472,57584,69184,53888,74416,47088,77600,42928,79280,38040,80960,33152,80960,27920,80960,16752,74200,10288, | |
67440,3824,55552,3568,55552,10112,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0, | |
49888,0,44112,16272,15520,16272,9728,0,688,0,24912,63456,17120,30304,17120,7056,30896,7056,37824,7056, | |
41160,9928,44496,12800,44496,18704,44496,24656,41160,27480,37824,30304,30896,30304,17120,30304,17120,56400,17120,37280, | |
29840,37280,36128,37280,39208,39632,42288,41984,42288,46832,42288,51632,39208,54016,36128,56400,29840,56400,17120,56400, | |
8544,63456,30480,63456,40288,63456,45600,59376,50912,55296,50912,47776,50912,41952,48192,38504,45472,35056,40208,34208, | |
46544,32848,50048,28536,53552,24224,53552,17760,53552,9264,47768,4632,41984,0,31328,0,8544,0,8544,63456, | |
56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896,13936,44240,13936,31664, | |
13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856,56064,4880,51552,1824, | |
46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960,13168,55784,21456,64608, | |
35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,17120,56400,17120,7056,27504,7056,40624,7056,46728,13008, | |
52832,18960,52832,31792,52832,44544,46728,50472,40624,56400,27504,56400,17120,56400,8544,63456,26176,63456,44624,63456, | |
53256,55784,61888,48112,61888,31792,61888,15392,53216,7696,44544,0,26176,0,8544,0,8544,63456,8544,63456, | |
48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232,49424,0, | |
8544,0,8544,63456,8544,63456,45008,63456,45008,56224,17120,56224,17120,37520,42288,37520,42288,30304,17120,30304, | |
17120,0,8544,0,8544,63456,51808,9056,51808,26096,37776,26096,37776,33152,60304,33152,60304,5904,55328,2384, | |
49336,576,43344,-1232,36544,-1232,21680,-1232,13280,7456,4880,16144,4880,31664,4880,47216,13280,55912,21680,64608, | |
36544,64608,42752,64608,48344,63072,53936,61536,58656,58560,58656,49424,53888,53472,48536,55512,43184,57552,37280,57552, | |
25632,57552,19784,51048,13936,44544,13936,31664,13936,18832,19784,12328,25632,5824,37280,5824,41824,5824,45392,6608, | |
48960,7392,51808,9056,8544,63456,17120,63456,17120,37440,48320,37440,48320,63456,56912,63456,56912,0,48320,0, | |
48320,30224,17120,30224,17120,0,8544,0,8544,63456,8544,63456,17120,63456,17120,0,8544,0,8544,63456, | |
8544,63456,17120,63456,17120,4416,17120,-7056,12768,-12240,8416,-17424,-1232,-17424,-4512,-17424,-4512,-10208,-1824,-10208, | |
3872,-10208,6208,-7016,8544,-3824,8544,4416,8544,63456,8544,63456,17120,63456,17120,36640,45600,63456,56656,63456, | |
25168,33872,58912,0,47600,0,17120,30560,17120,0,8544,0,8544,63456,8544,63456,17120,63456,17120,7232, | |
48032,7232,48032,0,8544,0,8544,63456,8544,63456,21328,63456,37520,20272,53808,63456,66592,63456,66592,0, | |
58224,0,58224,55712,41856,12192,33232,12192,16880,55712,16880,0,8544,0,8544,63456,8544,63456,20096,63456, | |
48240,10368,48240,63456,56560,63456,56560,0,45008,0,16880,53088,16880,0,8544,0,8544,63456,34304,57632, | |
24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712, | |
54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656,63616,46704, | |
63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704, | |
12896,55656,20912,64608,34304,64608,17120,56400,17120,32560,27920,32560,33920,32560,37192,35664,40464,38768,40464,44496, | |
40464,50192,37192,53296,33920,56400,27920,56400,17120,56400,8544,63456,27920,63456,38592,63456,44056,58632,49520,53808, | |
49520,44496,49520,35104,44056,30304,38592,25504,27920,25504,17120,25504,17120,0,8544,0,8544,63456,34304,57632, | |
24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712, | |
54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,46320,1152,57632,-11216,47264,-11216,37872,-1056, | |
36464,-1152,35720,-1192,34976,-1232,34304,-1232,20912,-1232,12896,7712,4880,16656,4880,31664,4880,46704,12896,55656, | |
20912,64608,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,20608,59176,12744,54736,4880,46320,1152, | |
38640,29744,41392,28816,44008,25752,46624,22688,49264,17344,57968,0,48752,0,40624,16272,37488,22656,34536,24736, | |
31584,26816,26480,26816,17120,26816,17120,0,8544,0,8544,63456,27920,63456,38800,63456,44160,58904,49520,54352, | |
49520,45184,49520,39184,46736,35232,43952,31280,38640,29744,17120,56400,17120,33872,27920,33872,34128,33872,37296,36744, | |
40464,39616,40464,45184,40464,50752,37296,53576,34128,56400,27920,56400,17120,56400,46576,61376,46576,52992,41696,55328, | |
37360,56480,33024,57632,28992,57632,21968,57632,18168,54912,14368,52192,14368,47168,14368,42960,16896,40816,19424,38672, | |
26480,37360,31664,36288,41264,34464,45832,29856,50400,25248,50400,17504,50400,8288,44216,3528,38032,-1232,26096,-1232, | |
21584,-1232,16512,-216,11440,800,6000,2800,6000,11648,11216,8720,16232,7232,21248,5744,26096,5744,33440,5744, | |
37440,8632,41440,11520,41440,16880,41440,21552,38568,24184,35696,26816,29152,28128,23920,29152,14320,31072,10032,35152, | |
5744,39232,5744,46496,5744,54912,11672,59760,17600,64608,28000,64608,32464,64608,37096,63800,41728,62992,46576,61376, | |
-256,63456,53424,63456,53424,56224,30896,56224,30896,0,22272,0,22272,56224,-256,56224,-256,63456,7568,63456, | |
16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912, | |
47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440, | |
7568,23840,7568,63456,24912,0,688,63456,9648,63456,29744,10032,49888,63456,58816,63456,34640,0,24912,0, | |
2896,63456,11568,63456,24912,9824,38208,63456,47856,63456,61200,9824,74496,63456,83216,63456,67280,0,56480,0, | |
43088,55088,29584,0,18784,0,2896,63456,5488,63456,14704,63456,30480,39872,46320,63456,55552,63456,35152,32976, | |
56912,0,47680,0,29840,26992,11856,0,2592,0,25248,33872,5488,63456,-176,63456,9056,63456,26640,37360, | |
44112,63456,53344,63456,30896,30224,30896,0,22272,0,22272,30224,-176,63456,4880,63456,54736,63456,54736,56912, | |
14624,7232,55712,7232,55712,0,3904,0,3904,6544,44032,56224,4880,56224,4880,63456,7488,66128,25504,66128, | |
25504,60048,15296,60048,15296,-5392,25504,-5392,25504,-11472,7488,-11472,7488,66128,7232,63456,29328,-8080,22096,-8080, | |
0,63456,7232,63456,26480,66128,26480,-11472,8464,-11472,8464,-5392,18608,-5392,18608,60048,8464,60048,8464,66128, | |
26480,66128,40624,63456,63712,39776,55168,39776,36464,56560,17760,39776,9216,39776,32304,63456,40624,63456,44368,-14448, | |
44368,-20528,-848,-20528,-848,-14448,44368,-14448,15600,69616,27584,53728,21088,53728,7232,69616,15600,69616,29840,23920, | |
20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920, | |
37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832, | |
26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048, | |
37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208, | |
8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,42368,23760, | |
42368,32384,38824,37296,35280,42208,29072,42208,22864,42208,19312,37296,15760,32384,15760,23760,15760,15136,19312,10224, | |
22864,5312,29072,5312,35280,5312,38824,10224,42368,15136,42368,23760,15760,40368,18240,44624,22000,46688,25760,48752, | |
30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232,30976,-1232,25760,-1232, | |
22000,832,18240,2896,15760,7136,15760,0,7904,0,7904,66128,15760,66128,15760,40368,42464,45776,42464,38464, | |
39136,40288,35800,41200,32464,42112,29072,42112,21456,42112,17248,37288,13040,32464,13040,23760,13040,15040,17248,10216, | |
21456,5392,29072,5392,32464,5392,35800,6312,39136,7232,42464,9056,42464,1824,39184,304,35680,-464,32176,-1232, | |
28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760,4800,35408,11200,42080,17600,48752,28736,48752,32336,48752, | |
35784,48008,39232,47264,42464,45776,39520,40368,39520,66128,47344,66128,47344,0,39520,0,39520,7136,37056,2896, | |
33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656,4800,12544,4800,23760,4800,34976,10224,41864,15648,48752, | |
24272,48752,29536,48752,33296,46688,37056,44624,39520,40368,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312, | |
32384,5312,35952,10224,39520,15136,39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296, | |
12880,32384,12880,23760,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392,34464,5392, | |
38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232,11456,5400, | |
4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384,48912,25760, | |
41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000,41104,28048, | |
32304,66128,32304,59632,24816,59632,20608,59632,18976,57928,17344,56224,17344,51808,17344,47600,30224,47600,30224,41520, | |
17344,41520,17344,0,9472,0,9472,41520,2000,41520,2000,47600,9472,47600,9472,50912,9472,58864,13176,62496, | |
16880,66128,24912,66128,32304,66128,39520,24352,39520,32848,36016,37528,32512,42208,26176,42208,19888,42208,16384,37528, | |
12880,32848,12880,24352,12880,15888,16384,11216,19888,6544,26176,6544,32512,6544,36016,11216,39520,15888,39520,24352, | |
47344,5904,47344,-6240,41944,-12176,36544,-18112,25408,-18112,21296,-18112,17640,-17496,13984,-16880,10544,-15600,10544,-7984, | |
13984,-9856,17344,-10752,20704,-11648,24176,-11648,31872,-11648,35696,-7632,39520,-3616,39520,4512,39520,8368,37104,4160, | |
33320,2080,29536,0,24272,0,15520,0,10160,6672,4800,13344,4800,24352,4800,35408,10160,42080,15520,48752, | |
24272,48752,29536,48752,33320,46664,37104,44576,39520,40368,39520,47600,47344,47600,47344,5904,47776,28736,47776,0, | |
39952,0,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896, | |
15760,0,7904,0,7904,66128,15760,66128,15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752, | |
43568,43672,47776,38592,47776,28736,8208,47600,16016,47600,16016,0,8208,0,8208,47600,8208,66128,16016,66128, | |
16016,56224,8208,56224,8208,66128,8208,47600,16016,47600,16016,-848,16016,-9952,12552,-14032,9088,-18112,1408,-18112, | |
-1568,-18112,-1568,-11472,512,-11472,4976,-11472,6592,-9416,8208,-7360,8208,-848,8208,47600,8208,66128,16016,66128, | |
16016,56224,8208,56224,8208,66128,7904,66128,15760,66128,15760,27072,39104,47600,49088,47600,23840,25328,50144,0, | |
39952,0,15760,23248,15760,0,7904,0,7904,66128,8208,66128,16016,66128,16016,0,8208,0,8208,66128, | |
45264,38464,48192,43728,52272,46240,56352,48752,61888,48752,69312,48752,73352,43544,77392,38336,77392,28736,77392,0, | |
69536,0,69536,28480,69536,35312,67112,38632,64688,41952,59712,41952,53632,41952,50104,37912,46576,33872,46576,26896, | |
46576,0,38720,0,38720,28480,38720,35360,36296,38656,33872,41952,28816,41952,22816,41952,19288,37888,15760,33824, | |
15760,26896,15760,0,7904,0,7904,47600,15760,47600,15760,40208,18448,44576,22184,46664,25920,48752,31072,48752, | |
36256,48752,39888,46112,43520,43472,45264,38464,47776,28736,47776,0,39952,0,39952,28480,39952,35232,37320,38592, | |
34688,41952,29408,41952,23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600, | |
15760,40208,18576,44496,22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592,47776,28736,26640,42112, | |
20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328, | |
40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488, | |
48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488, | |
10600,42120,16400,48752,26640,48752,15760,7136,15760,-18112,7904,-18112,7904,47600,15760,47600,15760,40368,18240,44624, | |
22000,46688,25760,48752,30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232, | |
30976,-1232,25760,-1232,22000,832,18240,2896,15760,7136,42368,23760,42368,32384,38824,37296,35280,42208,29072,42208, | |
22864,42208,19312,37296,15760,32384,15760,23760,15760,15136,19312,10224,22864,5312,29072,5312,35280,5312,38824,10224, | |
42368,15136,42368,23760,12880,23760,12880,15136,16424,10224,19968,5312,26176,5312,32384,5312,35952,10224,39520,15136, | |
39520,23760,39520,32384,35952,37296,32384,42208,26176,42208,19968,42208,16424,37296,12880,32384,12880,23760,39520,7136, | |
37056,2896,33296,832,29536,-1232,24272,-1232,15648,-1232,10224,5656,4800,12544,4800,23760,4800,34976,10224,41864, | |
15648,48752,24272,48752,29536,48752,33296,46688,37056,44624,39520,40368,39520,47600,47344,47600,47344,-18112,39520,-18112, | |
39520,7136,35792,40288,34464,41056,32912,41416,31360,41776,29488,41776,22864,41776,19312,37464,15760,33152,15760,25072, | |
15760,0,7904,0,7904,47600,15760,47600,15760,40208,18240,44544,22192,46648,26144,48752,31792,48752,32592,48752, | |
33576,48640,34560,48528,35744,48320,35792,40288,38544,46192,38544,38800,35232,40496,31664,41352,28096,42208,24272,42208, | |
18448,42208,15536,40424,12624,38640,12624,35056,12624,32336,14704,30792,16784,29248,23072,27840,25760,27248,34080,25456, | |
37592,22208,41104,18960,41104,13136,41104,6496,35856,2632,30608,-1232,21424,-1232,17600,-1232,13456,-488,9312,256, | |
4720,1744,4720,9824,9056,7568,13264,6440,17472,5312,21584,5312,27120,5312,30096,7200,33072,9088,33072,12544, | |
33072,15728,30920,17424,28768,19120,21504,20704,18784,21328,11520,22864,8288,26032,5056,29200,5056,34720,5056,41440, | |
9816,45096,14576,48752,23328,48752,27664,48752,31488,48112,35312,47472,38544,46192,15936,61120,15936,47600,32048,47600, | |
32048,41520,15936,41520,15936,15680,15936,9856,17528,8200,19120,6544,24016,6544,32048,6544,32048,0,24016,0, | |
14960,0,11520,3376,8080,6752,8080,15680,8080,41520,2336,41520,2336,47600,8080,47600,8080,61120,15936,61120, | |
7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608, | |
39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232, | |
24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,2592,47600,10880,47600,25760,7648, | |
40624,47600,48912,47600,31072,0,20448,0,2592,47600,3648,47600,11472,47600,21248,10448,30976,47600,40208,47600, | |
49984,10448,59712,47600,67536,47600,55088,0,45856,0,35616,39008,25328,0,16112,0,3648,47600,47776,47600, | |
30560,24432,48656,0,39440,0,25584,18704,11728,0,2512,0,20992,24912,4080,47600,13296,47600,25920,30640, | |
38544,47600,47776,47600,28000,-4416,24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568, | |
14704,-11568,16488,-10032,18272,-8496,20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,40624,47600,48912,47600, | |
28000,-4416,4800,47600,41952,47600,41952,40464,12544,6240,41952,6240,41952,0,3744,0,3744,7136,33152,41360, | |
4800,41360,4800,47600,44496,-8080,44496,-14192,41856,-14192,31280,-14192,27688,-11048,24096,-7904,24096,1488,24096,11648, | |
24096,18064,21800,20528,19504,22992,13472,22992,10880,22992,10880,29072,13472,29072,19552,29072,21824,31512,24096,33952, | |
24096,40288,24096,50496,24096,59888,27688,63008,31280,66128,41856,66128,44496,66128,44496,60048,41600,60048,35616,60048, | |
33792,58184,31968,56320,31968,50320,31968,39776,31968,33104,30032,30088,28096,27072,23424,26016,28128,24864,30048,21848, | |
31968,18832,31968,12192,31968,1664,31968,-4336,33792,-6208,35616,-8080,41600,-8080,44496,-8080,18272,66512,18272,-20528, | |
11056,-20528,11056,66512,18272,66512,10880,-8080,13856,-8080,19808,-8080,21616,-6248,23424,-4416,23424,1664,23424,12192, | |
23424,18832,25336,21848,27248,24864,31968,26016,27248,27072,25336,30088,23424,33104,23424,39776,23424,50320,23424,56352, | |
21616,58200,19808,60048,13856,60048,10880,60048,10880,66128,13552,66128,24144,66128,27688,63008,31232,59888,31232,50496, | |
31232,40288,31232,33952,33528,31512,35824,29072,41856,29072,44496,29072,44496,22992,41856,22992,35824,22992,33528,20528, | |
31232,18064,31232,11648,31232,1488,31232,-7904,27688,-11048,24144,-14192,13552,-14192,10880,-14192,10880,-8080,63712,34720, | |
63712,27152,59248,23808,55440,22360,51632,20912,47520,20912,42848,20912,36640,23424,36160,23584,35952,23680,35664,23808, | |
35024,24016,28432,26640,24432,26640,20704,26640,17048,25008,13392,23376,9216,19840,9216,27408,13680,30768,17488,32232, | |
21296,33696,25408,33696,30096,33696,36336,31152,36768,30976,36976,30896,37312,30768,37904,30560,44496,27920,48496,27920, | |
52144,27920,55736,29536,59328,31152,63712,34720,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,4336,-15392,4336,61376,47856,61376,47856,-15392,4336,-15392,9216,-10544, | |
43008,-10544,43008,56480,9216,56480,9216,-10544,21760,52656,13136,52656,13136,63456,21760,63456,21760,52656,21760,0, | |
13136,0,13136,27840,14032,43008,20912,43008,21760,27840,21760,0,28816,5568,28816,41952,22560,41184,19080,36384, | |
15600,31584,15600,23760,15600,15888,19080,11088,22560,6288,28816,5568,45008,45776,45008,38464,41856,40208,38968,41096, | |
36080,41984,33200,42112,33152,5392,36128,5616,39040,6504,41952,7392,45008,9056,45008,1824,42240,560,39328,-184, | |
36416,-928,33152,-1232,33152,-13296,28816,-13296,28816,-1056,18576,-208,12944,6312,7312,12832,7312,23760,7312,34720, | |
12944,41224,18576,47728,28816,48656,28816,60864,33152,60864,33200,48656,36288,48496,39200,47792,42112,47088,45008,45776, | |
46832,62048,46832,54320,43600,56064,40712,56936,37824,57808,35232,57808,28944,57808,26480,54512,24016,51216,24016,42208, | |
24016,33072,40624,33072,40624,26992,24016,26992,24016,7232,47680,7232,47680,0,5488,0,5488,7232,15520,7232, | |
15520,26992,7056,26992,7056,33072,15520,33072,15520,43184,15520,54272,20064,59440,24608,64608,34464,64608,37056,64608, | |
40264,63944,43472,63280,46832,62048,37872,42208,46672,51088,51504,46192,42752,37440,44320,34928,45088,32400,45856,29872, | |
45856,27248,45856,24560,45048,22120,44240,19680,42544,17248,51424,8464,46576,3648,37776,12448,35280,10752,32816,9944, | |
30352,9136,27760,9136,25280,9136,22736,9920,20192,10704,17600,12288,8800,3488,4000,8368,12800,17120,11216,19760, | |
10432,22272,9648,24784,9648,27248,9648,29968,10456,32432,11264,34896,12880,37280,4080,46032,8960,50912,17760,42112, | |
20096,43776,22568,44560,25040,45344,27760,45344,30304,45344,32792,44584,35280,43824,37872,42208,39184,27328,39184,32080, | |
35888,35360,32592,38640,27760,38640,22992,38640,19632,35360,16272,32080,16272,27328,16272,22480,19608,19168,22944,15856, | |
27760,15856,32560,15856,35872,19192,39184,22528,39184,27328,49520,19344,31968,19344,31968,0,23424,0,23424,19344, | |
5744,19344,5744,24560,23424,24560,23424,26736,19840,33328,5744,33328,5744,38544,16960,38544,3488,63456,11568,63456, | |
27664,33696,43696,63456,51808,63456,38288,38544,49520,38544,49520,33328,35440,33328,31872,26736,31872,24560,49520,24560, | |
49520,19344,18272,17344,18272,-14880,11056,-14880,11056,17344,18272,17344,18272,60864,18272,28640,11056,28640,11056,60864, | |
18272,60864,16112,39776,13424,37824,12112,35912,10800,34000,10800,32048,10800,28816,13752,25992,16704,23168,27328,17424, | |
30000,19344,31320,21272,32640,23200,32640,25168,32640,28352,29600,31240,26560,34128,16112,39776,35232,62128,35232,55168, | |
31712,56816,28672,57648,25632,58480,23248,58480,19120,58480,16824,56784,14528,55088,14528,52064,14528,48240,23296,43344, | |
24400,42720,24992,42368,33952,37312,36736,34040,39520,30768,39520,26480,39520,22656,37568,19680,35616,16704,31664,14448, | |
34304,12240,35512,9920,36720,7600,36720,4880,36720,-1152,32384,-4720,28048,-8288,20704,-8288,17600,-8288,14328,-7672, | |
11056,-7056,7312,-5824,7312,1152,11008,-512,14152,-1336,17296,-2160,19760,-2160,24096,-2160,26496,-376,28896,1408, | |
28896,4640,28896,8960,19504,14192,18448,14784,9344,19888,6624,23144,3904,26400,3904,30720,3904,34592,5880,37632, | |
7856,40672,11728,42752,9216,44624,7968,47008,6720,49392,6720,52320,6720,57840,10968,61224,15216,64608,22272,64608, | |
25376,64608,28624,63984,31872,63360,35232,62128,25760,65968,34384,65968,34384,57376,25760,57376,25760,65968,9136,65968, | |
17760,65968,17760,57376,9136,57376,9136,65968,43520,63120,49984,63120,55568,60776,61152,58432,65792,53808,70416,49168, | |
72712,43600,75008,38032,75008,31488,75008,25040,72712,19488,70416,13936,65792,9312,61152,4672,55568,2336,49984,0, | |
43520,0,37056,0,31472,2336,25888,4672,21248,9312,16624,13936,14328,19488,12032,25040,12032,31488,12032,38032, | |
14328,43600,16624,49168,21248,53808,25888,58432,31472,60776,37056,63120,43520,63120,43520,58736,37952,58736,33152,56736, | |
28352,54736,24352,50752,20352,46752,18312,41888,16272,37024,16272,31488,16272,26016,18312,21192,20352,16368,24352,12368, | |
28352,8368,33152,6352,37952,4336,43520,4336,49136,4336,53960,6352,58784,8368,62768,12368,66720,16320,68696,21120, | |
70672,25920,70672,31488,70672,37152,68680,41976,66688,46800,62768,50752,58784,54736,53960,56736,49136,58736,43520,58736, | |
56224,48320,56224,42848,53424,44240,50664,44920,47904,45600,45088,45600,38768,45600,35216,41880,31664,38160,31664,31488, | |
31664,24736,35296,21040,38928,17344,45520,17344,48240,17344,50832,18000,53424,18656,56224,20096,56224,14704,53376,13472, | |
50464,12880,47552,12288,44576,12288,35408,12288,30072,17472,24736,22656,24736,31488,24736,40368,30072,45512,35408,50656, | |
44576,50656,47680,50656,50576,50064,53472,49472,56224,48320,5904,25168,35152,25168,35152,19936,5904,19936,5904,25168, | |
35056,49520,35056,30480,28736,30480,28736,35232,26864,32560,23800,31112,20736,29664,16784,29664,11344,29664,8112,32536, | |
4880,35408,4880,40208,4880,45936,8944,48872,13008,51808,20992,51808,28736,51808,28736,51984,28736,55840,26248,57776, | |
23760,59712,18784,59712,16144,59712,13256,58992,10368,58272,7488,56816,7488,62224,10576,63408,13664,64008,16752,64608, | |
19680,64608,27456,64608,31256,60864,35056,57120,35056,49520,23328,46928,16496,46928,13816,45504,11136,44080,11136,40720, | |
11136,38000,13216,36360,15296,34720,18784,34720,23200,34720,25968,37784,28736,40848,28736,45680,28736,46928,23328,46928, | |
45088,45008,45088,36896,32304,25504,45088,14112,45088,6000,25168,23760,25168,27248,45088,45008,26640,45008,26640,36896, | |
13856,25504,26640,14112,26640,6000,6720,23760,6720,27248,26640,45008,9216,36640,63712,36640,63712,12192,56560,12192, | |
56560,29408,9216,29408,9216,36640,4256,27328,27152,27328,27152,20352,4256,20352,4256,27328,43520,58736,37952,58736, | |
33152,56736,28352,54736,24352,50752,20352,46752,18312,41888,16272,37024,16272,31488,16272,26016,18312,21192,20352,16368, | |
24352,12368,28352,8368,33152,6352,37952,4336,43520,4336,49136,4336,53960,6352,58784,8368,62768,12368,66720,16320, | |
68696,21120,70672,25920,70672,31488,70672,37152,68680,41976,66688,46800,62768,50752,58784,54736,53960,56736,49136,58736, | |
43520,58736,43520,63120,49984,63120,55568,60776,61152,58432,65792,53808,70416,49168,72712,43600,75008,38032,75008,31488, | |
75008,25040,72712,19488,70416,13936,65792,9312,61152,4672,55568,2336,49984,0,43520,0,37056,0,31472,2336, | |
25888,4672,21248,9312,16624,13936,14328,19488,12032,25040,12032,31488,12032,38032,14328,43600,16624,49168,21248,53808, | |
25888,58432,31472,60776,37056,63120,43520,63120,42368,45520,37152,45520,37152,33792,42368,33792,47040,33792,48896,35104, | |
50752,36416,50752,39616,50752,42848,48880,44184,47008,45520,42368,45520,42672,49888,50144,49888,53848,47360,57552,44832, | |
57552,39696,57552,36048,55320,33664,53088,31280,49008,30560,50016,30224,51440,28584,52864,26944,54832,23840,60640,14368, | |
53344,14368,47856,23248,45344,27328,43792,28408,42240,29488,39952,29488,37152,29488,37152,14368,30560,14368,30560,49888, | |
42672,49888,9056,64848,34464,64848,34464,58560,9056,58560,9056,64848,21760,59120,18368,59120,16024,56760,13680,54400, | |
13680,51008,13680,47648,16024,45328,18368,43008,21760,43008,25168,43008,27504,45328,29840,47648,29840,51008,29840,54352, | |
27480,56736,25120,59120,21760,59120,21760,64608,24480,64608,26984,63560,29488,62512,31328,60560,33280,58656,34256,56232, | |
35232,53808,35232,51008,35232,45392,31304,41504,27376,37616,21680,37616,15936,37616,12112,41440,8288,45264,8288,51008, | |
8288,56688,12200,60648,16112,64608,21760,64608,40032,54576,40032,38128,63712,38128,63712,30896,40032,30896,40032,14448, | |
32896,14448,32896,30896,9216,30896,9216,38128,32896,38128,32896,54576,40032,54576,9216,7232,63712,7232,63712,0, | |
9216,0,9216,7232,11392,33232,29408,33232,29408,28384,4000,28384,4000,33072,5440,34384,8112,36768,22736,49728, | |
22736,53728,22736,56528,20528,58248,18320,59968,14704,59968,12496,59968,9904,59224,7312,58480,4256,56992,4256,62224, | |
7520,63408,10344,64008,13168,64608,15600,64608,21760,64608,25456,61800,29152,58992,29152,54400,29152,48496,15088,36416, | |
12704,34384,11392,33232,22272,47600,26176,46832,28328,44520,30480,42208,30480,38720,30480,33440,26440,30600,22400,27760, | |
14880,27760,12448,27760,9792,28200,7136,28640,4160,29488,4160,34640,6368,33488,8904,32936,11440,32384,14288,32384, | |
18912,32384,21464,34064,24016,35744,24016,38720,24016,41856,21656,43472,19296,45088,14704,45088,11056,45088,11056,49680, | |
15040,49680,19040,49680,21104,51024,23168,52368,23168,54912,23168,57376,21040,58672,18912,59968,14880,59968,13168,59968, | |
11008,59584,8848,59200,5392,58224,5392,63120,8496,63840,11216,64224,13936,64608,16272,64608,22400,64608,25992,62096, | |
29584,59584,29584,55376,29584,52448,27672,50408,25760,48368,22272,47600,27664,69616,36128,69616,22272,53632,15760,53632, | |
27664,69616,7392,-18112,7392,47600,15216,47600,15216,18016,15216,11856,18152,8712,21088,5568,26816,5568,33104,5568, | |
36272,9136,39440,12704,39440,19840,39440,47600,47264,47600,47264,10960,47264,8416,48008,7208,48752,6000,50320,6000, | |
50704,6000,51384,6232,52064,6464,53248,6976,53248,688,51504,-304,49952,-768,48400,-1232,46928,-1232,43984,-1232, | |
42240,424,40496,2080,39872,5488,37744,2128,34664,448,31584,-1232,27408,-1232,23072,-1232,20040,424,17008,2080, | |
15216,5392,15216,-18112,7392,-18112,26896,63456,45936,63456,45936,-8368,39952,-8368,39952,58224,31872,58224,31872,-8368, | |
25840,-8368,25840,27584,16704,28304,11712,33000,6720,37696,6720,45520,6720,53600,12240,58528,17760,63456,26896,63456, | |
9312,35616,18272,35616,18272,24816,9312,24816,9312,35616,25328,0,27664,-2640,28816,-4872,29968,-7104,29968,-9136, | |
29968,-12928,27416,-14856,24864,-16784,19840,-16784,17888,-16784,16040,-16528,14192,-16272,12368,-15760,12368,-10208,13808,-10928, | |
15384,-11248,16960,-11568,18960,-11568,21456,-11568,22736,-10544,24016,-9520,24016,-7568,24016,-6288,23104,-4440,22192,-2592, | |
20272,0,25328,0,6624,33072,15296,33072,15296,59040,5824,57296,5824,62224,15600,63872,21424,63872,21424,33072, | |
30128,33072,30128,28384,6624,28384,6624,33072,5904,25168,35152,25168,35152,19936,5904,19936,5904,25168,20528,64608, | |
28128,64608,32512,59904,36896,55200,36896,47088,36896,38976,32512,34320,28128,29664,20528,29664,12928,29664,8504,34336, | |
4080,39008,4080,47088,4080,55200,8504,59904,12928,64608,20528,64608,20528,59712,16064,59712,13384,56288,10704,52864, | |
10704,47088,10704,41440,13408,38040,16112,34640,20528,34640,24992,34640,27648,38040,30304,41440,30304,47088,30304,52912, | |
27672,56312,25040,59712,20528,59712,8208,45008,28128,27248,28128,23760,8208,6000,8208,14112,20992,25504,8208,36896, | |
8208,45008,26640,45008,46576,27248,46576,23760,26640,6000,26640,14112,39440,25504,26640,36896,26640,45008,6624,33072, | |
15296,33072,15296,59040,5824,57296,5824,62224,15600,63872,21424,63872,21424,33072,30128,33072,30128,28384,6624,28384, | |
6624,33072,69424,30064,56288,12256,69424,12256,69424,30064,68496,35200,75552,35200,75552,12256,81280,12256,81280,7616, | |
75552,7616,75552,-288,69424,-288,69424,7616,51824,7616,51824,12768,68496,35200,58496,64608,65296,64608,25680,-1232, | |
18880,-1232,58496,64608,6624,33072,15296,33072,15296,59040,5824,57296,5824,62224,15600,63872,21424,63872,21424,33072, | |
30128,33072,30128,28384,6624,28384,6624,33072,60544,4560,78560,4560,78560,-288,53152,-288,53152,4400,54592,5712, | |
57264,8096,71888,21056,71888,25056,71888,27856,69680,29576,67472,31296,63856,31296,61648,31296,59056,30552,56464,29808, | |
53408,28320,53408,33552,56672,34736,59496,35336,62320,35936,64752,35936,70912,35936,74608,33128,78304,30320,78304,25728, | |
78304,19824,64240,7744,61856,5712,60544,4560,58496,64608,65296,64608,25680,-1232,18880,-1232,58496,64608,22272,47600, | |
26176,46832,28328,44520,30480,42208,30480,38720,30480,33440,26440,30600,22400,27760,14880,27760,12448,27760,9792,28200, | |
7136,28640,4160,29488,4160,34640,6368,33488,8904,32936,11440,32384,14288,32384,18912,32384,21464,34064,24016,35744, | |
24016,38720,24016,41856,21656,43472,19296,45088,14704,45088,11056,45088,11056,49680,15040,49680,19040,49680,21104,51024, | |
23168,52368,23168,54912,23168,57376,21040,58672,18912,59968,14880,59968,13168,59968,11008,59584,8848,59200,5392,58224, | |
5392,63120,8496,63840,11216,64224,13936,64608,16272,64608,22400,64608,25992,62096,29584,59584,29584,55376,29584,52448, | |
27672,50408,25760,48368,22272,47600,69424,30064,56288,12256,69424,12256,69424,30064,68496,35200,75552,35200,75552,12256, | |
81280,12256,81280,7616,75552,7616,75552,-288,69424,-288,69424,7616,51824,7616,51824,12768,68496,35200,58496,64608, | |
65296,64608,25680,-1232,18880,-1232,58496,64608,21248,46416,29328,46416,29328,39776,29328,35488,28160,32728,26992,29968, | |
23168,26272,19344,22528,16880,20272,15792,18272,14704,16272,14704,14192,14704,10416,17488,8080,20272,5744,24912,5744, | |
28224,5744,32048,7232,35872,8720,39952,11568,39952,3568,35952,1152,31872,-40,27792,-1232,23424,-1232,15600,-1232, | |
10840,2888,6080,7008,6080,13776,6080,17008,7632,19912,9184,22816,12960,26480,16704,30128,18736,32128,19544,33256, | |
20352,34384,20704,35440,20992,36336,21120,37608,21248,38880,21248,41184,21248,46416,29584,52656,20992,52656,20992,63456, | |
29584,63456,29584,52656,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0, | |
44112,16272,15520,16272,9728,0,688,0,24912,63456,27024,80208,35344,68992,28848,68992,19072,80208,27024,80208, | |
29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272, | |
9728,0,688,0,24912,63456,31776,80208,39632,80208,29952,68992,23440,68992,31776,80208,29744,54992,18112,23424, | |
41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0, | |
24912,63456,25440,80304,33440,80304,42400,68992,36496,68992,29440,76560,22384,68992,16480,68992,25440,80304,29744,54992, | |
18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272,15520,16272,9728,0, | |
688,0,24912,63456,29264,72176,26848,73584,25792,74176,25128,74408,24464,74640,23952,74640,22432,74640,21576,73584, | |
20720,72528,20720,70608,20720,70352,15408,70352,15408,74640,17600,77152,19792,79664,23440,79664,24976,79664,26272,79320, | |
27568,78976,29616,77840,32032,76560,33008,76000,33728,75752,34448,75504,35088,75504,36448,75504,37304,76584,38160,77664, | |
38160,79408,38160,79664,43472,79664,43376,75408,41192,72880,39008,70352,35440,70352,33984,70352,32728,70696,31472,71040, | |
29264,72176,29744,54992,18112,23424,41440,23424,29744,54992,24912,63456,34640,63456,58816,0,49888,0,44112,16272, | |
15520,16272,9728,0,688,0,24912,63456,33440,78976,42064,78976,42064,70352,33440,70352,33440,78976,16816,78976, | |
25440,78976,25440,70352,16816,70352,16816,78976,36208,69104,36208,71776,34320,73672,32432,75568,29744,75568,27024,75568, | |
25176,73720,23328,71872,23328,69104,23328,66432,25200,64560,27072,62688,29744,62688,32432,62688,34320,64560,36208,66432, | |
36208,69104,29744,54992,18192,23424,41360,23424,29744,54992,23328,59376,20736,61120,19424,63560,18112,66000,18112,69104, | |
18112,74000,21488,77400,24864,80800,29744,80800,34592,80800,38016,77376,41440,73952,41440,69104,41440,66128,40104,63624, | |
38768,61120,36208,59376,58816,0,49888,0,44112,16272,15520,16272,9728,0,688,0,23328,59376,78416,63456, | |
78416,56224,46928,56224,46928,37440,77136,37440,77136,30224,46928,30224,46928,7232,79216,7232,79216,0,38288,0, | |
38288,16272,15856,16272,9056,0,336,0,26896,63456,78416,63456,32816,56736,18784,23424,38288,23424,38288,56736, | |
32816,56736,56064,58560,56064,49520,51728,53552,46816,55552,41904,57552,36384,57552,25504,57552,19720,50896,13936,44240, | |
13936,31664,13936,19120,19720,12472,25504,5824,36384,5824,41904,5824,46816,7824,51728,9824,56064,13856,56064,4880, | |
51552,1824,46520,296,41488,-1232,35872,-1232,21456,-1232,13168,7584,4880,16400,4880,31664,4880,46960,13168,55784, | |
21456,64608,35872,64608,41568,64608,46600,63096,51632,61584,56064,58560,38640,0,40976,-2640,42128,-4872,43280,-7104, | |
43280,-9136,43280,-12928,40728,-14856,38176,-16784,33152,-16784,31200,-16784,29352,-16528,27504,-16272,25680,-15760,25680,-10208, | |
27120,-10928,28696,-11248,30272,-11568,32272,-11568,34768,-11568,36048,-10544,37328,-9520,37328,-7568,37328,-6288,36416,-4440, | |
35504,-2592,33584,0,38640,0,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224, | |
17120,30224,17120,7232,49424,7232,49424,0,8544,0,8544,63456,26000,80208,34320,68992,27824,68992,18048,80208, | |
26000,80208,8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232, | |
49424,7232,49424,0,8544,0,8544,63456,30752,80208,38608,80208,28928,68992,22416,68992,30752,80208,8544,63456, | |
48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232,49424,0, | |
8544,0,8544,63456,24416,80304,32416,80304,41376,68992,35472,68992,28416,76560,21360,68992,15456,68992,24416,80304, | |
8544,63456,48656,63456,48656,56224,17120,56224,17120,37440,47344,37440,47344,30224,17120,30224,17120,7232,49424,7232, | |
49424,0,8544,0,8544,63456,32416,78976,41040,78976,41040,70352,32416,70352,32416,78976,15792,78976,24416,78976, | |
24416,70352,15792,70352,15792,78976,8544,63456,17120,63456,17120,0,8544,0,8544,63456,10640,80208,18960,68992, | |
12464,68992,2688,80208,10640,80208,8544,63456,17120,63456,17120,0,8544,0,8544,63456,15392,80208,23248,80208, | |
13568,68992,7056,68992,15392,80208,8544,63456,17120,63456,17120,0,8544,0,8544,63456,9056,80304,17056,80304, | |
26016,68992,20112,68992,13056,76560,6000,68992,96,68992,9056,80304,8544,63456,17120,63456,17120,0,8544,0, | |
8544,63456,17056,78976,25680,78976,25680,70352,17056,70352,17056,78976,432,78976,9056,78976,9056,70352,432,70352, | |
432,78976,8960,63456,26640,63456,45056,63456,53680,55784,62304,48112,62304,31792,62304,15392,53656,7696,45008,0, | |
26640,0,8960,0,8960,29744,432,29744,432,35872,8960,35872,8960,63456,17600,56400,17600,35872,31872,35872, | |
31872,29744,17600,29744,17600,7056,27920,7056,41056,7056,47152,13008,53248,18960,53248,31792,53248,44544,47152,50472, | |
41056,56400,27920,56400,17600,56400,8544,63456,20096,63456,48240,10368,48240,63456,56560,63456,56560,0,45008,0, | |
16880,53088,16880,0,8544,0,8544,63456,32336,72176,29920,73584,28864,74176,28200,74408,27536,74640,27024,74640, | |
25504,74640,24648,73584,23792,72528,23792,70608,23792,70352,18480,70352,18480,74640,20672,77152,22864,79664,26512,79664, | |
28048,79664,29344,79320,30640,78976,32688,77840,35104,76560,36080,76000,36800,75752,37520,75504,38160,75504,39520,75504, | |
40376,76584,41232,77664,41232,79408,41232,79664,46544,79664,46448,75408,44264,72880,42080,70352,38512,70352,37056,70352, | |
35800,70696,34544,71040,32336,72176,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712, | |
24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632, | |
34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232, | |
12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,32144,80208,40464,68992,33968,68992, | |
24192,80208,32144,80208,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744, | |
34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608, | |
47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696, | |
4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,36896,80208,44752,80208,35072,68992,28560,68992, | |
36896,80208,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712,24944,5744,34304,5744, | |
43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632,34304,64608,47648,64608, | |
55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624, | |
4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,30560,80304,38560,80304,47520,68992,41616,68992,34560,76560, | |
27504,68992,21600,68992,30560,80304,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,19680,19440,12712, | |
24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696,49112,50664,43648,57632,34304,57632, | |
34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,20912,-1232, | |
12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608,34384,72176,31968,73584,30912,74176, | |
30248,74408,29584,74640,29072,74640,27552,74640,26696,73584,25840,72528,25840,70608,25840,70352,20528,70352,20528,74640, | |
22720,77152,24912,79664,28560,79664,30096,79664,31392,79320,32688,78976,34736,77840,37152,76560,38128,76000,38848,75752, | |
39568,75504,40208,75504,41568,75504,42424,76584,43280,77664,43280,79408,43280,79664,48592,79664,48496,75408,46312,72880, | |
44128,70352,40560,70352,39104,70352,37848,70696,36592,71040,34384,72176,34304,57632,24944,57632,19440,50664,13936,43696, | |
13936,31664,13936,19680,19440,12712,24944,5744,34304,5744,43648,5744,49112,12712,54576,19680,54576,31664,54576,43696, | |
49112,50664,43648,57632,34304,57632,34304,64608,47648,64608,55632,55656,63616,46704,63616,31664,63616,16656,55632,7712, | |
47648,-1232,34304,-1232,20912,-1232,12896,7696,4880,16624,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608, | |
38560,78976,47184,78976,47184,70352,38560,70352,38560,78976,21936,78976,30560,78976,30560,70352,21936,70352,21936,78976, | |
61024,46752,41600,27248,61024,7824,55968,2672,36464,22192,16960,2672,11936,7824,31328,27248,11936,46752,16960,51888, | |
36464,32384,55968,51888,61024,46752,51248,47264,20784,11312,23424,8592,26840,7168,30256,5744,34304,5744,43648,5744, | |
49112,12712,54576,19680,54576,31664,54576,36416,53744,40328,52912,44240,51248,47264,47776,52064,45184,54784,41760,56208, | |
38336,57632,34304,57632,24944,57632,19440,50664,13936,43696,13936,31664,13936,26896,14768,22904,15600,18912,17248,16016, | |
47776,52064,11568,9312,8240,13648,6560,19256,4880,24864,4880,31664,4880,46704,12896,55656,20912,64608,34304,64608, | |
39824,64608,44520,62968,49216,61328,52912,58144,59792,66256,64128,62480,56912,54064,60224,49680,61920,44032,63616,38384, | |
63616,31664,63616,16656,55632,7712,47648,-1232,34304,-1232,28864,-1232,24168,360,19472,1952,15600,5136,8720,-2976, | |
4336,768,11568,9312,7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744, | |
43824,10224,47520,14704,47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232, | |
19840,-1232,13704,5104,7568,11440,7568,23840,7568,63456,29072,80208,37392,68992,30896,68992,21120,80208,29072,80208, | |
7568,63456,16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704, | |
47520,24912,47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104, | |
7568,11440,7568,23840,7568,63456,33824,80208,41680,80208,32000,68992,25488,68992,33824,80208,7568,63456,16192,63456, | |
16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912,47520,63456, | |
56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440,7568,23840, | |
7568,63456,27488,80304,35488,80304,44448,68992,38544,68992,31488,76560,24432,68992,18528,68992,27488,80304,7568,63456, | |
16192,63456,16192,24912,16192,14704,19888,10224,23584,5744,31872,5744,40128,5744,43824,10224,47520,14704,47520,24912, | |
47520,63456,56144,63456,56144,23840,56144,11440,50000,5104,43856,-1232,31872,-1232,19840,-1232,13704,5104,7568,11440, | |
7568,23840,7568,63456,35488,78976,44112,78976,44112,70352,35488,70352,35488,78976,18864,78976,27488,78976,27488,70352, | |
18864,70352,18864,78976,-176,63456,9056,63456,26640,37360,44112,63456,53344,63456,30896,30224,30896,0,22272,0, | |
22272,30224,-176,63456,28704,80208,36560,80208,26880,68992,20368,68992,28704,80208,8544,63456,17120,63456,17120,52240, | |
27920,52240,38592,52240,44056,47456,49520,42672,49520,33328,49520,23968,44056,19168,38592,14368,27920,14368,17120,14368, | |
17120,0,8544,0,8544,63456,17120,45184,17120,21424,27920,21424,33920,21424,37192,24528,40464,27632,40464,33328, | |
40464,39008,37208,42096,33952,45184,27920,45184,17120,45184,7904,48320,7904,56816,12984,61472,18064,66128,27328,66128, | |
36160,66128,40816,61200,45472,56272,45600,46752,39184,46416,35616,43968,32048,41520,32048,37440,32048,35440,33280,33720, | |
34512,32000,37280,30224,39696,28640,46752,24144,48792,21128,50832,18112,50832,13856,50832,6544,46048,2656,41264,-1232, | |
32304,-1232,29584,-1232,26696,-704,23808,-176,20704,848,20704,7824,24096,6544,27072,5928,30048,5312,32816,5312, | |
37744,5312,40296,7328,42848,9344,42848,13216,42848,15888,41592,17680,40336,19472,36048,22096,32128,24432,28048,26944, | |
26200,29816,24352,32688,24352,36544,24352,41952,27904,45608,31456,49264,37872,50496,37520,54864,34744,57248,31968,59632, | |
27152,59632,21632,59632,18744,56680,15856,53728,15856,48160,15856,0,7904,0,7904,48320,29840,23920,20352,23920, | |
16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528, | |
37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232, | |
21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048, | |
37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440, | |
13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,18672,69616,30656,53728, | |
24160,53728,10304,69616,18672,69616,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, | |
18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0, | |
37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856, | |
5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, | |
20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752, | |
40336,43392,45440,38032,45440,27152,30736,69616,39200,69616,25344,53632,18832,53632,30736,69616,29840,23920,20352,23920, | |
16696,21760,13040,19600,13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528, | |
37616,22192,37616,23920,29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232, | |
21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048, | |
37616,30816,37616,36208,34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440, | |
13008,47088,17048,47920,21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,21680,69616,27984,69616, | |
38384,53632,32480,53632,24832,64048,17184,53632,11280,53632,21680,69616,29840,23920,20352,23920,16696,21760,13040,19600, | |
13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920, | |
29840,23920,45440,27152,45440,0,37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232, | |
9544,2872,5232,6976,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208, | |
34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920, | |
21088,48752,24912,48752,35232,48752,40336,43392,45440,38032,45440,27152,24656,58224,22240,60560,21312,61408,20608,61816, | |
19904,62224,19344,62224,17728,62224,16968,60672,16208,59120,16112,55632,10800,55632,10896,61376,13064,64496,15232,67616, | |
19088,67616,20704,67616,22064,67024,23424,66432,25008,65024,27424,62688,28352,61840,29056,61432,29760,61024,30320,61024, | |
31936,61024,32696,62576,33456,64128,33552,67616,38864,67616,38768,61888,36600,58760,34432,55632,30576,55632,28960,55632, | |
27600,56224,26240,56816,24656,58224,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, | |
18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0, | |
37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856, | |
5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, | |
20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752, | |
40336,43392,45440,38032,45440,27152,28832,65968,37456,65968,37456,57376,28832,57376,28832,65968,12208,65968,20832,65968, | |
20832,57376,12208,57376,12208,65968,29840,23920,20352,23920,16696,21760,13040,19600,13040,14368,13040,10208,15784,7760, | |
18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920,29840,23920,45440,27152,45440,0, | |
37616,0,37616,7232,34928,2896,30936,832,26944,-1232,21168,-1232,13856,-1232,9544,2872,5232,6976,5232,13856, | |
5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208,34064,39160,30512,42112,24096,42112, | |
20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920,21088,48752,24912,48752,35232,48752, | |
40336,43392,45440,38032,45440,27152,31296,64768,31296,67440,29424,69312,27552,71184,24832,71184,22064,71184,20216,69336, | |
18368,67488,18368,64768,18368,62000,20216,60152,22064,58304,24832,58304,27552,58304,29424,60176,31296,62048,31296,64768, | |
36480,64768,36480,59888,33096,56488,29712,53088,24832,53088,19952,53088,16568,56488,13184,59888,13184,64768,13184,69664, | |
16568,73040,19952,76416,24832,76416,29712,76416,33096,73040,36480,69664,36480,64768,73008,28048,72976,34464,69472,38288, | |
65968,42112,60144,42112,53632,42112,49704,38416,45776,34720,45184,28000,73008,28048,42288,40928,45440,44752,49944,46752, | |
54448,48752,60048,48752,69664,48752,75272,42568,80880,36384,80880,25760,80880,21936,44928,21936,45440,13808,49768,9560, | |
54096,5312,61888,5312,66304,5312,70552,6440,74800,7568,79056,9824,79056,2416,74800,640,70384,-296,65968,-1232, | |
61456,-1232,54352,-1232,49088,1336,43824,3904,40544,8960,37440,3872,32848,1320,28256,-1232,22192,-1232,14160,-1232, | |
9696,2744,5232,6720,5232,13856,5232,21888,10608,25968,15984,30048,26640,30048,37616,30048,37616,30816,37616,36208, | |
34064,39160,30512,42112,24096,42112,20016,42112,16152,41136,12288,40160,8720,38208,8720,45440,13008,47088,17048,47920, | |
21088,48752,24912,48752,30944,48752,35472,46712,40000,44672,42288,40928,29840,23920,20352,23920,16696,21760,13040,19600, | |
13040,14368,13040,10208,15784,7760,18528,5312,23248,5312,29744,5312,33680,9920,37616,14528,37616,22192,37616,23920, | |
29840,23920,42464,45776,42464,38464,39136,40288,35800,41200,32464,42112,29072,42112,21456,42112,17248,37288,13040,32464, | |
13040,23760,13040,15040,17248,10216,21456,5392,29072,5392,32464,5392,35800,6312,39136,7232,42464,9056,42464,1824, | |
39184,304,35680,-464,32176,-1232,28224,-1232,17472,-1232,11136,5528,4800,12288,4800,23760,4800,35408,11200,42080, | |
17600,48752,28736,48752,32336,48752,35784,48008,39232,47264,42464,45776,31472,0,33808,-2640,34960,-4872,36112,-7104, | |
36112,-9136,36112,-12928,33560,-14856,31008,-16784,25984,-16784,24032,-16784,22184,-16528,20336,-16272,18512,-15760,18512,-10208, | |
19952,-10928,21528,-11248,23104,-11568,25104,-11568,27600,-11568,28880,-10544,30160,-9520,30160,-7568,30160,-6288,29248,-4440, | |
28336,-2592,26416,0,31472,0,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392, | |
34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232, | |
11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384, | |
48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000, | |
41104,28048,21744,69616,33728,53728,27232,53728,13376,69616,21744,69616,48912,25760,48912,21936,12960,21936,13472,13856, | |
17832,9624,22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296, | |
34048,-1232,29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752, | |
37744,48752,43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112, | |
17744,38416,13808,34720,13216,28000,41104,28048,33808,69616,42272,69616,28416,53632,21904,53632,33808,69616,48912,25760, | |
48912,21936,12960,21936,13472,13856,17832,9624,22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824, | |
47088,2416,42880,640,38464,-296,34048,-1232,29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024, | |
11112,41888,17424,48752,28128,48752,37744,48752,43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288, | |
34000,42112,28224,42112,21680,42112,17744,38416,13808,34720,13216,28000,41104,28048,24752,69616,31056,69616,41456,53632, | |
35552,53632,27904,64048,20256,53632,14352,53632,24752,69616,48912,25760,48912,21936,12960,21936,13472,13856,17832,9624, | |
22192,5392,29968,5392,34464,5392,38696,6496,42928,7600,47088,9824,47088,2416,42880,640,38464,-296,34048,-1232, | |
29488,-1232,18112,-1232,11456,5400,4800,12032,4800,23328,4800,35024,11112,41888,17424,48752,28128,48752,37744,48752, | |
43328,42568,48912,36384,48912,25760,41104,28048,41008,34464,37504,38288,34000,42112,28224,42112,21680,42112,17744,38416, | |
13808,34720,13216,28000,41104,28048,31904,65968,40528,65968,40528,57376,31904,57376,31904,65968,15280,65968,23904,65968, | |
23904,57376,15280,57376,15280,65968,6384,69616,18368,53728,11872,53728,-1984,69616,6384,69616,8208,47600,16016,47600, | |
16016,0,8208,0,8208,47600,12112,48752,12112,48752,18448,69616,26912,69616,13056,53632,6544,53632,18448,69616, | |
8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752,12112,48752,8208,47600,16016,47600,16016,0, | |
8208,0,8208,47600,12112,48752,12112,48752,9392,69616,15696,69616,26096,53632,20192,53632,12544,64048,4896,53632, | |
-1008,53632,9392,69616,8208,47600,16016,47600,16016,0,8208,0,8208,47600,12112,48752,12112,48752,16544,65968, | |
25168,65968,25168,57376,16544,57376,16544,65968,-80,65968,8544,65968,8544,57376,-80,57376,-80,65968,35616,38880, | |
33488,39616,31616,39952,29744,40288,28000,40288,20912,40288,16976,35696,13040,31104,13040,22816,13040,14832,16744,10112, | |
20448,5392,26640,5392,32816,5392,36512,10112,40208,14832,40208,22816,40208,28000,39056,32000,37904,36000,35616,38880, | |
38288,48496,43648,42416,46072,36296,48496,30176,48496,22816,48496,11984,42456,5376,36416,-1232,26640,-1232,16832,-1232, | |
10816,5376,4800,11984,4800,22816,4800,33440,10664,40056,16528,46672,25920,46672,26688,46672,27792,46560,28896,46448, | |
30688,46240,23920,53888,10368,49344,8960,53552,20912,57456,13216,66128,22912,66128,28304,59968,42464,64688,43856,60560, | |
31328,56400,38288,48496,47776,28736,47776,0,39952,0,39952,28480,39952,35232,37320,38592,34688,41952,29408,41952, | |
23072,41952,19416,37912,15760,33872,15760,26896,15760,0,7904,0,7904,47600,15760,47600,15760,40208,18576,44496, | |
22376,46624,26176,48752,31152,48752,39360,48752,43568,43672,47776,38592,47776,28736,27728,58224,25312,60560,24384,61408, | |
23680,61816,22976,62224,22416,62224,20800,62224,20040,60672,19280,59120,19184,55632,13872,55632,13968,61376,16136,64496, | |
18304,67616,22160,67616,23776,67616,25136,67024,26496,66432,28080,65024,30496,62688,31424,61840,32128,61432,32832,61024, | |
33392,61024,35008,61024,35768,62576,36528,64128,36624,67616,41936,67616,41840,61888,39672,58760,37504,55632,33648,55632, | |
32032,55632,30672,56224,29312,56816,27728,58224,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216, | |
16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112, | |
26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232, | |
16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,20720,69616,32704,53728, | |
26208,53728,12352,69616,20720,69616,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304, | |
20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112, | |
26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232, | |
10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,32784,69616,41248,69616,27392,53632, | |
20880,53632,32784,69616,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216,16680,10304,20320,5392, | |
26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112,26640,42112,26640,48752, | |
36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,16400,-1232,10600,5416, | |
4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,23728,69616,30032,69616,40432,53632,34528,53632, | |
26880,64048,19232,53632,13328,53632,23728,69616,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760,13040,15216, | |
16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160,32896,42112, | |
26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232, | |
16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,26704,58224,24288,60560, | |
23360,61408,22656,61816,21952,62224,21392,62224,19776,62224,19016,60672,18256,59120,18160,55632,12848,55632,12944,61376, | |
15112,64496,17280,67616,21136,67616,22752,67616,24112,67024,25472,66432,27056,65024,29472,62688,30400,61840,31104,61432, | |
31808,61024,32368,61024,33984,61024,34744,62576,35504,64128,35600,67616,40912,67616,40816,61888,38648,58760,36480,55632, | |
32624,55632,31008,55632,29648,56224,28288,56816,26704,58224,26640,42112,20352,42112,16696,37208,13040,32304,13040,23760, | |
13040,15216,16680,10304,20320,5392,26640,5392,32896,5392,36552,10328,40208,15264,40208,23760,40208,32208,36552,37160, | |
32896,42112,26640,42112,26640,48752,36848,48752,42672,42120,48496,35488,48496,23760,48496,12064,42672,5416,36848,-1232, | |
26640,-1232,16400,-1232,10600,5416,4800,12064,4800,23760,4800,35488,10600,42120,16400,48752,26640,48752,30880,65968, | |
39504,65968,39504,57376,30880,57376,30880,65968,14256,65968,22880,65968,22880,57376,14256,57376,14256,65968,31232,48240, | |
41696,48240,41696,37776,31232,37776,31232,48240,31232,16784,41696,16784,41696,6368,31232,6368,31232,16784,9216,30896, | |
63712,30896,63712,23680,9216,23680,9216,30896,38464,34048,17760,8880,19504,7104,21696,6248,23888,5392,26640,5392, | |
32896,5392,36552,10328,40208,15264,40208,23760,40208,27120,39784,29600,39360,32080,38464,34048,35440,38640,33664,40368, | |
31472,41240,29280,42112,26640,42112,20224,42112,16632,37120,13040,32128,13040,23168,13040,20096,13448,17760,13856,15424, | |
14704,13472,35440,38640,9392,7056,7104,10320,5952,14512,4800,18704,4800,23760,4800,35488,10600,42120,16400,48752, | |
26640,48752,30608,48752,33984,47664,37360,46576,40208,44368,46112,51504,50144,48160,43952,40544,46192,37280,47344,33072, | |
48496,28864,48496,23760,48496,12064,42672,5416,36848,-1232,26640,-1232,22560,-1232,19144,-128,15728,976,13040,3152, | |
7136,-4000,3056,-688,9392,7056,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568, | |
25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312, | |
36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752, | |
20720,69616,32704,53728,26208,53728,12352,69616,20720,69616,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320, | |
17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0, | |
39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784, | |
27072,48752,27072,48752,32784,69616,41248,69616,27392,53632,20880,53632,32784,69616,7392,18784,7392,47600,15216,47600, | |
15216,19088,15216,12320,17848,8944,20480,5568,25760,5568,32080,5568,35760,9608,39440,13648,39440,20608,39440,47600, | |
47264,47600,47264,0,39440,0,39440,7312,36592,2976,32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864, | |
7392,8960,7392,18784,27072,48752,27072,48752,23728,69616,30032,69616,40432,53632,34528,53632,26880,64048,19232,53632, | |
13328,53632,23728,69616,7392,18784,7392,47600,15216,47600,15216,19088,15216,12320,17848,8944,20480,5568,25760,5568, | |
32080,5568,35760,9608,39440,13648,39440,20608,39440,47600,47264,47600,47264,0,39440,0,39440,7312,36592,2976, | |
32832,872,29072,-1232,24096,-1232,15888,-1232,11640,3864,7392,8960,7392,18784,27072,48752,27072,48752,30880,65968, | |
39504,65968,39504,57376,30880,57376,30880,65968,14256,65968,22880,65968,22880,57376,14256,57376,14256,65968,28000,-4416, | |
24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568,14704,-11568,16488,-10032,18272,-8496, | |
20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,40624,47600,48912,47600,28000,-4416,31760,69616,40224,69616, | |
26368,53632,19856,53632,31760,69616,15760,7136,15760,-18112,7904,-18112,7904,66128,15760,66128,15760,40368,18240,44624, | |
22000,46688,25760,48752,30976,48752,39648,48752,45072,41864,50496,34976,50496,23760,50496,12544,45072,5656,39648,-1232, | |
30976,-1232,25760,-1232,22000,832,18240,2896,15760,7136,42368,23760,42368,32384,38824,37296,35280,42208,29072,42208, | |
22864,42208,19312,37296,15760,32384,15760,23760,15760,15136,19312,10224,22864,5312,29072,5312,35280,5312,38824,10224, | |
42368,15136,42368,23760,28000,-4416,24688,-12928,21544,-15520,18400,-18112,13136,-18112,6880,-18112,6880,-11568,11472,-11568, | |
14704,-11568,16488,-10032,18272,-8496,20448,-2800,21840,768,2592,47600,10880,47600,25760,10368,40624,47600,48912,47600, | |
28000,-4416,29856,65968,38480,65968,38480,57376,29856,57376,29856,65968,13232,65968,21856,65968,21856,57376,13232,57376, | |
13232,65968 }; | |
static const int DejaVuSans_glyphAdvances[224] = { | |
27664,34896,40032,72928,55376,82704,67872,23920,33952,33952,43520,72928,27664,31408,27664,29328,55376,55376,55376,55376, | |
55376,55376,55376,55376,55376,55376,29328,29328,72928,72928,72928,46192,87040,59536,59712,60768,67024,54992,50064,67440, | |
65456,25664,25664,57072,48496,75104,65104,68512,52480,68512,60480,55248,53168,63712,59536,86064,59632,53168,59632,33952, | |
29328,33952,72928,43520,43520,53344,55248,47856,55248,53552,30640,55248,55168,24176,24176,50400,24176,84784,55168,53248, | |
55248,55248,35792,45344,34128,55168,51504,71184,51504,51504,45680,55376,29328,55376,72928,52240,52240,52240,52240,52240, | |
52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240,52240, | |
52240,52240,52240,52240,52240,52240,52240,52240,27664,34896,55376,55376,55376,55376,29328,43520,43520,87040,41008,53248, | |
72928,31408,87040,43520,43520,72928,34896,34896,43520,55376,55376,27664,43520,34896,41008,53248,84368,84368,84368,46192, | |
59536,59536,59536,59536,59536,59536,84784,60768,54992,54992,54992,54992,25664,25664,25664,25664,67440,65104,68512,68512, | |
68512,68512,68512,72928,68512,63712,63712,63712,63712,53168,52656,54832,53344,53344,53344,53344,53344,53344,85472,47856, | |
53552,53552,53552,53552,24176,24176,24176,24176,53248,55168,53248,53248,53248,53248,53248,72928,53248,55168,55168,55168, | |
55168,51504,55248,51504 }; | |
static const int DejaVuSans_glyphBBoxes[896] = { | |
0,0,0,0,13136,0,21760,63456,8368,39872,31664,63456,6720,0,66256,62480,7232,-12800,48160,66128, | |
4800,-1232,77904,64608,5488,-1232,65200,64608,8368,39872,15600,63456,7488,-11472,26992,66048,6976,-11472,26480,66048, | |
2592,24912,40928,64608,9216,0,63712,54576,6720,-10112,19168,10800,4256,20352,27152,27328,9312,0,18272,10800, | |
0,-8080,29328,63456,5744,-1232,49600,64608,9568,0,47344,63456,6368,0,46672,64608,6624,-1232,48400,64608, | |
4256,0,50496,63456,6720,-1232,47776,63456,6080,-1232,49888,64608,7136,0,47936,63456,5904,-1232,49424,64608, | |
5488,-1232,49264,64608,10208,0,19168,45008,6720,-10112,19168,45008,9216,4000,63712,50576,9216,14960,63712,39520, | |
9216,4000,63712,50576,6240,0,40128,64608,5744,-15136,80960,61280,688,0,58816,63456,8544,0,53552,63456, | |
4880,-1232,56064,64608,8544,0,61888,63456,8544,0,49424,63456,8544,0,45008,63456,4880,-1232,60304,64608, | |
8544,0,56912,63456,8544,0,17120,63456,-4512,-17424,17120,63456,8544,0,58912,63456,8544,0,48032,63456, | |
8544,0,66592,63456,8544,0,56560,63456,4880,-1232,63616,64608,8544,0,49520,63456,4880,-11216,63616,64608, | |
8544,0,57968,63456,5744,-1232,50400,64608,-256,0,53424,63456,7568,-1232,56144,63456,688,0,58816,63456, | |
2896,0,83216,63456,2592,0,56912,63456,-176,0,53344,63456,3904,0,55712,63456,7488,-11472,25504,66128, | |
0,-8080,29328,63456,8464,-11472,26480,66128,9216,39776,63712,63456,-848,-20528,44368,-14448,7232,53728,27584,69616, | |
5232,-1232,45440,48752,7904,-1232,50496,66128,4800,-1232,42464,48752,4800,-1232,47344,66128,4800,-1232,48912,48752, | |
2000,0,32304,66128,4800,-18112,47344,48752,7904,0,47776,66128,8208,0,16016,66128,-1568,-18112,16016,66128, | |
7904,0,50144,66128,8208,0,16016,66128,7904,0,77392,48752,7904,0,47776,48752,4800,-1232,48496,48752, | |
7904,-18112,50496,48752,4800,-18112,47344,48752,7904,0,35792,48752,4720,-1232,41104,48752,2336,0,32048,61120, | |
7392,-1232,47264,48752,2592,0,48912,47600,3648,0,67536,47600,2512,0,48656,47600,2592,-18112,48912,47600, | |
3744,0,41952,47600,10880,-14192,44496,66128,11056,-20528,18272,66512,10880,-14192,44496,66128,9216,19840,63712,34720, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376, | |
4336,-15392,47856,61376,4336,-15392,47856,61376,4336,-15392,47856,61376,0,0,0,0,13136,0,21760,63456, | |
7312,-13296,45008,60864,5488,0,47680,64608,4000,3488,51504,51088,3488,0,51808,63456,11056,-14880,18272,60864, | |
3904,-8288,39520,64608,9136,57376,34384,65968,12032,0,75008,63120,4880,19936,35152,64608,6720,6000,45088,45008, | |
9216,12192,63712,36640,4256,20352,27152,27328,12032,0,75008,63120,9056,58560,34464,64848,8288,37616,35232,64608, | |
9216,0,63712,54576,4000,28384,29408,64608,4160,27760,30480,64608,15760,53632,36128,69616,7392,-18112,53248,47600, | |
6720,-8368,45936,63456,9312,24816,18272,35616,12368,-16784,29968,0,5824,28384,30128,63872,4080,19936,36896,64608, | |
8208,6000,46576,45008,5824,-1232,81280,64608,5824,-1232,78560,64608,4160,-1232,81280,64608,6080,-1232,39952,63456, | |
688,0,58816,80208,688,0,58816,80208,688,0,58816,80304,688,0,58816,79664,688,0,58816,78976, | |
688,0,58816,80800,336,0,79216,63456,4880,-16784,56064,64608,8544,0,49424,80208,8544,0,49424,80208, | |
8544,0,49424,80304,8544,0,49424,78976,2688,0,18960,80208,7056,0,23248,80208,96,0,26016,80304, | |
432,0,25680,78976,432,0,62304,63456,8544,0,56560,79664,4880,-1232,63616,80208,4880,-1232,63616,80208, | |
4880,-1232,63616,80304,4880,-1232,63616,79664,4880,-1232,63616,78976,11936,2672,61024,51888,4336,-2976,64128,66256, | |
7568,-1232,56144,80208,7568,-1232,56144,80208,7568,-1232,56144,80304,7568,-1232,56144,78976,-176,0,53344,80208, | |
8544,0,49520,63456,7904,-1232,50832,66128,5232,-1232,45440,69616,5232,-1232,45440,69616,5232,-1232,45440,69616, | |
5232,-1232,45440,67616,5232,-1232,45440,65968,5232,-1232,45440,76416,5232,-1232,80880,48752,4800,-16784,42464,48752, | |
4800,-1232,48912,69616,4800,-1232,48912,69616,4800,-1232,48912,69616,4800,-1232,48912,65968,-1984,0,18368,69616, | |
6544,0,26912,69616,-1008,0,26096,69616,-80,0,25168,65968,4800,-1232,48496,66128,7904,0,47776,67616, | |
4800,-1232,48496,69616,4800,-1232,48496,69616,4800,-1232,48496,69616,4800,-1232,48496,67616,4800,-1232,48496,65968, | |
9216,6368,63712,48240,3056,-4000,50144,51504,7392,-1232,47264,69616,7392,-1232,47264,69616,7392,-1232,47264,69616, | |
7392,-1232,47264,65968,2592,-18112,48912,69616,7904,-18112,50496,66128,2592,-18112,48912,65968 }; | |
static const int DejaVuSans_glyphCount = 224; | |
static const short DejaVuSans_characterMap[256] = { | |
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, | |
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7, | |
8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, | |
28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, | |
48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67, | |
68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, | |
88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107, | |
108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, | |
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147, | |
148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167, | |
168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, | |
188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, | |
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223 }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright (c) 2006, Hybrid Graphics, Ltd. | |
* All rights reserved. | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions are met: | |
* | |
* * Redistributions of source code must retain the above copyright | |
* notice, this list of conditions and the following disclaimer. | |
* * Redistributions in binary form must reproduce the above copyright | |
* notice, this list of conditions and the following disclaimer in the | |
* documentation and/or other materials provided with the distribution. | |
* * The name of Hybrid Graphics may not be used to endorse or promote products | |
* derived from this software without specific prior written permission. | |
* | |
* THIS SOFTWARE IS PROVIDED BY HYBRID GRAPHICS ``AS IS'' AND ANY | |
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
* DISCLAIMED. IN NO EVENT SHALL HYBRID GRAPHICS BE LIABLE FOR ANY | |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | |
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
#include <iostream> | |
#include <fstream> | |
#include <vector> | |
#include <float.h> | |
#include "ft2build.h" | |
#include FT_FREETYPE_H | |
#include FT_OUTLINE_H | |
#define OUTPUT_INTS | |
class Vector2 | |
{ | |
public: | |
Vector2() {} | |
Vector2(float px, float py) { x = px; y = py; } | |
float x; | |
float y; | |
}; | |
Vector2 operator+(const Vector2& a, const Vector2& b) { return Vector2(a.x+b.x, a.y+b.y); } | |
Vector2 operator*(const Vector2& a, float b) { return Vector2(a.x*b, a.y*b); } | |
float convFTFixed( const FT_Pos &x ) | |
{ | |
return (float)x / 4096.0f; | |
} | |
Vector2 convFTVector( const FT_Vector &v ) | |
{ | |
return Vector2(convFTFixed(v.x),convFTFixed(v.y)); | |
} | |
bool isOn( char b ) | |
{ | |
return b & 1 ? true : false; | |
} | |
int main (int argc, char * const argv[]) | |
{ | |
FT_Library library; | |
FT_Face face; | |
if(argc < 4) | |
{ | |
printf("usage: font2openvg input_font_file output.c prefix\n"); | |
exit(-1); | |
} | |
if( FT_Init_FreeType( &library ) ) | |
{ | |
printf("couldn't initialize freetype\n"); | |
exit(-1); | |
} | |
int faceIndex = 0; | |
if( FT_New_Face( library, argv[1], faceIndex, &face ) ) | |
{ | |
printf("couldn't load new face\n"); | |
exit(-1); | |
} | |
FT_Set_Char_Size( | |
face, /* handle to face object */ | |
0, /* char_width in 1/64th of points */ | |
64*64, /* char_height in 1/64th of points */ | |
96, /* horizontal device resolution */ | |
96 ); /* vertical device resolution */ | |
FILE* f = fopen(argv[2], "wt"); | |
if(!f) | |
{ | |
printf("couldn't open %s for writing\n", argv[2]); | |
exit(-1); | |
} | |
std::vector<int> gpvecindices; | |
std::vector<int> givecindices; | |
std::vector<int> gpvecsizes; | |
std::vector<int> givecsizes; | |
std::vector<Vector2> gpvec; | |
std::vector<char> givec; | |
std::vector<float> gbbox; | |
std::vector<float> advances; | |
unsigned int characterMap[256]; | |
int glyphs = 0; | |
for(int cc=0;cc<256;cc++) | |
{ | |
characterMap[cc] = 0xffffffffu; //initially nonexistent | |
if( cc < 32 ) | |
continue; //discard the first 32 characters | |
int glyphIndex = FT_Get_Char_Index( face, cc ); | |
if( !FT_Load_Glyph( face, glyphIndex, FT_LOAD_NO_BITMAP | FT_LOAD_NO_HINTING | FT_LOAD_IGNORE_TRANSFORM ) ) | |
{ | |
float advance = convFTFixed( face->glyph->advance.x ); | |
if( cc == ' ' ) | |
{ //space doesn't contain any data | |
gpvecindices.push_back( gpvec.size() ); | |
givecindices.push_back( givec.size() ); | |
gpvecsizes.push_back( 0 ); | |
givecsizes.push_back( 0 ); | |
gbbox.push_back(0); | |
gbbox.push_back(0); | |
gbbox.push_back(0); | |
gbbox.push_back(0); | |
advances.push_back(advance); | |
//write glyph index to character map | |
characterMap[cc] = glyphs++; | |
continue; | |
} | |
FT_Outline &outline = face->glyph->outline; | |
std::vector<Vector2> pvec; | |
std::vector<unsigned char> ivec; | |
float minx = 10000000.0f,miny = 100000000.0f,maxx = -10000000.0f,maxy = -10000000.0f; | |
int s = 0,e; | |
bool on; | |
Vector2 last,v,nv; | |
for(int con=0;con<outline.n_contours;++con) | |
{ | |
int pnts = 1; | |
e = outline.contours[con]+1; | |
last = convFTVector(outline.points[s]); | |
//read the contour start point | |
ivec.push_back(2); | |
pvec.push_back(last); | |
int i=s+1; | |
while(i<=e) | |
{ | |
int c = (i == e) ? s : i; | |
int n = (i == e-1) ? s : (i+1); | |
v = convFTVector(outline.points[c]); | |
on = isOn( outline.tags[c] ); | |
if( on ) | |
{ //line | |
++i; | |
ivec.push_back(4); | |
pvec.push_back(v); | |
pnts += 1; | |
} | |
else | |
{ //spline | |
if( isOn( outline.tags[n] ) ) | |
{ //next on | |
nv = convFTVector( outline.points[n] ); | |
i += 2; | |
} | |
else | |
{ //next off, use middle point | |
nv = (v + convFTVector( outline.points[n] )) * 0.5f; | |
++i; | |
} | |
ivec.push_back(10); | |
pvec.push_back(v); | |
pvec.push_back(nv); | |
pnts += 2; | |
} | |
last = nv; | |
} | |
ivec.push_back(0); | |
s = e; | |
} | |
for(int i=0;i<pvec.size();++i) | |
{ | |
if( pvec[i].x < minx ) minx = pvec[i].x; | |
if( pvec[i].x > maxx ) maxx = pvec[i].x; | |
if( pvec[i].y < miny ) miny = pvec[i].y; | |
if( pvec[i].y > maxy ) maxy = pvec[i].y; | |
} | |
if(!pvec.size()) | |
{ | |
minx = 0.0f; | |
miny = 0.0f; | |
maxx = 0.0f; | |
maxy = 0.0f; | |
} | |
gpvecindices.push_back( gpvec.size() ); | |
givecindices.push_back( givec.size() ); | |
gpvecsizes.push_back( pvec.size() ); | |
givecsizes.push_back( ivec.size() ); | |
gbbox.push_back( minx ); | |
gbbox.push_back( miny ); | |
gbbox.push_back( maxx ); | |
gbbox.push_back( maxy ); | |
advances.push_back(advance); | |
int size; | |
size = gpvec.size(); | |
gpvec.resize( size + pvec.size() ); | |
memcpy( &(gpvec[size]), &(pvec[0]), pvec.size() * sizeof(Vector2) ); | |
size = givec.size(); | |
givec.resize( size + ivec.size() ); | |
memcpy( &(givec[size]), &(ivec[0]), ivec.size() * sizeof(char) ); | |
//write glyph index to character map | |
characterMap[cc] = glyphs++; | |
} | |
} | |
if(!glyphs) | |
printf("warning: no glyphs found\n"); | |
static const char* legalese = {"/* Generated by font2openvg. See http://developer.hybrid.fi for more information. */\n\n"}; | |
//print legalese | |
fprintf(f,"%s", legalese); | |
//print the name of the font file | |
fprintf (f,"/* converted from font file %s */\n", argv[1]); | |
fprintf (f,"/* font family name: %s */\n", face->family_name); | |
fprintf (f,"/* font style name: %s */\n\n", face->style_name); | |
//print instructions | |
fprintf (f,"static const unsigned char %s_glyphInstructions[%d] = {", argv[3],givec.size()); | |
for(int i=0;i<givec.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",givec[i],(i==(givec.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n"); | |
fprintf (f,"static const int %s_glyphInstructionIndices[%d] = {", argv[3],givecindices.size()); | |
for(int i=0;i<givecindices.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",givecindices[i],(i==(givecindices.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n"); | |
fprintf (f,"static const int %s_glyphInstructionCounts[%d] = {", argv[3],givecsizes.size()); | |
for(int i=0;i<givecsizes.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",givecsizes[i],(i==(givecsizes.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n\n"); | |
fprintf (f,"static const int %s_glyphPointIndices[%d] = {", argv[3],gpvecindices.size()); | |
for(int i=0;i<gpvecindices.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",gpvecindices[i],(i==(gpvecindices.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n"); | |
#ifdef OUTPUT_INTS | |
//print points | |
fprintf (f,"static const int %s_glyphPoints[%d*2] = {", argv[3],gpvec.size()); | |
for(int i=0;i<gpvec.size();i++) | |
{ | |
if ((i % 10)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d,%d%c",(int)(65536.0f*gpvec[i].x),(int)(65536.0f*gpvec[i].y),(i==(gpvec.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n"); | |
//print the advances | |
fprintf (f,"static const int %s_glyphAdvances[%d] = {", argv[3],advances.size()); | |
for(int i=0;i<advances.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",(int)(65536.0f*advances[i]),(i==(advances.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n\n"); | |
//print the bounding boxes | |
fprintf (f,"static const int %s_glyphBBoxes[%d] = {", argv[3],gbbox.size()); | |
for(int i=0;i<gbbox.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",(int)(65536.0f*gbbox[i]),(i==(gbbox.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n\n"); | |
#else | |
//print points | |
fprintf (f,"static const float %s_glyphPoints[%d*2] = {", argv[3],gpvec.size()); | |
for(int i=0;i<gpvec.size();i++) | |
{ | |
if ((i % 10)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%f,%f%c",gpvec[i].x,gpvec[i].y,(i==(gpvec.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n"); | |
//print the advances | |
fprintf (f,"static const float %s_glyphAdvances[%d] = {", argv[3],advances.size()); | |
for(int i=0;i<advances.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%f%c",advances[i],(i==(advances.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n\n"); | |
//print the bounding boxes | |
fprintf (f,"static const float %s_glyphBBoxes[%d] = {", argv[3],gbbox.size()); | |
for(int i=0;i<gbbox.size();i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%f%c",gbbox[i],(i==(gbbox.size()-1))?' ':','); | |
} | |
fprintf (f,"};\n\n"); | |
#endif | |
//print the number of glyphs and the character map | |
fprintf (f,"static const int %s_glyphCount = %d;\n",argv[3],glyphs); | |
fprintf (f,"static const short %s_characterMap[256] = {", argv[3]); | |
for(int i=0;i<256;i++) | |
{ | |
if ((i % 20)==0) | |
fprintf (f,"\n "); | |
fprintf (f,"%d%c",characterMap[i],(i==(256-1))?' ':','); | |
} | |
fprintf (f,"};\n\n"); | |
fclose(f); | |
if(glyphs) | |
printf("%d glyphs written\n", glyphs); | |
FT_Done_Face( face ); | |
FT_Done_FreeType( library ); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
all: shapes font2openvg | |
shapes: shapes.c | |
cc -Wall -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -o shapes shapes.c -L/opt/vc/lib -lGLESv2 | |
font2openvg: font2openvg.cpp | |
g++ -I /usr/include/freetype2 font2openvg.cpp -o font2openvg -lfreetype | |
fonts: font2openvg | |
for f in /usr/share/fonts/truetype/ttf-dejavu/*.ttf; do fn=`basename $$f .ttf`; ./font2openvg $$f $$fn.inc $$fn; done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// shapes: minimal program to explore OpenVG | |
// Anthony Starks ([email protected]) | |
// | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <assert.h> | |
#include <string.h> | |
#include <time.h> | |
#include "VG/openvg.h" | |
#include "VG/vgu.h" | |
#include "EGL/egl.h" | |
#include "GLES/gl.h" | |
#include "DejaVuSans.inc" | |
typedef struct { | |
uint32_t screen_width; | |
uint32_t screen_height; | |
// OpenGL|ES objects | |
EGLDisplay display; | |
EGLSurface surface; | |
EGLContext context; | |
} STATE_T; | |
static void exit_func(void); | |
static STATE_T _state, *state=&_state; | |
// init_ogl sets the display, OpenGL|ES context and screen information | |
// state holds the OGLES model information | |
static void init_ogl(STATE_T *state) { | |
int32_t success = 0; | |
EGLBoolean result; | |
EGLint num_config; | |
static EGL_DISPMANX_WINDOW_T nativewindow; | |
DISPMANX_ELEMENT_HANDLE_T dispman_element; | |
DISPMANX_DISPLAY_HANDLE_T dispman_display; | |
DISPMANX_UPDATE_HANDLE_T dispman_update; | |
VC_RECT_T dst_rect; | |
VC_RECT_T src_rect; | |
static const EGLint attribute_list[] = { | |
EGL_RED_SIZE, 8, | |
EGL_GREEN_SIZE, 8, | |
EGL_BLUE_SIZE, 8, | |
EGL_ALPHA_SIZE, 8, | |
EGL_SURFACE_TYPE, EGL_WINDOW_BIT, | |
EGL_NONE | |
}; | |
EGLConfig config; | |
// get an EGL display connection | |
state->display = eglGetDisplay(EGL_DEFAULT_DISPLAY); | |
assert(state->display!=EGL_NO_DISPLAY); | |
// initialize the EGL display connection | |
result = eglInitialize(state->display, NULL, NULL); | |
assert(EGL_FALSE != result); | |
// bind OpenVG API | |
eglBindAPI(EGL_OPENVG_API); | |
// get an appropriate EGL frame buffer configuration | |
result = eglChooseConfig(state->display, attribute_list, &config, 1, &num_config); | |
assert(EGL_FALSE != result); | |
// create an EGL rendering context | |
state->context = eglCreateContext(state->display, config, EGL_NO_CONTEXT, NULL); | |
assert(state->context!=EGL_NO_CONTEXT); | |
// create an EGL window surface | |
success = graphics_get_display_size(0 /* LCD */, &state->screen_width, &state->screen_height); | |
assert( success >= 0 ); | |
dst_rect.x = 0; | |
dst_rect.y = 0; | |
dst_rect.width = state->screen_width; | |
dst_rect.height = state->screen_height; | |
src_rect.x = 0; | |
src_rect.y = 0; | |
src_rect.width = state->screen_width << 16; | |
src_rect.height = state->screen_height << 16; | |
dispman_display = vc_dispmanx_display_open( 0 /* LCD */); | |
dispman_update = vc_dispmanx_update_start( 0 ); | |
dispman_element = vc_dispmanx_element_add ( dispman_update, dispman_display, | |
0/*layer*/, &dst_rect, 0/*src*/, | |
&src_rect, DISPMANX_PROTECTION_NONE, 0 /*alpha*/, 0/*clamp*/, 0/*transform*/); | |
nativewindow.element = dispman_element; | |
nativewindow.width = state->screen_width; | |
nativewindow.height = state->screen_height; | |
vc_dispmanx_update_submit_sync( dispman_update ); | |
state->surface = eglCreateWindowSurface( state->display, config, &nativewindow, NULL ); | |
assert(state->surface != EGL_NO_SURFACE); | |
// connect the context to the surface | |
result = eglMakeCurrent(state->display, state->surface, state->surface, state->context); | |
assert(EGL_FALSE != result); | |
//DAVE - Set up screen ratio | |
glViewport(0, 0, (GLsizei)state->screen_width, (GLsizei)state->screen_height); | |
glMatrixMode(GL_PROJECTION); | |
glLoadIdentity(); | |
float ratio = (float)state->screen_width / (float)state->screen_height; | |
glFrustumf(-ratio, ratio, -1.0f, 1.0f, 1.0f, 10.0f); | |
} | |
// exit_func cleans up | |
static void exit_func(void) { | |
// clear screen | |
glClear( GL_COLOR_BUFFER_BIT ); | |
eglSwapBuffers(state->display, state->surface); | |
// Release OpenGL resources | |
eglMakeCurrent( state->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT ); | |
eglDestroySurface( state->display, state->surface ); | |
eglDestroyContext( state->display, state->context ); | |
eglTerminate( state->display ); | |
} | |
// | |
// Font functions | |
// | |
// loadfont loads font path data | |
void loadfont(const int *Points, const int *PointIndices, const unsigned char *Instructions, const int *InstructionIndices, const int *InstructionCounts, int ng, VGPath *glyphs) { | |
int i; | |
memset(glyphs, 0, ng*sizeof(VGPath)); | |
for(i=0; i < ng; i++) { | |
const int* p = &Points[PointIndices[i]*2]; | |
const unsigned char* instructions = &Instructions[InstructionIndices[i]]; | |
int ic = InstructionCounts[i]; | |
VGPath path = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_S_32, 1.0f/65536.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); | |
glyphs[i] = path; | |
if(ic) { | |
vgAppendPathData(path, ic, instructions, p); | |
} | |
} | |
} | |
// unloadfont frees font path data | |
void unloadfont(VGPath *glyphs, int n) { | |
int i; | |
for(i=0; i<n; i++) { | |
vgDestroyPath(glyphs[i]); | |
} | |
} | |
// | |
// Style functions | |
// | |
// setfill sets the fill color | |
void setfill(float color[4]) { | |
VGPaint fillPaint = vgCreatePaint(); | |
vgSetParameteri(fillPaint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); | |
vgSetParameterfv(fillPaint, VG_PAINT_COLOR, 4, color); | |
vgSetPaint(fillPaint, VG_FILL_PATH); | |
vgDestroyPaint(fillPaint); | |
} | |
// setstroke sets the stroke color and width | |
void setstroke(float color[4], float width) { | |
VGPaint strokePaint = vgCreatePaint(); | |
vgSetParameteri(strokePaint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR); | |
vgSetParameterfv(strokePaint, VG_PAINT_COLOR, 4, color); | |
vgSetPaint(strokePaint, VG_STROKE_PATH); | |
vgSetf(VG_STROKE_LINE_WIDTH, width); | |
vgSeti(VG_STROKE_CAP_STYLE, VG_CAP_BUTT); | |
vgSeti(VG_STROKE_JOIN_STYLE, VG_JOIN_MITER); | |
vgDestroyPaint(strokePaint); | |
} | |
// Text renders a string of text at a specified location, using the specified font glyphs | |
void Text(VGfloat x, VGfloat y, const char* s, int pointsize, VGfloat fillcolor[4], VGPath *glyphs, const short *characterMap, const int *glyphAdvances, VGbitfield renderFlags) { | |
float size = (float)pointsize; | |
float xx = x; | |
float mm[9]; | |
int i; | |
vgGetMatrix(mm); | |
setfill(fillcolor); | |
for(i=0; i < (int)strlen(s); i++) { | |
unsigned int character = (unsigned int)s[i]; | |
int glyph = characterMap[character]; | |
if( glyph == -1 ) { | |
continue; //glyph is undefined | |
} | |
VGfloat mat[9] = { | |
size, 0.0f, 0.0f, | |
0.0f, size, 0.0f, | |
xx, y, 1.0f | |
}; | |
vgLoadMatrix(mm); | |
vgMultMatrix(mat); | |
vgDrawPath(glyphs[glyph], renderFlags); | |
xx += size * glyphAdvances[glyph] / 65536.0f; | |
} | |
vgLoadMatrix(mm); | |
} | |
// | |
// Shape functions | |
// | |
VGPath newpath() { | |
return vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); | |
} | |
// CBezier makes a quadratic bezier curve, applying style | |
void Cbezier( | |
VGfloat sx, VGfloat sy, | |
VGfloat cx, VGfloat cy, | |
VGfloat px, VGfloat py, | |
VGfloat ex, VGfloat ey, | |
VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
VGubyte segments[] = { VG_MOVE_TO_ABS, VG_CUBIC_TO }; | |
VGfloat coords[] = { sx, sy, cx, cy, px, py, ex, ey }; | |
VGPath path = newpath(); | |
vgAppendPathData( path, 2, segments, coords ); | |
setfill(fill); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// QBezier makes a quadratic bezier curve, applying style | |
void Qbezier( | |
VGfloat sx, VGfloat sy, | |
VGfloat cx, VGfloat cy, | |
VGfloat ex, VGfloat ey, | |
VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
VGubyte segments[] = { VG_MOVE_TO_ABS, VG_QUAD_TO }; | |
VGfloat coords[] = { sx, sy, cx, cy, ex, ey }; | |
VGPath path = newpath(); | |
vgAppendPathData( path, 2, segments, coords ); | |
setfill(fill); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// interleave interleaves arrays of x, y into a single array | |
void interleave(VGfloat *x, VGfloat *y, int n, VGfloat *points) { | |
while (n--) { | |
*points++ = *x++; | |
*points++ = *y++; | |
} | |
} | |
// Poly makes a stroked polyline or a stroked and filled polygon | |
void Poly(VGfloat *x, VGfloat *y, VGint n, VGfloat sw, VGfloat fill[4], VGfloat stroke[4], VGboolean dofill) { | |
VGfloat points[n*2]; | |
VGPath path = newpath(); | |
VGbitfield pflag; | |
interleave(x, y, n, points); | |
vguPolygon(path, points, n, VG_FALSE); | |
if (dofill) { | |
setfill(fill); | |
pflag = VG_FILL_PATH | VG_STROKE_PATH; | |
} else { | |
pflag = VG_STROKE_PATH; | |
} | |
setstroke(stroke, sw); | |
vgDrawPath(path, pflag); | |
vgDestroyPath(path); | |
} | |
// Rect makes a rectangle at the specified location and dimensions, applying style | |
void Rect(VGfloat x, VGfloat y, VGfloat w, VGfloat h, VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
VGPath path = newpath(); | |
vguRect(path, x, y, w, h); | |
setfill(fill); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// Line makes a line, applying style | |
void Line(VGfloat x1, VGfloat y1, VGfloat x2, VGfloat y2, VGfloat sw, VGfloat stroke[4]) { | |
VGPath path = newpath(); | |
vguLine(path, x1, y1, x2, y2); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// Roundrect makes an rounded rectangle at the specified location and dimensions, applying style | |
void Roundrect( | |
VGfloat x, VGfloat y, | |
VGfloat w, VGfloat h, | |
VGfloat rw, VGfloat rh, | |
VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
VGPath path = newpath(); | |
vguRoundRect(path, x, y, w, h, rw, rh); | |
setfill(fill); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// Ellipse makes an ellipse at the specified location and dimensions, applying style | |
void Ellipse(VGfloat x, VGfloat y, VGfloat w, VGfloat h, VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
VGPath path = newpath(); | |
vguEllipse(path, x, y, w, h); | |
setfill(fill); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// Circle makes a circle at the specified location and dimensions, applying style | |
void Circle(VGfloat x, VGfloat y, VGfloat r, VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
Ellipse(x, y, r, r, sw, fill, stroke); | |
} | |
// Arc makes an elliptical arc at the specified location and dimensions, applying style | |
void Arc( VGfloat x, VGfloat y, VGfloat w, VGfloat h, | |
VGfloat sa, VGfloat aext, | |
VGfloat sw, VGfloat fill[4], VGfloat stroke[4]) { | |
VGPath path = newpath(); | |
vguArc(path, x, y, w, h, sa, aext, VGU_ARC_OPEN); | |
setfill(fill); | |
setstroke(stroke, sw); | |
vgDrawPath(path, VG_FILL_PATH | VG_STROKE_PATH); | |
vgDestroyPath(path); | |
} | |
// Start begins the picture, clearing a rectangular region with a specified color | |
void Start(int width, int height, float fill[4]) { | |
vgSetfv(VG_CLEAR_COLOR, 4, fill); | |
vgClear(0, 0, width, height); | |
vgLoadIdentity(); | |
} | |
// End checks for errors, and renders to the display | |
void End() { | |
assert(vgGetError() == VG_NO_ERROR); | |
eglSwapBuffers(state->display, state->surface); | |
assert(eglGetError() == EGL_SUCCESS); | |
} | |
// randcolor returns a fraction of 255 | |
VGfloat randcolor() { | |
return (VGfloat)(rand() % 256) / 255.0; | |
} | |
// randf returns a floating point number bounded by n | |
VGfloat randf(n) { | |
return (VGfloat)(rand() % n); | |
} | |
void rlines(VGfloat x, VGfloat y, int width, int height) { | |
int i = (int)x; | |
VGfloat rcolor[4] = {0,0,0,.40}; | |
for (; i < width; i++ ) { | |
rcolor[0] = randcolor(); | |
rcolor[1] = rcolor[0]; | |
rcolor[2] = rcolor[0]; | |
Line(i, y, i+randf(width), height, 10, rcolor); | |
} | |
} | |
void coordpoint(VGfloat x, VGfloat y, VGfloat size) { | |
VGfloat dotcolor[4] = {0.3, 0.3, 0.3, 1}, white[4] = {1,1,1,1}; | |
Circle(x, y, size, 0, dotcolor, white); | |
} | |
// refcard shows a reference card of shapes | |
void refcard(int width, int height) { | |
char *shapenames[] = { | |
"Circle", "Ellipse", "Rectangle", "Rounded Rectangle", | |
"Line", "Polyline", "Polygon", "Arc", "Quadratic Bezier", "Cubic Bezier" | |
}; | |
VGfloat strokecolor[4] = {0,0,0,1}, shapecolor[4] = {202.0/255.0, 225.0/255.0,1,1}, textcolor[4] = {0,0,0,1}, bgcolor[4] = {1,1,1,1}; | |
VGfloat strokewidth = 2; | |
VGfloat top=height-100, sx = 500, sy = top, sw=100, sh=50, dotsize=7, spacing=2.0; | |
VGPath DejaVuSans_Paths[DejaVuSans_glyphCount]; | |
loadfont(DejaVuSans_glyphPoints, DejaVuSans_glyphPointIndices, | |
DejaVuSans_glyphInstructions, DejaVuSans_glyphInstructionIndices, | |
DejaVuSans_glyphInstructionCounts, DejaVuSans_glyphCount, | |
DejaVuSans_Paths); | |
int i, ns = sizeof(shapenames)/sizeof(char *), fontsize = 36; | |
Start(width, height, bgcolor); | |
setfill(textcolor); | |
sx = width * 0.10; | |
textcolor[0] = 0.5; | |
Text(width*.50, height/2, "OpenVG on the Raspberry Pi", 48, textcolor, DejaVuSans_Paths, DejaVuSans_characterMap, DejaVuSans_glyphAdvances, VG_FILL_PATH); | |
textcolor[0] = 0; | |
for (i=0; i < ns; i++) { | |
Text(sx+sw+sw/2, sy, shapenames[i], fontsize, textcolor, DejaVuSans_Paths, DejaVuSans_characterMap, DejaVuSans_glyphAdvances, VG_FILL_PATH); | |
sy -= sh*spacing; | |
} | |
sy = top; | |
VGfloat cx = sx+(sw/2), ex = sx + sw; | |
Circle(cx, sy, sw, strokewidth, shapecolor, strokecolor); coordpoint(cx, sy, dotsize); sy -= sh*spacing; | |
Ellipse(cx, sy, sw, sh, strokewidth, shapecolor, strokecolor); coordpoint(cx, sy, dotsize); sy -= sh*spacing; | |
Rect(sx, sy, sw, sh, strokewidth, shapecolor, strokecolor); coordpoint(sx, sy, dotsize); sy -= sh*spacing; | |
Roundrect(sx, sy, sw, sh, 20, 20, strokewidth, shapecolor, strokecolor); coordpoint(sx, sy, dotsize); sy -= sh*spacing; | |
Line(sx, sy, ex, sy, strokewidth, strokecolor); coordpoint(sx, sy, dotsize); coordpoint(ex, sy, dotsize); sy -= sh; | |
VGfloat px[5] = {sx, sx+(sw/4), sx+(sw/2), sx+((sw*3)/4), sx+sw}; | |
VGfloat py[5] = {sy, sy-sh, sy, sy-sh, sy}; | |
Poly(px, py, 5, strokewidth, shapecolor, strokecolor, VG_FALSE); | |
coordpoint(px[0], py[0], dotsize); | |
coordpoint(px[1], py[1], dotsize); | |
coordpoint(px[2], py[2], dotsize); | |
coordpoint(px[3], py[3], dotsize); | |
coordpoint(px[4], py[4], dotsize); | |
sy -= sh*spacing; | |
py[0] = sy; | |
py[1] = sy-sh; | |
py[2] = sy-(sh/2); | |
py[3] = py[1] - (sh/4); | |
py[4] = sy; | |
Poly(px, py, 5, strokewidth, shapecolor, strokecolor, VG_TRUE); sy -= (sh*spacing) + sh; | |
Arc(sx+(sw/2), sy, sw, sh, 0, 180, strokewidth, shapecolor, strokecolor); coordpoint(sx+(sw/2), sy, dotsize); sy -= sh*spacing; | |
VGfloat cy = sy + (sh/2), ey = sy; | |
Qbezier(sx, sy, cx, cy, ex, ey, strokewidth, shapecolor, strokecolor); coordpoint(sx, sy, dotsize); coordpoint(cx, cy, dotsize); coordpoint(ex, ey, dotsize); sy -= sh*spacing; | |
ey = sy; | |
cy = sy + sh; | |
Cbezier(sx, sy, cx, cy, cx, sy, ex, ey, strokewidth, shapecolor, strokecolor); | |
coordpoint(sx, sy, dotsize); | |
coordpoint(cx, cy, dotsize); | |
coordpoint(cx, sy, dotsize); | |
coordpoint(ex, ey, dotsize); | |
End(); | |
unloadfont(DejaVuSans_Paths, DejaVuSans_glyphCount); | |
} | |
// rshapes draws shapes (rect and ellipse) with random colors, strokes, and sizes. | |
void rshapes(int width, int height, int n) { | |
int np = 10; | |
VGfloat rcolor[4], scolor[4], bgcolor[4] = {1,1,1,1}, textcolor[4] = {0.5, 0, 0, 1}; | |
scolor[3] = 1; // strokes are solid | |
VGfloat sx, sy, cx, cy, px, py, ex, ey, pox, poy; | |
VGfloat polyx[np], polyy[np]; | |
VGPath DejaVuSans_Paths[DejaVuSans_glyphCount]; | |
int i,j; | |
loadfont(DejaVuSans_glyphPoints, DejaVuSans_glyphPointIndices, | |
DejaVuSans_glyphInstructions, DejaVuSans_glyphInstructionIndices, | |
DejaVuSans_glyphInstructionCounts, DejaVuSans_glyphCount, | |
DejaVuSans_Paths); | |
srand ( time(NULL) ); | |
Start(width, height, bgcolor); | |
for (i=0; i < n; i++) { | |
rcolor[0] = randcolor(); | |
rcolor[1] = randcolor(); | |
rcolor[2] = randcolor(); | |
rcolor[3] = randcolor(); | |
scolor[1] = randcolor(); | |
scolor[2] = randcolor(); | |
scolor[3] = randcolor(); | |
Ellipse(randf(width), randf(height), randf(200), randf(100), randf(10), rcolor, scolor); | |
Circle(randf(width), randf(height), randf(100), randf(10), rcolor, scolor); | |
Rect(randf(width), randf(height), randf(200), randf(100), randf(10), rcolor, scolor); | |
Line(randf(width), randf(height), randf(width), randf(height), randf(10), scolor); | |
Arc(randf(width), randf(height), randf(200), randf(200), randf(360), randf(360), randf(10), rcolor, scolor); | |
sx = randf(width); | |
sy = randf(height); | |
ex = sx + randf(200); | |
ey = sy; | |
cx = sx + ((ex - sx )/ 2.0); | |
cy = sy + randf(100); | |
Qbezier(sx, sy, cx, cy, ex, ey, randf(10), rcolor, scolor); | |
sx = randf(width); | |
sy = randf(height); | |
ex = sx + randf(200); | |
ey = sy; | |
cx = sx + ((ex - sx )/ 2.0); | |
cy = sy + randf(100); | |
px = cx; | |
py = sy - randf(100); | |
Cbezier(sx, sy, cx, cy, px, py, ex, ey, randf(10), rcolor, scolor); | |
pox = randf(width); | |
poy = randf(height); | |
for (j=0; j < np; j++) { | |
polyx[j] = pox + randf(200); | |
polyy[j] = poy + randf(100); | |
} | |
Poly(polyx, polyy, np, 4, rcolor, scolor, VG_TRUE); | |
pox = randf(width); | |
poy = randf(height); | |
for (j=0; j < np; j++) { | |
polyx[j] = pox + randf(200); | |
polyy[j] = poy + randf(100); | |
} | |
Poly(polyx, polyy, np, 4, rcolor, scolor, VG_FALSE); | |
} | |
Text(randf(100), randf(height-100), "OpenVG on the Raspberry Pi", 64, textcolor, DejaVuSans_Paths, DejaVuSans_characterMap, DejaVuSans_glyphAdvances, VG_FILL_PATH); | |
unloadfont(DejaVuSans_Paths, DejaVuSans_glyphCount); | |
End(); | |
} | |
// main initializes the system and shows the picture, | |
// exit and clean up when you hit [RETURN]. | |
int main (int argc, char **argv) { | |
int w, h; | |
bcm_host_init(); | |
memset( state, 0, sizeof( *state ) ); | |
init_ogl(state); | |
w = state->screen_width; | |
h = state->screen_height; | |
if (argc > 1) { | |
rshapes(w, h, atoi(argv[1])); | |
} else { | |
refcard(w, h); | |
} | |
while (getchar() != '\n') { | |
; | |
} | |
exit_func(); | |
return 0; | |
} | |
I have followed your instructions carefully and when I try to "make fonts" I get this error
"make: *** No rule to make target font2openvg.cpp', needed by
font2openvg'. Stop."
I found the problem: your file is misspelled, it should be ...vg.cpp instead it is...cv.cpp
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
pi@raspberrypi ~/vg $ make fonts shapes
g++ -I /usr/include/freetype2 font2openvg.cpp -o font2openvg -lfreetype
for f in /usr/share/fonts/truetype/ttf-dejavu/*.ttf; do fn=
basename $f .ttf
; ./font2openvg $f $fn.inc $fn; done224 glyphs written
224 glyphs written
224 glyphs written
224 glyphs written
224 glyphs written
224 glyphs written
cc -Wall -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -o shapes shapes.c -L/opt/vc/lib -lGLESv2
During development, on my Mac sitting next the RasPi, I open two terminals and ssh into the RasPi with each. In one terminal, I edit the file, in the other, compile, run to see the result.