os/textandloc/fontservices/textshaperplugin/test/letest/gendata.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
 *******************************************************************************
sl@0
     3
 *
sl@0
     4
 *   Copyright (C) 1999-2004, International Business Machines
sl@0
     5
 *   Corporation and others.  All Rights Reserved.
sl@0
     6
 *
sl@0
     7
 *******************************************************************************
sl@0
     8
 *   file name:  gendata.cpp
sl@0
     9
 *
sl@0
    10
 *   created on: 11/03/2000
sl@0
    11
 *   created by: Eric R. Mader
sl@0
    12
 */
sl@0
    13
sl@0
    14
#include <stdio.h>
sl@0
    15
#include <ctype.h>
sl@0
    16
sl@0
    17
#include "LETypes.h"
sl@0
    18
#include "LEScripts.h"
sl@0
    19
#include "LayoutEngine.h"
sl@0
    20
sl@0
    21
#include "PortableFontInstance.h"
sl@0
    22
sl@0
    23
#include "unicode/uscript.h"
sl@0
    24
sl@0
    25
U_NAMESPACE_USE
sl@0
    26
sl@0
    27
#define ARRAY_LENGTH(array) (sizeof array / sizeof array[0])
sl@0
    28
sl@0
    29
struct TestInput
sl@0
    30
{
sl@0
    31
    char      *fontName;
sl@0
    32
    LEUnicode *text;
sl@0
    33
    le_int32   textLength;
sl@0
    34
    le_int32   scriptCode;
sl@0
    35
    le_bool    rightToLeft;
sl@0
    36
};
sl@0
    37
sl@0
    38
/* 
sl@0
    39
 * FIXME: should use the output file name and the current date.
sl@0
    40
 */
sl@0
    41
char *header =
sl@0
    42
    "/*\n"
sl@0
    43
    " *******************************************************************************\n"
sl@0
    44
    " *\n"
sl@0
    45
    " *   Copyright (C) 1999-2004, International Business Machines\n"
sl@0
    46
    " *   Corporation and others.  All Rights Reserved.\n"
sl@0
    47
    " *\n"
sl@0
    48
    " *   WARNING: THIS FILE IS MACHINE GENERATED. DO NOT HAND EDIT IT\n"
sl@0
    49
    " *   UNLESS YOU REALLY KNOW WHAT YOU'RE DOING.\n"
sl@0
    50
    " *\n"
sl@0
    51
    " *******************************************************************************\n"
sl@0
    52
    " *\n"
sl@0
    53
    " *   file name:  testdata.cpp\n"
sl@0
    54
    " *   created on: 12/14/2000\n"
sl@0
    55
    " *   created by: gendata.cpp\n"
sl@0
    56
    " */\n"
sl@0
    57
    "\n"
sl@0
    58
    "#include \"LETypes.h\"\n"
sl@0
    59
    "#include \"LEScripts.h\"\n"
sl@0
    60
    "#include \"letest.h\"\n"
sl@0
    61
    "\n";
sl@0
    62
sl@0
    63
#if 0
sl@0
    64
char *scriptNames[] =
sl@0
    65
{
sl@0
    66
      "USCRIPT_COMMON",      /* Zyyy */
sl@0
    67
      "USCRIPT_INHERITED",   /* Qaai */
sl@0
    68
      "USCRIPT_ARABIC",      /* Arab */
sl@0
    69
      "USCRIPT_ARMENIAN",    /* Armn */
sl@0
    70
      "USCRIPT_BENGALI",     /* Beng */
sl@0
    71
      "USCRIPT_BOPOMOFO",    /* Bopo */
sl@0
    72
      "USCRIPT_CHEROKEE",    /* Cher */
sl@0
    73
      "USCRIPT_COPTIC",      /* Qaac */
sl@0
    74
      "USCRIPT_CYRILLIC",    /* Cyrl (Cyrs) */
sl@0
    75
      "USCRIPT_DESERET",     /* Dsrt */
sl@0
    76
      "USCRIPT_DEVANAGARI",  /* Deva */
sl@0
    77
      "USCRIPT_ETHIOPIC",    /* Ethi */
sl@0
    78
      "USCRIPT_GEORGIAN",    /* Geor (Geon, Geoa) */
sl@0
    79
      "USCRIPT_GOTHIC",      /* Goth */
sl@0
    80
      "USCRIPT_GREEK",       /* Grek */
sl@0
    81
      "USCRIPT_GUJARATI",    /* Gujr */
sl@0
    82
      "USCRIPT_GURMUKHI",    /* Guru */
sl@0
    83
      "USCRIPT_HAN",         /* Hani */
sl@0
    84
      "USCRIPT_HANGUL",      /* Hang */
sl@0
    85
      "USCRIPT_HEBREW",      /* Hebr */
sl@0
    86
      "USCRIPT_HIRAGANA",    /* Hira */
sl@0
    87
      "USCRIPT_KANNADA",     /* Knda */
sl@0
    88
      "USCRIPT_KATAKANA",    /* Kana */
sl@0
    89
      "USCRIPT_KHMER",       /* Khmr */
sl@0
    90
      "USCRIPT_LAO",         /* Laoo */
sl@0
    91
      "USCRIPT_LATIN",       /* Latn (Latf, Latg) */
sl@0
    92
      "USCRIPT_MALAYALAM",   /* Mlym */
sl@0
    93
      "USCRIPT_MONGOLIAN",   /* Mong */
sl@0
    94
      "USCRIPT_MYANMAR",     /* Mymr */
sl@0
    95
      "USCRIPT_OGHAM",       /* Ogam */
sl@0
    96
      "USCRIPT_OLD_ITALIC",  /* Ital */
sl@0
    97
      "USCRIPT_ORIYA",       /* Orya */
sl@0
    98
      "USCRIPT_RUNIC",       /* Runr */
sl@0
    99
      "USCRIPT_SINHALA",     /* Sinh */
sl@0
   100
      "USCRIPT_SYRIAC",      /* Syrc (Syrj, Syrn, Syre) */
sl@0
   101
      "USCRIPT_TAMIL",       /* Taml */
sl@0
   102
      "USCRIPT_TELUGU",      /* Telu */
sl@0
   103
      "USCRIPT_THAANA",      /* Thaa */
sl@0
   104
      "USCRIPT_THAI",        /* Thai */
sl@0
   105
      "USCRIPT_TIBETAN",     /* Tibt */
sl@0
   106
      "USCRIPT_UCAS",        /* Cans */
sl@0
   107
      "USCRIPT_YI",          /* Yiii */
sl@0
   108
      "USCRIPT_TAGALOG",     /* Tglg */
sl@0
   109
      "USCRIPT_HANUNOO",     /* Hano */
sl@0
   110
      "USCRIPT_BUHID",       /* Buhd */
sl@0
   111
      "USCRIPT_TAGBANWA"     /* Tagb */
sl@0
   112
};
sl@0
   113
#endif
sl@0
   114
sl@0
   115
LEUnicode devaText[] =
sl@0
   116
{
sl@0
   117
    0x0936, 0x094d, 0x0930, 0x0940, 0x092e, 0x0926, 0x094d, 0x0020,
sl@0
   118
    0x092d, 0x0917, 0x0935, 0x0926, 0x094d, 0x0917, 0x0940, 0x0924,
sl@0
   119
    0x093e, 0x0020, 0x0905, 0x0927, 0x094d, 0x092f, 0x093e, 0x092f,
sl@0
   120
    0x0020, 0x0905, 0x0930, 0x094d, 0x091c, 0x0941, 0x0928, 0x0020,
sl@0
   121
    0x0935, 0x093f, 0x0937, 0x093e, 0x0926, 0x0020, 0x092f, 0x094b,
sl@0
   122
    0x0917, 0x0020, 0x0927, 0x0943, 0x0924, 0x0930, 0x093e, 0x0937,
sl@0
   123
    0x094d, 0x091f, 0x094d, 0x0930, 0x0020, 0x0909, 0x0935, 0x093E,
sl@0
   124
    0x091A, 0x0943, 0x0020, 0x0927, 0x0930, 0x094d, 0x092e, 0x0915,
sl@0
   125
    0x094d, 0x0937, 0x0947, 0x0924, 0x094d, 0x0930, 0x0947, 0x0020,
sl@0
   126
    0x0915, 0x0941, 0x0930, 0x0941, 0x0915, 0x094d, 0x0937, 0x0947,
sl@0
   127
    0x0924, 0x094d, 0x0930, 0x0947, 0x0020, 0x0938, 0x092e, 0x0935,
sl@0
   128
    0x0947, 0x0924, 0x093e, 0x0020, 0x092f, 0x0941, 0x092f, 0x0941,
sl@0
   129
    0x0924, 0x094d, 0x0938, 0x0935, 0x0903, 0x0020, 0x092e, 0x093e,
sl@0
   130
    0x092e, 0x0915, 0x093e, 0x0903, 0x0020, 0x092a, 0x093e, 0x0923,
sl@0
   131
    0x094d, 0x0921, 0x0935, 0x093e, 0x0936, 0x094d, 0x091a, 0x0948,
sl@0
   132
    0x0935, 0x0020, 0x0915, 0x093f, 0x092e, 0x0915, 0x0941, 0x0930,
sl@0
   133
    0x094d, 0x0935, 0x0924, 0x0020, 0x0938, 0x0902, 0x091c, 0x0935
sl@0
   134
};
sl@0
   135
