Commit graph

169 commits

Author SHA1 Message Date
Sergii Stoian
c1ab242c9e * gswindow_device_t structure element screen was renamed to
`screen_id`; `monitor_id` element was added. Made use of
  `screen_id` and `monitor_id` where it's appropriate.

* Removed `screen` parameter from methods which contains it in name.
  Methods were renamed to remove `Screen` and `FromScreen`.

* Source/x11/XGServerWindow.m (screenList): change with assumption
  that Xlib screen is one per application.
  Failback code to RandR-related always creates arrays with one element
  (no enumeration needed). Create `monitor` structure in failback (non-RandR)
  code. Use `screen_id` MonitorDevice structure element to hold	Xlib screen
  ID.
  (windowDepthForScreen:): assume that `screen` parameter is a Xlib screen ID,
  simplify code - `screen` will be used with RandR or not.
  (availableDepthsForScreen:): changed with assumption that `screen` is a index
  of element in `monitors` structure.

* Source/x11/XGServer.m (_initXContext): initialize `monitors` array
  early here before first use (calls to XGServerWindow methods).
2020-02-03 01:21:52 +02:00
fredkiefer
de86246567 * Source/cairo/CairoFontInfo.m: Revert to the old defaults for
hinting and allow for all possible values to be set.
2019-12-24 14:10:02 +01:00
fredkiefer
36283735ab * Source/cairo/CairoFontInfo.m,
* Source/fontconfig/FCFontEnumerator.m: Small cleanup of last pull
request.
2019-05-19 22:56:48 +02:00
Jeff Teunissen
f87842d08a Turn on hinting and subpixel rendering for Cairo.
There's no good reason not to enable subpixel rendering and hinting.
Leaving it off makes GNUstep apps look worse than everything else, in
exchange for having -advancementForGlyph: be totally consistent, which
may not even be necessary.

So, yeah, let's just turn this stuff on. I reused the subpixel default
from back-art to preserve configs, and added a GSFontHinting default to
control text hinting.

Use 0 for whatever Cairo defaults to, 1 for off, 2 for slight hinting,
3 for medium hinting, or 4 for full hinting.
2019-03-26 03:58:18 -04:00
Jeff Teunissen
8f19df1949 Support named glyphs, encodings in Cairo
Implement a method for accessing named glyphs and character codings from
Cairo.

This is a necessary first step for complex glyph substitution, and even
simple things like standard ligatures.
2019-03-26 03:58:18 -04:00
Jeff Teunissen
016f5eda25 Cairo: Reduce the hilarity of the font panel
Use many more weights and widths when generating the (still extremely
stupid) synthetic PostScript font names.
2019-03-26 03:58:18 -04:00
fredkiefer
c379156931 Get DPSshow: to work on scaled windows. 2017-07-31 23:33:34 +02:00
Ivan Vučica
d1d1db4c39 Implement dealloc/copyWithZone on Win32CairoGState instance.
Patch by mlytwyn (cherrypicked from testplant branch, r39618).

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@39635 72102866-910b-0410-8b05-ffd578937521
2016-04-06 20:43:29 +00:00
Fred Kiefer
5843ba3d4d * Source/cairo/CairoGState.m (-GSReadRect:, -DPSimage:..:):
Drawing speedup for slow machines.
        Patch by Josh Freeman <gnustep_lists@twilightedge.com>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@39097 72102866-910b-0410-8b05-ffd578937521
2015-10-27 22:12:52 +00:00
Fred Kiefer
0f3d255824 * Headers/gsc/GSGState.h
* Source/gsc/GSContext.m
        * Source/gsc/GSGState.m
        * Source/cairo/CairoGState.m
        Implement per gstate methods for antialias, patternPhase and
        compositingOperation.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@39026 72102866-910b-0410-8b05-ffd578937521
