[education/rkward] rkward/rbackend/rkwarddevice: Add stubs for R 4.2 graphics, remove some ancient version checks.
Thomas Friedrichsmeier
null at kde.org
Sun Apr 3 15:26:23 BST 2022
Git commit 346be3508ac1f05b5f255338c36edd82081e6d3e by Thomas Friedrichsmeier.
Committed on 02/04/2022 at 21:24.
Pushed by tfry into branch 'master'.
Add stubs for R 4.2 graphics, remove some ancient version checks.
M +16 -12 rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp
M +27 -4 rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
https://invent.kde.org/education/rkward/commit/346be3508ac1f05b5f255338c36edd82081e6d3e
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp
index a91f8127..0e547ad6 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_setup.cpp
@@ -170,15 +170,12 @@ bool RKGraphicsDeviceDesc::init (pDevDesc dev, double pointsize, const QStringLi
dev->wantSymbolUTF8 = TRUE;
dev->useRotatedTextInContour = TRUE;
-#if R_VERSION >= R_Version (2, 14, 0)
dev->haveTransparency = 2;
dev->haveTransparentBg = 2; // FIXME. Do we really? Check.
dev->haveRaster = 2;
dev->haveCapture = 2;
dev->haveLocator = 2;
-#endif
-#if R_VERSION >= R_Version (2, 12, 0)
/*
* Mouse events
*/
@@ -191,7 +188,6 @@ bool RKGraphicsDeviceDesc::init (pDevDesc dev, double pointsize, const QStringLi
// looking for events
dev->eventHelper = RKD_EventHelper;
dev->onExit = RKD_onExit;
-#endif
/*
* Device functions
@@ -208,31 +204,39 @@ bool RKGraphicsDeviceDesc::init (pDevDesc dev, double pointsize, const QStringLi
dev->newPage = RKD_NewPage;
dev->polygon = RKD_Polygon;
dev->polyline = RKD_Polyline;
-#if R_VERSION >= R_Version (2, 12, 0)
dev->path = RKD_Path;
-#endif
dev->rect = RKD_Rect;
dev->size = RKD_Size;
// dev->onexit = RKD_OnExit; Called on user interrupts. NULL is OK.
-#if R_VERSION >= R_Version (2, 11, 0)
dev->raster = RKD_Raster;
dev->cap = RKD_Capture;
-#endif
dev->newFrameConfirm = RKD_NewFrameConfirm;
-
-#if R_VERSION >= R_Version (2, 14, 0)
dev->holdflush = RKD_HoldFlush;
-#endif
#if R_VERSION >= R_Version (4, 1, 0)
+ // patterns and gradients
dev->setPattern = RKD_SetPattern;
dev->releasePattern = RKD_ReleasePattern;
+ // clipping paths
dev->setClipPath = RKD_SetClipPath;
dev->releaseClipPath = RKD_ReleaseClipPath;
+ // masks
dev->setMask = RKD_SetMask;
dev->releaseMask = RKD_ReleaseMask;
- dev->deviceVersion = qMin(14, R_GE_version);
+ dev->deviceVersion = qMin(15, R_GE_version);
dev->deviceClip = TRUE; // for now
#endif
+
+#if R_VERSION >= R_Version (4, 2, 0)
+ // groups
+ dev->defineGroup = RKD_DefineGroup;
+ dev->useGroup = RKD_UseGroup;
+ dev->releaseGroup = RKD_ReleaseGroup;
+
+ // stroked / filled paths
+ dev->stroke = RKD_Stroke;
+ dev->fill = RKD_Fill;
+ dev->fillStroke = RKD_FillStroke;
+#endif
return true;
}
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
index 5890e2f0..56e0d343 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_stubs.cpp
@@ -546,7 +546,6 @@ static Rboolean RKD_NewFrameConfirm (pDevDesc dev) {
// Return value FALSE: Let R ask, instead
}
-#if R_VERSION >= R_Version (2, 12, 0)
void RKD_EventHelper (pDevDesc dev, int code) {
RK_TRACE(GRAPHICS_DEVICE);
{
@@ -635,9 +634,7 @@ void RKD_onExit (pDevDesc dev) {
}
dev->gettingEvent = (Rboolean) false;
}
-#endif
-#if R_VERSION >= R_Version (2, 14, 0)
int RKD_HoldFlush (pDevDesc dev, int level) {
RK_TRACE(GRAPHICS_DEVICE);
#ifdef __GNUC__
@@ -645,7 +642,6 @@ int RKD_HoldFlush (pDevDesc dev, int level) {
#endif
return 0;
}
-#endif
#if R_VERSION >= R_Version (4, 1, 0)
qint8 getGradientExtend(int Rextent) {
@@ -857,3 +853,30 @@ void RKD_ReleaseMask (SEXP ref, pDevDesc dev) {
}
#endif
+
+#if R_VERSION >= R_Version(4,2,0)
+SEXP RKD_DefineGroup(SEXP source, int op, SEXP destination, pDevDesc dev) {
+ return R_NilValue;
+}
+
+void RKD_UseGroup(SEXP ref, SEXP trans, pDevDesc dev) {
+}
+
+void RKD_ReleaseGroup(SEXP ref, pDevDesc dev) {
+}
+
+void doFillAndOrStroke(SEXP path, const pGEcontext g, pDevDesc dev, bool fill, bool stroke) {
+}
+
+void RKD_Stroke(SEXP path, const pGEcontext gc, pDevDesc dev) {
+ doFillAndOrStroke(path, gc, dev, false, true);
+}
+
+void RKD_Fill(SEXP path, int rule, const pGEcontext gc, pDevDesc dev) {
+ doFillAndOrStroke(path, gc, dev, true, false);
+}
+
+void RKD_FillStroke(SEXP path, int rule, const pGEcontext gc, pDevDesc dev) {
+ doFillAndOrStroke(path, gc, dev, true, true);
+}
+#endif
More information about the rkward-tracker
mailing list