sl@0
   136
le_int32 devaTextLength = ARRAY_LENGTH(devaText);
sl@0
   137
sl@0
   138
LEUnicode arabText[] =
sl@0
   139
{
sl@0
   140
    0x0623, 0x0633, 0x0627, 0x0633, 0x064B, 0x0627, 0x060C, 0x0020, 
sl@0
   141
    0x062A, 0x062A, 0x0639, 0x0627, 0x0645, 0x0644, 0x0020, 
sl@0
   142
    0x0627, 0x0644, 0x062D, 0x0648, 0x0627, 0x0633, 0x064A, 0x0628, 
sl@0
   143
    0x0020, 0x0641, 0x0642, 0x0637, 0x0020, 0x0645, 0x0639, 0x0020, 
sl@0
   144
    0x0627, 0x0644, 0x0623, 0x0631, 0x0642, 0x0627, 0x0645, 0x060C, 
sl@0
   145
    0x0020, 0x0648, 0x062A, 0x0642, 0x0648, 0x0645, 0x0020, 0x0628, 
sl@0
   146
    0x062A, 0x062E, 0x0632, 0x064A, 0x0646, 0x0020, 0x0627, 0x0644, 
sl@0
   147
    0x0623, 0x062D, 0x0631, 0x0641, 0x0020, 0x0648, 0x0627, 0x0644, 
sl@0
   148
    0x0645, 0x062D, 0x0627, 0x0631, 0x0641, 0x0020, 0x0627, 0x0644, 
sl@0
   149
    0x0623, 0x062E, 0x0631, 0x0649, 0x0020, 0x0628, 0x0639, 0x062F, 
sl@0
   150
    0x0020, 0x0623, 0x0646, 0x0020, 0x062A, 0x064F, 0x0639, 0x0637, 
sl@0
   151
    0x064A, 0x0020, 0x0631, 0x0642, 0x0645, 0x0627, 0x0020, 0x0645, 
sl@0
   152
    0x0639, 0x064A, 0x0646, 0x0627, 0x0020, 0x0644, 0x0643, 0x0644, 
sl@0
   153
    0x0020, 0x0648, 0x0627, 0x062D, 0x062F, 0x0020, 0x0645, 0x0646, 
sl@0
   154
    0x0647, 0x0627, 0x002E, 0x0020, 0x0648, 0x0642, 0x0628, 0x0644, 
sl@0
   155
    0x0020, 0x0627, 0x062E, 0x062A, 0x0631, 0x0627, 0x0639, 0x0020, 
sl@0
   156
    0x0022, 0x064A, 0x0648, 0x0646, 0x0650, 0x0643, 0x0648, 0x062F, 
sl@0
   157
    0x0022, 0x060C, 0x0020, 0x0643, 0x0627, 0x0646, 0x0020, 0x0647, 
sl@0
   158
    0x0646, 0x0627, 0x0643, 0x0020, 0x0645, 0x0626, 0x0627, 0x062A, 
sl@0
   159
    0x0020, 0x0627, 0x0644, 0x0623, 0x0646, 0x0638, 0x0645, 0x0629, 
sl@0
   160
    0x0020, 0x0644, 0x0644, 0x062A, 0x0634, 0x0641, 0x064A, 0x0631, 
sl@0
   161
    0x0020, 0x0648, 0x062A, 0x062E, 0x0635, 0x064A, 0x0635, 0x0020, 
sl@0
   162
    0x0647, 0x0630, 0x0647, 0x0020, 0x0627, 0x0644, 0x0623, 0x0631, 
sl@0
   163
    0x0642, 0x0627, 0x0645, 0x0020, 0x0644, 0x0644, 0x0645, 0x062D, 
sl@0
   164
    0x0627, 0x0631, 0x0641, 0x060C, 0x0020, 0x0648, 0x0644, 0x0645, 
sl@0
   165
    0x0020, 0x064A, 0x0648, 0x062C, 0x062F, 0x0020, 0x0646, 0x0638, 
sl@0
   166
    0x0627, 0x0645, 0x0020, 0x062A, 0x0634, 0x0641, 0x064A, 0x0631, 
sl@0
   167
    0x0020, 0x0648, 0x0627, 0x062D, 0x062F, 0x0020, 0x064A, 0x062D, 
sl@0
   168
    0x062A, 0x0648, 0x064A, 0x0020, 0x0639, 0x0644, 0x0649, 0x0020, 
sl@0
   169
    0x062C, 0x0645, 0x064A, 0x0639, 0x0020, 0x0627, 0x0644, 0x0645, 
sl@0
   170
    0x062D, 0x0627, 0x0631, 0x0641, 0x0020, 0x0627, 0x0644, 0x0636, 
sl@0
   171
    0x0631, 0x0648, 0x0631, 0x064A, 0x0629
sl@0
   172
    
sl@0
   173
    /* The next few sentences...
sl@0
   174
    0x002E, 0x0020, 0x0648, 
sl@0
   175
    0x0639, 0x0644, 0x0649, 0x0020, 0x0633, 0x0628, 0x064A, 0x0644, 
sl@0
   176
    0x0020, 0x0627, 0x0644, 0x0645, 0x062B, 0x0627, 0x0644, 0x060C, 
sl@0
   177
    0x0020, 0x0641, 0x0625, 0x0646, 0x0020, 0x0627, 0x0644, 0x0627, 
sl@0
   178
    0x062A, 0x062D, 0x0627, 0x062F, 0x0020, 0x0627, 0x0644, 0x0623, 
sl@0
   179
    0x0648, 0x0631, 0x0648, 0x0628, 0x064A, 0x0020, 0x0644, 0x0648, 
sl@0
   180
    0x062D, 0x062F, 0x0647, 0x060C, 0x0020, 0x0627, 0x062D, 0x062A, 
sl@0
   181
    0x0648, 0x0649, 0x0020, 0x0627, 0x0644, 0x0639, 0x062F, 0x064A, 
sl@0
   182
    0x062F, 0x0020, 0x0645, 0x0646, 0x0020, 0x0627, 0x0644, 0x0634, 
sl@0
   183
    0x0641, 0x0631, 0x0627, 0x062A, 0x0020, 0x0627, 0x0644, 0x0645, 
sl@0
   184
    0x062E, 0x062A, 0x0644, 0x0641, 0x0629, 0x0020, 0x0644, 0x064A, 
sl@0
   185
    0x063A, 0x0637, 0x064A, 0x0020, 0x062C, 0x0645, 0x064A, 0x0639, 
sl@0
   186
    0x0020, 0x0627, 0x0644, 0x0644, 0x063A, 0x0627, 0x062A, 0x0020, 
sl@0
   187
    0x0627, 0x0644, 0x0645, 0x0633, 0x062A, 0x062E, 0x062F, 0x0645, 
sl@0
   188
    0x0629, 0x0020, 0x0641, 0x064A, 0x0020, 0x0627, 0x0644, 0x0627, 
sl@0
   189
    0x062A, 0x062D, 0x0627, 0x062F, 0x002E, 0x0020, 0x0648, 0x062D, 
sl@0
   190
    0x062A, 0x0649, 0x0020, 0x0644, 0x0648, 0x0020, 0x0627, 0x0639, 
sl@0
   191
    0x062A, 0x0628, 0x0631, 0x0646, 0x0627, 0x0020, 0x0644, 0x063A, 
sl@0
   192
    0x0629, 0x0020, 0x0648, 0x0627, 0x062D, 0x062F, 0x0629, 0x060C, 
sl@0
   193
    0x0020, 0x0643, 0x0627, 0x0644, 0x0644, 0x063A, 0x0629, 0x0020, 
sl@0
   194
    0x0627, 0x0644, 0x0625, 0x0646, 0x062C, 0x0644, 0x064A, 0x0632, 
sl@0
   195
    0x064A, 0x0629, 0x060C, 0x0020, 0x0641, 0x0625, 0x0646, 0x0020, 
sl@0
   196
    0x062C, 0x062F, 0x0648, 0x0644, 0x0020, 0x0634, 0x0641, 0x0631, 
sl@0
   197
    0x0629, 0x0020, 0x0648, 0x0627, 0x062D, 0x062F, 0x0020, 0x0644, 
sl@0
   198
    0x0645, 0x0020, 0x064A, 0x0643, 0x0641, 0x0020, 0x0644, 0x0627, 
sl@0
   199
    0x0633, 0x062A, 0x064A, 0x0639, 0x0627, 0x0628, 0x0020, 0x062C, 
sl@0
   200
    0x0645, 0x064A, 0x0639, 0x0020, 0x0627, 0x0644, 0x0623, 0x062D, 
sl@0
   201
    0x0631, 0x0641, 0x0020, 0x0648, 0x0639, 0x0644, 0x0627, 0x0645, 
sl@0
   202
    0x0627, 0x062A, 0x0020, 0x0627, 0x0644, 0x062A, 0x0631, 0x0642, 
sl@0
   203
    0x064A, 0x0645, 0x0020, 0x0648, 0x0627, 0x0644, 0x0631, 0x0645, 
sl@0
   204
    0x0648, 0x0632, 0x0020, 0x0627, 0x0644, 0x0641, 0x0646, 0x064A, 
sl@0
   205
    0x0629, 0x0020, 0x0648, 0x0627, 0x0644, 0x0639, 0x0644, 0x0645, 
sl@0
   206
    0x064A, 0x0629, 0x0020, 0x0627, 0x0644, 0x0634, 0x0627, 0x0626, 
sl@0
   207
    0x0639, 0x0629, 0x0020, 0x0627, 0x0644, 0x0627, 0x0633, 0x062A, 
sl@0
   208
    0x0639, 0x0645, 0x0627, 0x0644, 0x002E */
sl@0
   209
};
sl@0
   210