2015-10-03 21:49:35 +00:00
Fred Kiefer
4552dff9f1 * Source/cairo/CairoGState.m: Preliminary support for anti alias
setting for path drawing.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@39005 72102866-910b-0410-8b05-ffd578937521
2015-09-20 20:34:37 +00:00
Sebastian Reitenbach
23b53d84c0 * Source/cairo/CairoGState.m
abs -> fabs
        * Source/x11/XGGLContext.m
          format string fix
        * Headers/x11/XGOpenGL.h
          glxminorversion is int, not long int

Looks good, Ivan Vucica



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@38554 72102866-910b-0410-8b05-ffd578937521
2015-05-26 12:00:49 +00:00
Fred Kiefer
239a4b3286 * Source/cairo/CairoGState.m: Add support for image
interpolation setting in context.
        Patch by Josh Freeman <gnustep_lists@twilightedge.com>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@38528 72102866-910b-0410-8b05-ffd578937521
2015-05-22 21:28:20 +00:00
Germán Arias
7b89c2c3ba Workarounds to re-display windows on MS Windows.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@38367 72102866-910b-0410-8b05-ffd578937521
2015-02-28 02:01:28 +00:00
Fred Kiefer
2f804fe716 * Source/cairo/CairoGState.m (-compositeGState:...fraction:):
Disable workaround for cairo > 1.8 for cairo > 1.13.
        Patch by Edwin Ancaer <eancaer@gmail.com>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@38135 72102866-910b-0410-8b05-ffd578937521
2014-10-25 18:14:50 +00:00
Fred Kiefer
4c06213c78 * Source/cairo/CairoGState.m (-GSSetFont:),
* Source/cairo/CairoFaceInfo.m (-drawGlyphs:...): Use scaled
  font directly.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@37523 72102866-910b-0410-8b05-ffd578937521
2013-12-29 22:43:15 +00:00
Fred Kiefer
5932681446 * Source/cairo/CairoFaceInfo.m (-fontFace): Warn about the usage
of non-scalable fonts.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@37490 72102866-910b-0410-8b05-ffd578937521
2013-12-23 12:36:09 +00:00
Gregory John Casamento
8fa4608cba Minor correction to fix compilation error on Windows.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@37268 72102866-910b-0410-8b05-ffd578937521
2013-10-20 22:16:03 +00:00
Ivan Vučica
61cf75b2fc In preparation for reusing this code in the Opal backend, moved fontconfig code to a dedicated set of classes that are now superclasses of Cairo backend's font classes.
Fixed a bug in CairoGState: a NSDebugMLLog() had this obvious mistake in its format (as was printed out by the compiler): @"%self"



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@37066 72102866-910b-0410-8b05-ffd578937521
2013-09-10 21:07:03 +00:00
Fred Kiefer
b35ef8791a * Source/win32/w32_movesize.m (-decodeWM_EXITSIZEMOVEParams:::):
Remove code that caused missing windows content.
* Source/cairo/CairoContext.m (-flushGraphics): Add experimental
flush code for Windows.
* Source/cairo/Win32CairoSurface.m (-initWithDevice:, -dealloc):
Clean up HDC handling. Based on patch by Marcian Lytwyn
<marcian.lytwyn@advcsi.com>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36920 72102866-910b-0410-8b05-ffd578937521
2013-07-24 07:34:24 +00:00
Fred Kiefer
72605b6d4d * Source/cairo/Win32CairoSurface.m (-initWithDevice:): Make
* safer
        against the surface being deallocated during this method.
        * Source/cairo/Win32CairoSurface.m
        (WIN32Server-contentsOfScreen:inRect:): Screen grabbing code.
        * Headers/win32/WIN32Server.h,
        * Source/win32/WIN32Server.m (-monitorHandleForScreen:,
        -createHdcForScreen:, deleteScreenHdc:): Add helper methods for
screen grabbing.
        Patch by Marcian Lytwyn <marcian.lytwyn@advcsi.com>



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36612 72102866-910b-0410-8b05-ffd578937521
2013-05-11 20:20:54 +00:00
Gregory John Casamento
65010206b1 * Source/cairo/CairoGState.m: Added code in -drawGradient:
fromPoint:toPoint:options: to handle gradients for colorspaces
	other than NSCalibratedRGBColorSpace, NSDeviceRGBColorSpace,
	NSCalibratedWhiteColorSpace, NSDeviceWhiteColorSpace,
	NSCalibratedBlackColorSpace, NSDeviceBlackColorSpace.  The
	previous implementation assumed RGB based colorspaces only.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36582 72102866-910b-0410-8b05-ffd578937521
