~ubuntu-branches/ubuntu/quantal/icu/quantal

« back to all changes in this revision

Viewing changes to source/layout/ScriptAndLanguage.cpp

  • Committer: Package Import Robot
  • Author(s): Yves Arrouye
  • Date: 2002-03-03 15:31:13 UTC
  • Revision ID: package-import@ubuntu.com-20020303153113-3ssceqlq45xbmbnc
Tags: upstream-2.0-2.1pre20020303
ImportĀ upstreamĀ versionĀ 2.0-2.1pre20020303

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * %W% %E%
 
3
 *
 
4
 * (C) Copyright IBM Corp. 1998, 1999, 2000, 2001 - All Rights Reserved
 
5
 *
 
6
 */
 
7
 
 
8
#include "LETypes.h"
 
9
#include "OpenTypeTables.h"
 
10
#include "OpenTypeUtilities.h"
 
11
#include "ScriptAndLanguage.h"
 
12
#include "LESwaps.h"
 
13
 
 
14
U_NAMESPACE_BEGIN
 
15
 
 
16
const LangSysTable *ScriptTable::findLanguage(LETag languageTag) const
 
17
{
 
18
    le_uint16 count = SWAPW(langSysCount);
 
19
    Offset langSysTableOffset = defaultLangSysTableOffset;
 
20
 
 
21
    if (count > 0) {
 
22
        Offset foundOffset =
 
23
            OpenTypeUtilities::getTagOffset(languageTag, langSysRecordArray, count);
 
24
 
 
25
        if (foundOffset != 0) {
 
26
            langSysTableOffset = foundOffset;
 
27
        }
 
28
    }
 
29
 
 
30
        if (langSysTableOffset != 0) {
 
31
                return (const LangSysTable *) ((char *)this + SWAPW(langSysTableOffset));
 
32
        }
 
33
 
 
34
        return 0;
 
35
}
 
36
 
 
37
const ScriptTable *ScriptListTable::findScript(LETag scriptTag) const
 
38
{
 
39
    le_uint16 count = SWAPW(scriptCount);
 
40
    Offset scriptTableOffset =
 
41
        OpenTypeUtilities::getTagOffset(scriptTag, scriptRecordArray, count);
 
42
 
 
43
    if (scriptTableOffset != 0) {
 
44
        return (const ScriptTable *) ((char *)this + scriptTableOffset);
 
45
    }
 
46
 
 
47
    return 0;
 
48
}
 
49
 
 
50
const LangSysTable *ScriptListTable::findLanguage(LETag scriptTag, LETag languageTag) const
 
51
{
 
52
    const ScriptTable *scriptTable = findScript(scriptTag);
 
53
 
 
54
    if (scriptTable == 0) {
 
55
        return 0;
 
56
    }
 
57
 
 
58
    return scriptTable->findLanguage(languageTag);
 
59
}
 
60
 
 
61
U_NAMESPACE_END