le_int32 arabTextLength = ARRAY_LENGTH(arabText);
sl@0
   211
sl@0
   212
sl@0
   213
LEUnicode thaiSample[] =
sl@0
   214
{
sl@0
   215
    0x0E1A, 0x0E17, 0x0E17, 0x0E35, 0x0E48, 0x0E51, 0x0E1E, 0x0E32,
sl@0
   216
    0x0E22, 0x0E38, 0x0E44, 0x0E0B, 0x0E42, 0x0E04, 0x0E25, 0x0E19,
sl@0
   217
    0x0E42, 0x0E14, 0x0E42, 0x0E23, 0x0E18, 0x0E35, 0x0E2D, 0x0E32, 
sl@0
   218
    0x0E28, 0x0E31, 0x0E22, 0x0E2D, 0x0E22, 0x0E39, 0x0E48, 0x0E17,
sl@0
   219
    0x0E48, 0x0E32, 0x0E21, 0x0E01, 0x0E25, 0x0E32, 0x0E07, 0x0E17,
sl@0
   220
    0x0E38, 0x0E48, 0x0E07, 0x0E43, 0x0E2B, 0x0E0D, 0x0E48, 0x0E43,
sl@0
   221
    0x0E19, 0x0E41, 0x0E04, 0x0E19, 0x0E0B, 0x0E31, 0x0E2A, 0x0E01, 
sl@0
   222
    0x0E31, 0x0E1A, 0x0E25, 0x0E38, 0x0E07, 0x0E40, 0x0E2E, 0x0E19,
sl@0
   223
    0x0E23, 0x0E35, 0x0E0A, 0x0E32, 0x0E27, 0x0E44, 0x0E23, 0x0E48,
sl@0
   224
    0x0E41, 0x0E25, 0x0E30, 0x0E1B, 0x0E49, 0x0E32, 0x0E40, 0x0E2D,
sl@0
   225
    0x0E47, 0x0E21, 0x0E20, 0x0E23, 0x0E23, 0x0E22, 0x0E32, 0x0E0A,
sl@0
   226
    0x0E32, 0x0E27, 0x0E44, 0x0E23, 0x0E48, 0x0E1A, 0x0E49, 0x0E32,
sl@0
   227
    0x0E19, 0x0E02, 0x0E2D, 0x0E07, 0x0E1E, 0x0E27, 0x0E01, 0x0E40, 
sl@0
   228
    0x0E02, 0x0E32, 0x0E2B, 0x0E25, 0x0E31, 0x0E07, 0x0E40, 0x0E25,
sl@0
   229
    0x0E47, 0x0E01, 0x0E40, 0x0E1E, 0x0E23, 0x0E32, 0x0E30, 0x0E44,
sl@0
   230
    0x0E21, 0x0E49, 0x0E2A, 0x0E23, 0x0E49, 0x0E32, 0x0E07, 0x0E1A,
sl@0
   231
    0x0E49, 0x0E32, 0x0E19, 0x0E15, 0x0E49, 0x0E2D, 0x0E07, 0x0E02, 
sl@0
   232
    0x0E19, 0x0E21, 0x0E32, 0x0E14, 0x0E49, 0x0E27, 0x0E22, 0x0E40,
sl@0
   233
    0x0E01, 0x0E27, 0x0E35, 0x0E22, 0x0E19, 0x0E40, 0x0E1B, 0x0E47,
sl@0
   234
    0x0E19, 0x0E23, 0x0E30, 0x0E22, 0x0E30, 0x0E17, 0x0E32, 0x0E07,
sl@0
   235
    0x0E2B, 0x0E25, 0x0E32, 0x0E22, 0x0E44, 0x0E21, 0x0E25, 0x0E4C
sl@0
   236
    /* A few more lines...
sl@0
   237
    0x0E1A, 0x0E49, 0x0E32, 0x0E19, 0x0E21, 0x0E35, 0x0E2A, 0x0E35,
sl@0
   238
    0x0E48, 0x0E1D, 0x0E32, 0x0E21, 0x0E35, 0x0E1E, 0x0E37, 0x0E49,
sl@0
   239
    0x0E19, 0x0E01, 0x0E31, 0x0E1A, 0x0E2B, 0x0E25, 0x0E31, 0x0E07,
sl@0
   240
    0x0E04, 0x0E32, 0x0E23, 0x0E27, 0x0E21, 0x0E17, 0x0E33, 0x0E40,
sl@0
   241
    0x0E1B, 0x0E47, 0x0E19, 0x0E2B, 0x0E49, 0x0E2D, 0x0E07, 0x0E40,
sl@0
   242
    0x0E14, 0x0E35, 0x0E22, 0x0E27, 0x0E43, 0x0E19, 0x0E2B, 0x0E49, 
sl@0
   243
    0x0E2D, 0x0E07, 0x0E21, 0x0E35, 0x0E17, 0x0E31, 0x0E49, 0x0E07,
sl@0
   244
    0x0E40, 0x0E15, 0x0E32, 0x0E2B, 0x0E38, 0x0E07, 0x0E15, 0x0E49,
sl@0
   245
    0x0E21, 0x0E17, 0x0E35, 0x0E48, 0x0E2A, 0x0E19, 0x0E34, 0x0E21,
sl@0
   246
    0x0E14, 0x0E39, 0x0E02, 0x0E36, 0x0E49, 0x0E19, 0x0E40, 0x0E25,
sl@0
   247
    0x0E2D, 0x0E30, 0x0E21, 0x0E35, 0x0E15, 0x0E39, 0x0E49, 0x0E43, 
sl@0
   248
    0x0E2A, 0x0E48, 0x0E16, 0x0E49, 0x0E27, 0x0E22, 0x0E0A, 0x0E32,
sl@0
   249
    0x0E21, 0x0E42, 0x0E15, 0x0E4A, 0x0E30, 0x0E40, 0x0E01, 0x0E49,
sl@0
   250
    0x0E32, 0x0E2D, 0x0E35, 0x0E49, 0x0E2A, 0x0E32, 0x0E21, 0x0E2B,
sl@0
   251
    0x0E23
sl@0
   252
    */
sl@0
   253
};
sl@0
   254