2013-04-25 03:16:06 +00:00
Fred Kiefer
5a5f73e79c Silence warnings from clang.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36106 72102866-910b-0410-8b05-ffd578937521
2013-02-10 17:32:47 +00:00
Fred Kiefer
1a481e1964 Change DPS/PS functions to CGFloat and NSInteger.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36063 72102866-910b-0410-8b05-ffd578937521
2013-02-05 19:18:49 +00:00
Fred Kiefer
4bd1a24087 Change NSBezierPath to use NSInteger and CGFloat and adjust uses to
this.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36054 72102866-910b-0410-8b05-ffd578937521
2013-02-01 14:03:08 +00:00
Fred Kiefer
bd69ab122d * back/Source/gsc/GSContext.m
* back/Source/cairo/CairoContext.m
        * back/Source/art/ARTContext.m
        * back/Source/xlib/XGContext.m
        * back/Source/winlib/WIN32Context.m: Move the bitmap conversion
        code from cairo to the gsc class. Add a new method to detect
        incompatible image formats and implement that for all backends.
        * back/Source/winlib/WIN32GState.m (GSCreateBitmap): Improve the
        handling of device black/white colour space.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@36025 72102866-910b-0410-8b05-ffd578937521
2013-01-27 14:38:16 +00:00
Fred Kiefer
035502afd9 * Source/cairo/CairoFntInfo.m (-drawGlyphs:..., -setupAttributes):
Invert the value of matrix[2]. See bug #30493


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@35927 72102866-910b-0410-8b05-ffd578937521
2012-12-31 17:38:42 +00:00
Gregory John Casamento
74b631fdb8 * Headers/cairo/Win32CairoGState.h
* Source/cairo/Win32CairoGState.m: Add missing files for windows.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@35824 72102866-910b-0410-8b05-ffd578937521
2012-11-26 17:56:31 +00:00
Gregory John Casamento
02544402a5 * ChangeLog
* config.h.in
	* configure
	* configure.ac
	* Headers/win32/WIN32Server.h
	* Source/cairo/CairoContext.m
	* Source/cairo/CairoGState.m
	* Source/cairo/CairoPDFSurface.m
	* Source/cairo/GNUmakefile
	* Source/cairo/Win32CairoSurface.m
	* Source/GSBackend.m
	* Source/gsc/GSGState.m
	* Source/win32/w32_create.m
	* Source/win32/w32_general.m
	* Source/win32/w32_GLcontext.m
	* Source/win32/w32_movesize.m
	* Source/win32/w32_windowdisplay.m
	* Source/win32/WIN32Server.m
	* Source/winlib/GNUmakefile.preamble: Merge of all testplant
	branch changes to trunk for Cairo changes.  Did code cleanup to
	make the code conform to coding standards.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@35821 72102866-910b-0410-8b05-ffd578937521
2012-11-26 05:39:22 +00:00
Fred Kiefer
6737892a4a * Source/win32/w32_create.m (-decodeWM_CREATEParams:::): Call
windowbacking:: instead of handling backingstore here.

