Compare commits

...

45 commits

Author SHA1 Message Date
rfm
e59d923e90 New release
Some checks failed
/ ci (push) Has been cancelled
2025-02-11 18:52:08 +00:00
Fred Kiefer
e63ad3c1d2 Update news.texi for upcoming release
Some checks are pending
/ ci (push) Waiting to run
2025-02-10 22:40:35 +01:00
rfm
b9038250e6 Fix use of deallocated memory 2024-12-31 08:42:22 +00:00
Frederik Carlier
03a2e7e152
Enable default interpolation due to pixelated screen drawing (#53)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/branches/gnustep_testplant_branch@40163 72102866-910b-0410-8b05-ffd578937521

Co-authored-by: Marcian Lytwyn <gna@advcsi.com>
2024-11-05 18:30:47 +01:00
Riccardo
4e3ca27c0b
instead of just getting Latin1 we practically see getting 2 or 3 bytes (even for characters that representable in Latin1) so try our best to interpret them (#50) 2024-09-19 08:32:46 +02:00
Frederik Carlier
ba1c582024
Define WINBOOL on non-MinGW platforms (#52)
The Windows SDK declares BOOL as an int.  Objective C defines BOOl as a char.
Those two types clash.  MinGW's implementation of the Windows SDK uses the WINBOOL
type to avoid this clash.  When compiling natively on Windows, we need to manually
define WINBOOL.
MinGW will define _DEF_WINBOOL_ if it has defined WINBOOL so we can use the same trick
here.
See https://github.com/mingw-w64/mingw-w64/blob/master/mingw-w64-headers/include/ntdef.h#L355
2024-09-17 21:19:25 +02:00
Frederik Carlier
6e05e1e65e
Support building natively on Windows (#51)
When building for Windows using a native toolchain (i.e. not MinGW or MSYS), `<unistd.h>` is not available.  Include `<io.h>` instead and define `strcasecmp`.
2024-09-14 00:23:01 +02:00
Joe Maloney
d27af6af10
Fix build errors with Wayland on Debian 13 (trixie) using Clang 16 (#48)
* Solve an undelcared close function

* Fix xdgshell protocol handling and resolve compile errors

* Fixing build errors in WaylandServer+Cursor

* Revert changes except wl_cursor_destroy to fix build and avoid regressions

* Fix selector warnings and method call type issues

* Use window parameter directly

* Comments removed

* Include NSGraphics to eliminate redundant declaration.

* Remove NSWindow include that was replaced by NSGraphics
2024-08-28 23:03:03 +02:00
Fred Kiefer
e03ddf7b2b Update for new release 2024-05-26 22:14:27 +02:00
rfm
be85eb8ae6 add postscript pasteboard type 2024-03-07 09:50:42 +00:00
rfm
085082a6cc Add URL/URI-list support (without insisting on trailing cr-lf) 2024-03-06 20:47:04 +00:00
rfm
0d60ea2935 add html clipboard support 2024-03-06 20:39:29 +00:00
rfm
4fea5f4dae Add pdf support 2024-03-06 19:04:12 +00:00
Riccardo Mottola
c787d26af2 PNG support in copy and paste; NSPasteboardTypePNG XG_MIME_PNG 2024-03-05 18:00:30 +01:00
rfm
707c5239e3 Improve debug loging showing method entry/exit informmation 2024-03-05 12:48:21 +00:00
rfm
b8933e4610 Add support for text/plain;charset=utf8 and improve debug logging for available types 2024-03-05 11:36:45 +00:00
rfm
145ee71f5c iimprove formatting 2024-03-04 21:36:05 +00:00
rfm
6a221b4dc7 Report all available types in debug 2024-03-04 21:21:45 +00:00
rfm
e66906ef38 Optimisation for reading large properties: avoid memory reallocation and copying data. 2024-03-01 19:29:01 +00:00
rfm
f6707b897a Merge branch 'master' of ssh://github.com/gnustep/libs-back 2024-03-01 18:54:34 +00:00
Riccardo Mottola
9c31a7e016 debug which types are found available 2024-02-29 22:41:14 +01:00
rfm
ae6529e24f Add some debug for target types sent to X 2024-02-27 10:23:22 +00:00
rfm
bfbe4d8b57 Clean up new Incremental class and add mechanism to cancel old operations. 2024-02-27 05:36:10 +00:00
rfm
daf081b888 Rewrite code providing X selection property value using INCR. 2024-02-26 21:24:11 +00:00
rfm
a0a45faaea Add a lot of debug and rewrite to support sending using the INCR protocol 2024-02-26 17:07:39 +00:00
rfm
0a32e7284e fix minor leak and avoid inefficient memory reallocation with long properties. 2024-02-25 10:20:43 +00:00
rfm
d8c05939b4 fix leaks in last update 2024-02-20 08:19:01 +00:00
rfm
e781a3ae03 reduce x library traffic and memory footprint during large transfers 2024-02-19 22:06:55 +00:00
rfm
85bad5ded7 added more logging 2024-02-19 21:17:27 +00:00
Riccardo Mottola
d0a2376e92 try to make logging a bit more verbose 2024-02-19 22:12:26 +01:00
Riccardo Mottola
895fdbcf39 reshuffle code, compact name calculation and return NSString and not NSMutableString 2023-11-21 23:40:49 +01:00
Riccardo Mottola
4bb1370086 fix compiler warning with some code cleanup 2023-11-21 23:26:40 +01:00
Fred Kiefer
519f57d85a
Merge pull request #43 from qmfrederik/fixes/access-violation
Avoid AV in Win32FontInfo setupAttributes
2023-10-11 17:46:37 +02:00
Frederik Carlier
421c09dac2 Avoid AV in Win32FontInfo setupAttributes 2023-10-11 12:50:29 +02:00
Fred Kiefer
9ab65edd14
Merge pull request #42 from qmfrederik/features/headless-pr
Add headless backend
2023-10-01 23:30:01 +02:00
Frederik Carlier
8f0146f50d Update copyright headers
- Use GNU Lesser General Public License
- Streamline attributions in the form of "based on work by:"
- Streamline names of preprocessor variables
2023-10-01 23:01:55 +02:00
Frederik Carlier
feb28c4d84 Avoid instance variables on msvc 2023-09-30 22:00:00 +02:00
Frederik Carlier
3c1b5e1397 Build multiple configurations 2023-09-30 00:23:02 +02:00
Frederik Carlier
e9c633abf7 Add font enumerator, font info, and other classes 2023-09-30 00:23:02 +02:00
Frederik Carlier
bc1d726f41 Run autoreconf -i 2023-09-30 00:21:14 +02:00
Frederik Carlier
64f685db1c Filter out duplicates from subprojects 2023-09-30 00:21:14 +02:00
Frederik Carlier
f56d4cfce2 Skaffold headless backend 2023-09-30 00:21:14 +02:00
Frederik Carlier
1ec7eb6ecb Run autoreconf -i 2023-09-29 08:16:28 +00:00
Fred Kiefer
7c0c511674
Merge pull request #41 from qmfrederik/features/ci
Add GitHub Actions
2023-09-28 23:54:43 +02:00
Frederik Carlier
af84372398 Add GitHub Actions 2023-09-28 08:13:45 +00:00
41 changed files with 4585 additions and 2648 deletions

47
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,47 @@
on:
push:
pull_request:
jobs:
########### Linux ###########
linux:
name: ci
runs-on: ubuntu-latest
container:
image: ubuntu:22.04
# don't run pull requests from local branches twice
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository
strategy:
matrix:
include:
- server: x11
graphics: cairo
- server: x11
graphics: xlib
- server: headless
graphics: headless
env:
DEBIAN_FRONTEND: noninteractive
steps:
- uses: actions/checkout@v3
- name: Install packages
run: |
apt-get -q -y update
apt-get -q -y install libgnustep-gui-dev libfreetype-dev libcairo2-dev libxt-dev pkg-config build-essential
- name: Build source
run: |
. /usr/share/GNUstep/Makefiles/GNUstep.sh
./configure --enable-server=${{ matrix.server }} --enable-graphics=${{ matrix.graphics }}
make && make install
- name: Run tests
run: |
. /usr/share/GNUstep/Makefiles/GNUstep.sh
make check

View file

@ -1,7 +1,7 @@
1 Announcement
**************
This is version 0.29.0 of the GNUstep GUI Backend ('gnustep-back').
This is version 0.32.0 of the GNUstep GUI Backend (gnustep-back).
1.1 What is the GNUstep GUI Backend?
====================================
@ -20,32 +20,27 @@ easily ported to other display systems.
Window's Systems. It works via a DPS emulation engine to emulate the
DPS functions required by the front-end system.
1.2 Noteworthy changes in version '0.29.0'
1.2 Noteworthy changes in version 0.32.0
==========================================
The release includes an alpha version of the wayland backend and a few
bug fixes.
The release includes mostly bug fixes.
* Alpha version of the wayland backend.
* Improved focus handling for WindowMaker interaction.
* Speed up for font pattern resolving.
* Improved appicon behavior under WindowMaker.
* Prevent appicon flickering on WindowMaker at application start.
* On Windows, consistently use 'GetWindowLongPtr' and
'SetWindowLongPtr' in place of 'GetWindowLong' and 'SetWindowLong'
for win32 and cairo for various win64 fixes.
• Make window termination saver.
• Use default interpolation in Cairo.
• Allow UTF-8 input from XLookupString.
• Improve building on MS Windows.
1.3 Where can you get it? How can you compile it?
=================================================
The gnustep-back-0.29.0.tar.gz distribution file has been placed at
The gnustep-back-0.32.0.tar.gz distribution file has been placed at
<ftp://ftp.gnustep.org/pub/gnustep/core>.
It is accompanied by gnustep-back-0.29.0.tar.gz.sig, a PGP signature
It is accompanied by gnustep-back-0.32.0.tar.gz.sig, a PGP signature
which you can validate by putting both files in the same directory and
using:
gpg --verify gnustep-back-0.29.0.tar.gz.sig
gpg --verify gnustep-back-0.32.0.tar.gz.sig
Signature has been created using the key with the following
fingerprint:

View file

@ -1,3 +1,20 @@
2025-02-11 Richard Frith-Macdonald <rfm@gnu.org>
* ANNOUNCE:
* INSTALL:
* NEWS:
* README:
* Version: bump to 0.32.0
New release
2024-05-26 Fred Kiefer <FredKiefer@gmx.de>
* ChangeLog: Update for new release
* ANNOUNCE:
* NEWS:
* Documentation/news.texi: Update of release notes for 0.31.0.
* Version: bump to 0.31.0
2022-12-29 Richard Frith-Macdonald <rfm@gnu.org>
* ChangeLog: Update for new release

View file

@ -7,6 +7,30 @@
@include version.texi
@end ifset
@section Noteworthy changes in version @samp{0.32.0}
The release includes mostly bug fixes.
@itemize @bullet
@item Make window termination saver.
@item Use default interpolation in Cairo.
@item Allow UTF-8 input from XLookupString.
@item Improve building on MS Windows.
@end itemize
@ifclear ANNOUNCE-ONLY
@section Noteworthy changes in version @samp{0.31.0}
The release includes mostly improvements for pasteboard handling and a few bug fixes.
@itemize @bullet
@item Improve font name creation.
@item Add headless backend.
@item Add CI pipeline.
@end itemize
@section Noteworthy changes in version @samp{0.30.0}
The release includes mostly improvements for the new Wayland backend and a few bug fixes.
@ -18,7 +42,6 @@ The release includes mostly improvements for the new Wayland backend and a few
and at every Notify.
@end itemize
@ifclear ANNOUNCE-ONLY
@section Noteworthy changes in version @samp{0.29.0}

View file

@ -0,0 +1,33 @@
/*
HeadlessContext.h
Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef HeadlessContext_h
#define HeadlessContext_h
#include "gsc/GSContext.h"
@interface HeadlessContext : GSContext
@end
#endif /* HeadlessContext_h */

View file

@ -0,0 +1,42 @@
/*
HeadlessFaceInfo.h
Copyright (C) 2003, 2023 Free Software Foundation, Inc.
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
Based on work by: Alexander Malmberg <alexander@malmberg.org>
Based on work by: Fred Kiefer <fredkiefer@gmx.de>
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef HeadlessFaceInfo_h
#define HeadlessFaceInfo_h
#include <Foundation/NSObject.h>
@interface HeadlessFaceInfo : NSObject
{
void *_fontFace;
}
- (void *)fontFace;
@end
#endif /* HeadlessFaceInfo_h */

View file

@ -0,0 +1,41 @@
/*
HeadlessFontEnumeartorInfo.h
Copyright (C) 2003 Free Software Foundation, Inc.
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef HeadlessFontEnumerator_h
#define HeadlessFontEnumerator_h
#include <GNUstepGUI/GSFontInfo.h>
#include "headless/HeadlessFaceInfo.h"
@interface HeadlessFontEnumerator : GSFontEnumerator
{
}
+ (Class) faceInfoClass;
+ (HeadlessFaceInfo *) fontWithName: (NSString *)name;
@end
#endif /* HeadlessFontEnumerator_h */

View file

@ -0,0 +1,35 @@
/*
HeadlessFontInfo.h
Copyright (C) 2003 Free Software Foundation, Inc.
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef HeadlessFontInfo_h
#define HeadlessFontInfo_h
#include <GNUstepGUI/GSFontInfo.h>
@interface HeadlessFontInfo : GSFontInfo
@end
#endif /* HeadlessFontInfo_h */

View file

@ -0,0 +1,37 @@
/*
HeadlessGState.h
Copyright (C) 2004 Free Software Foundation, Inc.
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef HeadlessGState_h
#define HeadlessGState_h
#include "gsc/GSGState.h"
@interface HeadlessGState : GSGState
{
}
@end
#endif /* HeadlessGState_h */

View file

@ -0,0 +1,37 @@
/*
HeadlessServer.h
Copyright (C) 2002-2015 Free Software Foundation, Inc.
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef HeadlessServer_h
#define HeadlessServer_h
#include "config.h"
#include <GNUstepGUI/GSDisplayServer.h>
@interface HeadlessServer : GSDisplayServer
{
}
@end
#endif /* HeadlessServer_h */

12
INSTALL
View file

@ -5,7 +5,7 @@
================
This file documents the installation of the GNUstep Backend Library,
'gnustep-back'. If you are installing this package as part of the
gnustep-back. If you are installing this package as part of the
GNUstep core package, read the file GNUstep-HOWTO for more complete
instructions on how to install the entire GNUstep package (including
this library). GNUstep-HOWTO is located at <http://www.gnustep.org>
@ -15,9 +15,9 @@ this library). GNUstep-HOWTO is located at <http://www.gnustep.org>
1.2 Configuration
=================
Configuration is performed by running the 'configure' program at a shell
Configuration is performed by running the configure program at a shell
prompt. You may want to use some of the optional arguments to the
'configure' program. Type 'configure --help' for a list. GNUstep
configure program. Type configure --help for a list. GNUstep
specific options are at the end of this list (if any).
The backend comes with several different window server and graphics
@ -27,7 +27,7 @@ choose the art graphical drawing implementation, run
configure --enable-graphics=art
Type 'configure --help' for a list of graphical drawing
Type configure --help for a list of graphical drawing
implementations.
You can also change the name of the backend when configuring it.
@ -52,8 +52,8 @@ program:
To compile this library, type make. After this is complete, type make
install (make sure you are the root user). Some additional options you
can use with make are 'debug=yes' to make a debugging version of the
library and 'shared=no' to make a static version of the library. See
can use with make are debug=yes to make a debugging version of the
library and shared=no to make a static version of the library. See
the gstep-make package for more information on these options.
1.4 Installing

213
NEWS
View file

@ -1,79 +1,110 @@
1 NEWS
******
1.1 Noteworthy changes in version '0.29.0'
1.1 Noteworthy changes in version 0.32.0
==========================================
The release includes mostly bug fixes.
• Make window termination saver.
• Use default interpolation in Cairo.
• Allow UTF-8 input from XLookupString.
• Improve building on MS Windows.
1.2 Noteworthy changes in version 0.31.0
==========================================
The release includes mostly improvements for pasteboard handling and a
few bug fixes.
• Improve font name creation.
• Add headless backend.
• Add CI pipeline.
1.3 Noteworthy changes in version 0.30.0
==========================================
The release includes mostly improvements for the new Wayland backend and
a few bug fixes.
• Improvements for the wayland backend.
• Don't use font hinting for cauro, when using scaling.
• Fix pasteboard transfer of huge data by deleting property on begin
and at every Notify.
1.4 Noteworthy changes in version 0.29.0
==========================================
The release includes an alpha version of the wayland backend and a few
bug fixes.
* Alpha version of the wayland backend.
* Improved focus handling for WindowMaker interaction.
* Speed up for font pattern resolving.
* Improved appicon behavior under WindowMaker.
* Prevent appicon flickering on WindowMaker at application start.
* On Windows, consistently use 'GetWindowLongPtr' and
'SetWindowLongPtr' in place of 'GetWindowLong' and 'SetWindowLong'
Alpha version of the wayland backend.
Improved focus handling for WindowMaker interaction.
Speed up for font pattern resolving.
Improved appicon behavior under WindowMaker.
Prevent appicon flickering on WindowMaker at application start.
• On Windows, consistently use GetWindowLongPtr and
SetWindowLongPtr in place of GetWindowLong and SetWindowLong
for win32 and cairo for various win64 fixes.
1.2 Noteworthy changes in version '0.28.0'
1.5 Noteworthy changes in version 0.28.0
==========================================
This release includes a few bugfixes and a huge rework of multi monitor
handling.
* Improved focus handling for WindowMaker interaction.
* Cursor improvements.
* Better handling of fonts with fontconfig.
* Simplify code that converts images for X11.
* art: Remove ftfont-old.m.
* Use Xrandr for multi monitor support.
Improved focus handling for WindowMaker interaction.
Cursor improvements.
Better handling of fonts with fontconfig.
Simplify code that converts images for X11.
art: Remove ftfont-old.m.
Use Xrandr for multi monitor support.
1.3 Noteworthy changes in version '0.27.0'
1.6 Noteworthy changes in version 0.27.0
==========================================
This release includes a few bugfixes.
* configure: Improve configuration.
* xlib: Improve xft font classes.
* x11: Enable drawing in secondary threads.
* x11: Better handling of atoms. Method to get the window manager.
* opal: Improve colour handling
configure: Improve configuration.
xlib: Improve xft font classes.
x11: Enable drawing in secondary threads.
x11: Better handling of atoms. Method to get the window manager.
opal: Improve colour handling
1.4 Noteworthy changes in version '0.26.2'
1.7 Noteworthy changes in version 0.26.2
==========================================
This release contains no changes since 0.26.1. It is released to
coincide with gnustep-gui 0.26.2, which has important bugfixes related
to printing.
1.5 Noteworthy changes in version '0.26.1'
1.8 Noteworthy changes in version 0.26.1
==========================================
This release contains no changes since 0.26.0. It is released to
coincide with gnustep-gui 0.26.1, released to mark gnustep-base 1.25.1
as the requirement for gnustep-gui.
1.6 Noteworthy changes in version '0.26.0'
1.9 Noteworthy changes in version 0.26.0
==========================================
This release includes a few bugfixes, as well as compatibility
improvements as a result of GSoC 2017 project.
* opal: Bridging categories between Opal and GNUstep GUI. Added onto
opal: Bridging categories between Opal and GNUstep GUI. Added onto
NSColor, NSImage and NSImageRep.
* cairo: Get -DPSshow: to work on scaled windows.
* opal: Allow creating a NSGraphicsContext with a custom graphics
cairo: Get -DPSshow: to work on scaled windows.
opal: Allow creating a NSGraphicsContext with a custom graphics
port, other than a CGContext.
* misc: Fix reported static analyser warnings.
misc: Fix reported static analyser warnings.
1.7 Noteworthy changes in version '0.25.1'
==========================================
1.10 Noteworthy changes in version 0.25.1
===========================================
Small fixes and cleanups.
1.8 Noteworthy changes in version '0.25.0'
==========================================
1.11 Noteworthy changes in version 0.25.0
===========================================
Support for pattern phase, compositing operation, image interpolation
and antialiasing per gstate.
@ -84,28 +115,28 @@ and antialiasing per gstate.
Various fixes.
1.9 Noteworthy changes in version '0.24.1'
==========================================
1.12 Noteworthy changes in version 0.24.1
===========================================
Improvements in win32 display and mouse tracking.
Various minor bugfixes and cleanups.
1.10 Noteworthy changes in version '0.24.0'
1.13 Noteworthy changes in version 0.24.0
===========================================
Added experimental Opal backend.
Allow for ARGB visual for OpenGL.
1.11 Noteworthy changes in version '0.23.0'
1.14 Noteworthy changes in version 0.23.0
===========================================
Added cairo support for ms-windows.
Updated for NSInteger/CGFloat support
1.12 Noteworthy changes in version '0.22.0'
1.15 Noteworthy changes in version 0.22.0
===========================================
Added new user defaults to make app icons and mini windows sticky
@ -114,7 +145,7 @@ Added new user defaults to make app icons and mini windows sticky
Many improvements to Cairo rendering, including buffering, glyphs and
DPI scaling.
1.13 Noteworthy changes in version '0.20.0'
1.16 Noteworthy changes in version 0.20.0
===========================================
Cairo is now the default backend, but falls back to art and xlib
@ -124,37 +155,37 @@ gracefully.
More Windows improvements.
1.14 Noteworthy changes in version '0.19.0'
1.17 Noteworthy changes in version 0.19.0
===========================================
This is an (unstable) copy of the 0.18.0 release
1.15 Noteworthy changes in version '0.18.0'
1.18 Noteworthy changes in version 0.18.0
===========================================
Many Windows improvements
Implement pattern colours for all backends.
1.16 Noteworthy changes in version '0.17.1'
1.19 Noteworthy changes in version 0.17.1
===========================================
Use DejaVu as another fallback font.
1.17 Noteworthy changes in version '0.17.0'
1.20 Noteworthy changes in version 0.17.0
===========================================
Key repeat support implemented in X11.
OpenGL fixes and improvements.
1.18 Noteworthy changes in version '0.16.0'
1.21 Noteworthy changes in version 0.16.0
===========================================
Transparent windows implemented in WIN32 backend, better position and
scaling of images. General cleanup of code.
1.19 Noteworthy changes in version '0.14.0'
1.22 Noteworthy changes in version 0.14.0
===========================================
Added code to automatically make any window which uses the
@ -162,7 +193,7 @@ NSDesktopWindowLevel also be omnipresent.
Many glyph drawing improvements.
1.20 Noteworthy changes in version '0.13.2'
1.23 Noteworthy changes in version 0.13.2
===========================================
Added basic implementation of window levels on Windows. In general a
@ -176,24 +207,24 @@ bunch of improvements in the Windows backend.
frontend. This version or greater of the backend needs to be used with
gui 0.13.2
1.21 Noteworthy changes in version '0.13.1'
1.24 Noteworthy changes in version 0.13.1
===========================================
Minor improvements.
1.22 Noteworthy changes in version '0.13.0'
1.25 Noteworthy changes in version 0.13.0
===========================================
Many improvements to the cairo backend. Add DPSshfill for all backends.
Better handling of X event times.
1.23 Noteworthy changes in version '0.12.0'
1.26 Noteworthy changes in version 0.12.0
===========================================
Big improvements to the cairo graphics and Window backend. Also better
support for OpenGL.
1.24 Noteworthy changes in version '0.11.0'
1.27 Noteworthy changes in version 0.11.0
===========================================
Bugfixes to art and xlib.
@ -201,17 +232,17 @@ Bugfixes to art and xlib.
There was some work on the Windows backend for the GDI interface by
Christopher Armstrong.
1.25 Noteworthy changes in version '0.10.3'
1.28 Noteworthy changes in version 0.10.3
===========================================
Fixes. A lot of Cairo backend work.
1.26 Noteworthy changes in version '0.10.2'
1.29 Noteworthy changes in version 0.10.2
===========================================
The Backend can set UTF8 window titles where this is allowed.
1.27 Noteworthy changes in version '0.10.1'
1.30 Noteworthy changes in version 0.10.1
===========================================
The art graphics module is the default now. As was previously the case,
@ -228,69 +259,69 @@ Cairo library before it will work with GNUstep. Due to this, this
module is still considered beta. Ask on the mailing lists for help with
this.
1.28 Noteworthy changes in version '0.10.0'
1.31 Noteworthy changes in version 0.10.0
===========================================
The installed name of the backend now includes an interface version
number. This avoids the potential version mismatch between the frontend
(GUI) library and the backend.
* Alpha blending was implemented for Windows, although it does not
Alpha blending was implemented for Windows, although it does not
seem to work on some machines.
1.29 Noteworthy changes in version '0.9.5'
1.32 Noteworthy changes in version 0.9.5
==========================================
* Added support for window alpha on X servers.
* Add support for old and new freetype libs.
* Some improvements to the Windows backend.
Added support for window alpha on X servers.
Add support for old and new freetype libs.
Some improvements to the Windows backend.
1.30 Noteworthy changes in version '0.9.4'
1.33 Noteworthy changes in version 0.9.4
==========================================
* Fast drawing on 8 bit displays was added (although it might only
Fast drawing on 8 bit displays was added (although it might only
speed things up on old X11 servers and/or remote servers).
* GNUstep modifier keys are mapped to KeySyms instead of KeyCodes
* Added a Cairo backend, although it is probably non-functional.
GNUstep modifier keys are mapped to KeySyms instead of KeyCodes
Added a Cairo backend, although it is probably non-functional.
Anyone is invited to contribute to making it work.
* art backend supports reading from a window.
* Add internal window decoration handling.
art backend supports reading from a window.
Add internal window decoration handling.
1.31 Noteworthy changes in version '0.9.3'
1.34 Noteworthy changes in version 0.9.3
==========================================
* A number of W32 window event enhancements
* art backend glyph drawing with alpha enhancements.
* libwraster is no longer checked for - image functions now in
A number of W32 window event enhancements
art backend glyph drawing with alpha enhancements.
libwraster is no longer checked for - image functions now in
frontend
1.32 Noteworthy changes in version '0.9.2'
1.35 Noteworthy changes in version 0.9.2
==========================================
* Art backend added support for grayscale, one-isblack colorspaces.
* Windows pasteboard interaction handling added.
* Better focus handling on Windows.
* Better font and draw handling on Windows.
Art backend added support for grayscale, one-isblack colorspaces.
Windows pasteboard interaction handling added.
Better focus handling on Windows.
Better font and draw handling on Windows.
1.33 Noteworthy changes in version '0.9.1'
1.36 Noteworthy changes in version 0.9.1
==========================================
Color on 8 bit displays works correctly now. WindowMaker properties are
always set now in case another manager is emulating WindowMaker styles.
1.34 Noteworthy changes in version '0.9.0'
1.37 Noteworthy changes in version 0.9.0
==========================================
Some more improvements to copy/paste support following ICCCM
specifications (like COMPOUND_TEXT support).
1.35 Noteworthy changes in version '0.8.9'
1.38 Noteworthy changes in version 0.8.9
==========================================
* Much improved pasting support between X apps and GNUstep apps.
* Backend headers are no longer installed (now private).
Much improved pasting support between X apps and GNUstep apps.
Backend headers are no longer installed (now private).
1.36 Noteworthy changes in version '0.8.8'
1.39 Noteworthy changes in version 0.8.8
==========================================
Full multi-byte/unicode support for East Asian languages was added to
@ -298,60 +329,60 @@ the xlib backend. The X11 server now supports use of the XIM input
method for entering non-keyboard characters. Both contributions thanks
to Kazunobu Kuriyama.
* Also added slightly better EWMH support.
* Art backend works with more versions of freetype.
Also added slightly better EWMH support.
Art backend works with more versions of freetype.
1.37 Noteworthy changes in version '0.8.7'
1.40 Noteworthy changes in version 0.8.7
==========================================
Handle NSBezierPath glyph drawing in art backend. art backend compiles
with all freetype except 2.1.3 via ifdefs.
1.38 Noteworthy changes in version '0.8.6'
1.41 Noteworthy changes in version 0.8.6
==========================================
Bug fixes. See the gnustep-gui NEWS for changes.
1.39 Noteworthy changes in version '0.8.5'
1.42 Noteworthy changes in version 0.8.5
==========================================
Text system improvements. See the gnustep-gui NEWS for changes.
1.40 Noteworthy changes in version '0.8.3'
1.43 Noteworthy changes in version 0.8.3
==========================================
See the gnustep-gui NEWS for changes.
1.41 Noteworthy changes in version '0.8.2'
1.44 Noteworthy changes in version 0.8.2
==========================================
Improved font handling in art backend. Improved compositing with
transformations and clipping in art backend.
1.42 Noteworthy changes in version '0.8.1'
1.45 Noteworthy changes in version 0.8.1
==========================================
art (libart-based) backend added. Use ./configure -enable-graphics=art
to choose this backend.
1.43 Noteworthy changes in version '0.8.0'
1.46 Noteworthy changes in version 0.8.0
==========================================
Bug fixes.
1.44 Noteworthy changes in version '0.7.9'
1.47 Noteworthy changes in version 0.7.9
==========================================
Bug fixes.
1.45 Noteworthy changes in version '0.7.8'
1.48 Noteworthy changes in version 0.7.8
==========================================
Simplified backend selection using -enable-server and -enable-graphics.
Add -with-library-flags and -with-include-flags for adding additonal
flags. Set name with -with-name
1.46 Noteworthy changes in version '0.7.7'
1.49 Noteworthy changes in version 0.7.7
==========================================
First release. Most components extracted from xgps. The old backends,

10
README
View file

@ -1,23 +1,23 @@
1 README
********
This is version 0.29.0 of the GNUstep GUI Backend ('gnustep-back').
This is version 0.32.0 of the GNUstep GUI Backend (gnustep-back).
Here is some introductory info to get you started:
1.1 Initial reading
===================
* The file 'ANNOUNCE' contains a very brief overview of the library.
• The file ANNOUNCE contains a very brief overview of the library.
It also tells you where to get the most recent version.
* The file 'NEWS' has the library's feature history.
• The file NEWS has the library's feature history.
* The file 'INSTALL' gives instructions for installing the library.
• The file INSTALL gives instructions for installing the library.
1.2 How can you help?
=====================
* Give us feedback! Tell us what you like; tell us what you think
Give us feedback! Tell us what you like; tell us what you think
could be better. Send us bug reports at <bug-gnustep@gnu.org>.

View file

@ -43,7 +43,7 @@ endif
#
# The list of subproject directories
#
SUBPROJECTS = gsc $(BUILD_SERVER) $(BUILD_GRAPHICS)
SUBPROJECTS = $(sort gsc $(BUILD_SERVER) $(BUILD_GRAPHICS))
libgnustep-$(BACKEND_FULL)_SUBPROJECTS=$(SUBPROJECTS)

View file

@ -50,6 +50,11 @@
@interface WaylandServer (Initialize)
+ (void) initializeBackend;
@end
#elif BUILD_SERVER == SERVER_headless
#include <headless/HeadlessServer.h>
@interface HeadlessServer (Initialize)
+ (void) initializeBackend;
@end
#endif
/* Call the correct initalization routines for the choosen
@ -70,6 +75,8 @@
[WIN32Server initializeBackend];
#elif BUILD_SERVER == SERVER_wayland
[WaylandServer initializeBackend];
#elif BUILD_SERVER == SERVER_headless
[HeadlessServer initializeBackend];
#else
[NSException raise: NSInternalInconsistencyException
format: @"No Window Server configured in backend"];
@ -96,6 +103,8 @@
context = @"CairoContext";
#elif (BUILD_GRAPHICS==GRAPHICS_opal)
context = @"OpalContext";
#elif (BUILD_GRAPHICS==GRAPHICS_headless)
context = @"HeadlessContext";
#else
#error INVALID build graphics type
#endif

View file

@ -105,6 +105,16 @@
return YES;
}
- (id) initWithContextInfo: (NSDictionary *)info
{
self = [super initWithContextInfo: info];
if (self)
{
[self setImageInterpolation: NSImageInterpolationDefault];
}
return self;
}
- (BOOL) isDrawingToScreen
{
CairoSurface *surface = nil;

View file

@ -163,11 +163,20 @@ static NSArray *faFromFc(FcPattern *pat)
float nsweight;
unsigned int nstraits = 0;
char *fcfamily, *fcstyle;
NSMutableString *name, *family, *style;
NSString *styleStr = nil;
NSString *name = nil;
NSMutableString *family, *style;
#ifdef FC_POSTSCRIPT_NAME
char *fcname;
#endif
if (FcPatternGetString(pat, FC_STYLE, 0, (FcChar8 **)&fcstyle) == FcResultMatch)
{
styleStr = [NSString stringWithUTF8String: fcstyle];
}
// NSLog (@"family: %@, style: %s/%@", name, fcstyle, style);
if (FcPatternGetInteger(pat, FC_WEIGHT, 0, &weight) != FcResultMatch
|| FcPatternGetInteger(pat, FC_SLANT, 0, &slant) != FcResultMatch
|| FcPatternGetString(pat, FC_FAMILY, 0, (FcChar8 **)&fcfamily)
@ -178,12 +187,6 @@ static NSArray *faFromFc(FcPattern *pat)
if (spacing==FC_MONO || spacing==FC_CHARCELL)
nstraits |= NSFixedPitchFontMask;
name = [NSMutableString stringWithCapacity: 100];
#ifdef FC_POSTSCRIPT_NAME
if (FcPatternGetString(pat, FC_POSTSCRIPT_NAME, 0, (FcChar8 **)&fcname) == FcResultMatch)
[name appendString: [NSMutableString stringWithUTF8String: fcname]];
#endif
family = [NSMutableString stringWithUTF8String: fcfamily];
style = [NSMutableString stringWithCapacity: 100];
@ -303,28 +306,40 @@ static NSArray *faFromFc(FcPattern *pat)
break;
}
if (![name length]) // no psname
if (styleStr == nil)
{
NSDebugLLog(@"NSFont", @"Warning: synthesizing PSName for '%@ %@'", family, style);
[name appendString: family];
if ([style length] > 0)
styleStr = (NSString *)style;
}
if (![styleStr length])
{
styleStr = @"Regular";
}
#ifdef FC_POSTSCRIPT_NAME
if (FcPatternGetString(pat, FC_POSTSCRIPT_NAME, 0, (FcChar8 **)&fcname) == FcResultMatch)
{
name = [NSString stringWithUTF8String: fcname];
}
#endif
if (!name || ![name length]) // no psname
{
NSMutableString *tmpStr;
tmpStr = [NSMutableString stringWithCapacity: 100];
NSDebugLLog(@"NSFont", @"Warning: synthesizing PSName for '%@ %@'", family, styleStr);
[tmpStr appendString: family];
if ([styleStr length] > 0 && ![styleStr isEqualToString: @"Regular"])
{
[name appendString: @"-"];
[name appendString: style];
}
[tmpStr appendString: @"-"];
[tmpStr appendString: styleStr];
}
name = [NSString stringWithString: tmpStr];
}
if (![style length])
{
[style setString: @"Regular"];
}
if (FcPatternGetString(pat, FC_STYLE, 0, (FcChar8 **)&fcstyle) == FcResultMatch)
style = [NSString stringWithUTF8String: fcstyle];
// NSLog (@"family: %@, style: %s/%@", name, fcstyle, style);
return [NSArray arrayWithObjects: name,
style,
styleStr,
[NSNumber numberWithFloat: nsweight],
[NSNumber numberWithUnsignedInt: nstraits],
nil];

View file

@ -0,0 +1,48 @@
#
# Main makefile for GNUstep Headless Backend
#
# Copyright (C) 2002 Free Software Foundation, Inc.
#
# Author: Adam Fedor <fedor@gnu.org>
#
# This file is part of the GNUstep Backend.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; see the file COPYING.LIB.
# If not, see <http://www.gnu.org/licenses/> or write to the
# Free Software Foundation, 51 Franklin Street, Fifth Floor,
PACKAGE_NAME = gnustep-back
GNUSTEP_LOCAL_ADDITIONAL_MAKEFILES=../../back.make
include $(GNUSTEP_MAKEFILES)/common.make
include ../../config.make
# The library to be compiled, as a library or as a bundle
SUBPROJECT_NAME=headless
# The Objective-C source files to be compiled
headless_OBJC_FILES = \
HeadlessContext.m \
HeadlessServer.m \
HeadlessFontInfo.m \
HeadlessFontEnumerator.m \
HeadlessFaceInfo.m \
HeadlessGState.m
-include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/subproject.make
-include GNUmakefile.postamble

View file

@ -0,0 +1,51 @@
#
# GNUmakefile.preamble
#
# Copyright (C) 2002 Free Software Foundation, Inc.
#
# Author: Adam Fedor <fedor@gnu.org>
#
# This file is part of the GNUstep Backend.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; see the file COPYING.LIB.
# If not, see <http://www.gnu.org/licenses/> or write to the
# Free Software Foundation, 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# Flags dealing with compiling and linking
#
# Additional flags to pass to the preprocessor
ADDITIONAL_CPPFLAGS += -Wall $(CONFIG_SYSTEM_DEFS)
# Additional flags to pass to the Objective-C compiler
ADDITIONAL_OBJCFLAGS =
# Additional flags to pass to the C compiler
ADDITIONAL_CFLAGS =
# Additional include directories the compiler should search
ADDITIONAL_INCLUDE_DIRS += -I../../Headers \
-I../$(GNUSTEP_TARGET_DIR) $(GRAPHIC_CFLAGS)
# Additional LDFLAGS to pass to the linker
ADDITIONAL_LDFLAGS =
# Additional library directories the linker should search
ADDITIONAL_LIB_DIRS =
#
# Flags dealing with installing and uninstalling
#

View file

@ -0,0 +1,45 @@
/*
HeadlessContext.m
Copyright (C) 2003, 2023 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "config.h"
#include "headless/HeadlessContext.h"
#include "headless/HeadlessFontInfo.h"
#include "headless/HeadlessFontEnumerator.h"
#include "headless/HeadlessGState.h"
@implementation HeadlessContext
+ (void) initializeBackend
{
[NSGraphicsContext setDefaultContextClass: self];
[GSFontEnumerator setDefaultClass: [HeadlessFontEnumerator class]];
[GSFontInfo setDefaultClass: [HeadlessFontInfo class]];
}
+ (Class) GStateClass
{
return [HeadlessGState class];
}
@end

View file

@ -0,0 +1,44 @@
/*
HeadlessFaceInfo.m
Copyright (C) 2003, 2023 Free Software Foundation, Inc.
Based on work by: Marcian Lytwyn <gnustep@advcsi.com> for Keysight
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
Based on work by: Alex Malmberg
Based on work by: Fred Kiefer <fredkiefer@gmx.de>
This file is part of GNUstep.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "headless/HeadlessFaceInfo.h"
@implementation HeadlessFaceInfo
- (void) dealloc
{
[super dealloc];
}
- (void *)fontFace
{
return _fontFace;
}
@end

View file

@ -0,0 +1,47 @@
/*
HeadlessFontEnumerator.m
Copyright (C) 2003, 2023 Free Software Foundation, Inc.
Based on work by: Marcian Lytwyn <gnustep@advcsi.com> for Keysight
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
Based on work by: Alex Malmberg
Based on work by: Fred Kiefer <fredkiefer@gmx.de>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "headless/HeadlessFontEnumerator.h"
#include "headless/HeadlessFontInfo.h"
@implementation HeadlessFontEnumerator
+ (Class) faceInfoClass
{
return [HeadlessFaceInfo class];
}
+ (HeadlessFaceInfo *) fontWithName: (NSString *) name
{
return (HeadlessFaceInfo *) [super fontWithName: name];
}
- (void)enumerateFontsAndFamilies
{
}
@end

View file

@ -0,0 +1,87 @@
/*
HeadlessFontInfo.m
Copyright (C) 2003, 2023 Free Software Foundation, Inc.
Based on work by: Marcian Lytwyn <gnustep@advcsi.com> for Keysight
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
Based on work by: Alex Malmberg
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "GNUstepBase/Unicode.h"
#include <AppKit/NSAffineTransform.h>
#include <AppKit/NSBezierPath.h>
#include "headless/HeadlessFontInfo.h"
#include "headless/HeadlessFontEnumerator.h"
#include <math.h>
@implementation HeadlessFontInfo
- (id) initWithFontName: (NSString *)name
matrix: (const CGFloat *)fmatrix
screenFont: (BOOL)p_screenFont
{
self = [super init];
if (!self)
return nil;
#ifndef _MSC_VER
// Accessing instance variables across module boundaries is not supported by the Visual Studio
// toolchain; this could be implemented using e.g. setFontName: and setMatrix: method on the
// base case.
fontName = [name copy];
memcpy(matrix, fmatrix, sizeof(matrix));
#endif
return self;
}
- (void) dealloc
{
[super dealloc];
}
- (BOOL) glyphIsEncoded: (NSGlyph)glyph
{
return NO;
}
- (NSSize) advancementForGlyph: (NSGlyph)glyph
{
return NSZeroSize;
}
- (NSRect) boundingRectForGlyph: (NSGlyph)glyph
{
return NSZeroRect;
}
- (CGFloat) widthOfString: (NSString *)string
{
return 0.0;
}
- (void) appendBezierPathWithGlyphs: (NSGlyph *)glyphs
count: (int)length
toBezierPath: (NSBezierPath *)path
{
}
@end

View file

@ -0,0 +1,72 @@
/*
HeadlessGState.m
Copyright (C) 2003, 2023 Free Software Foundation, Inc.
Based on work by: Marcian Lytwyn <gnustep@advcsi.com> for Keysight
Based on work by: Banlu Kemiyatorn <object at gmail dot com>
Based on work by: Fred Kiefer <fredkiefer@gmx.de>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "headless/HeadlessGState.h"
@implementation HeadlessGState
- (void) DPSclip
{
}
- (void) DPSfill
{
}
- (void) DPSsetlinewidth: (CGFloat)width
{
}
- (void) DPSsetdash: (const CGFloat *)pat : (NSInteger)size : (CGFloat)foffset
{
}
- (void) DPSimage: (NSAffineTransform *)matrix : (NSInteger)pixelsWide
: (NSInteger)pixelsHigh : (NSInteger)bitsPerSample
: (NSInteger)samplesPerPixel : (NSInteger)bitsPerPixel
: (NSInteger)bytesPerRow : (BOOL)isPlanar
: (BOOL)hasAlpha : (NSString *)colorSpaceName
: (const unsigned char *const[5])data
{
}
- (void) DPSstroke
{
}
- (void) compositerect: (NSRect)aRect op: (NSCompositingOperation)op
{
}
- (void) compositeGState: (HeadlessGState *)source
fromRect: (NSRect)srcRect
toPoint: (NSPoint)destPoint
op: (NSCompositingOperation)op
fraction: (CGFloat)delta
{
}
@end

View file

@ -0,0 +1,115 @@
/*
HeadlessServer.m
Copyright (C) 1998,2002,2023 Free Software Foundation, Inc.
Based on work by: Marcian Lytwyn <gnustep@advcsi.com> for Keysight
Based on work by: Adam Fedor <fedor@gnu.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; see the file COPYING.LIB.
If not, see <http://www.gnu.org/licenses/> or write to the
Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "config.h"
#include <AppKit/NSApplication.h>
#include <Foundation/NSDebug.h>
#include <Foundation/NSValue.h>
#include "headless/HeadlessServer.h"
/* Terminate cleanly if we get a signal to do so */
static void
terminate(int sig)
{
if (nil != NSApp)
{
[NSApp terminate: NSApp];
}
else
{
exit(1);
}
}
@implementation HeadlessServer
/* Initialize AppKit backend */
+ (void) initializeBackend
{
NSDebugLog(@"Initializing GNUstep headless backend.\n");
[GSDisplayServer setDefaultServerClass: [HeadlessServer class]];
signal(SIGTERM, terminate);
signal(SIGINT, terminate);
}
- (NSArray *)screenList
{
NSDebugLog(@"GNUstep headless - fetching screen list");
NSMutableArray *screens = [NSMutableArray arrayWithCapacity: 1];
[screens addObject: [NSNumber numberWithInt: 1]];
return screens;
}
- (NSRect) boundsForScreen: (int)screen
{
return NSMakeRect(0, 0, 400, 400);
}
- (NSWindowDepth) windowDepthForScreen: (int) screen_num
{
return 0;
}
- (void) styleoffsets: (float *) l : (float *) r : (float *) t : (float *) b
: (unsigned int) style
{
}
- (void) standardcursor: (int)style : (void **)cid
{
}
- (int) window: (NSRect)frame
: (NSBackingStoreType)type
: (unsigned int)style
: (int)screen
{
return 1;
}
- (void) setwindowlevel: (int)level : (int)win
{
}
- (void) setWindowdevice: (int)win forContext: (NSGraphicsContext *)ctxt
{
}
- (void) orderwindow: (int)op : (int)otherWin : (int)winNum
{
}
- (void) setinputfocus: (int)win
{
}
- (void) imagecursor: (NSPoint)hotp : (NSImage *)image : (void **)cid
{
}
@end

View file

@ -38,6 +38,8 @@
#include <linux/input.h>
#include "wayland-cursor.h"
extern void wl_cursor_destroy(struct wl_cursor *cursor);
// XXX should this be configurable by the user?
#define DOUBLECLICK_DELAY 300
#define DOUBLECLICK_MOVE_THREASHOLD 3
@ -852,4 +854,4 @@ WaylandServer (Cursor)
wlconfig->mouse_scroll_multiplier = 1.0f;
}
}
@end
@end

View file

@ -31,6 +31,7 @@
#include <linux/input.h>
#include <AppKit/NSText.h>
#include <sys/mman.h>
#include <unistd.h>
static void
keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard,

View file

@ -28,10 +28,11 @@
#include "wayland/WaylandServer.h"
#include <AppKit/NSEvent.h>
#include <AppKit/NSApplication.h>
#include <AppKit/NSGraphics.h>
static void
xdg_surface_on_configure(void *data, struct xdg_surface *xdg_surface,
uint32_t serial)
uint32_t serial)
{
struct window *window = data;
@ -43,7 +44,6 @@ xdg_surface_on_configure(void *data, struct xdg_surface *xdg_surface,
free(window);
return;
}
WaylandConfig *wlconfig = window->wlconfig;
NSEvent *ev = nil;
NSWindow *nswindow = GSWindowWithNumber(window->window_id);
@ -57,22 +57,22 @@ xdg_surface_on_configure(void *data, struct xdg_surface *xdg_surface,
if (window->buffer_needs_attach)
{
[window->instance flushwindowrect:NSMakeRect(window->pos_x, window->pos_y,
window->width, window->height
):window->window_id];
window->width, window->height)
:window->window_id];
}
if (wlconfig->pointer.focus
&& wlconfig->pointer.focus->window_id == window->window_id)
if (window->wlconfig->pointer.focus
&& window->wlconfig->pointer.focus->window_id == window->window_id)
{
ev = [NSEvent otherEventWithType:NSAppKitDefined
location:NSZeroPoint
modifierFlags:0
timestamp:0
windowNumber:(int) window->window_id
context:GSCurrentContext()
subtype:GSAppKitWindowFocusIn
data1:0
data2:0];
location:NSZeroPoint
modifierFlags:0
timestamp:0
windowNumber:(int) window->window_id
context:GSCurrentContext()
subtype:GSAppKitWindowFocusIn
data1:0
data2:0];
[nswindow sendEvent:ev];
}
@ -80,15 +80,14 @@ xdg_surface_on_configure(void *data, struct xdg_surface *xdg_surface,
static void
xdg_toplevel_configure(void *data, struct xdg_toplevel *xdg_toplevel,
int32_t width, int32_t height, struct wl_array *states)
int32_t width, int32_t height, struct wl_array *states)
{
struct window *window = data;
WaylandConfig *wlconfig = window->wlconfig;
NSDebugLog(@"[%d] xdg_toplevel_configure %ldx%ld", window->window_id, width,
height);
NSDebugLog(@"[%d] xdg_toplevel_configure %dx%d", window->window_id, width,
height);
// the compositor can send 0.0x0.0
// The compositor can send 0x0
if (width == 0 || height == 0)
{
return;
@ -99,45 +98,43 @@ xdg_toplevel_configure(void *data, struct xdg_toplevel *xdg_toplevel,
window->height = height;
xdg_surface_set_window_geometry(window->xdg_surface, 0, 0, window->width,
window->height);
window->height);
NSEvent *ev = [NSEvent otherEventWithType:NSAppKitDefined
location:NSMakePoint(0.0, 0.0)
modifierFlags:0
timestamp:0
windowNumber:window->window_id
context:GSCurrentContext()
subtype:GSAppKitWindowResized
data1:window->width
data2:window->height];
location:NSMakePoint(0.0, 0.0)
modifierFlags:0
timestamp:0
windowNumber:window->window_id
context:GSCurrentContext()
subtype:GSAppKitWindowResized
data1:window->width
data2:window->height];
[(GSWindowWithNumber(window->window_id)) sendEvent:ev];
}
NSDebugLog(@"[%d] notify resize from backend=%ldx%ld", window->window_id,
width, height);
NSDebugLog(@"[%d] notify resize from backend=%dx%d", window->window_id,
width, height);
}
static void
xdg_toplevel_close_handler(void *data, struct zxdg_toplevel_v6 *xdg_toplevel)
xdg_toplevel_close_handler(void *data, struct xdg_toplevel *xdg_toplevel)
{
NSDebugLog(@"xdg_toplevel_close_handler");
}
static void
xdg_popup_configure(void *data, struct xdg_popup *xdg_popup, int32_t x,
int32_t y, int32_t width, int32_t height)
int32_t y, int32_t width, int32_t height)
{
struct window *window = data;
WaylandConfig *wlconfig = window->wlconfig;
NSDebugLog(@"[%d] xdg_popup_configure [%d,%d %dx%d]", window->window_id, x, y,
width, height);
width, height);
}
static void
xdg_popup_done(void *data, struct xdg_popup *xdg_popup)
{
struct window *window = data;
WaylandConfig *wlconfig = window->wlconfig;
window->terminated = YES;
xdg_popup_destroy(xdg_popup);
wl_surface_destroy(window->surface);
@ -145,7 +142,7 @@ xdg_popup_done(void *data, struct xdg_popup *xdg_popup)
static void
wm_base_handle_ping(void *data, struct xdg_wm_base *xdg_wm_base,
uint32_t serial)
uint32_t serial)
{
NSDebugLog(@"wm_base_handle_ping");
xdg_wm_base_pong(xdg_wm_base, serial);
@ -167,4 +164,4 @@ const struct xdg_popup_listener xdg_popup_listener = {
const struct xdg_toplevel_listener xdg_toplevel_listener = {
.configure = xdg_toplevel_configure,
.close = xdg_toplevel_close_handler,
};
};

View file

@ -781,7 +781,7 @@ WaylandServer (SurfaceRoles)
break;
case NSPopUpMenuWindowLevel:
NSDebugLog(@"[%d] NSPopUpMenuWindowLevel", win);
[self createPopup:win];
[self createPopup:window];
break;
case NSScreenSaverWindowLevel:
NSDebugLog(@"[%d] NSScreenSaverWindowLevel", win);
@ -1099,4 +1099,4 @@ WaylandServer (SurfaceRoles)
wl_display_flush(window->wlconfig->display);
}
@end
@end

