Chromium HTML5 <svg>对应c++接口说明

一、SVG:可缩放矢量图形

开始学习 SVG

可缩放矢量图形Scalable Vector Graphics,SVG)基于 XML 标记语言,用于描述二维的矢量图形。

作为一个基于文本的开放网络标准,SVG 能够优雅而简洁地渲染不同大小的图形,并和 CSS、DOM、JavaScript 和 SMIL 等其他网络标准无缝衔接。本质上,SVG 相对于图像,就好比 HTML 相对于文本。

SVG 图像及其相关行为被定义于 XML 文本文件之中,这意味着可以对它们进行搜索、索引、编写脚本以及压缩。此外,这也意味着可以使用任何文本编辑器和绘图软件来创建和编辑它们。

和传统的点阵图像模式(如 JPEG 和 PNG)不同的是,SVG 格式提供的是矢量图,这意味着它的图像能够被无限放大而不失真或降低质量,并且可以方便地修改内容,无需图形编辑器。通过使用合适的库进行配合,SVG 文件甚至可以随时进行本地化。

SVG 是由万维网联盟(W3C)自 1999 年开始开发的开放标准。

其他内容请查阅 SVG 教程。

文档

SVG 元素参考

了解每一种 SVG 元素的细节。

SVG 属性参考

了解每一种 SVG 属性的细节。

SVG DOM 接口参考

了解有关 SVG DOM API 的全部细节。

SVG:可缩放矢量图形 | MDN (mozilla.org)

前端测试用例:

<!DOCTYPE html>
<html>
<body><svg xmlns="http://www.w3.org/2000/svg" version="1.1"><circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /><line x1="0" y1="80" x2="100" y2="20" stroke="black" />
</svg> </body>
</html>

二、<svg>对应c++接口定义:

 1、<svg>对应svg_tag_names.json5

     third_party\blink\renderer\core\svg\svg_tag_names.json5 文件里面定义了所有对象元素:

{metadata: {namespace: "SVG",namespaceURI: "http://www.w3.org/2000/svg",fallbackInterfaceName: "SVGUnknownElement",fallbackJSInterfaceName: "SVGElement",export: "CORE_EXPORT",},data: ["a",{name: "animate",noTypeHelpers: true,},{name: "animateColor",JSInterfaceName: "SVGElement",interfaceName: "SVGUnknownElement",noConstructor: true,},"animateMotion","animateTransform","set","circle","clipPath","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata",{name: "mpath",interfaceName: "SVGMPathElement",},"path","pattern","polygon","polyline","radialGradient","rect",{name: "script",constructorNeedsCreateElementFlags: true,},"stop",{name: "style",constructorNeedsCreateElementFlags: true,},{name: "svg",interfaceName: "SVGSVGElement",},"switch","symbol","text","textPath","title",{name: "tspan",interfaceName: "SVGTSpanElement",},"use","view",],
}

2、元素对应都在以下两个文件下 包含"svg"关键字的。

src\third_party\blink\renderer\core\svg

src\out\Debug\gen\third_party\blink\renderer\bindings\core\v8

 三、本文以<line>和<circle>为例:

 1、<line>接口定义:

third_party\blink\renderer\core\svg\svg_line_element.idl