sl@0
   255
le_int32 thaiSampleLength = ARRAY_LENGTH(thaiSample);
sl@0
   256
sl@0
   257
TestInput testInputs[] = {
sl@0
   258
    {"raghu.ttf",             devaText,   devaTextLength,   devaScriptCode, FALSE},
sl@0
   259
    {"CODE2000.TTF",             arabText,   arabTextLength,   arabScriptCode, TRUE},
sl@0
   260
    {"LucidaSansRegular.ttf", arabText,   arabTextLength,   arabScriptCode, TRUE},
sl@0
   261
    {"Thonburi.ttf",          thaiSample, thaiSampleLength, thaiScriptCode, FALSE}
sl@0
   262
};
sl@0
   263
sl@0
   264
#define TEST_COUNT ARRAY_LENGTH(testInputs)
sl@0
   265
sl@0
   266
le_int32 testCount = TEST_COUNT;
sl@0
   267
sl@0
   268
void dumpShorts(FILE *file, char *label, le_int32 id, le_uint16 *shorts, le_int32 count) {
sl@0
   269
    char lineBuffer[8 * 8 + 2];
sl@0
   270
    le_int32 bufp = 0;
sl@0
   271
sl@0
   272
    fprintf(file, label, id);
sl@0
   273
sl@0
   274
    for (int i = 0; i < count; i += 1) {
sl@0
   275
        if (i % 8 == 0 && bufp != 0) {
sl@0
   276
            fprintf(file, "    %s\n", lineBuffer);
sl@0
   277
            bufp = 0;
sl@0
   278
        }
sl@0
   279
sl@0
   280
        bufp += sprintf(&lineBuffer[bufp], "0x%4.4X, ", shorts[i]);
sl@0
   281
    }
sl@0
   282
sl@0
   283
    if (bufp != 0) {
sl@0
   284
        lineBuffer[bufp - 2] = '\0';
sl@0
   285
        fprintf(file, "    %s\n", lineBuffer);
sl@0
   286
    }
sl@0
   287
sl@0
   288
    fprintf(file, "};\n\n");
sl@0
   289
}
sl@0
   290
