os/textandloc/fontservices/textshaperplugin/IcuSource/layout/HanLayoutEngine.h
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
 * HanLayoutEngine.h: OpenType processing for Han fonts.
sl@0
     4
 *
sl@0
     5
 * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved.
sl@0
     6
 */
sl@0
     7
sl@0
     8
#ifndef __HANLAYOUTENGINE_H
sl@0
     9
#define __HANLAYOUTENGINE_H
sl@0
    10
sl@0
    11
#include "LETypes.h"
sl@0
    12
#include "LEFontInstance.h"
sl@0
    13
#include "LayoutEngine.h"
sl@0
    14
#include "OpenTypeLayoutEngine.h"
sl@0
    15
sl@0
    16
#include "GlyphSubstitutionTables.h"
sl@0
    17
sl@0
    18
U_NAMESPACE_BEGIN
sl@0
    19
sl@0
    20
class LEGlyphStorage;
sl@0
    21
sl@0
    22
/**
sl@0
    23
 * This class implements OpenType layout for Han fonts. It overrides
sl@0
    24
 * the characerProcessing method to assign the correct OpenType feature
sl@0
    25
 * tags for the CJK language-specific forms.
sl@0
    26
 *
sl@0
    27
 * @internal
sl@0
    28
 */
sl@0
    29
class HanOpenTypeLayoutEngine : public OpenTypeLayoutEngine
sl@0
    30
{
sl@0
    31
public:
sl@0
    32
    /**
sl@0
    33
     * This is the main constructor. It constructs an instance of HanOpenTypeLayoutEngine for
sl@0
    34
     * a particular font, script and language. It takes the GSUB table as a parameter since
sl@0
    35
     * LayoutEngine::layoutEngineFactory has to read the GSUB table to know that it has a
sl@0
    36
     * Han OpenType font.
sl@0
    37
     *
sl@0
    38
     * @param fontInstance - the font
sl@0
    39
     * @param scriptCode - the script
sl@0
    40
     * @param langaugeCode - the language
sl@0
    41
     * @param gsubTable - the GSUB table
sl@0
    42
     *
sl@0
    43
     * @see LayoutEngine::layoutEngineFactory
sl@0
    44
     * @see OpenTypeLayoutEngine
sl@0
    45
     * @see ScriptAndLangaugeTags.h for script and language codes
sl@0
    46
     *
sl@0
    47
     * @internal
sl@0
    48
     */
sl@0
    49
    HanOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
sl@0
    50
                            le_int32 typoFlags, const GlyphSubstitutionTableHeader *gsubTable);
sl@0
    51
sl@0
    52
sl@0
    53
    /**
sl@0
    54
     * The destructor, virtual for correct polymorphic invocation.
sl@0
    55
     *
sl@0
    56
     * @internal
sl@0
    57
     */
sl@0
    58
    virtual ~HanOpenTypeLayoutEngine();
sl@0
    59
sl@0
    60
    /**
sl@0
    61
     * ICU "poor man's RTTI", returns a UClassID for the actual class.
sl@0
    62
     *
sl@0
    63
     * @stable ICU 2.8
sl@0
    64
     */
sl@0
    65
    virtual UClassID getDynamicClassID() const;
sl@0
    66
sl@0
    67
    /**
sl@0
    68
     * ICU "poor man's RTTI", returns a UClassID for this class.
sl@0
    69
     *
sl@0
    70
     * @stable ICU 2.8
sl@0
    71
     */
sl@0
    72
    static UClassID getStaticClassID();
sl@0
    73
sl@0
    74
protected:
sl@0
    75
sl@0
    76
    /**
sl@0
    77
     * This method does Han OpenType character processing. It assigns the OpenType feature
sl@0
    78
     * tags to the characters to generate the correct language-specific variants.
sl@0
    79
     *
sl@0
    80
     * Input parameters:
sl@0
    81
     * @param chars - the input character context
sl@0
    82
     * @param offset - the index of the first character to process
sl@0
    83
     * @param count - the number of characters to process
sl@0
    84
     * @param max - the number of characters in the input context
sl@0
    85
     * @param rightToLeft - <code>TRUE</code> if the characters are in a right to left directional run
sl@0
    86
     * @param glyphStorage - the object holding the glyph storage. The char index and auxillary data arrays will be set.
sl@0
    87
     *
sl@0
    88
     * Output parameters:
sl@0
    89
     * @param outChars - the output character arrayt
sl@0
    90
     * @param charIndices - the output character index array
sl@0
    91
     * @param featureTags - the output feature tag array
sl@0
    92
     * @param success - set to an error code if the operation fails
sl@0
    93
     *
sl@0
    94
     * @return the output character count
sl@0
    95
     *
sl@0
    96
     * @internal
sl@0
    97
     */
sl@0
    98
    virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
sl@0
    99
            LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
sl@0
   100
sl@0
   101
};
sl@0
   102
sl@0
   103
U_NAMESPACE_END
sl@0
   104
#endif