Merge some changes from testplant branch
* Source/win32/WIN32Server.m : Fix for fatal exceptions when a
nil mouse event tried to post
Patch by Jonathan Gillaspie <jonathan.gillaspie@testplant.com>
* Source/gsc/GSGState.m (-description),
* Source/cairo/CairoGState.m (-description): Add this method.
* Headers/win32/WIN32Server.h - Added a mutable array for
storing multiple screen information from GDI screen lookup
* Source/win32/WIN32Server.m - Added startup sequence to invoke
GDI functions to look up multiple screen/monitor information
* Source/gsc/GSGState.m: Fix compiler warnings
Patch by Marcian Lytwyn <marcian.lytwyn@advcsi.com>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@35688 72102866-910b-0410-8b05-ffd578937521
2012-10-14 20:12:35 +00:00
Eric Wasylishen
8018242a9c * Source/cairo/CairoPDFSurface.m:
* Source/cairo/CairoContext.m:
* Source/cairo/CairoSurface.m:
* Source/cairo/CairoPSSurface.m:
* Headers/cairo/CairoSurface.h: Add a -isDrawingToScreen method
to CairoSurface. Returns NO for PDF/PS surfaces, yes for others.
Use it to implement -[CairoContext isDrawingToScreen], so that
-[NSGraphicsContext isDrawingToScreen] will return the correct
value.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@35610 72102866-910b-0410-8b05-ffd578937521
2012-09-26 19:09:19 +00:00
Fred Kiefer
43fe122a1c * Source/cairo/CairoFontEnumerator.m: Allow for Windows default
fonts.
* Source/win32/w32_GLcontext.m,
* Source/x11/XGGLContext.m: Implement 10.6 methods to get/set
the CGLContextObj.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@35419 72102866-910b-0410-8b05-ffd578937521
2012-08-17 13:32:44 +00:00
Fred Kiefer
7c8e4e9821 * Source/cairo/CairoGState.m: Set the filter to BILINEAR for all
patterns we use.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34791 72102866-910b-0410-8b05-ffd578937521
2012-02-20 11:30:22 +00:00
Fred Kiefer
996c877868 Use difference operator only for cairo version >= 1.9.4.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34776 72102866-910b-0410-8b05-ffd578937521
2012-02-19 12:19:09 +00:00
Fred Kiefer
234ac0932b Replace NSCompositeHighlight with GSCompositeHighlight and map NSCompositeHighlight onto
NSCompositeSourceOver.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34773 72102866-910b-0410-8b05-ffd578937521
2012-02-18 21:10:07 +00:00
Eric Wasylishen
088912afe1 * Source/cairo/CairoFontInfo.m (-setupAttributes):
use CAIRO_HINT_METRICS_ON instead of CAIRO_HINT_METRICS_OFF,
otherwise some text is cut of (e.g. quit Ink with unsaved
changes, the "t" in "Quit" in the dialog is cut off)


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34613 72102866-910b-0410-8b05-ffd578937521
2012-01-23 22:53:57 +00:00
Eric Wasylishen
9d52d255cb * Source/cairo/CairoFontInfo.m (-setupAttributes):
We must not leave the hinting settings as their defaults,
because if we did, that would mean using the surface defaults
which might or might not use hinting (xlib does by default.)