sl@0
   291
void dumpLongs(FILE *file, char *label, le_int32 id, le_int32 *longs, le_int32 count) {
sl@0
   292
    char lineBuffer[8 * 12 + 2];
sl@0
   293
    le_int32 bufp = 0;
sl@0
   294
sl@0
   295
    fprintf(file, label, id);
sl@0
   296
sl@0
   297
    for (int i = 0; i < count; i += 1) {
sl@0
   298
        if (i % 8 == 0 && bufp != 0) {
sl@0
   299
            fprintf(file, "    %s\n", lineBuffer);
sl@0
   300
            bufp = 0;
sl@0
   301
        }
sl@0
   302
sl@0
   303
        bufp += sprintf(&lineBuffer[bufp], "0x%8.8X, ", longs[i]);
sl@0
   304
    }
sl@0
   305
sl@0
   306
    if (bufp != 0) {
sl@0
   307
        lineBuffer[bufp - 2] = '\0';
sl@0
   308
        fprintf(file, "    %s\n", lineBuffer);
sl@0
   309
    }
sl@0
   310
sl@0
   311
    fprintf(file, "};\n\n");
sl@0
   312
}
sl@0
   313
sl@0
   314
void dumpFloats(FILE *file, char *label, le_int32 id, float *floats, le_int32 count) {
sl@0
   315
    char lineBuffer[8 * 16 + 2];
sl@0
   316
    le_int32 bufp = 0;
sl@0
   317
sl@0
   318
    fprintf(file, label, id);
sl@0
   319
sl@0
   320
    for (int i = 0; i < count; i += 1) {
sl@0
   321
        if (i % 8 == 0 && bufp != 0) {
sl@0
   322
            fprintf(file, "    %s\n", lineBuffer);
sl@0
   323
            bufp = 0;
sl@0
   324
        }
sl@0
   325
sl@0
   326
        bufp += sprintf(&lineBuffer[bufp], "%fF, ", floats[i]);
sl@0
   327
    }
sl@0
   328
sl@0
   329
    if (bufp != 0) {
sl@0
   330
        lineBuffer[bufp - 2] = '\0';
sl@0
   331
        fprintf(file, "    %s\n", lineBuffer);
sl@0
   332
    }
sl@0
   333
sl@0
   334
    fprintf(file, "};\n\n");
sl@0
   335
}
sl@0
   336
