Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
halo
external_skia
Commits
5f421caf
Commit
5f421caf
authored
12 years ago
by
Jean-Baptiste Queru
Committed by
Android Git Automerger
12 years ago
Browse files
Options
Download
Plain Diff
am
c2ad1992
: Merge "Forward-compatibility stubs"
* commit '
c2ad1992
': Forward-compatibility stubs
parents
dccf2260
c2ad1992
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
138 additions
and
0 deletions
+138
-0
Android.mk
Android.mk
+1
-0
include/core/SkLanguage.h
include/core/SkLanguage.h
+70
-0
include/core/SkPaint.h
include/core/SkPaint.h
+9
-0
src/core/SkLanguage.cpp
src/core/SkLanguage.cpp
+54
-0
src/core/SkPaint.cpp
src/core/SkPaint.cpp
+4
-0
No files found.
Android.mk
View file @
5f421caf
...
...
@@ -108,6 +108,7 @@ LOCAL_SRC_FILES:= \
src/core/SkGeometry.cpp
\
src/core/SkGlyphCache.cpp
\
src/core/SkGraphics.cpp
\
src/core/SkLanguage.cpp
\
src/core/SkLineClipper.cpp
\
src/core/SkMallocPixelRef.cpp
\
src/core/SkMask.cpp
\
...
...
This diff is collapsed.
Click to expand it.
include/core/SkLanguage.h
0 → 100644
View file @
5f421caf
/*
* Copyright 2012 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkLanguage_DEFINED
#define SkLanguage_DEFINED
#include "SkTypes.h"
#ifdef SK_BUILD_FOR_ANDROID
#include "SkString.h"
struct
SkLanguageInfo
{
SkLanguageInfo
(
const
char
*
tag
)
:
fTag
(
tag
)
{
}
SkString
fTag
;
//! BCP 47 language identifier
};
/** \class SkLanguage
The SkLanguage class represents a human written language, and is used by
text draw operations to determine which glyph to draw when drawing
characters with variants (ie Han-derived characters).
*/
class
SkLanguage
{
public:
SkLanguage
()
:
fInfo
(
getInfo
(
""
))
{
}
SkLanguage
(
const
char
*
tag
)
:
fInfo
(
getInfo
(
tag
))
{
}
SkLanguage
(
const
SkLanguage
&
b
)
:
fInfo
(
b
.
fInfo
)
{
}
/** Gets a BCP 47 language identifier for this SkLanguage.
@return a BCP 47 language identifier representing this language
*/
const
SkString
&
getTag
()
const
{
return
fInfo
->
fTag
;
}
/** Performs BCP 47 fallback to return an SkLanguage one step more general.
@return an SkLanguage one step more general
*/
SkLanguage
getParent
()
const
;
bool
operator
==
(
const
SkLanguage
&
b
)
const
{
return
fInfo
==
b
.
fInfo
;
}
bool
operator
!=
(
const
SkLanguage
&
b
)
const
{
return
fInfo
!=
b
.
fInfo
;
}
bool
operator
<
(
const
SkLanguage
&
b
)
const
{
return
fInfo
<
b
.
fInfo
;
}
bool
operator
>
(
const
SkLanguage
&
b
)
const
{
return
fInfo
>
b
.
fInfo
;
}
SkLanguage
&
operator
=
(
const
SkLanguage
&
b
)
{
fInfo
=
b
.
fInfo
;
return
*
this
;
}
private:
const
SkLanguageInfo
*
fInfo
;
static
const
SkLanguageInfo
*
getInfo
(
const
char
*
tag
);
};
#endif // #ifdef SK_BUILD_FOR_ANDROID
#endif // #ifndef SkLanguage_DEFINED
This diff is collapsed.
Click to expand it.
include/core/SkPaint.h
View file @
5f421caf
...
...
@@ -15,6 +15,10 @@
#include "SkXfermode.h"
#include "SkString.h"
#ifdef SK_BUILD_FOR_ANDROID
#include "SkLanguage.h"
#endif
class
SkAutoGlyphCache
;
class
SkColorFilter
;
class
SkDescriptor
;
...
...
@@ -665,6 +669,11 @@ public:
@param locale set the paint's locale value for drawing text.
*/
void
setTextLocale
(
const
SkString
&
locale
);
/** Set the paint's language value used for drawing text.
@param language set the paint's language value for drawing text.
*/
void
setLanguage
(
const
SkLanguage
&
language
);
#endif
/** Return the paint's text size.
...
...
This diff is collapsed.
Click to expand it.
src/core/SkLanguage.cpp
0 → 100644
View file @
5f421caf
/*
* Copyright 2012 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "SkLanguage.h"
#ifdef SK_BUILD_FOR_ANDROID // currently only for Android
#include "SkTDict.h"
#include "SkThread.h"
#include <cstring>
SkLanguage
SkLanguage
::
getParent
()
const
{
SkASSERT
(
fInfo
!=
NULL
);
SkASSERT
(
fInfo
->
fTag
!=
NULL
);
const
char
*
tag
=
fInfo
->
fTag
.
c_str
();
SkASSERT
(
tag
!=
NULL
);
// strip off the rightmost "-.*"
char
*
parentTagEnd
=
strrchr
(
tag
,
'-'
);
if
(
parentTagEnd
==
NULL
)
{
return
SkLanguage
(
""
);
}
size_t
parentTagLen
=
parentTagEnd
-
tag
;
char
parentTag
[
parentTagLen
+
1
];
strncpy
(
parentTag
,
tag
,
parentTagLen
);
parentTag
[
parentTagLen
]
=
'\0'
;
return
SkLanguage
(
parentTag
);
}
SK_DECLARE_STATIC_MUTEX
(
gGetInfoMutex
);
const
SkLanguageInfo
*
SkLanguage
::
getInfo
(
const
char
*
tag
)
{
SkAutoMutexAcquire
lock
(
gGetInfoMutex
);
static
const
size_t
kDictSize
=
128
;
static
SkTDict
<
SkLanguageInfo
*>
tagToInfo
(
kDictSize
);
// try a lookup
SkLanguageInfo
*
info
;
if
(
tagToInfo
.
find
(
tag
,
&
info
))
{
return
info
;
}
// no match - add this language
info
=
new
SkLanguageInfo
(
tag
);
tagToInfo
.
set
(
tag
,
info
);
return
info
;
}
#endif
This diff is collapsed.
Click to expand it.
src/core/SkPaint.cpp
View file @
5f421caf
...
...
@@ -372,6 +372,10 @@ void SkPaint::setTextLocale(const SkString& locale) {
GEN_ID_INC
;
}
}
void
SkPaint
::
setLanguage
(
const
SkLanguage
&
language
)
{
setTextLocale
(
SkString
(
language
.
getTag
()));
}
#endif
///////////////////////////////////////////////////////////////////////////////
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment