Commit graph

135 commits

Author SHA1 Message Date
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
Eric Wasylishen
3c80cf5c92 * Source/cairo/XGCairoSurface.m (-contentsOfScreen:inRect:):
Use the passed rect properly.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33444 72102866-910b-0410-8b05-ffd578937521
2011-07-03 23:59:35 +00:00
Eric Wasylishen
9bc09976ee * Source/cairo/XGCairoSurface.m: Implementation of
-[GSDisplayServer contentsOfScreen:inRect:] for x11/cairo


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33443 72102866-910b-0410-8b05-ffd578937521
2011-07-03 23:45:22 +00:00
Fred Kiefer
084e5ade90 Revert last change as gui is fixed now.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33305 72102866-910b-0410-8b05-ffd578937521
2011-06-14 22:27:58 +00:00
Fred Kiefer
5a950060d0 * Source/cairo/CairoContext.m (-supportsDrawGState): Delegate to
gstate.
* Headers/cairo/CairoGState.h (-supportsDrawGState): Declare this method.
* Source/cairo/CairoGState.m (-supportsDrawGState): Only allow the
faster drawing operation when the clip can be represented as a
list of rectangles.
* Source/cairo/CairoGState.m (-copyWithZone:): Always free the
clip rectangle list.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33289 72102866-910b-0410-8b05-ffd578937521
2011-06-13 12:34:52 +00:00
Eric Wasylishen
07638f13fc * Source/winlib/WIN32GState.m:
* Source/art/ARTGState.m:
* Source/cairo/CairoGState.m:
* Source/xlib/XGGState.m:
* Source/gsc/GSContext.m:
* Source/gsc/GSGState.m:
* Headers/gsc/GSGStateOps.h:
Add a new interface, GSShowGlyphsWithAdvances, which replaces
GSShowGlyphs as the primitive text drawing method.

None of the backends implement it properly yet; I simply renamed
the existing -GSShowGlyphs:: methods to -GSShowGlyphsWithAdvances:::,
so they currently ignore the glyph advances.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33121 72102866-910b-0410-8b05-ffd578937521
2011-05-26 03:48:58 +00:00
Fred Kiefer
c03b2d3a3b Protect the name id.
Patch by Sebastian Reitenbach <sebastia@l00-bugdead-prods.de>


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@33065 72102866-910b-0410-8b05-ffd578937521
2011-05-19 07:37:29 +00:00
Eric Wasylishen
8b0d34990e * Undo the previous change and try a different approach..
just cache the character set in CairoFaceInfo, but load them
as needed as we were doing before.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@32987 72102866-910b-0410-8b05-ffd578937521
2011-05-05 20:05:13 +00:00
Eric Wasylishen
016af1f41c * Source/cairo/CairoFontEnumerator.m:
* Source/cairo/CairoFaceInfo (-characterSet): Remove the call to
FcFontMatch in -characterSet which was a big performace
bottleneck.
Instead load the character set data when enumerating all fonts in
CairoFontEnumerator.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@32986 72102866-910b-0410-8b05-ffd578937521
2011-05-05 19:18:43 +00:00
Eric Wasylishen
575901b00d back: c89 compat.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@32882 72102866-910b-0410-8b05-ffd578937521
2011-04-17 23:08:30 +00:00
Eric Wasylishen
8545154f67 back/cairo: CairoFontEnumerator.m: Replace -handleKey:selector:valueClass: and -handleKey:selector: methods with macros.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@32880 72102866-910b-0410-8b05-ffd578937521
2011-04-17 22:29:18 +00:00
Eric Wasylishen
88048d141c back/cairo: use Fontconfig for descriptor matching
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@32864 72102866-910b-0410-8b05-ffd578937521
2011-04-14 23:14:38 +00:00
Eric Wasylishen
dc80ca3aa0 back: implement coveredCharacterSet for CairoFontInfo
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@32716 72102866-910b-0410-8b05-ffd578937521
2011-03-28 04:19:41 +00:00
Eric Wasylishen
282a590ad5 core/back: replace objc_{malloc/free} with malloc/free
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@31629 72102866-910b-0410-8b05-ffd578937521
2010-11-18 20:28:15 +00:00
Fred Kiefer
b693e927c6 For XFT Also request spacing information.
Patch by Derek Fawcus <dfawcus@employees.org>.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@31109 72102866-910b-0410-8b05-ffd578937521
2010-08-10 19:21:31 +00:00
Fred Kiefer
7a8c2adea4 * Source/cairo/CairoGState.m
(-compositeGState:fromRect:toPoint:op:fraction:): Move the usage
of _ct and source->_ct after the check whether they are set.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@30588 72102866-910b-0410-8b05-ffd578937521
2010-06-06 19:56:35 +00:00
Quentin Mathe
b53fe57e7c Fixed many drawing issues (many ones being related to the flipping).
See bug report #27782

