Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
LatinIME
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
keyboard
LatinIME
Commits
8523720b
Commit
8523720b
authored
10 years ago
by
Tadashi G. Takaoka
Browse files
Options
Downloads
Patches
Plain Diff
Remove deprecated Canvas.clipRegion(Region) call
Change-Id: I88e0a8d327c17bf4bafbe44cdfa265f5d0acb879
parent
0cd1f222
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
java/src/com/android/inputmethod/keyboard/KeyboardView.java
+58
-56
58 additions, 56 deletions
java/src/com/android/inputmethod/keyboard/KeyboardView.java
with
58 additions
and
56 deletions
java/src/com/android/inputmethod/keyboard/KeyboardView.java
+
58
−
56
View file @
8523720b
...
@@ -25,7 +25,6 @@ import android.graphics.Paint;
...
@@ -25,7 +25,6 @@ import android.graphics.Paint;
import
android.graphics.Paint.Align
;
import
android.graphics.Paint.Align
;
import
android.graphics.PorterDuff
;
import
android.graphics.PorterDuff
;
import
android.graphics.Rect
;
import
android.graphics.Rect
;
import
android.graphics.Region
;
import
android.graphics.Typeface
;
import
android.graphics.Typeface
;
import
android.graphics.drawable.Drawable
;
import
android.graphics.drawable.Drawable
;
import
android.graphics.drawable.NinePatchDrawable
;
import
android.graphics.drawable.NinePatchDrawable
;
...
@@ -41,6 +40,7 @@ import com.android.inputmethod.latin.utils.TypefaceUtils;
...
@@ -41,6 +40,7 @@ import com.android.inputmethod.latin.utils.TypefaceUtils;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
javax.annotation.Nonnull
;
import
javax.annotation.Nullable
;
import
javax.annotation.Nullable
;
/**
/**
...
@@ -100,6 +100,8 @@ public class KeyboardView extends View {
...
@@ -100,6 +100,8 @@ public class KeyboardView extends View {
private
static
final
float
MAX_LABEL_RATIO
=
0.90f
;
private
static
final
float
MAX_LABEL_RATIO
=
0.90f
;
// Main keyboard
// Main keyboard
// TODO: Consider having a dummy keyboard object to make this @Nonnull
@Nullable
private
Keyboard
mKeyboard
;
private
Keyboard
mKeyboard
;
protected
final
KeyDrawParams
mKeyDrawParams
=
new
KeyDrawParams
();
protected
final
KeyDrawParams
mKeyDrawParams
=
new
KeyDrawParams
();
...
@@ -108,14 +110,14 @@ public class KeyboardView extends View {
...
@@ -108,14 +110,14 @@ public class KeyboardView extends View {
private
boolean
mInvalidateAllKeys
;
private
boolean
mInvalidateAllKeys
;
/** The keys that should be drawn */
/** The keys that should be drawn */
private
final
HashSet
<
Key
>
mInvalidatedKeys
=
new
HashSet
<>();
private
final
HashSet
<
Key
>
mInvalidatedKeys
=
new
HashSet
<>();
/** The working rectangle
variable
*/
/** The working rectangle
for clipping
*/
private
final
Rect
m
Working
Rect
=
new
Rect
();
private
final
Rect
m
Clip
Rect
=
new
Rect
();
/** The keyboard bitmap buffer for faster updates */
/** The keyboard bitmap buffer for faster updates */
/** The clip region to draw keys */
private
final
Region
mClipRegion
=
new
Region
();
private
Bitmap
mOffscreenBuffer
;
private
Bitmap
mOffscreenBuffer
;
/** The canvas for the above mutable keyboard bitmap */
/** The canvas for the above mutable keyboard bitmap */
@Nonnull
private
final
Canvas
mOffscreenCanvas
=
new
Canvas
();
private
final
Canvas
mOffscreenCanvas
=
new
Canvas
();
@Nonnull
private
final
Paint
mPaint
=
new
Paint
();
private
final
Paint
mPaint
=
new
Paint
();
private
final
Paint
.
FontMetrics
mFontMetrics
=
new
Paint
.
FontMetrics
();
private
final
Paint
.
FontMetrics
mFontMetrics
=
new
Paint
.
FontMetrics
();
public
KeyboardView
(
final
Context
context
,
final
AttributeSet
attrs
)
{
public
KeyboardView
(
final
Context
context
,
final
AttributeSet
attrs
)
{
...
@@ -161,11 +163,12 @@ public class KeyboardView extends View {
...
@@ -161,11 +163,12 @@ public class KeyboardView extends View {
mPaint
.
setAntiAlias
(
true
);
mPaint
.
setAntiAlias
(
true
);
}
}
@Nullable
public
KeyVisualAttributes
getKeyVisualAttribute
()
{
public
KeyVisualAttributes
getKeyVisualAttribute
()
{
return
mKeyVisualAttributes
;
return
mKeyVisualAttributes
;
}
}
private
static
void
blendAlpha
(
final
Paint
paint
,
final
int
alpha
)
{
private
static
void
blendAlpha
(
@Nonnull
final
Paint
paint
,
final
int
alpha
)
{
final
int
color
=
paint
.
getColor
();
final
int
color
=
paint
.
getColor
();
paint
.
setARGB
((
paint
.
getAlpha
()
*
alpha
)
/
Constants
.
Color
.
ALPHA_OPAQUE
,
paint
.
setARGB
((
paint
.
getAlpha
()
*
alpha
)
/
Constants
.
Color
.
ALPHA_OPAQUE
,
Color
.
red
(
color
),
Color
.
green
(
color
),
Color
.
blue
(
color
));
Color
.
red
(
color
),
Color
.
green
(
color
),
Color
.
blue
(
color
));
...
@@ -184,7 +187,7 @@ public class KeyboardView extends View {
...
@@ -184,7 +187,7 @@ public class KeyboardView extends View {
* @see #getKeyboard()
* @see #getKeyboard()
* @param keyboard the keyboard to display in this view
* @param keyboard the keyboard to display in this view
*/
*/
public
void
setKeyboard
(
final
Keyboard
keyboard
)
{
public
void
setKeyboard
(
@Nonnull
final
Keyboard
keyboard
)
{
mKeyboard
=
keyboard
;
mKeyboard
=
keyboard
;
final
int
keyHeight
=
keyboard
.
mMostCommonKeyHeight
-
keyboard
.
mVerticalGap
;
final
int
keyHeight
=
keyboard
.
mMostCommonKeyHeight
-
keyboard
.
mVerticalGap
;
mKeyDrawParams
.
updateParams
(
keyHeight
,
mKeyVisualAttributes
);
mKeyDrawParams
.
updateParams
(
keyHeight
,
mKeyVisualAttributes
);
...
@@ -198,6 +201,7 @@ public class KeyboardView extends View {
...
@@ -198,6 +201,7 @@ public class KeyboardView extends View {
* @return the currently attached keyboard
* @return the currently attached keyboard
* @see #setKeyboard(Keyboard)
* @see #setKeyboard(Keyboard)
*/
*/
@Nullable
public
Keyboard
getKeyboard
()
{
public
Keyboard
getKeyboard
()
{
return
mKeyboard
;
return
mKeyboard
;
}
}
...
@@ -212,13 +216,14 @@ public class KeyboardView extends View {
...
@@ -212,13 +216,14 @@ public class KeyboardView extends View {
@Override
@Override
protected
void
onMeasure
(
final
int
widthMeasureSpec
,
final
int
heightMeasureSpec
)
{
protected
void
onMeasure
(
final
int
widthMeasureSpec
,
final
int
heightMeasureSpec
)
{
if
(
mKeyboard
==
null
)
{
final
Keyboard
keyboard
=
getKeyboard
();
if
(
keyboard
==
null
)
{
super
.
onMeasure
(
widthMeasureSpec
,
heightMeasureSpec
);
super
.
onMeasure
(
widthMeasureSpec
,
heightMeasureSpec
);
return
;
return
;
}
}
// The main keyboard expands to the entire this {@link KeyboardView}.
// The main keyboard expands to the entire this {@link KeyboardView}.
final
int
width
=
mK
eyboard
.
mOccupiedWidth
+
getPaddingLeft
()
+
getPaddingRight
();
final
int
width
=
k
eyboard
.
mOccupiedWidth
+
getPaddingLeft
()
+
getPaddingRight
();
final
int
height
=
mK
eyboard
.
mOccupiedHeight
+
getPaddingTop
()
+
getPaddingBottom
();
final
int
height
=
k
eyboard
.
mOccupiedHeight
+
getPaddingTop
()
+
getPaddingBottom
();
setMeasuredDimension
(
width
,
height
);
setMeasuredDimension
(
width
,
height
);
}
}
...
@@ -266,52 +271,45 @@ public class KeyboardView extends View {
...
@@ -266,52 +271,45 @@ public class KeyboardView extends View {
}
}
}
}
private
void
onDrawKeyboard
(
final
Canvas
canvas
)
{
private
void
onDrawKeyboard
(
@Nonnull
final
Canvas
canvas
)
{
if
(
mKeyboard
==
null
)
return
;
final
Keyboard
keyboard
=
getKeyboard
();
if
(
keyboard
==
null
)
{
return
;
}
final
int
width
=
getWidth
();
final
int
height
=
getHeight
();
final
Paint
paint
=
mPaint
;
final
Paint
paint
=
mPaint
;
final
Drawable
background
=
getBackground
();
// Calculate clip region and set.
// Calculate clip region and set.
final
boolean
drawAllKeys
=
mInvalidateAllKeys
||
mInvalidatedKeys
.
isEmpty
();
final
boolean
drawAllKeys
=
mInvalidateAllKeys
||
mInvalidatedKeys
.
isEmpty
();
final
boolean
isHardwareAccelerated
=
canvas
.
isHardwareAccelerated
();
final
boolean
isHardwareAccelerated
=
canvas
.
isHardwareAccelerated
();
// TODO: Confirm if it's really required to draw all keys when hardware acceleration is on.
// TODO: Confirm if it's really required to draw all keys when hardware acceleration is on.
if
(
drawAllKeys
||
isHardwareAccelerated
)
{
if
(
drawAllKeys
||
isHardwareAccelerated
)
{
mClipRegion
.
set
(
0
,
0
,
width
,
height
);
if
(!
isHardwareAccelerated
&&
background
!=
null
)
{
}
else
{
// Need to draw keyboard background on {@link #mOffscreenBuffer}.
mClipRegion
.
setEmpty
();
canvas
.
drawColor
(
Color
.
BLACK
,
PorterDuff
.
Mode
.
CLEAR
);
for
(
final
Key
key
:
mInvalidatedKeys
)
{
if
(
mKeyboard
.
hasKey
(
key
))
{
final
int
x
=
key
.
getX
()
+
getPaddingLeft
();
final
int
y
=
key
.
getY
()
+
getPaddingTop
();
mWorkingRect
.
set
(
x
,
y
,
x
+
key
.
getWidth
(),
y
+
key
.
getHeight
());
mClipRegion
.
union
(
mWorkingRect
);
}
}
}
if
(!
isHardwareAccelerated
)
{
canvas
.
clipRegion
(
mClipRegion
,
Region
.
Op
.
REPLACE
);
// Draw keyboard background.
canvas
.
drawColor
(
Color
.
BLACK
,
PorterDuff
.
Mode
.
CLEAR
);
final
Drawable
background
=
getBackground
();
if
(
background
!=
null
)
{
background
.
draw
(
canvas
);
background
.
draw
(
canvas
);
}
}
}
// TODO: Confirm if it's really required to draw all keys when hardware acceleration is on.
if
(
drawAllKeys
||
isHardwareAccelerated
)
{
// Draw all keys.
// Draw all keys.
for
(
final
Key
key
:
mK
eyboard
.
getSortedKeys
())
{
for
(
final
Key
key
:
k
eyboard
.
getSortedKeys
())
{
onDrawKey
(
key
,
canvas
,
paint
);
onDrawKey
(
key
,
canvas
,
paint
);
}
}
}
else
{
}
else
{
// Draw invalidated keys.
for
(
final
Key
key
:
mInvalidatedKeys
)
{
for
(
final
Key
key
:
mInvalidatedKeys
)
{
if
(
mK
eyboard
.
hasKey
(
key
))
{
if
(
!
k
eyboard
.
hasKey
(
key
))
{
on
DrawKey
(
key
,
canvas
,
paint
)
;
c
on
tinue
;
}
}
if
(
background
!=
null
)
{
// Need to redraw key's background on {@link #mOffscreenBuffer}.
final
int
x
=
key
.
getX
()
+
getPaddingLeft
();
final
int
y
=
key
.
getY
()
+
getPaddingTop
();
mClipRect
.
set
(
x
,
y
,
x
+
key
.
getWidth
(),
y
+
key
.
getHeight
());
canvas
.
save
();
canvas
.
clipRect
(
mClipRect
);
canvas
.
drawColor
(
Color
.
BLACK
,
PorterDuff
.
Mode
.
CLEAR
);
background
.
draw
(
canvas
);
canvas
.
restore
();
}
onDrawKey
(
key
,
canvas
,
paint
);
}
}
}
}
...
@@ -319,20 +317,22 @@ public class KeyboardView extends View {
...
@@ -319,20 +317,22 @@ public class KeyboardView extends View {
mInvalidateAllKeys
=
false
;
mInvalidateAllKeys
=
false
;
}
}
private
void
onDrawKey
(
final
Key
key
,
final
Canvas
canvas
,
final
Paint
paint
)
{
private
void
onDrawKey
(
@Nonnull
final
Key
key
,
@Nonnull
final
Canvas
canvas
,
@Nonnull
final
Paint
paint
)
{
final
int
keyDrawX
=
key
.
getDrawX
()
+
getPaddingLeft
();
final
int
keyDrawX
=
key
.
getDrawX
()
+
getPaddingLeft
();
final
int
keyDrawY
=
key
.
getY
()
+
getPaddingTop
();
final
int
keyDrawY
=
key
.
getY
()
+
getPaddingTop
();
canvas
.
translate
(
keyDrawX
,
keyDrawY
);
canvas
.
translate
(
keyDrawX
,
keyDrawY
);
final
int
keyHeight
=
mKeyboard
.
mMostCommonKeyHeight
-
mKeyboard
.
mVerticalGap
;
final
KeyVisualAttributes
attr
=
key
.
getVisualAttributes
();
final
KeyVisualAttributes
attr
=
key
.
getVisualAttributes
();
final
KeyDrawParams
params
=
mKeyDrawParams
.
mayCloneAndUpdateParams
(
keyHeight
,
attr
);
final
KeyDrawParams
params
=
mKeyDrawParams
.
mayCloneAndUpdateParams
(
key
.
get
Height
()
,
attr
);
params
.
mAnimAlpha
=
Constants
.
Color
.
ALPHA_OPAQUE
;
params
.
mAnimAlpha
=
Constants
.
Color
.
ALPHA_OPAQUE
;
if
(!
key
.
isSpacer
())
{
if
(!
key
.
isSpacer
())
{
final
Drawable
background
=
key
.
selectBackgroundDrawable
(
final
Drawable
background
=
key
.
selectBackgroundDrawable
(
mKeyBackground
,
mFunctionalKeyBackground
,
mSpacebarBackground
);
mKeyBackground
,
mFunctionalKeyBackground
,
mSpacebarBackground
);
onDrawKeyBackground
(
key
,
canvas
,
background
);
if
(
background
!=
null
)
{
onDrawKeyBackground
(
key
,
canvas
,
background
);
}
}
}
onDrawKeyTopVisuals
(
key
,
canvas
,
paint
,
params
);
onDrawKeyTopVisuals
(
key
,
canvas
,
paint
,
params
);
...
@@ -340,8 +340,8 @@ public class KeyboardView extends View {
...
@@ -340,8 +340,8 @@ public class KeyboardView extends View {
}
}
// Draw key background.
// Draw key background.
protected
void
onDrawKeyBackground
(
final
Key
key
,
final
Canvas
canvas
,
protected
void
onDrawKeyBackground
(
@Nonnull
final
Key
key
,
@Nonnull
final
Canvas
canvas
,
final
Drawable
background
)
{
@Nonnull
final
Drawable
background
)
{
final
int
keyWidth
=
key
.
getDrawWidth
();
final
int
keyWidth
=
key
.
getDrawWidth
();
final
int
keyHeight
=
key
.
getHeight
();
final
int
keyHeight
=
key
.
getHeight
();
final
int
bgWidth
,
bgHeight
,
bgX
,
bgY
;
final
int
bgWidth
,
bgHeight
,
bgX
,
bgY
;
...
@@ -373,15 +373,17 @@ public class KeyboardView extends View {
...
@@ -373,15 +373,17 @@ public class KeyboardView extends View {
}
}
// Draw key top visuals.
// Draw key top visuals.
protected
void
onDrawKeyTopVisuals
(
final
Key
key
,
final
Canvas
canvas
,
final
Paint
paint
,
protected
void
onDrawKeyTopVisuals
(
@Nonnull
final
Key
key
,
@Nonnull
final
Canvas
canvas
,
final
KeyDrawParams
params
)
{
@Nonnull
final
Paint
paint
,
@Nonnull
final
KeyDrawParams
params
)
{
final
int
keyWidth
=
key
.
getDrawWidth
();
final
int
keyWidth
=
key
.
getDrawWidth
();
final
int
keyHeight
=
key
.
getHeight
();
final
int
keyHeight
=
key
.
getHeight
();
final
float
centerX
=
keyWidth
*
0.5f
;
final
float
centerX
=
keyWidth
*
0.5f
;
final
float
centerY
=
keyHeight
*
0.5f
;
final
float
centerY
=
keyHeight
*
0.5f
;
// Draw key label.
// Draw key label.
final
Drawable
icon
=
key
.
getIcon
(
mKeyboard
.
mIconsSet
,
params
.
mAnimAlpha
);
final
Keyboard
keyboard
=
getKeyboard
();
final
Drawable
icon
=
(
keyboard
==
null
)
?
null
:
key
.
getIcon
(
keyboard
.
mIconsSet
,
params
.
mAnimAlpha
);
float
labelX
=
centerX
;
float
labelX
=
centerX
;
float
labelBaseline
=
centerY
;
float
labelBaseline
=
centerY
;
final
String
label
=
key
.
getLabel
();
final
String
label
=
key
.
getLabel
();
...
@@ -500,8 +502,8 @@ public class KeyboardView extends View {
...
@@ -500,8 +502,8 @@ public class KeyboardView extends View {
}
}
// Draw popup hint "..." at the bottom right corner of the key.
// Draw popup hint "..." at the bottom right corner of the key.
protected
void
drawKeyPopupHint
(
final
Key
key
,
final
Canvas
canvas
,
final
Paint
paint
,
protected
void
drawKeyPopupHint
(
@Nonnull
final
Key
key
,
@Nonnull
final
Canvas
canvas
,
final
KeyDrawParams
params
)
{
@Nonnull
final
Paint
paint
,
@Nonnull
final
KeyDrawParams
params
)
{
if
(
TextUtils
.
isEmpty
(
mKeyPopupHintLetter
))
{
if
(
TextUtils
.
isEmpty
(
mKeyPopupHintLetter
))
{
return
;
return
;
}
}
...
@@ -518,15 +520,15 @@ public class KeyboardView extends View {
...
@@ -518,15 +520,15 @@ public class KeyboardView extends View {
canvas
.
drawText
(
mKeyPopupHintLetter
,
hintX
,
hintY
,
paint
);
canvas
.
drawText
(
mKeyPopupHintLetter
,
hintX
,
hintY
,
paint
);
}
}
protected
static
void
drawIcon
(
final
Canvas
canvas
,
final
Drawable
icon
,
final
int
x
,
protected
static
void
drawIcon
(
@Nonnull
final
Canvas
canvas
,
@Nonnull
final
Drawable
icon
,
final
int
y
,
final
int
width
,
final
int
height
)
{
final
int
x
,
final
int
y
,
final
int
width
,
final
int
height
)
{
canvas
.
translate
(
x
,
y
);
canvas
.
translate
(
x
,
y
);
icon
.
setBounds
(
0
,
0
,
width
,
height
);
icon
.
setBounds
(
0
,
0
,
width
,
height
);
icon
.
draw
(
canvas
);
icon
.
draw
(
canvas
);
canvas
.
translate
(-
x
,
-
y
);
canvas
.
translate
(-
x
,
-
y
);
}
}
public
Paint
newLabelPaint
(
final
Key
key
)
{
public
Paint
newLabelPaint
(
@Nullable
final
Key
key
)
{
final
Paint
paint
=
new
Paint
();
final
Paint
paint
=
new
Paint
();
paint
.
setAntiAlias
(
true
);
paint
.
setAntiAlias
(
true
);
if
(
key
==
null
)
{
if
(
key
==
null
)
{
...
@@ -560,7 +562,7 @@ public class KeyboardView extends View {
...
@@ -560,7 +562,7 @@ public class KeyboardView extends View {
* @see #invalidateAllKeys
* @see #invalidateAllKeys
*/
*/
public
void
invalidateKey
(
@Nullable
final
Key
key
)
{
public
void
invalidateKey
(
@Nullable
final
Key
key
)
{
if
(
key
==
null
||
mInvalidateAllKeys
)
{
if
(
mInvalidateAllKeys
||
key
==
null
)
{
return
;
return
;
}
}
mInvalidatedKeys
.
add
(
key
);
mInvalidatedKeys
.
add
(
key
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment