am 713440d2: Merge "Add support for Paint::setTextSkewX in OpenGLRenderer. Bug #3360888" into honeycomb
* commit '713440d2ef959e76ab2d22dde5f1430da6fa8f90': Add support for Paint::setTextSkewX in OpenGLRenderer. Bug #3360888
This commit is contained in:
@@ -38,8 +38,10 @@ namespace uirenderer {
|
|||||||
// Font
|
// Font
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Font::Font(FontRenderer* state, uint32_t fontId, float fontSize, int flags) :
|
Font::Font(FontRenderer* state, uint32_t fontId, float fontSize,
|
||||||
mState(state), mFontId(fontId), mFontSize(fontSize), mFlags(flags) {
|
int flags, uint32_t italicStyle) :
|
||||||
|
mState(state), mFontId(fontId), mFontSize(fontSize),
|
||||||
|
mFlags(flags), mItalicStyle(italicStyle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -275,17 +277,19 @@ Font::CachedGlyphInfo* Font::cacheGlyph(SkPaint* paint, int32_t glyph) {
|
|||||||
return newGlyph;
|
return newGlyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
Font* Font::create(FontRenderer* state, uint32_t fontId, float fontSize, int flags) {
|
Font* Font::create(FontRenderer* state, uint32_t fontId, float fontSize,
|
||||||
|
int flags, uint32_t italicStyle) {
|
||||||
Vector<Font*> &activeFonts = state->mActiveFonts;
|
Vector<Font*> &activeFonts = state->mActiveFonts;
|
||||||
|
|
||||||
for (uint32_t i = 0; i < activeFonts.size(); i++) {
|
for (uint32_t i = 0; i < activeFonts.size(); i++) {
|
||||||
Font* font = activeFonts[i];
|
Font* font = activeFonts[i];
|
||||||
if (font->mFontId == fontId && font->mFontSize == fontSize && font->mFlags == flags) {
|
if (font->mFontId == fontId && font->mFontSize == fontSize &&
|
||||||
|
font->mFlags == flags && font->mItalicStyle == italicStyle) {
|
||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Font* newFont = new Font(state, fontId, fontSize, flags);
|
Font* newFont = new Font(state, fontId, fontSize, flags, italicStyle);
|
||||||
activeFonts.push(newFont);
|
activeFonts.push(newFont);
|
||||||
return newFont;
|
return newFont;
|
||||||
}
|
}
|
||||||
@@ -638,7 +642,10 @@ void FontRenderer::setFont(SkPaint* paint, uint32_t fontId, float fontSize) {
|
|||||||
if (paint->isFakeBoldText()) {
|
if (paint->isFakeBoldText()) {
|
||||||
flags |= Font::kFakeBold;
|
flags |= Font::kFakeBold;
|
||||||
}
|
}
|
||||||
mCurrentFont = Font::create(this, fontId, fontSize, flags);
|
|
||||||
|
const float skewX = paint->getTextSkewX();
|
||||||
|
uint32_t italicStyle = *(uint32_t*) &skewX;
|
||||||
|
mCurrentFont = Font::create(this, fontId, fontSize, flags, italicStyle);
|
||||||
|
|
||||||
const float maxPrecacheFontSize = 40.0f;
|
const float maxPrecacheFontSize = 40.0f;
|
||||||
bool isNewFont = currentNumFonts != mActiveFonts.size();
|
bool isNewFont = currentNumFonts != mActiveFonts.size();
|
||||||
|
|||||||
@@ -57,7 +57,8 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Creates a new font associated with the specified font state.
|
* Creates a new font associated with the specified font state.
|
||||||
*/
|
*/
|
||||||
static Font* create(FontRenderer* state, uint32_t fontId, float fontSize, int flags);
|
static Font* create(FontRenderer* state, uint32_t fontId, float fontSize,
|
||||||
|
int flags, uint32_t italicStyle);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class FontRenderer;
|
friend class FontRenderer;
|
||||||
@@ -103,7 +104,7 @@ protected:
|
|||||||
SkFixed mRsbDelta;
|
SkFixed mRsbDelta;
|
||||||
};
|
};
|
||||||
|
|
||||||
Font(FontRenderer* state, uint32_t fontId, float fontSize, int flags);
|
Font(FontRenderer* state, uint32_t fontId, float fontSize, int flags, uint32_t italicStyle);
|
||||||
|
|
||||||
DefaultKeyedVector<int32_t, CachedGlyphInfo*> mCachedGlyphs;
|
DefaultKeyedVector<int32_t, CachedGlyphInfo*> mCachedGlyphs;
|
||||||
|
|
||||||
@@ -122,6 +123,7 @@ protected:
|
|||||||
uint32_t mFontId;
|
uint32_t mFontId;
|
||||||
float mFontSize;
|
float mFontSize;
|
||||||
int mFlags;
|
int mFlags;
|
||||||
|
uint32_t mItalicStyle;
|
||||||
};
|
};
|
||||||
|
|
||||||
class FontRenderer {
|
class FontRenderer {
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ public class TextActivity extends Activity {
|
|||||||
private final Paint mLargePaint;
|
private final Paint mLargePaint;
|
||||||
private final Paint mStrikePaint;
|
private final Paint mStrikePaint;
|
||||||
private final Paint mScaledPaint;
|
private final Paint mScaledPaint;
|
||||||
|
private final Paint mSkewPaint;
|
||||||
|
|
||||||
CustomTextView(Context c) {
|
CustomTextView(Context c) {
|
||||||
super(c);
|
super(c);
|
||||||
@@ -57,6 +58,10 @@ public class TextActivity extends Activity {
|
|||||||
mScaledPaint = new Paint();
|
mScaledPaint = new Paint();
|
||||||
mScaledPaint.setAntiAlias(true);
|
mScaledPaint.setAntiAlias(true);
|
||||||
mScaledPaint.setTextSize(16.0f);
|
mScaledPaint.setTextSize(16.0f);
|
||||||
|
|
||||||
|
mSkewPaint = new Paint();
|
||||||
|
mSkewPaint.setAntiAlias(true);
|
||||||
|
mSkewPaint.setTextSize(16.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -100,11 +105,18 @@ public class TextActivity extends Activity {
|
|||||||
mStrikePaint.setStrikeThruText(false);
|
mStrikePaint.setStrikeThruText(false);
|
||||||
mStrikePaint.setUnderlineText(true);
|
mStrikePaint.setUnderlineText(true);
|
||||||
|
|
||||||
|
mSkewPaint.setTextSkewX(-0.25f);
|
||||||
|
canvas.drawText("Hello OpenGL renderer!", 680, 200, mSkewPaint);
|
||||||
|
mSkewPaint.setTextSkewX(0.5f);
|
||||||
|
canvas.drawText("Hello OpenGL renderer!", 680, 230, mSkewPaint);
|
||||||
|
mSkewPaint.setTextSkewX(0.0f);
|
||||||
|
canvas.drawText("Hello OpenGL renderer!", 680, 260, mSkewPaint);
|
||||||
|
|
||||||
mScaledPaint.setTextScaleX(0.5f);
|
mScaledPaint.setTextScaleX(0.5f);
|
||||||
canvas.drawText("Hello OpenGL renderer!", 500, 200, mScaledPaint);
|
canvas.drawText("Hello OpenGL renderer!", 500, 200, mScaledPaint);
|
||||||
mScaledPaint.setTextScaleX(2.0f);
|
|
||||||
canvas.drawText("Hello OpenGL renderer!", 500, 230, mScaledPaint);
|
|
||||||
mScaledPaint.setTextScaleX(1.0f);
|
mScaledPaint.setTextScaleX(1.0f);
|
||||||
|
canvas.drawText("Hello OpenGL renderer!", 500, 230, mScaledPaint);
|
||||||
|
mScaledPaint.setTextScaleX(2.0f);
|
||||||
canvas.drawText("Hello OpenGL renderer!", 500, 260, mScaledPaint);
|
canvas.drawText("Hello OpenGL renderer!", 500, 260, mScaledPaint);
|
||||||
|
|
||||||
canvas.save();
|
canvas.save();
|
||||||
|
|||||||
Reference in New Issue
Block a user