Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
SkSVGDOM::Builder Class Referencefinal

#include <SkSVGDOM.h>

Public Member Functions

BuildersetFontManager (sk_sp< SkFontMgr >)
 
BuildersetResourceProvider (sk_sp< skresources::ResourceProvider >)
 
BuildersetTextShapingFactory (sk_sp< SkShapers::Factory >)
 
sk_sp< SkSVGDOMmake (SkStream &) const
 

Detailed Description

Definition at line 28 of file SkSVGDOM.h.

Member Function Documentation

◆ make()

sk_sp< SkSVGDOM > SkSVGDOM::Builder::make ( SkStream str) const

Definition at line 405 of file SkSVGDOM.cpp.

405 {
406 TRACE_EVENT0("skia", TRACE_FUNC);
407 SkDOM xmlDom;
408 if (!xmlDom.build(str)) {
409 return nullptr;
410 }
411
412 SkSVGIDMapper mapper;
413 ConstructionContext ctx(&mapper);
414
415 auto root = construct_svg_node(xmlDom, ctx, xmlDom.getRootNode());
416 if (!root || root->tag() != SkSVGTag::kSvg) {
417 return nullptr;
418 }
419
420 class NullResourceProvider final : public skresources::ResourceProvider {
421 sk_sp<SkData> load(const char[], const char[]) const override { return nullptr; }
422 };
423
424 auto resource_provider = fResourceProvider ? fResourceProvider
425 : sk_make_sp<NullResourceProvider>();
426
427 auto factory = fTextShapingFactory ? fTextShapingFactory : SkShapers::Primitive::Factory();
428
429 return sk_sp<SkSVGDOM>(new SkSVGDOM(sk_sp<SkSVGSVG>(static_cast<SkSVGSVG*>(root.release())),
430 std::move(fFontMgr),
431 std::move(resource_provider),
432 std::move(mapper),
433 std::move(factory)));
434}
#define TRACE_FUNC
SI T load(const P *ptr)
Definition SkDOM.h:24
const Node * getRootNode() const
Definition SkDOM.cpp:76
const Node * build(SkStream &)
Definition SkDOM.cpp:294
SKSHAPER_API sk_sp< Factory > Factory()
#define TRACE_EVENT0(category_group, name)

◆ setFontManager()

SkSVGDOM::Builder & SkSVGDOM::Builder::setFontManager ( sk_sp< SkFontMgr fmgr)

Specify a font manager for loading fonts (e.g. from the system) to render <text> SVG nodes. If this is not set, but a font is required as part of rendering, the text will not be displayed.

Definition at line 390 of file SkSVGDOM.cpp.

390 {
391 fFontMgr = std::move(fmgr);
392 return *this;
393}

◆ setResourceProvider()

SkSVGDOM::Builder & SkSVGDOM::Builder::setResourceProvider ( sk_sp< skresources::ResourceProvider rp)

Specify a resource provider for loading images etc.

Definition at line 395 of file SkSVGDOM.cpp.

395 {
396 fResourceProvider = std::move(rp);
397 return *this;
398}

◆ setTextShapingFactory()

SkSVGDOM::Builder & SkSVGDOM::Builder::setTextShapingFactory ( sk_sp< SkShapers::Factory f)

Specify the callbacks for dealing with shaping text. See also modules/skshaper/utils/FactoryHelpers.h

Definition at line 400 of file SkSVGDOM.cpp.

400 {
401 fTextShapingFactory = f;
402 return *this;
403}

The documentation for this class was generated from the following files: