Skip to content

Commit 229a3b0

Browse files
Copilotlaeubi
authored andcommitted
Add native PDF output support
Currently if one wants to create a PDF file it requires external libraries and as SWT does not allows an abstraction like Grahics2D in AWT one can not export real content of SWT components (e.g. Canvas) except exporting as an raster image or using some hacks. This now introduce a new PDFDocument to enable direct PDF generation from SWT widgets via Control.print(GC). This allows applications to export widget content to PDF files using the standard GC drawing API as well as even creating completely customized documents.
1 parent 3f90d5d commit 229a3b0

File tree

25 files changed

+1758
-84
lines changed

25 files changed

+1758
-84
lines changed

binaries/org.eclipse.swt.cocoa.macosx.aarch64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,4 @@
196196
</message_arguments>
197197
</filter>
198198
</resource>
199-
<resource path="META-INF/MANIFEST.MF">
200-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
201-
<message_arguments>
202-
<message_argument value="3.133.0"/>
203-
<message_argument value="3.132.0"/>
204-
</message_arguments>
205-
</filter>
206-
</resource>
207199
</component>

binaries/org.eclipse.swt.cocoa.macosx.x86_64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,4 @@
196196
</message_arguments>
197197
</filter>
198198
</resource>
199-
<resource path="META-INF/MANIFEST.MF">
200-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
201-
<message_arguments>
202-
<message_argument value="3.133.0"/>
203-
<message_argument value="3.132.0"/>
204-
</message_arguments>
205-
</filter>
206-
</resource>
207199
</component>

binaries/org.eclipse.swt.gtk.linux.aarch64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,4 @@
204204
</message_arguments>
205205
</filter>
206206
</resource>
207-
<resource path="META-INF/MANIFEST.MF">
208-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
209-
<message_arguments>
210-
<message_argument value="3.133.0"/>
211-
<message_argument value="3.132.0"/>
212-
</message_arguments>
213-
</filter>
214-
</resource>
215207
</component>

binaries/org.eclipse.swt.gtk.linux.loongarch64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,4 @@
204204
</message_arguments>
205205
</filter>
206206
</resource>
207-
<resource path="META-INF/MANIFEST.MF">
208-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
209-
<message_arguments>
210-
<message_argument value="3.133.0"/>
211-
<message_argument value="3.132.0"/>
212-
</message_arguments>
213-
</filter>
214-
</resource>
215207
</component>

binaries/org.eclipse.swt.gtk.linux.ppc64le/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,4 @@
204204
</message_arguments>
205205
</filter>
206206
</resource>
207-
<resource path="META-INF/MANIFEST.MF">
208-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
209-
<message_arguments>
210-
<message_argument value="3.133.0"/>
211-
<message_argument value="3.132.0"/>
212-
</message_arguments>
213-
</filter>
214-
</resource>
215207
</component>

binaries/org.eclipse.swt.gtk.linux.riscv64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,4 @@
204204
</message_arguments>
205205
</filter>
206206
</resource>
207-
<resource path="META-INF/MANIFEST.MF">
208-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
209-
<message_arguments>
210-
<message_argument value="3.133.0"/>
211-
<message_argument value="3.132.0"/>
212-
</message_arguments>
213-
</filter>
214-
</resource>
215207
</component>

binaries/org.eclipse.swt.gtk.linux.x86_64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,4 @@
204204
</message_arguments>
205205
</filter>
206206
</resource>
207-
<resource path="META-INF/MANIFEST.MF">
208-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
209-
<message_arguments>
210-
<message_argument value="3.133.0"/>
211-
<message_argument value="3.132.0"/>
212-
</message_arguments>
213-
</filter>
214-
</resource>
215207
</component>

binaries/org.eclipse.swt.win32.win32.aarch64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,4 @@
315315
</message_arguments>
316316
</filter>
317317
</resource>
318-
<resource path="META-INF/MANIFEST.MF">
319-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
320-
<message_arguments>
321-
<message_argument value="3.133.0"/>
322-
<message_argument value="3.132.0"/>
323-
</message_arguments>
324-
</filter>
325-
</resource>
326318
</component>

binaries/org.eclipse.swt.win32.win32.x86_64/.settings/.api_filters

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,4 @@
315315
</message_arguments>
316316
</filter>
317317
</resource>
318-
<resource path="META-INF/MANIFEST.MF">
319-
<filter comment="Version is bumped for Eclipse 4.39 because of new BREE requirement" id="926941240">
320-
<message_arguments>
321-
<message_argument value="3.133.0"/>
322-
<message_argument value="3.132.0"/>
323-
</message_arguments>
324-
</filter>
325-
</resource>
326318
</component>

bundles/org.eclipse.swt/Eclipse SWT PI/cairo/library/cairo.c

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*
1616
* IBM
1717
* - Binding to permit interfacing between Cairo and SWT
18-
* - Copyright (C) 2005, 2022 IBM Corp. All Rights Reserved.
18+
* - Copyright (C) 2005, 2025 IBM Corp. All Rights Reserved.
1919
*
2020
* ***** END LICENSE BLOCK ***** */
2121

@@ -704,6 +704,30 @@ JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1pattern_1set_1matrix)
704704
}
705705
#endif
706706

707+
#ifndef NO_cairo_1pdf_1surface_1create
708+
JNIEXPORT jlong JNICALL Cairo_NATIVE(cairo_1pdf_1surface_1create)
709+
(JNIEnv *env, jclass that, jbyteArray arg0, jdouble arg1, jdouble arg2)
710+
{
711+
jbyte *lparg0=NULL;
712+
jlong rc = 0;
713+
Cairo_NATIVE_ENTER(env, that, cairo_1pdf_1surface_1create_FUNC);
714+
if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
715+
/*
716+
rc = (jlong)cairo_pdf_surface_create((const char *)lparg0, arg1, arg2);
717+
*/
718+
{
719+
Cairo_LOAD_FUNCTION(fp, cairo_pdf_surface_create)
720+
if (fp) {
721+
rc = (jlong)((jlong (CALLING_CONVENTION*)(const char *, jdouble, jdouble))fp)((const char *)lparg0, arg1, arg2);
722+
}
723+
}
724+
fail:
725+
if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
726+
Cairo_NATIVE_EXIT(env, that, cairo_1pdf_1surface_1create_FUNC);
727+
return rc;
728+
}
729+
#endif
730+
707731
#ifndef NO_cairo_1pdf_1surface_1set_1size
708732
JNIEXPORT void JNICALL Cairo_NATIVE(cairo_1pdf_1surface_1set_1size)
709733
(JNIEnv *env, jclass that, jlong arg0, jdouble arg1, jdouble arg2)

0 commit comments

Comments
 (0)