// https://svgwg.org/svg2-draft/shapes.html#InterfaceSVGLineElement[Exposed=Window]
interface SVGLineElement : SVGGeometryElement {[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength x1;[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength y1;[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength x2;[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength y2;
};

third_party\blink\renderer\core\svg\svg_line_element.h

third_party\blink\renderer\core\svg\svg_line_element.cc

out\Debug\gen\third_party\blink\renderer\bindings\core\v8\v8_svg_line_element.h

out\Debug\gen\third_party\blink\renderer\bindings\core\v8\v8_svg_line_element.cc

2、<circle>接口定义:

third_party\blink\renderer\core\svg\svg_circle_element.idl

// https://svgwg.org/svg2-draft/shapes.html#InterfaceSVGCircleElement[Exposed=Window]
interface SVGCircleElement : SVGGeometryElement {[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength cx;[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength cy;[MeasureAs=SVG1DOMShape] readonly attribute SVGAnimatedLength r;
};

third_party\blink\renderer\core\svg\svg_circle_element.h

third_party\blink\renderer\core\svg\svg_circle_element.cc

out\Debug\gen\third_party\blink\renderer\bindings\core\v8\v8_svg_circle_element.h

out\Debug\gen\third_party\blink\renderer\bindings\core\v8\v8_svg_circle_element.cc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/448087.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c高级10月15日

1&#xff0c;思维导图

鸿蒙版微信正式上架,国产化软件抱团进化多样化生态圈

微信鸿蒙版已经在2024年10月12日正式上架鸿蒙应用市场&#xff0c;并且开始公测。根据报道&#xff0c;上架后鸿蒙版微信的公测名额在很短的时间内就被抢光&#xff0c;显示出用户对于这款应用的极大热情。腾讯高管张军宣布&#xff0c;自10月12日起&#xff0c;每晚在鸿蒙应用…

3D Slicer 教程三 ---- 坐标系

上篇提到3D Slicer 教程二 ---- 数据集-CSDN博客 3d slicer的坐标系与大多数医学影像软件使用LPS&#xff08;左、后、上&#xff09;坐标系统不太一样, 今天就仔细介绍一下坐标系的区别,复盘一下在影像处理中遇到的坐标问题(集中在坐标处理相关的,图像插值,图像处理, 定位线,翻…

薪资管理系统原型PC端+移动端 Axure原型 交互设计 Axure实战项目

薪资管理系统原型PC端移动端 Salary Management System Prototype 薪资管理系统原型图是一种以图形化方式展示系统界面和功能交互的设计图形。该原型图旨在呈现薪资管理系统的整体架构、界面布局和用户交互流程&#xff0c;为开发团队和利益相关者提供一个清晰而具体的概念。…

安全生产玩手机检测系统 玩手机识别系统 玩手机监测预警系统 使用 Python 和 OpenCV 库实现

在生产作业过程中&#xff0c;员工玩手机是一种极其危险的行为。它会分散员工的注意力&#xff0c;使其无法专注于工作任务。生产现场往往存在各种潜在的危险因素&#xff0c;如机械设备的运转、高空作业、化学品的使用等&#xff0c;一旦员工分心&#xff0c;就很容易忽视这些…

mongodb-7.0.14分片副本集超详细部署

mongodb介绍&#xff1a; 是最常用的nosql数据库&#xff0c;在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb&#xff08;分片副本&#xff09;集群。 环境准备 系统系统 BC 21.10 三台服务器&#xff1a;192.168.123.247/248/249 安装包&#xff1a…

AI LLM 利器 Ollama 架构和对话处理流程解析

Ollama 概述 Ollama 是一个快速运行 LLM&#xff08;Large Language Models&#xff0c;大语言模型&#xff09;的简便工具。通过 Ollama&#xff0c;用户无需复杂的环境配置&#xff0c;即可轻松与大语言模型对话互动。 本文将解析 Ollama 的整体架构&#xff0c;并详细讲解…

FFmpeg的简单使用【Windows】

目录 一、视频生成图片 静态图片 转码过程 动态图片gif 二、图片生成视频 三、FFmpeg常用参数命令 3.1 主要参数 3.1.1、-i 3.1.2、-f 3.1.3、-ss 3.1.4、-t 3.2 音频参数 3.2.1、-aframes 3.2.2、 -b:a 3.2.3、-ar 3.2.4、-ac 3.2.5、-acodec 3.2.6、-an 3…

desmos和webgl绘制线条

目录 desmos绘制 webgl绘制 将线段坐标生成三角化坐标 处理斜接线段 处理圆角 尖角 先在desmos上面完成线条lineJoin绘制的,再将代码和公式转到js用webgl绘制. desmos绘制 示例 desmos计角斜接角时&#xff0c;需要用到的一些函数。在desmos定义成公共函数&#xff0c…

【全网最全】AI产品经理面试高频100题答案解析

详细的目录如下&#xff0c;需要的小伙伴可以详细看一下~ 第一章&#xff1a;机器学习和深度学习的关系 第二章&#xff1a;机器学习7大经典算法 算法一&#xff1a;K近邻算法【分类算法】 1.1 KNN 算法的实现原理 1.2 KNN应用场景举例&#xff1a;预测候选人能不能拿到 O…

心觉:激活潜意识财富密码:每天一练,财富自动来

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作200/1000天 为什么有些人总是轻而易举地吸引到财富 而你却努力多年仍然徘徊在财务的困境中&#xff1f; 你每天都在辛苦工作&…

LabVIEW离心泵监测系统

LabVIEW的离心泵监测系统在监测离心泵的运行状态&#xff0c;通过实时数据采集和故障预警&#xff0c;提高泵的运行效率和安全性。系统集成了多种传感器&#xff0c;利用Modbus RTU协议和RS485串口总线进行数据通信&#xff0c;通过LabVIEW软件平台实现数据处理和用户界面交互。…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中&#xff0c;我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如&#xff0c;我们介绍了以下案例&#xff1a; Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

Opencv:FisherFace算法实现人脸检测

目录 简介 实现步骤 1. 图像读取和预处理 2. 创建和训练识别器 3. 图像识别和结果展示 4、结果展示 总结 简介 在人工智能和计算机视觉领域&#xff0c;人脸识别是一项非常有趣且实用的技术。本文将向您介绍如何使用OpenCV库以及FisherFace算法实现人脸识别。我们将一步…

数据可视化-使用python制作词云图(附代码)

想象一下&#xff0c;当你写完一篇日记或者一篇文章后&#xff0c;想要知道里面哪些词语出现得最多。这时候&#xff0c;词云图就能派上用场了。它会统计出文章里每个词语出现的次数&#xff0c;然后把这些词语以不同大小的字体展示出来&#xff0c;出现次数越多的词语&#xf…

【MATLAB代码】基于RSSI原理的蓝牙定位程序(N个锚点、三维空间),源代码可直接复制

文章目录 介绍主要功能技术细节适用场景程序结构运行截图源代码详细教程:基于RSSI的蓝牙定位程序1. 准备工作2. 代码结构2.1 清理工作环境2.2 定义参数2.3 生成锚点坐标2.4 定义信号强度与距离的关系2.5 模拟未知点的位置2.6 定位函数2.7 绘图2.8 输出结果2.9 定义定位函数3. …

SSL---SSL certificate problem

0 Preface/Foreword 0.1 SSL certificate problem 开发过程中&#xff0c;gitlab-runner连接gitlab时候出现SSL 证书问题。 场景&#xff1a;公司的gitlab runner服务器引入了SSL证书&#xff0c;每年都会主动更新一次。当前的gitlab-runner运行在PC机器上&#xff0c;但是g…

某乎接口zse96解析(附带可直接运行js)

某乎接口zse96解析 下面是作者呕心沥血,观看各路大神和某乎js拼接在一起的js,附带浏览器环境,可以直接运行示例接口多请求几次发现,出来zse96在变化之外,其余的基本不变,那么源码中直接搜索x-zse-96,得出下面2个函数 var tE = eo(te, tp.body, {xUDId: tv,zse93: tT,xApp…

IO编程--拷贝文件、文件总行数输出、时间打印

一、使用fread和fwrite完成两个文件的拷贝&#xff0c;要求源文件和目标文件由外界输入 代码如下: #include <myhead.h> int main(int argc, const char *argv[]) {//判断是否输入两个文件名if(argc!3){fprintf(stderr,"文件个数错误");return -1;}//以读形式打…

【去哪儿-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…