本文整理汇总了C++中SkRect::set方法的典型用法代码示例。如果您正苦于以下问题:C++ SkRect::set方法的具体用法?C++ SkRect::set怎么用?C++ SkRect::set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkRect
的用法示例。
在下文中一共展示了SkRect::set方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getSkiaBoundsForGlyph
static inline void getSkiaBoundsForGlyph(SkPaint& paint, Glyph glyph, SkRect& bounds)
{
paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
SkPath path;
paint.getTextPath(&glyph, sizeof(glyph), 0, 0, &path);
bounds = path.getBounds();
if (!paint.isSubpixelText()) {
SkIRect ir;
bounds.round(&ir);
bounds.set(ir);
}
}
示例2: onDraw
void onDraw(SkCanvas* canvas) override {
createShader();
createMaskFilter();
canvas->save();
// draw a letter "M" with a green & red striped texture and a
// stipple mask with a round rect soft clip
SkPaint paint;
paint.setAntiAlias(true);
paint.setTextSize(72);
paint.setShader(fShader.get());
paint.setMaskFilter(fMaskFilter.get());
sk_tool_utils::set_portable_typeface(&paint);
SkRect temp;
temp.set(SkIntToScalar(115),
SkIntToScalar(75),
SkIntToScalar(144),
SkIntToScalar(110));
SkPath path;
path.addRoundRect(temp, SkIntToScalar(5), SkIntToScalar(5));
canvas->clipPath(path, SkRegion::kReplace_Op, true); // AA is on
canvas->drawText("M", 1,
SkIntToScalar(100), SkIntToScalar(100),
paint);
canvas->restore();
// Now draw stroked versions of the "M" and the round rect so we can
// see what is going on
SkPaint paint2;
paint2.setColor(SK_ColorBLACK);
paint2.setAntiAlias(true);
paint2.setTextSize(72);
paint2.setStyle(SkPaint::kStroke_Style);
paint2.setStrokeWidth(1);
sk_tool_utils::set_portable_typeface(&paint2);
canvas->drawText("M", 1,
SkIntToScalar(100), SkIntToScalar(100),
paint2);
paint2.setColor(sk_tool_utils::color_to_565(SK_ColorGRAY));
canvas->drawPath(path, paint2);
}
示例3: addArc
void Path::addArc(const FloatPoint& p, float r, float sa, float ea,
bool clockwise) {
SkScalar cx = SkFloatToScalar(p.x());
SkScalar cy = SkFloatToScalar(p.y());
SkScalar radius = SkFloatToScalar(r);
SkRect oval;
oval.set(cx - radius, cy - radius, cx + radius, cy + radius);
float sweep = ea - sa;
bool prependOval = false;
/* Note if clockwise and the sign of the sweep disagree. This particular
logic was deduced from http://canvex.lazyilluminati.com/misc/arc.html
*/
if (clockwise && (sweep > 0 || sweep < -g2PI)) {
sweep = fmodf(sweep, g2PI) - g2PI;
} else if (!clockwise && (sweep < 0 || sweep > g2PI)) {
sweep = fmodf(sweep, g2PI) + g2PI;
}
// If the abs(sweep) >= 2PI, then we need to add a circle before we call
// arcTo, since it treats the sweep mod 2PI. We don't have a prepend call,
// so we just remember this, and at the end create a new path with an oval
// and our current path, and then swap then.
//
if (sweep >= g2PI || sweep <= -g2PI) {
prependOval = true;
// SkDebugf("addArc sa=%g ea=%g cw=%d sweep %g treat as circle\n", sa, ea, clockwise, sweep);
// now reduce sweep to just the amount we need, so that the current
// point is left where the caller expects it.
sweep = fmodf(sweep, g2PI);
}
sa = fast_mod(sa, g2PI);
SkScalar startDegrees = SkFloatToScalar(sa * g180OverPI);
SkScalar sweepDegrees = SkFloatToScalar(sweep * g180OverPI);
// SkDebugf("addArc sa=%g ea=%g cw=%d sweep=%g ssweep=%g\n", sa, ea, clockwise, sweep, SkScalarToFloat(sweepDegrees));
m_path->arcTo(oval, startDegrees, sweepDegrees, false);
if (prependOval) {
SkPath tmp;
tmp.addOval(oval);
tmp.addPath(*m_path);
m_path->swap(tmp);
}
}
示例4: drawTo
void SkDebugCanvas::drawTo(SkCanvas* canvas, int index) {
int counter = 0;
SkASSERT(!fCommandVector.isEmpty());
SkASSERT(index < fCommandVector.count());
int i;
// This only works assuming the canvas and device are the same ones that
// were previously drawn into because they need to preserve all saves
// and restores.
if (fIndex < index) {
i = fIndex + 1;
} else {
for (int j = 0; j < fOutstandingSaveCount; j++) {
canvas->restore();
}
i = 0;
canvas->clear(SK_ColorTRANSPARENT);
canvas->resetMatrix();
SkRect rect = SkRect::MakeWH(SkIntToScalar(fWidth),
SkIntToScalar(fHeight));
canvas->clipRect(rect, SkRegion::kReplace_Op );
applyUserTransform(canvas);
fOutstandingSaveCount = 0;
}
for (; i <= index; i++) {
if (i == index && fFilter) {
SkPaint p;
p.setColor(0xAAFFFFFF);
canvas->save();
canvas->resetMatrix();
SkRect mask;
mask.set(SkIntToScalar(0), SkIntToScalar(0),
SkIntToScalar(fWidth), SkIntToScalar(fHeight));
canvas->clipRect(mask, SkRegion::kReplace_Op, false);
canvas->drawRectCoords(SkIntToScalar(0), SkIntToScalar(0),
SkIntToScalar(fWidth), SkIntToScalar(fHeight), p);
canvas->restore();
}
if (fCommandVector[i]->isVisible()) {
fCommandVector[i]->execute(canvas);
fCommandVector[i]->trackSaveState(&fOutstandingSaveCount);
}
}
fMatrix = canvas->getTotalMatrix();
fClip = canvas->getTotalClip().getBounds();
fIndex = index;
}
示例5: drawOrig
void drawOrig(SkCanvas* canvas, bool bg) {
SkRect r;
SkPaint paint;
paint.setStyle(SkPaint::kStroke_Style);
if (bg)
paint.setColor(0xFFBBBBBB);
SkRegion rgn;
build_base_rgn(&rgn);
paint_rgn(canvas, rgn, paint);
r.set(fRect);
canvas->drawRect(r, paint);
}
示例6: paint_rgn
static void paint_rgn(SkCanvas* canvas, const SkRegion& rgn,
const SkPaint& paint)
{
SkRegion scaled;
scale_rgn(&scaled, rgn, 0.5f);
SkRegion::Iterator iter(rgn);
for (; !iter.done(); iter.next())
{
SkRect r;
r.set(iter.rect());
canvas->drawRect(r, paint);
}
}
示例7: Draw
void EmojiFont::Draw(SkCanvas* canvas, uint16_t glyphID,
SkScalar x, SkScalar y, const SkPaint& paint) {
if (glyphID < kGlyphBase) {
SkDebugf("-------- bad glyph passed to EmojiFont::Draw %d\n", glyphID);
}
const SkBitmap* bitmap = get_bitmap(glyphID - kGlyphBase);
if (bitmap && !bitmap->empty()) {
SkRect dst;
SkScalar size = paint.getTextSize();
y += SkScalarMul(size, gBaselinePercentDrop);
dst.set(x, y - size, x + size, y);
canvas->drawBitmapRect(*bitmap, NULL, dst, &paint);
}
}
示例8: onDraw
void SkSliderView::onDraw(SkCanvas* canvas)
{
this->INHERITED::onDraw(canvas);
U16CPU value = SkMax32(0, SkMin32(fValue, fMax));
SkRect r;
SkPaint p;
r.set(0, 0, this->width(), this->height());
p.setAntiAliasOn(true);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
r.inset(SK_Scalar1/2, SK_Scalar1/2);
canvas->drawRect(r, p);
if (fMax)
{
SkFixed percent = SkFixedDiv(value, fMax);
r.inset(SK_Scalar1/2, SK_Scalar1/2);
r.fRight = r.fLeft + SkScalarMul(r.width(), SkFixedToScalar(percent));
p.setStyle(SkPaint::kFill_Style);
setgrad(&p, r);
canvas->drawRect(r, p);
}
#if 0
r.set(0, 0, this->width(), this->height());
r.inset(SK_Scalar1, SK_Scalar1);
r.inset(r.width()/2, 0);
p.setColor(SK_ColorBLACK);
canvas->drawLine(*(SkPoint*)&r.fLeft, *(SkPoint*)&r.fRight, p);
#endif
}
示例9: getOval
PathTexture* OvalShapeCache::getOval(float width, float height, SkPaint* paint) {
OvalShapeCacheEntry entry(width, height, paint);
PathTexture* texture = get(entry);
if (!texture) {
SkPath path;
SkRect r;
r.set(0.0f, 0.0f, width, height);
path.addOval(r, SkPath::kCW_Direction);
texture = addTexture(entry, &path, paint);
}
return texture;
}
示例10: onDrawContent
void onDrawContent(SkCanvas* canvas) override {
SkRect oval = fOval;
oval.offset(fCenter.fX - oval.centerX(), fCenter.fY - oval.centerY());
SkPaint p;
p.setAntiAlias(true);
p.setStyle(SkPaint::kStroke_Style);
canvas->drawOval(oval, p);
SkRect r;
r.set(SkIntToScalar(200), SkIntToScalar(200),
SkIntToScalar(300), SkIntToScalar(300));
canvas->clipRect(r);
p.setStyle(SkPaint::kFill_Style);
p.setColor(SK_ColorRED);
canvas->drawRect(r, p);
p.setColor(0x800000FF);
r.set(SkIntToScalar(150), SkIntToScalar(10),
SkIntToScalar(250), SkIntToScalar(400));
canvas->drawOval(oval, p);
}
示例11: roundRect
void roundRect(SkCanvas *canvas, SkIRect irect, SkColor color)
{
SkRect rect;
SkScalar radius = SkIntToScalar(5);
SkPaint paint;
rect.set(irect);
paint.setColor(color);
paint.setStyle(SkPaint::kFill_Style);
canvas->drawRoundRect(rect, radius, radius, paint);
paint.setColor(edgeColor);
paint.setStyle(SkPaint::kStroke_Style);
canvas->drawRoundRect(rect, radius, radius, paint);
}
示例12: drawRings
/*
0x1F * x + 0x1F * (32 - x)
*/
void drawRings(SkCanvas* canvas) {
canvas->scale(SkIntToScalar(1)/2, SkIntToScalar(1)/2);
SkRect r;
SkScalar x = SkIntToScalar(10);
SkScalar y = SkIntToScalar(10);
r.set(x, y, x + SkIntToScalar(100), y + SkIntToScalar(100));
SkPaint paint;
// paint.setAntiAlias(true);
paint.setStyle(SkPaint::kStroke_Style);
paint.setStrokeWidth(SkScalarHalf(SkIntToScalar(3)));
paint.setColor(0xFFFF8800);
// paint.setColor(0xFFFFFFFF);
canvas->drawRect(r, paint);
}
示例13: getRoundRect
PathTexture* RoundRectShapeCache::getRoundRect(float width, float height,
float rx, float ry, SkPaint* paint) {
RoundRectShapeCacheEntry entry(width, height, rx, ry, paint);
PathTexture* texture = get(entry);
if (!texture) {
SkPath path;
SkRect r;
r.set(0.0f, 0.0f, width, height);
path.addRoundRect(r, rx, ry, SkPath::kCW_Direction);
texture = addTexture(entry, &path, paint);
}
return texture;
}
示例14: BitmapRectView
BitmapRectView() {
this->setBGColor(SK_ColorGRAY);
this->resetBounce();
fSrcLimit.set(-SCALAR_SIZE/4, -SCALAR_SIZE/4,
SCALAR_SIZE*5/4, SCALAR_SIZE*5/4);
fDstR[0] = SkRect::MakeXYWH(SkIntToScalar(10), SkIntToScalar(100),
SkIntToScalar(250), SkIntToScalar(300));
fDstR[1] = fDstR[0];
fDstR[1].offset(fDstR[0].width() * 5/4, 0);
fSrcPts[0].set(32, 32);
fSrcPts[1].set(90, 90);
}
示例15: onDraw
void onDraw(SkCanvas* canvas) override {
SkPaint paint;
paint.setAntiAlias(true);
paint.setLCDRenderText(true);
SkAutoTUnref<SkFontMgr> fontMgr(SkFontMgr::RefDefault());
SkAutoTDelete<SkStreamAsset> distortable(GetResourceAsStream("/fonts/Distortable.ttf"));
if (!distortable) {
return;
}
const char* text = "abc";
const size_t textLen = strlen(text);
for (int j = 0; j < 2; ++j) {
for (int i = 0; i < 5; ++i) {
SkScalar x = SkIntToScalar(10);
SkScalar y = SkIntToScalar(20);
SkFourByteTag tag = SkSetFourByteTag('w','g','h','t');
SkScalar styleValue = SkDoubleToScalar(0.5 + (5*j + i) * ((2.0 - 0.5) / (2 * 5)));
SkFontMgr::FontParameters::Axis axes[] = { { tag, styleValue } };
paint.setTypeface(sk_sp<SkTypeface>(fontMgr->createFromStream(
distortable->duplicate(), SkFontMgr::FontParameters().setAxes(axes, 1))));
SkAutoCanvasRestore acr(canvas, true);
canvas->translate(SkIntToScalar(30 + i * 100), SkIntToScalar(20));
rotate_about(canvas, SkIntToScalar(i * 5), x, y * 10);
{
SkPaint p;
p.setAntiAlias(true);
SkRect r;
r.set(x - SkIntToScalar(3), SkIntToScalar(15),
x - SkIntToScalar(1), SkIntToScalar(280));
canvas->drawRect(r, p);
}
for (int ps = 6; ps <= 22; ps++) {
paint.setTextSize(SkIntToScalar(ps));
canvas->drawText(text, textLen, x, y, paint);
y += paint.getFontMetrics(nullptr);
}
}
canvas->translate(0, SkIntToScalar(360));
paint.setSubpixelText(true);
}
}