am 1ae49ab8: Merge "Fix bug 6892600 Font (character pairs) rendering issue" into jb-mr1-dev
* commit '1ae49ab8655baeb0ddf1944d0a66cd598122408a': Fix bug 6892600 Font (character pairs) rendering issue
This commit is contained in:
@@ -2508,13 +2508,14 @@ status_t OpenGLRenderer::drawText(const char* text, int bytesCount, int count,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool status;
|
bool status;
|
||||||
if (positions != NULL) {
|
if (paint->getTextAlign() != SkPaint::kLeft_Align) {
|
||||||
status = fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y,
|
SkPaint paintCopy(*paint);
|
||||||
|
paintCopy.setTextAlign(SkPaint::kLeft_Align);
|
||||||
|
status = fontRenderer.renderPosText(&paintCopy, clip, text, 0, bytesCount, count, x, y,
|
||||||
positions, hasActiveLayer ? &bounds : NULL);
|
positions, hasActiveLayer ? &bounds : NULL);
|
||||||
} else {
|
} else {
|
||||||
// TODO: would it be okay to call renderPosText with null positions?
|
status = fontRenderer.renderPosText(paint, clip, text, 0, bytesCount, count, x, y,
|
||||||
status = fontRenderer.renderText(paint, clip, text, 0, bytesCount, count, x, y,
|
positions, hasActiveLayer ? &bounds : NULL);
|
||||||
hasActiveLayer ? &bounds : NULL);
|
|
||||||
}
|
}
|
||||||
if (status) {
|
if (status) {
|
||||||
#if RENDER_LAYERS_AS_REGIONS
|
#if RENDER_LAYERS_AS_REGIONS
|
||||||
@@ -2801,23 +2802,11 @@ void OpenGLRenderer::drawTextDecorations(const char* text, int bytesCount, float
|
|||||||
underlineWidth = paintCopy.measureText(text, bytesCount);
|
underlineWidth = paintCopy.measureText(text, bytesCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
float offsetX = 0;
|
|
||||||
switch (paintCopy.getTextAlign()) {
|
|
||||||
case SkPaint::kCenter_Align:
|
|
||||||
offsetX = underlineWidth * 0.5f;
|
|
||||||
break;
|
|
||||||
case SkPaint::kRight_Align:
|
|
||||||
offsetX = underlineWidth;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CC_LIKELY(underlineWidth > 0.0f)) {
|
if (CC_LIKELY(underlineWidth > 0.0f)) {
|
||||||
const float textSize = paintCopy.getTextSize();
|
const float textSize = paintCopy.getTextSize();
|
||||||
const float strokeWidth = fmax(textSize * kStdUnderline_Thickness, 1.0f);
|
const float strokeWidth = fmax(textSize * kStdUnderline_Thickness, 1.0f);
|
||||||
|
|
||||||
const float left = x - offsetX;
|
const float left = x;
|
||||||
float top = 0.0f;
|
float top = 0.0f;
|
||||||
|
|
||||||
int linesCount = 0;
|
int linesCount = 0;
|
||||||
|
|||||||
@@ -107,7 +107,9 @@ ShadowTexture* TextDropShadowCache::get(SkPaint* paint, const char* text, uint32
|
|||||||
ShadowTexture* texture = mCache.get(entry);
|
ShadowTexture* texture = mCache.get(entry);
|
||||||
|
|
||||||
if (!texture) {
|
if (!texture) {
|
||||||
FontRenderer::DropShadow shadow = mRenderer->renderDropShadow(paint, text, 0,
|
SkPaint paintCopy(*paint);
|
||||||
|
paintCopy.setTextAlign(SkPaint::kLeft_Align);
|
||||||
|
FontRenderer::DropShadow shadow = mRenderer->renderDropShadow(&paintCopy, text, 0,
|
||||||
len, numGlyphs, radius, positions);
|
len, numGlyphs, radius, positions);
|
||||||
|
|
||||||
texture = new ShadowTexture;
|
texture = new ShadowTexture;
|
||||||
|
|||||||
Reference in New Issue
Block a user