Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85594cb7 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Add processing for French ligatures."

parents 3d3ee645 cc78d03a
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2012, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<resources>
    <bool name="config_require_ligatures_processing">true</bool>
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -20,4 +20,5 @@

<resources>
    <bool name="config_require_umlaut_processing">false</bool>
    <bool name="config_require_ligatures_processing">false</bool>
</resources>
+3 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ public class BinaryDictionary extends Dictionary {

    public static final Flag FLAG_REQUIRES_GERMAN_UMLAUT_PROCESSING =
            new Flag(R.bool.config_require_umlaut_processing, 0x1);
    public static final Flag FLAG_REQUIRES_FRENCH_LIGATURES_PROCESSING =
            new Flag(R.bool.config_require_ligatures_processing, 0x4);

    // FULL_EDIT_DISTANCE is a flag that forces the dictionary to use full words
    // when computing edit distance, instead of the default behavior of stopping
@@ -77,6 +79,7 @@ public class BinaryDictionary extends Dictionary {
        // actual value will be read from the configuration/extra value at run time for
        // the configuration at dictionary creation time.
        FLAG_REQUIRES_GERMAN_UMLAUT_PROCESSING,
        FLAG_REQUIRES_FRENCH_LIGATURES_PROCESSING,
    };

    private int mFlags = 0;
+13 −0
Original line number Diff line number Diff line
@@ -34,6 +34,10 @@ const UnigramDictionary::digraph_t UnigramDictionary::GERMAN_UMLAUT_DIGRAPHS[] =
        { 'o', 'e', 0x00F6 }, // U+00F6 : LATIN SMALL LETTER O WITH DIAERESIS
        { 'u', 'e', 0x00FC } }; // U+00FC : LATIN SMALL LETTER U WITH DIAERESIS

const UnigramDictionary::digraph_t UnigramDictionary::FRENCH_LIGATURES_DIGRAPHS[] =
        { { 'a', 'e', 0x00E6 }, // U+00E6 : LATIN SMALL LETTER AE
        { 'o', 'e', 0x0153 } }; // U+0153 : LATIN SMALL LIGATURE OE

// TODO: check the header
UnigramDictionary::UnigramDictionary(const uint8_t* const streamStart, int typedLetterMultiplier,
        int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars,
@@ -181,6 +185,15 @@ int UnigramDictionary::getSuggestions(ProximityInfo *proximityInfo,
                codesSize, flags, codes, codesSize, 0, codesBuffer, masterCorrection, queuePool,
                GERMAN_UMLAUT_DIGRAPHS,
                sizeof(GERMAN_UMLAUT_DIGRAPHS) / sizeof(GERMAN_UMLAUT_DIGRAPHS[0]));
    } else if (REQUIRES_FRENCH_LIGATURES_PROCESSING & flags) {
        int codesBuffer[getCodesBufferSize(codes, codesSize, MAX_PROXIMITY_CHARS)];
        int xCoordinatesBuffer[codesSize];
        int yCoordinatesBuffer[codesSize];
        getWordWithDigraphSuggestionsRec(proximityInfo, xcoordinates, ycoordinates, codesBuffer,
                xCoordinatesBuffer, yCoordinatesBuffer,
                codesSize, flags, codes, codesSize, 0, codesBuffer, masterCorrection, queuePool,
                FRENCH_LIGATURES_DIGRAPHS,
                sizeof(FRENCH_LIGATURES_DIGRAPHS) / sizeof(FRENCH_LIGATURES_DIGRAPHS[0]));
    } else { // Normal processing
        getWordSuggestions(proximityInfo, xcoordinates, ycoordinates, codes, codesSize, flags,
                masterCorrection, queuePool);
+3 −1
Original line number Diff line number Diff line
@@ -157,9 +157,11 @@ class UnigramDictionary {
    // Please update both at the same time.
    enum {
        REQUIRES_GERMAN_UMLAUT_PROCESSING = 0x1,
        USE_FULL_EDIT_DISTANCE = 0x2
        USE_FULL_EDIT_DISTANCE = 0x2,
        REQUIRES_FRENCH_LIGATURES_PROCESSING = 0x4
    };
    static const digraph_t GERMAN_UMLAUT_DIGRAPHS[];
    static const digraph_t FRENCH_LIGATURES_DIGRAPHS[];

    // Still bundled members
    unsigned short mWord[MAX_WORD_LENGTH_INTERNAL];// TODO: remove