本文整理汇总了C++中SkFont::measureText方法的典型用法代码示例。如果您正苦于以下问题:C++ SkFont::measureText方法的具体用法?C++ SkFont::measureText怎么用?C++ SkFont::measureText使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkFont
的用法示例。
在下文中一共展示了SkFont::measureText方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Draw
void SkTextUtils::Draw(SkCanvas* canvas, const void* text, size_t size, SkTextEncoding encoding,
SkScalar x, SkScalar y, const SkFont& font, const SkPaint& paint,
Align align) {
if (align != kLeft_Align) {
SkScalar width = font.measureText(text, size, encoding);
if (align == kCenter_Align) {
width *= 0.5f;
}
x -= width;
}
canvas->drawTextBlob(SkTextBlob::MakeFromText(text, size, font, encoding), x, y, paint);
}
示例2: onDraw
void onDraw(int loops, SkCanvas* canvas) override {
SkFont font;
font.setEdging(SkFont::Edging::kAntiAlias);
const uint16_t* array = gUniqueGlyphIDs;
while (*array != gUniqueGlyphIDs_Sentinel) {
int count = count_glyphs(array);
for (int i = 0; i < loops; ++i) {
(void)font.measureText(array, count * sizeof(uint16_t), SkTextEncoding::kGlyphID);
}
array += count + 1; // skip the sentinel
}
}
示例3: make_big_bitmap
static void make_big_bitmap(SkBitmap* bm) {
static const char gText[] =
"We the people, in order to form a more perfect union, establish justice,"
" ensure domestic tranquility, provide for the common defense, promote the"
" general welfare and ensure the blessings of liberty to ourselves and our"
" posterity, do ordain and establish this constitution for the United"
" States of America.";
const int BIG_H = 120;
SkFont font;
font.setSize(SkIntToScalar(BIG_H));
const int BIG_W = SkScalarRoundToInt(font.measureText(gText, strlen(gText), SkTextEncoding::kUTF8));
bm->allocN32Pixels(BIG_W, BIG_H);
bm->eraseColor(SK_ColorWHITE);
SkCanvas canvas(*bm);
canvas.drawSimpleText(gText, strlen(gText), SkTextEncoding::kUTF8, 0, font.getSize()*4/5, font, SkPaint());
}
示例4: draw_label
static void draw_label(SkCanvas* canvas, const SkHighContrastConfig& config) {
char labelBuffer[256];
const char* invertStr =
(config.fInvertStyle == InvertStyle::kInvertBrightness ?
"InvBrightness" :
(config.fInvertStyle == InvertStyle::kInvertLightness ?
"InvLightness" : "NoInvert"));
snprintf(labelBuffer, sizeof(labelBuffer), "%s%s contrast=%.1f",
config.fGrayscale ? "Gray " : "",
invertStr,
config.fContrast);
SkFont font;
font.setTypeface(ToolUtils::create_portable_typeface());
font.setSize(0.05f);
font.setEdging(SkFont::Edging::kAlias);
size_t len = strlen(labelBuffer);
SkScalar width = font.measureText(labelBuffer, len, SkTextEncoding::kUTF8);
canvas->drawSimpleText(labelBuffer, len, SkTextEncoding::kUTF8, 0.5f - width / 2, 0.16f, font, SkPaint());
}
示例5: draw_string
static SkScalar draw_string(SkCanvas* canvas, const SkString& text, SkScalar x,
SkScalar y, const SkFont& font) {
SkPaint paint;
canvas->drawString(text, x, y, font, paint);
return x + font.measureText(text.c_str(), text.size(), SkTextEncoding::kUTF8);
}
示例6: onDrawContent
virtual void onDrawContent(SkCanvas* canvas) {
SkPath path;
path.moveTo(SkIntToScalar(0), SkIntToScalar(50));
path.quadTo(SkIntToScalar(0), SkIntToScalar(0), SkIntToScalar(50), SkIntToScalar(0));
path.lineTo(SkIntToScalar(175), SkIntToScalar(0));
path.quadTo(SkIntToScalar(200), SkIntToScalar(0), SkIntToScalar(200), SkIntToScalar(25));
path.lineTo(SkIntToScalar(200), SkIntToScalar(150));
path.quadTo(SkIntToScalar(200), SkIntToScalar(200), SkIntToScalar(150), SkIntToScalar(200));
path.lineTo(SkIntToScalar(0), SkIntToScalar(200));
path.close();
path.moveTo(SkIntToScalar(50), SkIntToScalar(50));
path.lineTo(SkIntToScalar(150), SkIntToScalar(50));
path.lineTo(SkIntToScalar(150), SkIntToScalar(125));
path.quadTo(SkIntToScalar(150), SkIntToScalar(150), SkIntToScalar(125), SkIntToScalar(150));
path.lineTo(SkIntToScalar(50), SkIntToScalar(150));
path.close();
path.setFillType(SkPath::kEvenOdd_FillType);
SkColor pathColor = SK_ColorBLACK;
SkPaint pathPaint;
pathPaint.setAntiAlias(true);
pathPaint.setColor(pathColor);
SkPath clipA;
clipA.moveTo(SkIntToScalar(10), SkIntToScalar(20));
clipA.lineTo(SkIntToScalar(165), SkIntToScalar(22));
clipA.lineTo(SkIntToScalar(70), SkIntToScalar(105));
clipA.lineTo(SkIntToScalar(165), SkIntToScalar(177));
clipA.lineTo(SkIntToScalar(-5), SkIntToScalar(180));
clipA.close();
SkColor colorA = SK_ColorCYAN;
SkPath clipB;
clipB.moveTo(SkIntToScalar(40), SkIntToScalar(10));
clipB.lineTo(SkIntToScalar(190), SkIntToScalar(15));
clipB.lineTo(SkIntToScalar(195), SkIntToScalar(190));
clipB.lineTo(SkIntToScalar(40), SkIntToScalar(185));
clipB.lineTo(SkIntToScalar(155), SkIntToScalar(100));
clipB.close();
SkColor colorB = SK_ColorRED;
SkFont font;
font.setSize(20);
SkPaint paint;
paint.setAntiAlias(true);
paint.setStyle(SkPaint::kStroke_Style);
paint.setStrokeWidth(0);
canvas->translate(SkIntToScalar(10),SkIntToScalar(10));
canvas->drawPath(path, pathPaint);
paint.setColor(colorA);
canvas->drawPath(clipA, paint);
paint.setColor(colorB);
canvas->drawPath(clipB, paint);
static const struct {
SkClipOp fOp;
const char* fName;
} gOps[] = { //extra spaces in names for measureText
{kIntersect_SkClipOp, "Isect "},
{kDifference_SkClipOp, "Diff " },
{kUnion_SkClipOp, "Union "},
{kXOR_SkClipOp, "Xor " },
{kReverseDifference_SkClipOp, "RDiff "}
};
canvas->translate(0, SkIntToScalar(40));
canvas->scale(3 * SK_Scalar1 / 4, 3 * SK_Scalar1 / 4);
canvas->save();
for (int invA = 0; invA < 2; ++invA) {
for (size_t op = 0; op < SK_ARRAY_COUNT(gOps); ++op) {
size_t idx = invA * SK_ARRAY_COUNT(gOps) + op;
if (!(idx % 3)) {
canvas->restore();
canvas->translate(0, SkIntToScalar(250));
canvas->save();
}
canvas->save();
// set clip
clipA.setFillType(invA ? SkPath::kInverseEvenOdd_FillType :
SkPath::kEvenOdd_FillType);
canvas->clipPath(clipA);
canvas->clipPath(clipB, gOps[op].fOp);
// draw path clipped
canvas->drawPath(path, pathPaint);
canvas->restore();
// draw path in hairline
paint.setColor(pathColor);
canvas->drawPath(path, paint);
// draw clips in hair line
paint.setColor(colorA);
canvas->drawPath(clipA, paint);
paint.setColor(colorB);
canvas->drawPath(clipB, paint);
//.........这里部分代码省略.........