sl@0
   337
const char *getShortName(le_int32 scriptCode)
sl@0
   338
{
sl@0
   339
    static char shortName[5];
sl@0
   340
    const char *name = uscript_getShortName((UScriptCode) scriptCode);
sl@0
   341
sl@0
   342
    shortName[0] = tolower(name[0]);
sl@0
   343
    shortName[1] = tolower(name[1]);
sl@0
   344
    shortName[2] = tolower(name[2]);
sl@0
   345
    shortName[3] = tolower(name[3]);
sl@0
   346
    shortName[4] = '\0';
sl@0
   347
sl@0
   348
    return shortName;
sl@0
   349
}
sl@0
   350
sl@0
   351
int main(int argc, char *argv[])
sl@0
   352
{
sl@0
   353
    le_int32 test;
sl@0
   354
    FILE *outputFile = fopen(argv[1], "w");
sl@0
   355
sl@0
   356
    fprintf(outputFile, header);
sl@0
   357
sl@0
   358
    for (test = 0; test < testCount; test += 1) {
sl@0
   359
        LEErrorCode fontStatus = LE_NO_ERROR;
sl@0
   360
        PortableFontInstance fontInstance(testInputs[test].fontName, 12, fontStatus);
sl@0
   361
sl@0
   362
        if (LE_FAILURE(fontStatus)) {
sl@0
   363
            printf("ERROR: test case %d, could not get a font instance for %s\n", test, testInputs[test].fontName);
sl@0
   364
            continue;
sl@0
   365
        }
sl@0
   366
sl@0
   367
        LEErrorCode success = LE_NO_ERROR;
sl@0
   368
        LayoutEngine *engine = LayoutEngine::layoutEngineFactory(&fontInstance, testInputs[test].scriptCode, -1, success);
sl@0
   369
        le_uint32  glyphCount;
sl@0
   370
        LEGlyphID *glyphs;
sl@0
   371
        le_int32  *indices;
sl@0
   372
        float     *positions;
sl@0
   373
sl@0
   374
        if (LE_FAILURE(success)) {
sl@0
   375
            printf("ERROR: test case %d, could not create a LayoutEngine for script %s.\n", test, uscript_getName((UScriptCode) testInputs[test].scriptCode));
sl@0
   376
            continue;
sl@0
   377
        }
sl@0
   378
sl@0
   379
        glyphCount = engine->layoutChars(testInputs[test].text, 0, testInputs[test].textLength, testInputs[test].textLength, testInputs[test].rightToLeft, 0, 0, success);
sl@0
   380
sl@0
   381
        glyphs    = new LEGlyphID[glyphCount];
sl@0
   382
        indices   = new le_int32[glyphCount];
sl@0
   383
        positions = new float[glyphCount * 2 + 2];
sl@0
   384
sl@0
   385
        engine->getGlyphs(glyphs, success);
sl@0
   386
        engine->getCharIndices(indices, success);
sl@0
   387
        engine->getGlyphPositions(positions, success);
sl@0
   388
sl@0
   389
        //fprintf(outputFile, "font: %s\n", testInputs[test].fontName);
sl@0
   390
        dumpShorts(outputFile, "LEUnicode inputText%d[] =\n{\n", test, testInputs[test].text, testInputs[test].textLength);
sl@0
   391
sl@0
   392
        dumpLongs(outputFile, "LEGlyphID resultGlyphs%d[] =\n{\n", test, (le_int32 *) glyphs, glyphCount);
sl@0
   393
        fprintf(outputFile, "le_int32 resultGlyphCount%d = %d;\n\n", test, glyphCount);
sl@0
   394
sl@0
   395
        dumpLongs(outputFile, "le_int32 resultIndices%d[] =\n{\n", test, indices, glyphCount);
sl@0
   396
sl@0
   397
        dumpFloats(outputFile, "float resultPositions%d[] =\n{\n", test, positions, glyphCount * 2 + 2);
sl@0
   398
sl@0
   399
        fprintf(outputFile, "\n");
sl@0
   400
sl@0
   401
        delete[] positions;
sl@0
   402
        delete[] indices;
sl@0
   403
        delete[] glyphs;
sl@0
   404
        delete   engine;
sl@0
   405
    }
sl@0
   406
sl@0
   407
    fprintf(outputFile, "TestInput testInputs[] = \n{\n");
sl@0
   408
sl@0
   409
    for (test = 0; test < testCount; test += 1) {
sl@0
   410
        fprintf(outputFile, "    {\"%s\", inputText%d, %d, %sScriptCode, %s},\n",
sl@0
   411
            testInputs[test].fontName, test, testInputs[test].textLength, getShortName(testInputs[test].scriptCode),
sl@0
   412
            testInputs[test].rightToLeft? "TRUE" : "FALSE");
sl@0
   413
    }
sl@0
   414
sl@0
   415
    fprintf(outputFile, "};\n\nle_int32 testCount = ARRAY_LENGTH(testInputs);\n\n");
sl@0
   416
sl@0
   417
    fprintf(outputFile, "TestResult testResults[] = \n{\n");
sl@0
   418
sl@0
   419
    for (test = 0; test < testCount; test += 1) {
sl@0
   420
        fprintf(outputFile, "    {resultGlyphCount%d, resultGlyphs%d, resultIndices%d, resultPositions%d},\n",
sl@0
   421
            test, test, test, test);
sl@0
   422
    }
sl@0
   423
sl@0
   424
    fprintf(outputFile, "};\n\n");
sl@0
   425
sl@0
   426
    fclose(outputFile);
sl@0
   427
    return 0;
sl@0
   428
}