Since we make measurements outside of the context of a surface
(-advancementForGlyph:), we need to ensure that the same
hinting settings are used there as when we draw. For now,
just force hinting to be off.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34612 72102866-910b-0410-8b05-ffd578937521
2012-01-23 22:40:29 +00:00
Fred Kiefer
ea4772c07e * Source/winlib/WIN32FontEnumerator.m,
* Source/cairo/CairoFontEnumerator.m,
* Source/xlib/GSXftFontInfo.m,
* Source/xlib/XGFont.m: Use NSDebugLLog instead of NSDebugLog to
reduce amount of default output.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34493 72102866-910b-0410-8b05-ffd578937521
2012-01-11 08:47:27 +00:00
Eric Wasylishen
caa986a9d6 * Source/cairo/CairoGState.m (-GSShowGlyphsWithAdvances:):
Update the current point after drawing text. Should not affect
anything in gui right now, but will be useful later.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34388 72102866-910b-0410-8b05-ffd578937521
2012-01-02 09:23:05 +00:00
Eric Wasylishen
b6588a43bd * Source/cairo/CairoContext.m (-beginPrologueBBox:...):
Add a hack to get landscape printing working. Comment in the source
reproduced here:
FIXME: This is confusing... When an 8.5x11 page is set to
landscape, NSPrintInfo also swaps the paperSize to be 11x8.5,
but gui also adds a 90 degree rotation as if it will
be drawing on a 8.5x11 page. So, swap 11x8.5 back to 8.5x11 here.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34356 72102866-910b-0410-8b05-ffd578937521
2011-12-24 18:44:53 +00:00
Eric Wasylishen
4f613a2a66 * Source/cairo/CairoContext.m (-beginPrologueBBox:...): Use
paper size from print info to set the cairo page size, instead
of using the bounding box (which is usually smaller than the
paper size, and was causing cairo print output to be wrong
compared to GNUstep's built-in PostScript writer.)


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34351 72102866-910b-0410-8b05-ffd578937521
2011-12-23 19:01:45 +00:00
Fred Kiefer
b5d10eade8 * Source/cairo/CairoFontEnumerator.m: Define FC_WEIGHT_ULTRABLACK
for old versions of fontconfig.
Patch by Richard Frith-Macdonald <rfm@gnu.org>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@34035 72102866-910b-0410-8b05-ffd578937521
2011-10-20 09:15:58 +00:00
Eric Wasylishen
d7b7322723 * Source/cairo/GNUmakefile:
* Source/cairo/CairoContext.m:
* Source/cairo/CairoSurface.m:
* Source/cairo/XGCairoModernSurface.m:
* Headers/cairo/XGCairoModernSurface.h:
* Headers/cairo/CairoSurface.h: New cairo surface which uses
cairo_surface_create_similar to create a back buffer which
has an alpha channel, even if the X server doesn't support
surfaces with alpha. This new surface is also made the default
since this seems to be the recommended way to double buffer
with cairo.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33978 72102866-910b-0410-8b05-ffd578937521
2011-10-13 21:37:44 +00:00
Eric Wasylishen
9e4b957085 * Source/cairo/CairoContext.m: revert the last change for now
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33855 72102866-910b-0410-8b05-ffd578937521
2011-09-18 20:37:00 +00:00
Eric Wasylishen
9b930f8ec7 * Source/cairo/CairoContext.m: Switch to XGCairoSurface by default,
because it fixes the corrupted display problem reported by Riccardo
on 16-bit displays.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33849 72102866-910b-0410-8b05-ffd578937521
2011-09-16 23:56:01 +00:00
Fred Kiefer
172dc48fe7 * Source/cairo/CairoGState.m (-saveClip, -restoreClip:,
-drawGradient:...): Check that the _ct isnt NULL.
* Source/cairo/CairoGState.m (doubleFromUserSpace,
  floatToUserSpace): Use correct types in these helper functions.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33830 72102866-910b-0410-8b05-ffd578937521
2011-09-12 10:40:52 +00:00
Eric Wasylishen
ea5cc1646e * Source/cairo/CairoGState.m (-drawGState:...): Check that the source
context is non-NULL before calling cairo_get_target on it. Log a warning
when either the source context or target context is NULL.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33828 72102866-910b-0410-8b05-ffd578937521
2011-09-12 00:46:15 +00:00
Eric Wasylishen
ee87a3db27 * Source/cairo/CairoGState.m (-drawGState:...): Use CAIRO_EXTEND_PAD
on the pattern to prevent blurred edges when scaling up.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33759 72102866-910b-0410-8b05-ffd578937521
2011-08-17 05:47:18 +00:00
Eric Wasylishen
1858519713 * Source/cairo/CairoGState.m (-DPSstroke:): If the line width is
0, temporarily set it to 1 unit wide (in device space.) This
is an attempt at matching the behaviour of the setlinewidth
PostScript operator, which is supposed to interpret 0 as meaning
the thinnest line that the output device can draw.
Note that Quartz (and cairo) draw nothing with a line width of 0.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33739 72102866-910b-0410-8b05-ffd578937521
2011-08-15 19:23:49 +00:00
Eric Wasylishen
f3149ce164 * Headers/cairo/CairoGState.h:
* Source/cairo/CairoGState.m: Remove most of the rounding code and
implementation of DPSstrokeadjust.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33492 72102866-910b-0410-8b05-ffd578937521
2011-07-08 21:02:06 +00:00