From 96f96c5e9da6db91509afea4c1ac9b1ba04ddaae Mon Sep 17 00:00:00 2001 From: Alan Third Date: Wed, 24 Mar 2021 22:50:03 +0000 Subject: [PATCH] Implement frame-scale-factor * src/frame.c (Fframe_scale_factor): New function. (syms_of_frame): Add frame-scale-factor. * src/frame.h: Add FRAME_SCALE_FACTOR. * src/image.c: Move FRAME_SCALE_FACTOR to frame.h. --- src/frame.c | 12 ++++++++++++ src/frame.h | 7 +++++++ src/image.c | 8 -------- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/frame.c b/src/frame.c index a62347c1fb..fd649ff0fa 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3744,6 +3744,17 @@ DEFUN ("set-frame-window-state-change", Fset_frame_window_state_change, return (FRAME_WINDOW_STATE_CHANGE (f) = !NILP (arg)) ? Qt : Qnil; } +DEFUN ("frame-scale-factor", Fframe_scale_factor, Sframe_scale_factor, + 0, 1, 0, + doc: /* Return FRAMEs scale factor. +The scale factor is the amount a logical pixel size must be multiplied +to find the real number of pixels. */) + (Lisp_Object frame) +{ + struct frame *f = decode_live_frame (frame); + + return (make_float (FRAME_SCALE_FACTOR (f))); +} /*********************************************************************** Frame Parameters @@ -6457,6 +6468,7 @@ focus (where a frame immediately loses focus when it's left by the mouse defsubr (&Sframe_pointer_visible_p); defsubr (&Sframe_window_state_change); defsubr (&Sset_frame_window_state_change); + defsubr (&Sframe_scale_factor); #ifdef HAVE_WINDOW_SYSTEM defsubr (&Sx_get_resource); diff --git a/src/frame.h b/src/frame.h index 9ddcb4c681..9963112036 100644 --- a/src/frame.h +++ b/src/frame.h @@ -907,6 +907,13 @@ #define FRAME_HAS_MINIBUF_P(f) \ (WINDOWP (f->minibuffer_window) \ && XFRAME (XWINDOW (f->minibuffer_window)->frame) == f) +/* Scale factor of frame F. */ +#if defined HAVE_NS +# define FRAME_SCALE_FACTOR(f) (FRAME_NS_P (f) ? ns_frame_scale_factor (f) : 1) +#else +# define FRAME_SCALE_FACTOR(f) 1; +#endif + /* Pixel width of frame F. */ #define FRAME_PIXEL_WIDTH(f) ((f)->pixel_width) diff --git a/src/image.c b/src/image.c index 3d504effa6..24089e5cb0 100644 --- a/src/image.c +++ b/src/image.c @@ -135,14 +135,6 @@ #define PIX_MASK_DRAW 1 # define COLOR_TABLE_SUPPORT 1 #endif -#ifdef HAVE_RSVG -#if defined HAVE_NS -# define FRAME_SCALE_FACTOR(f) ns_frame_scale_factor (f) -#else -# define FRAME_SCALE_FACTOR(f) 1; -#endif -#endif - static void image_disable_image (struct frame *, struct image *); static void image_edge_detection (struct frame *, struct image *, Lisp_Object, Lisp_Object); -- 2.29.2