44 constexpr char kSkiaStr[] =
"SKIA";
45 constexpr SkScalar kGradientPad = .1f;
46 constexpr SkScalar kVerticalSpacing = 0.25f;
47 constexpr SkScalar kAccentScale = 1.20f;
50 paint.setAntiAlias(
true);
53 font.setSubpixel(
true);
54 font.setEmbolden(
true);
57 SkRect iBox, skiBox, skiaBox;
64 const size_t textLen = strlen(kSkiaStr);
67 skiaBox.
outset(0, 2 * iBox.
width() * (kVerticalSpacing + 1));
76 iBox.
y() - (0.5f + kVerticalSpacing) * accentSize,
81 path.moveTo(iBox.
centerX() - accentSize / 2, iBox.
bottom() + kVerticalSpacing * accentSize);
82 path.rLineTo(accentSize, 0);
83 path.lineTo(iBox.
centerX(), underlineY);
89 underlineY + accentSize / 10);
92 const SkScalar pos1[] = { 0, 0.75f };
94 SkASSERT(std::size(pos1) == std::size(colors1));
101 const SkScalar pos2[] = { 0, .01f, 1.0f/3, 1.0f/3, 2.0f/3, 2.0f/3, .99f, 1 };
112 SkASSERT(std::size(pos2) == std::size(colors2));
162 const unsigned kDrawsPerRow = 4;
165 for (
size_t i = 0; i < std::size(configs); ++i) {
167 p.setAlphaf(configs[i].opacity);
170 if (configs[i].scaleX < 0) {
173 if (configs[i].scaleY < 0) {
176 std::unique_ptr<SkImageGenerator>
gen =
180 p.getAlpha() != 255 ? &p :
nullptr,
190 const SkScalar x = kDrawSize * (i % kDrawsPerRow);
191 const SkScalar y = kDrawSize * (i / kDrawsPerRow);
193 p.setColor(0xfff0f0f0);
206 const SkScalar kPictureHeight = 100;
#define SkAssertResult(cond)
constexpr SkColor SK_ColorTRANSPARENT
constexpr SkColor SK_ColorBLACK
@ kUTF8
uses bytes to represent UTF-8 or ASCII
bool SK_API TightBounds(const SkPath &path, SkRect *result)
SkString getName() const override
void onOnceBeforeDraw() override
SkISize getISize() override
void onDraw(SkCanvas *canvas) override
void allocPixels(const SkImageInfo &info, size_t rowBytes)
sk_sp< SkImage > asImage() const
const SkImageInfo & info() const
void drawRect(const SkRect &rect, const SkPaint &paint)
void drawSimpleText(const void *text, size_t byteLength, SkTextEncoding encoding, SkScalar x, SkScalar y, const SkFont &font, const SkPaint &paint)
void drawPath(const SkPath &path, const SkPaint &paint)
void concat(const SkMatrix &matrix)
SkImageInfo imageInfo() const
void drawImage(const SkImage *image, SkScalar left, SkScalar top)
void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint &paint)
static sk_sp< SkColorSpace > MakeSRGB()
static sk_sp< SkShader > MakeLinear(const SkPoint pts[2], const SkColor colors[], const SkScalar pos[], int count, SkTileMode mode, uint32_t flags=0, const SkMatrix *localMatrix=nullptr)
static SkMatrix Scale(SkScalar sx, SkScalar sy)
static SkMatrix RectToRect(const SkRect &src, const SkRect &dst, ScaleToFit mode=kFill_ScaleToFit)
SkCanvas * beginRecording(const SkRect &bounds, sk_sp< SkBBoxHierarchy > bbh)
sk_sp< SkPicture > finishRecordingAsPicture()
static void GetPath(const void *text, size_t length, SkTextEncoding, SkScalar x, SkScalar y, const SkFont &, SkPath *)
std::unique_ptr< SkImageGenerator > MakeFromPicture(const SkISize &, sk_sp< SkPicture >, const SkMatrix *, const SkPaint *, SkImages::BitDepth, sk_sp< SkColorSpace >, SkSurfaceProps props)
@ kU8
uses 8-bit unsigned int per color component
static void draw_vector_logo(SkCanvas *canvas, const SkRect &viewBox)
static constexpr SkISize Make(int32_t w, int32_t h)
sk_sp< SkColorSpace > refColorSpace() const
static constexpr SkPoint Make(float x, float y)
void offsetTo(float newX, float newY)
constexpr float x() const
void outset(float dx, float dy)
constexpr float y() const
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
SkScalar fRight
larger x-axis bounds
constexpr float centerX() const
constexpr float right() const
constexpr float width() const
static constexpr SkRect MakeWH(float w, float h)
static constexpr SkRect MakeLTRB(float l, float t, float r, float b)
constexpr float bottom() const
SkScalar fTop
smaller y-axis bounds