View file

@ -63,6 +63,18 @@
#include <math.h>
// The Windows SDK declares BOOL as an int. Objective C defines BOOl as a char.
// Those two types clash. MinGW's implementation of the Windows SDK uses the WINBOOL
// type to avoid this clash. When compiling natively on Windows, we need to manually
// define WINBOOL.
// MinGW will define _DEF_WINBOOL_ if it has defined WINBOOL so we can use the same trick
// here.
// See https://github.com/mingw-w64/mingw-w64/blob/master/mingw-w64-headers/include/ntdef.h#L355
#ifndef _DEF_WINBOOL_
#define _DEF_WINBOOL_
typedef int WINBOOL;
#endif
// To update the cursor..
static BOOL update_cursor = NO;
static BOOL should_handle_cursor = NO;

View file

@ -33,6 +33,18 @@
#include "win32/WIN32Server.h"
#include "win32/WIN32Geometry.h"
// The Windows SDK declares BOOL as an int. Objective C defines BOOl as a char.
// Those two types clash. MinGW's implementation of the Windows SDK uses the WINBOOL
// type to avoid this clash. When compiling natively on Windows, we need to manually
// define WINBOOL.
// MinGW will define _DEF_WINBOOL_ if it has defined WINBOOL so we can use the same trick
// here.
// See https://github.com/mingw-w64/mingw-w64/blob/master/mingw-w64-headers/include/ntdef.h#L355
#ifndef _DEF_WINBOOL_
#define _DEF_WINBOOL_
typedef int WINBOOL;
#endif
static void
invalidateWindow(WIN32Server *svr, HWND hwnd, RECT rect)
{

View file

@ -453,9 +453,14 @@ NSLog(@"No glyph for U%d", c);
logfont.lfItalic = 1;
logfont.lfQuality = DEFAULT_QUALITY;
wcsncpy(logfont.lfFaceName,
(const unichar*)[familyName cStringUsingEncoding: NSUnicodeStringEncoding],
LF_FACESIZE);
if (familyName)
{
wcsncpy(logfont.lfFaceName,
(const unichar*)[familyName cStringUsingEncoding: NSUnicodeStringEncoding],
LF_FACESIZE);
}
hFont = CreateFontIndirectW(&logfont);
if (!hFont)
{

View file

@ -803,6 +803,7 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
XEvent xEvent;
unsigned long *extents;
Offsets *o = generic.offsets + (style & 15);
int windowIdent;
int repp = 0;
int repx = 0;
int repy = 0;
@ -1131,6 +1132,11 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
}
}
/* Calling termwindow should cause the window to be destroyed,
* so we need to take a copy of the window identifier to check
* for events left in the queue about that window.
*/
windowIdent = window->ident;
[self termwindow: window->number];
XSync(dpy, False);
while (XPending(dpy) > 0)
@ -1138,7 +1144,7 @@ _get_next_prop_new_event(Display *display, XEvent *event, char *arg)
XNextEvent(dpy, &xEvent);
NSDebugLLog(@"Offset", @"Destroying ... event %d window %lu\n",
xEvent.type, xEvent.xany.window);
if (xEvent.xany.window != window->ident)
if (xEvent.xany.window != windowIdent)
{
continue;
}