In particular, fixed -[NSImage drawXXX] and -[NSImage composite/dissolveXXX] 
methods to work exactly as Cocoa when the Cairo backend is used.
Added a new draw operator (in addition to composite) to the backend. Cairo is 
the only backend that implements it for now.
Eliminated as many flipping checks as possible.

Warning: Untested with the winlib backend. 
You must update, recompile and install both Back and Gui.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@30523 72102866-910b-0410-8b05-ffd578937521
2010-06-01 11:04:36 +00:00
Fred Kiefer
5253105797 * Source/cairo/CairoGState.m: Only use calls for
cairo_pattern_set_extend() on cairo > 1.6.0.
Patch suggested by Eric Wasylishen <ewasylishen@gmail.com>.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29868 72102866-910b-0410-8b05-ffd578937521
2010-03-07 21:40:36 +00:00
Richard Frith-MacDonald
18ab944a93 update to avoid obsolete function
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29844 72102866-910b-0410-8b05-ffd578937521
2010-03-05 06:52:53 +00:00
Fred Kiefer
92fdccd8d3 Adjust to the CGFloat change for NSFont
and NSAffineTransform done in base and gui.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29689 72102866-910b-0410-8b05-ffd578937521
2010-02-20 16:33:30 +00:00
Wolfgang Lux
4311e19de6 Avoid unnecessary runtime check in the fix for #28590.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29358 72102866-910b-0410-8b05-ffd578937521
2010-01-22 11:47:06 +00:00
Wolfgang Lux
4ea7b58019 Fix bug #28590.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29357 72102866-910b-0410-8b05-ffd578937521
2010-01-22 08:16:50 +00:00
Eric Wasylishen
1c46dd6417 Cairo backend:
-DPSsetflat: and -DPScurrentflat should not have been transforming
the flatness value with the current transformation matrix.
The effect of this could be seen in the Apple BezierPathLab example;
zooming in on the circle caused it to look more and more like a
polygon.

Also set NSBezierPath default flatness to 0.6 to match OS X
(it was 1.0, which made circles look a bit rough)


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29145 72102866-910b-0410-8b05-ffd578937521
2009-12-20 18:47:26 +00:00
Fred Kiefer
9a47060a5a Patch by Eric Wasylishen to set the pattern extend in the cairo backend.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@29122 72102866-910b-0410-8b05-ffd578937521
2009-12-14 14:05:32 +00:00
Fred Kiefer
ebfac7ae21 Set colour for cairo text drawing.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28964 72102866-910b-0410-8b05-ffd578937521
2009-11-06 09:58:09 +00:00
Fred Kiefer
6a453d533c Correct -setColor:state: to handle alpha better.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28957 72102866-910b-0410-8b05-ffd578937521
2009-11-04 21:56:49 +00:00
Fred Kiefer
2520a756ac Correct stroke colour handling.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28948 72102866-910b-0410-8b05-ffd578937521
2009-11-03 22:52:28 +00:00
Fred Kiefer
c172ce04b1 Remove commented out code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28944 72102866-910b-0410-8b05-ffd578937521
2009-11-03 08:57:28 +00:00
Fred Kiefer
55a29294d2 Use the offset adjustment for cairo > 1.8 in the general case.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28943 72102866-910b-0410-8b05-ffd578937521
2009-11-03 08:39:15 +00:00
Fred Kiefer
6653ef68cc Add simple gradient implementation for the cairo backend.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28873 72102866-910b-0410-8b05-ffd578937521
2009-10-23 20:46:41 +00:00
Fred Kiefer
3c8eab0c49 Implement pattern colours for all backends.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28850 72102866-910b-0410-8b05-ffd578937521
2009-10-19 14:17:45 +00:00
Fred Kiefer
15c9010eeb * Source/cairo/CairoFontEnumerator.m,
* Source/xlib/GSXftFontInfo.m: Use DejaVu as another fallback
  font, as Bitstream Vera and FreeSans are no longer supplied
  directly by Debian.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28414 72102866-910b-0410-8b05-ffd578937521
2009-07-27 15:06:55 +00:00
Fred Kiefer
a9dae5b3a7 Patch for the cairo scrolling issue. This will need a lot of testing!
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28389 72102866-910b-0410-8b05-ffd578937521
2009-07-10 08:11:39 +00:00
Fred Kiefer
0f7b2e89cb Finish rework of composite operators started four years ago.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28313 72102866-910b-0410-8b05-ffd578937521
2009-05-31 19:46:28 +00:00
Fred Kiefer
4f3b8457a3 Correct the memory management of XWindowBuffer.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/back/trunk@28141 72102866-910b-0410-8b05-ffd578937521
2009-03-27 23:16:48 +00:00