/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
/*
*
* (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
*
*/
#include "LETypes.h"
#include "LEGlyphFilter.h"
#include "OpenTypeTables.h"
#include "LEGlyphStorage.h"
#include "ThaiShaping.h"
enum {
};
{
}
return charClass;
}
{
{0x0E61, 0x0E32, 0x0E33, 0x0E64, 0x0E65, 0x0E66, 0x0E67},
{0xF710, 0x0E32, 0x0E33, 0xF701, 0xF702, 0xF703, 0xF704},
{0xF884, 0x0E32, 0x0E33, 0xF885, 0xF886, 0xF887, 0xF788},
{0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37}
};
}
return 0x0E7E;
}
return vowel;
}
{
{0x0E68, 0x0E69, 0x0E6A, 0x0E6B, 0x0E6C, 0x0E6D, 0x0E6E},
{0x0E47, 0xF70A, 0xF70B, 0xF70C, 0xF70D, 0xF70E, 0x0E4D},
{0x0E47, 0xF88B, 0xF88E, 0xF891, 0xF894, 0xF897, 0x0E4D},
{0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D}
};
}
return tone;
}
{
{0x0E76, 0x0E77, 0x0E78, 0x0E79, 0x0E7A, 0x0E7B, 0x0E7C},
{0xF712, 0xF705, 0xF706, 0xF707, 0xF708, 0xF709, 0xF711},
{0xF889, 0xF88C, 0xF88F, 0xF892, 0xF895, 0xF898, 0xF899},
{0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D}
};
}
return tone;
}
{
{0x0E6F, 0x0E70, 0x0E71, 0x0E72, 0x0E73, 0x0E74, 0x0E75},
{0xF712, 0xF713, 0xF714, 0xF715, 0xF716, 0xF717, 0xF711},
{0xF889, 0xF88A, 0xF88D, 0xF890, 0xF893, 0xF896, 0xF899},
{0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D}
};
}
return tone;
}
{
{0x0E3C, 0x0E3D, 0x0E3E},
{0xF718, 0xF719, 0xF71A},
{0x0E38, 0x0E39, 0x0E3A},
{0x0E38, 0x0E39, 0x0E3A}
};
}
return vowel;
}
{
{0x0E60, 0x0E0E, 0x0E0F, 0x0E63},
{0xF70F, 0x0E0E, 0x0E0F, 0xF700},
{0x0E0D, 0x0E0E, 0x0E0F, 0x0E10},
{0x0E0D, 0x0E0E, 0x0E0F, 0x0E10}
};
}
return cod;
}
le_uint8 ThaiShaping::doTransition (StateTransition transition, LEUnicode currChar, le_int32 inputIndex, le_uint8 glyphSet,
{
switch (transition.action) {
case tA:
break;
case tC:
break;
case tD:
break;
case tE:
break;
case tF:
break;
case tG:
break;
case tH:
{
break;
}
break;
}
case tR:
break;
case tS:
if (currChar == CH_SARA_AM) {
}
break;
default:
// FIXME: if we get here, there's an error
// in the state table!
break;
}
return transition.nextState;
}
le_uint8 ThaiShaping::getNextState(LEUnicode ch, le_uint8 prevState, le_int32 inputIndex, le_uint8 glyphSet, LEUnicode errorChar,
{
return doTransition(transition, ch, inputIndex, glyphSet, errorChar, output, glyphStorage, outputIndex);
}
{
switch (transition.action) {
case tA:
case tC:
case tD:
case tE:
case tF:
case tG:
case tH:
return TRUE;
case tR:
case tS:
return FALSE;
default:
// FIXME: if we get here, there's an error
// in the state table!
return FALSE;
}
}
le_int32 ThaiShaping::compose(const LEUnicode *input, le_int32 offset, le_int32 charCount, le_uint8 glyphSet,
{
// Decompose SARA AM into NIKHAHIT + SARA AA
}
ch = CH_SARA_AA;
}
}
}
return outputIndex;
}