version 1.2, 2025/03/09 15:20:18
|
version 1.5, 2025/04/13 04:22:43
|
Line 1
|
Line 1
|
/* |
/* |
* * |
* $Id$ |
* * * |
* ^$DISPLAY ssvn |
* * * |
|
* *************** |
|
* * * * * |
|
* * MUMPS * |
|
* * * * * |
|
* *************** |
|
* * * |
|
* * * |
|
* * |
|
* |
|
* ssvn_display.c |
|
* ^$DISPLAY ssv |
|
* |
* |
* |
* |
* Author: Serena Willis <snw@coherent-logic.com> |
* Author: Serena Willis <snw@coherent-logic.com> |
* Copyright (C) 1998 MUG Deutschland |
* Copyright (C) 1998 MUG Deutschland |
* Copyright (C) 2020 Coherent Logic Development LLC |
* Copyright (C) 2020, 2025 Coherent Logic Development LLC |
* |
* |
* |
* |
* This file is part of FreeM. |
* This file is part of FreeM. |
Line 35
|
Line 23
|
* You should have received a copy of the GNU Affero Public License |
* You should have received a copy of the GNU Affero Public License |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* |
* |
|
* $Log$ |
|
* Revision 1.5 2025/04/13 04:22:43 snw |
|
* Fix snprintf calls |
|
* |
|
* Revision 1.4 2025/04/10 01:24:38 snw |
|
* Remove C++ style comments |
|
* |
|
* Revision 1.3 2025/03/09 19:50:47 snw |
|
* Second phase of REUSE compliance and header reformat |
|
* |
|
* |
|
* SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC |
|
* SPDX-License-Identifier: AGPL-3.0-or-later |
**/ |
**/ |
|
|
#include <stdio.h> |
#include <stdio.h> |
Line 48
|
Line 49
|
|
|
#if defined(HAVE_MWAPI_MOTIF) |
#if defined(HAVE_MWAPI_MOTIF) |
#include <limits.h> |
#include <limits.h> |
//#include <gtk/gtk.h> |
/* #include <gtk/gtk.h> */ |
#include <X11/Xlib.h> |
#include <X11/Xlib.h> |
//#include <glib.h> |
/* #include <glib.h> */ |
//#include <pango/pangocairo.h> |
/* #include <pango/pangocairo.h> */ |
|
|
#include "mref.h" |
#include "mref.h" |
|
|
Line 73 void ssvn_display_update(void)
|
Line 74 void ssvn_display_update(void)
|
Display *display; |
Display *display; |
Screen *screen; |
Screen *screen; |
|
|
// PangoFontFamily **families; |
/* |
// int n_families; |
PangoFontFamily **families; |
// PangoFontMap *font_map; |
int n_families; |
|
PangoFontMap *font_map; |
|
*/ |
|
|
char *result; |
char *result; |
unsigned long ressize, restail; |
unsigned long ressize, restail; |
Line 102 void ssvn_display_update(void)
|
Line 105 void ssvn_display_update(void)
|
fmtid = XInternAtom (display, "STRING", False); |
fmtid = XInternAtom (display, "STRING", False); |
propid = XInternAtom (display, "XSEL_DATA", False); |
propid = XInternAtom (display, "XSEL_DATA", False); |
incrid = XInternAtom (display, "INCR", False); |
incrid = XInternAtom (display, "INCR", False); |
// font_map = pango_cairo_font_map_get_default (); |
/*font_map = pango_cairo_font_map_get_default (); |
// pango_font_map_list_families (font_map, &families, &n_families); |
pango_font_map_list_families (font_map, &families, &n_families);*/ |
|
|
XConvertSelection (display, bufid, fmtid, propid, window, CurrentTime); |
XConvertSelection (display, bufid, fmtid, propid, window, CurrentTime); |
|
|
Line 116 void ssvn_display_update(void)
|
Line 119 void ssvn_display_update(void)
|
&fmtid, &resbits, &ressize, &restail, (unsigned char**)&result); |
&fmtid, &resbits, &ressize, &restail, (unsigned char**)&result); |
|
|
if (fmtid != incrid) { |
if (fmtid != incrid) { |
snprintf (clipboard_buffer, (ressize > 254 ? 254 : ressize), "%s", result); |
snprintf (clipboard_buffer, (ressize > (STRLEN - 1) ? (STRLEN - 1) : ressize), "%s", result); |
stcnv_c2m (clipboard_buffer); |
stcnv_c2m (clipboard_buffer); |
clipboard_buffer[255] = '\201'; |
clipboard_buffer[255] = '\201'; |
} |
} |
Line 130 void ssvn_display_update(void)
|
Line 133 void ssvn_display_update(void)
|
for (int i = 0; i < count_screens; ++i) { |
for (int i = 0; i < count_screens; ++i) { |
screen = ScreenOfDisplay (display, i); |
screen = ScreenOfDisplay (display, i); |
|
|
snprintf (display_name, 49, "%d", i); |
snprintf (display_name, sizeof (display_name) - 1, "%d", i); |
|
|
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202PLATFORM\201", display_name); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202PLATFORM\201", display_name); |
symtab (set_sym, k_buf, "X/MOTIF,3\201"); |
symtab (set_sym, k_buf, "X/MOTIF,3\201"); |
|
|
/* |
/* |
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202CLIPBOARD\201", display_name); |
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202CLIPBOARD\201", display_name); |
symtab (set_sym, k_buf, clipboard_buffer); |
symtab (set_sym, k_buf, clipboard_buffer); |
*/ |
*/ |
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202SIZE\201", display_name); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202SIZE\201", display_name); |
snprintf (d_buf, 512 - 1, "%d,%d\201", screen->width, screen->height); |
snprintf (d_buf, sizeof (k_buf) - 1, "%d,%d\201", screen->width, screen->height); |
symtab (set_sym, k_buf, d_buf); |
symtab (set_sym, k_buf, d_buf); |
|
|
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202SPECTRUM\201", display_name); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202SPECTRUM\201", display_name); |
snprintf (d_buf, 512 - 1, "%d\201", 16777216L); |
snprintf (d_buf, 512 - 1, "%d\201", 16777216L); |
symtab (set_sym, k_buf, d_buf); |
symtab (set_sym, k_buf, d_buf); |
|
|
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202COLORTYPE\201", display_name); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202COLORTYPE\201", display_name); |
snprintf (d_buf, 512 - 1, "COLOR\201"); |
snprintf (d_buf, 512 - 1, "COLOR\201"); |
symtab (set_sym, k_buf, d_buf); |
symtab (set_sym, k_buf, d_buf); |
|
|
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202UNITS\201", display_name); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202UNITS\201", display_name); |
snprintf (d_buf, 512 - 1, "PIXEL\201"); |
snprintf (d_buf, 512 - 1, "PIXEL\201"); |
symtab (set_sym, k_buf, d_buf); |
symtab (set_sym, k_buf, d_buf); |
|
|
#if 0 |
#if 0 |
if (!ssvn_display_initialized) { |
if (!ssvn_display_initialized) { |
|
|
// printf ("mwapi-gtk: enumerating system fonts... "); |
/* printf ("mwapi-gtk: enumerating system fonts... "); */ |
for (j = 0; j < n_families; j++) { |
for (j = 0; j < n_families; j++) { |
PangoFontFamily *family = families[j]; |
PangoFontFamily *family = families[j]; |
const char *family_name; |
const char *family_name; |
Line 166 void ssvn_display_update(void)
|
Line 169 void ssvn_display_update(void)
|
family_name = pango_font_family_get_name (family); |
family_name = pango_font_family_get_name (family); |
|
|
|
|
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202TYPEFACE\202%s\202%d\201", display_name, family_name, 0); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202TYPEFACE\202%s\202%d\201", display_name, family_name, 0); |
snprintf (d_buf, 512 - 1, "\201"); |
snprintf (dbuf, sizeof (dbuf) - 1, "\201"); |
symtab (set_sym, k_buf, d_buf); |
symtab (set_sym, k_buf, d_buf); |
|
|
/* |
/* |
for (k = 8; k <= 72; k += 2) { |
for (k = 8; k <= 72; k += 2) { |
snprintf (k_buf, 512 - 1, "^$DISPLAY\202%s\202TYPEFACE\202%s\202%d\201", display_name, family_name, k); |
snprintf (k_buf, sizeof (k_buf) - 1, "^$DISPLAY\202%s\202TYPEFACE\202%s\202%d\201", display_name, family_name, k); |
snprintf (d_buf, 512 - 1, "\201"); |
snprintf (dbuf, sizeof (dbuf) - 1, "\201"); |
symtab (set_sym, k_buf, d_buf); |
symtab (set_sym, k_buf, d_buf); |
} |
} |
*/ |
*/ |
|
|
} |
} |
// printf ("%d font families discovered\r\n", n_families); |
/* printf ("%d font families discovered\r\n", n_families); */ |
|
|
} |
} |
#endif |
#endif |
Line 187 void ssvn_display_update(void)
|
Line 190 void ssvn_display_update(void)
|
|
|
} |
} |
|
|
// g_free (families); |
/* g_free (families); */ |
|
|
if (!ssvn_display_initialized) { |
if (!ssvn_display_initialized) { |
ssvn_display_initialized = 1; |
ssvn_display_initialized = 1; |