Skip to content

Commit bbbccf2

Browse files
committed
Add engine version to svg file
1 parent 1f20e00 commit bbbccf2

File tree

6 files changed

+44
-5
lines changed

6 files changed

+44
-5
lines changed

R/cpp11.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ svgstring_ <- function(env, bg, width, height, pointsize, standalone) {
1515
get_svg_content <- function(p) {
1616
.Call(`_vdiffr_get_svg_content`, p)
1717
}
18+
19+
set_engine_version <- function(version) {
20+
invisible(.Call(`_vdiffr_set_engine_version`, version))
21+
}

R/vdiffr.R

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,7 @@ SVG_ENGINE_VER <- "2.0"
1010
svg_engine_ver <- function() {
1111
as.numeric_version(SVG_ENGINE_VER)
1212
}
13+
14+
.onLoad <- function(lib, pkg) {
15+
set_engine_version(SVG_ENGINE_VER)
16+
}

src/cpp11.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,29 @@ extern "C" SEXP _vdiffr_get_svg_content(SEXP p) {
3232
return cpp11::as_sexp(get_svg_content(cpp11::as_cpp<cpp11::decay_t<cpp11::external_pointer<std::stringstream>>>(p)));
3333
END_CPP11
3434
}
35+
// engine_version.cpp
36+
void set_engine_version(cpp11::strings version);
37+
extern "C" SEXP _vdiffr_set_engine_version(SEXP version) {
38+
BEGIN_CPP11
39+
set_engine_version(cpp11::as_cpp<cpp11::decay_t<cpp11::strings>>(version));
40+
return R_NilValue;
41+
END_CPP11
42+
}
3543

3644
extern "C" {
3745
/* .Call calls */
3846
extern SEXP _vdiffr_compare_files(SEXP, SEXP);
3947
extern SEXP _vdiffr_get_svg_content(SEXP);
48+
extern SEXP _vdiffr_set_engine_version(SEXP);
4049
extern SEXP _vdiffr_svglite_(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP);
4150
extern SEXP _vdiffr_svgstring_(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP);
4251

4352
static const R_CallMethodDef CallEntries[] = {
44-
{"_vdiffr_compare_files", (DL_FUNC) &_vdiffr_compare_files, 2},
45-
{"_vdiffr_get_svg_content", (DL_FUNC) &_vdiffr_get_svg_content, 1},
46-
{"_vdiffr_svglite_", (DL_FUNC) &_vdiffr_svglite_, 7},
47-
{"_vdiffr_svgstring_", (DL_FUNC) &_vdiffr_svgstring_, 6},
53+
{"_vdiffr_compare_files", (DL_FUNC) &_vdiffr_compare_files, 2},
54+
{"_vdiffr_get_svg_content", (DL_FUNC) &_vdiffr_get_svg_content, 1},
55+
{"_vdiffr_set_engine_version", (DL_FUNC) &_vdiffr_set_engine_version, 1},
56+
{"_vdiffr_svglite_", (DL_FUNC) &_vdiffr_svglite_, 7},
57+
{"_vdiffr_svgstring_", (DL_FUNC) &_vdiffr_svgstring_, 6},
4858
{NULL, NULL, 0}
4959
};
5060
}

src/devSVG.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ extern "C" {
3939
#include "utils.h"
4040
#include "tinyformat.h"
4141

42+
#include "engine_version.h"
4243
#include "glyph_dims.h"
4344

4445
typedef std::shared_ptr<SvgStream> SvgStreamPtr;
@@ -465,11 +466,13 @@ void svg_new_page(const pGEcontext gc, pDevDesc dd) {
465466
}
466467

467468
(*stream) << " class='svglite'";
469+
470+
(*stream) << " data-engine-version='" << get_engine_version() << "'";
468471

469472
(*stream) << " width='" << dd->right << "pt' height='" << dd->bottom << "pt'";
470473

471474
(*stream) << " viewBox='0 0 " << dd->right << ' ' << dd->bottom << "'>\n";
472-
475+
473476
// Setting default styles
474477
(*stream) << "<defs>\n";
475478
(*stream) << " <style type='text/css'><![CDATA[\n";

src/engine_version.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include "engine_version.h"
2+
#include <cpp11/strings.hpp>
3+
4+
std::string ENGINE_VERSION = "";
5+
6+
std::string get_engine_version() {
7+
return ENGINE_VERSION;
8+
}
9+
10+
[[cpp11::register]]
11+
void set_engine_version(cpp11::strings version) {
12+
ENGINE_VERSION = cpp11::as_cpp<std::string>(version);
13+
}

src/engine_version.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#pragma once
2+
3+
#include <string>
4+
5+
std::string get_engine_version();

0 commit comments

Comments
 (0)