View file

@ -151,12 +151,18 @@
{
/* Always returns a Latin-1 string according to the manpage */
count = XLookupString (event, buf, BUF_LEN, &keysym, NULL);
if (count)
if (count == 1)
{
keys = [[[NSString alloc] initWithBytes: buf
length: count
encoding: NSISOLatin1StringEncoding] autorelease];
}
else if (count > 1) // manpage lies and we suppose UTF-8
{
keys = [[[NSString alloc] initWithBytes: buf
length: count
encoding: NSUTF8StringEncoding] autorelease];
}
if (keysymptr)
*keysymptr = keysym;

View file

@ -38,7 +38,12 @@
#endif
#include <signal.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#else
#include <io.h>
#define strcasecmp _stricmp
#endif
#include <ctype.h>
#ifdef __MINGW__
@ -229,7 +234,8 @@ NSMutableDictionary *pasteboards = nil;
{
if (verbose)
{
NSLog(@"-data for %@", self);
NSLog(@"-data (%llu bytes) provided for %@",
(unsigned long long)[data length], self);
}
return data;
}
@ -285,7 +291,8 @@ NSMutableDictionary *pasteboards = nil;
ASSIGN(data, d);
if (verbose)
{
NSLog(@"-setData: for %@", self);
NSLog(@"-setData: (%llu bytes) for %@",
(unsigned long long)[data length], self);
}
}
@ -863,8 +870,8 @@ NSMutableDictionary *pasteboards = nil;
e = [self entryByCount: count];
if (verbose)
{
NSLog(@"%@ set data %p for type '%@' version %d in %@",
self, data, type, count, e);
NSLog(@"%@ set data %p (%llu bytes) for type '%@' version %d in %@",
self, data, (unsigned long long)[data length], type, count, e);
}
if (e)
{

View file

@ -40,6 +40,18 @@
#include <sys/file.h>
#endif
// The Windows SDK declares BOOL as an int. Objective C defines BOOl as a char.
// Those two types clash. MinGW's implementation of the Windows SDK uses the WINBOOL
// type to avoid this clash. When compiling natively on Windows, we need to manually
// define WINBOOL.
// MinGW will define _DEF_WINBOOL_ if it has defined WINBOOL so we can use the same trick
// here.
// See https://github.com/mingw-w64/mingw-w64/blob/master/mingw-w64-headers/include/ntdef.h#L355
#ifndef _DEF_WINBOOL_
#define _DEF_WINBOOL_
typedef int WINBOOL;
#endif
@interface Win32PbOwner : NSObject
{
NSPasteboard *_pb;

File diff suppressed because it is too large Load diff

View file

@ -3,12 +3,12 @@
# The version number of this release.
GNUSTEP_BACK_MAJOR_VERSION=0
GNUSTEP_BACK_MINOR_VERSION=30
GNUSTEP_BACK_MINOR_VERSION=32
GNUSTEP_BACK_SUBMINOR_VERSION=0
# This numeric value should match above
VERSION_NUMBER=030.0
VERSION_NUMBER=032.0
# This numeric value should match the compatible gui interface version
INTERFACE_VERSION_NUMBER=030
INTERFACE_VERSION_NUMBER=032
GNUSTEP_BACK_VERSION=${GNUSTEP_BACK_MAJOR_VERSION}.${GNUSTEP_BACK_MINOR_VERSION}.${GNUSTEP_BACK_SUBMINOR_VERSION}
VERSION=${GNUSTEP_BACK_VERSION}

View file

@ -1,15 +1,17 @@
/* config.h.in. Generated from configure.ac by autoheader. */
#define SERVER_x11 1
#define SERVER_win32 2
#define SERVER_wayland 3
#define GRAPHICS_xdps 0
#define GRAPHICS_art 1
#define GRAPHICS_xlib 2
#define GRAPHICS_winlib 3
#define GRAPHICS_cairo 4
#define GRAPHICS_opal 5
#define SERVER_x11 1
#define SERVER_win32 2
#define SERVER_wayland 3
#define SERVER_headless 4
#define GRAPHICS_xdps 0
#define GRAPHICS_art 1
#define GRAPHICS_xlib 2
#define GRAPHICS_winlib 3
#define GRAPHICS_cairo 4
#define GRAPHICS_opal 5
#define GRAPHICS_headless 6
/* Define to type of graphics context to build */
@ -42,27 +44,33 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the `wayland-client' library (-lwayland-client). */
#undef HAVE_LIBWAYLAND_CLIENT
/* Define to 1 if you have the `Xext' library (-lXext). */
#undef HAVE_LIBXEXT
/* Define to 1 if you have the `Xft' library (-lXft). */
#undef HAVE_LIBXFT
/* Define to 1 if you have the `xkbcommon' library (-lxkbcommon). */
#undef HAVE_LIBXKBCOMMON
/* Define to 1 if you have the `Xmu' library (-lXmu). */
#undef HAVE_LIBXMU
/* Define to 1 if you have the `Xt' library (-lXt). */
#undef HAVE_LIBXT
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `shmctl' function. */
#undef HAVE_SHMCTL
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdio.h> header file. */
#undef HAVE_STDIO_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@ -93,6 +101,9 @@
/* Define if you have XftDrawStringUtf8 */
#undef HAVE_UTF8
/* Define to 1 if you have the <wayland-util.h> header file. */
#undef HAVE_WAYLAND_UTIL_H
/* Define if you have the wgl library */
#undef HAVE_WGL
@ -102,6 +113,9 @@
/* Define to 1 if you have the <X11/extensions/sync.h> header file. */
#undef HAVE_X11_EXTENSIONS_SYNC_H
/* Define to 1 if you have the <X11/extensions/Xrandr.h> header file. */
#undef HAVE_X11_EXTENSIONS_XRANDR_H
/* Define to 1 if you have the <X11/extensions/XShm.h> header file. */
#undef HAVE_X11_EXTENSIONS_XSHM_H
@ -118,15 +132,18 @@
/* Define to 1 if you have 'XInternAtoms' function. */
#undef HAVE_XINTERNATOMS
/* Define to 1 if you have the <xkbcommon/xkbcommon.h> header file. */
#undef HAVE_XKBCOMMON_XKBCOMMON_H
/* Define to enable Xrandr support */
#undef HAVE_XRANDR
/* Define to enable Xshape support */
#undef HAVE_XSHAPE
/* Define to 1 if you have the `Xutf8LookupString' function. */
#undef HAVE_XUTF8LOOKUPSTRING
/* Define to enable Xrandr support */
#undef HAVE_XRANDR
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
@ -145,7 +162,9 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
/* Define to 1 if all of the C90 standard headers exist (not just the ones
required in a freestanding environment). This macro is provided for
backward compatibility; new code need not use it. */
#undef STDC_HEADERS
/* Define to enable glitz support */

4749
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -565,10 +565,10 @@ case $target_os in
esac
AC_ARG_ENABLE(server,
[ --enable-server=SRV Build server type: x11, win32, wayland],,
[ --enable-server=SRV Build server type: x11, win32, wayland, headless],,
enable_server=$BUILD_SERVER)
AC_ARG_ENABLE(graphics,
[ --enable-graphics=GPH Build graphics: xlib, xdps, winlib, art, cairo, opal],,
[ --enable-graphics=GPH Build graphics: xlib, xdps, winlib, art, cairo, opal, headless],,
enable_graphics="$BUILD_GRAPHICS")
BUILD_SERVER=$enable_server
@ -658,8 +658,6 @@ if test x"$BUILD_GRAPHICS" = "xcairo"; then
CAIRO_LIBS="$CAIRO_LIBS $XFT_LIBS"
CAIRO_CFLAGS="$CAIRO_CFLAGS"
LIBS="-lwayland-client -lwayland-cursor -lxkbcommon $LIBS"
else
AC_MSG_ERROR([Invalid Cairo installation])
fi
LIBS="$CAIRO_LIBS $LIBS"
CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
@ -717,6 +715,8 @@ elif test x"$BUILD_GRAPHICS" = "xopal"; then
fi
AC_MSG_NOTICE([Switching to $BUILD_GRAPHICS])
fi
elif test x"$BUILD_GRAPHICS" = "xheadless"; then
: # Nothing to do
else
AC_MSG_ERROR([Invalid graphics backend $BUILD_GRAPHICS])
fi
@ -757,15 +757,17 @@ if test $BUILD_SERVER = win32; then
fi
AH_TOP([
#define SERVER_x11 1
#define SERVER_win32 2
#define SERVER_wayland 3
#define GRAPHICS_xdps 0
#define GRAPHICS_art 1
#define GRAPHICS_xlib 2
#define GRAPHICS_winlib 3
#define GRAPHICS_cairo 4
#define GRAPHICS_opal 5
#define SERVER_x11 1
#define SERVER_win32 2
#define SERVER_wayland 3
#define SERVER_headless 4
#define GRAPHICS_xdps 0
#define GRAPHICS_art 1
#define GRAPHICS_xlib 2
#define GRAPHICS_winlib 3
#define GRAPHICS_cairo 4
#define GRAPHICS_opal 5
#define GRAPHICS_headless 6
])
AC_DEFINE_UNQUOTED(BUILD_SERVER,SERVER_$BUILD_SERVER,
[Define to type of window server to build])