Win32: Initial support for Cairo under Windows
* Introduced Cairo::SurfaceWin32, a Cairo surface to be used for Win32
drawables.
* Added support for Win32 fonts
* Pre-build Win32 Cairo libraries added to support/win32/i586
--- a/CairoGraphicsContext.st Tue Feb 23 16:40:59 2016 +0000
+++ b/CairoGraphicsContext.st Fri Feb 19 14:25:58 2016 +0000
@@ -133,6 +133,7 @@
"Created: / 16-02-2016 / 15:37:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 23-02-2016 / 14:46:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:38:52 / jv"
!
clippingBounds:aRectangleOrNil
@@ -199,7 +200,6 @@
!CairoGraphicsContext methodsFor:'basic drawing'!
displayArcX:x y:y width:w height:h from:start angle:angle
-
| angle1 angle2 |
gcId isNil ifTrue:[
@@ -229,6 +229,7 @@
]
"Modified: / 13-02-2016 / 20:05:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:34:08 / jv"
!
displayLineFromX:x0 y:y0 toX:x1 y:y1
@@ -241,6 +242,7 @@
cr stroke.
"Modified: / 13-02-2016 / 20:05:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:24:52 / jv"
!
displayPolygon:points
@@ -258,6 +260,7 @@
cr stroke.
"Modified: / 13-02-2016 / 20:04:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:34:19 / jv"
!
displayRectangleX:x y:y width:w height:h
@@ -273,6 +276,7 @@
]
"Modified: / 18-02-2016 / 22:21:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:34:34 / jv"
!
displayString:aStringArg from:index1Arg to:index2Arg x:x y:y opaque:opaqueArg maxWidth:maxWidth
@@ -340,6 +344,7 @@
"Created: / 16-02-2016 / 10:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 18-02-2016 / 21:12:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-02-2016 / 21:04:49 / jv"
! !
!CairoGraphicsContext methodsFor:'basic filling'!
@@ -380,6 +385,7 @@
]
"Modified: / 13-02-2016 / 20:03:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:34:47 / jv"
!
fillPolygon:points
@@ -397,6 +403,7 @@
cr fill.
"Modified: / 13-02-2016 / 20:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:34:52 / jv"
!
fillRectangleX:x y:y width:w height:h
@@ -420,6 +427,7 @@
"/ cr restore.
"Modified: / 18-02-2016 / 22:20:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:34:56 / jv"
! !
!CairoGraphicsContext methodsFor:'bit blitting'!
@@ -469,6 +477,7 @@
^ super copyPlaneFrom:aDrawable x:srcX y:srcY toX:dstX y:dstY width:w height:h
"Created: / 18-02-2016 / 20:17:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 21-02-2016 / 15:35:11 / jv"
! !
!CairoGraphicsContext methodsFor:'drawing'!
@@ -558,6 +567,7 @@
"Created: / 07-01-2015 / 20:41:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 13-02-2016 / 20:00:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-02-2016 / 15:35:35 / jv"
! !
!CairoGraphicsContext methodsFor:'filling'!
@@ -596,6 +606,7 @@
"Created: / 07-01-2015 / 21:33:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 13-02-2016 / 20:00:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 21-02-2016 / 15:58:59 / jv"
! !
!CairoGraphicsContext methodsFor:'finalization'!
--- a/CairoScaledFont.st Tue Feb 23 16:40:59 2016 +0000
+++ b/CairoScaledFont.st Fri Feb 19 14:25:58 2016 +0000
@@ -36,6 +36,7 @@
"Created: / 17-02-2016 / 20:51:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified (format): / 17-02-2016 / 22:25:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-02-2016 / 20:58:23 / jv"
! !
!CairoScaledFont methodsFor:'accessing'!
--- a/Cairo__CPrimitives.st Tue Feb 23 16:40:59 2016 +0000
+++ b/Cairo__CPrimitives.st Fri Feb 19 14:25:58 2016 +0000
@@ -15,7 +15,13 @@
dllPath
OperatingSystem isMSWINDOWSlike ifTrue:[
- ^ #( 'C:\Windows' 'C:\Windows\System32' "Wild guess, should not harm" )
+ ^ {
+ OperatingSystem pathOfSTXExecutable asFilename directory pathName .
+ (Smalltalk getPackageDirectoryForPackage: self package) pathName .
+ ((Smalltalk getPackageDirectoryForPackage: self package) / 'support' / 'win32' / (OperatingSystem getSystemInfo at:#machine)) pathName .
+ 'C:\Windows' .
+ 'C:\Windows\SYSTEM32' .
+ }
].
OperatingSystem isUNIXlike ifTrue:[
@@ -44,19 +50,22 @@
self error:'Unsupported operating system'
"
- SqliteLibrary dllPath
+ CPrimitives dllPath
"
"Created: / 31-08-2011 / 18:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 19-02-2016 / 13:56:18 / jv"
!
libraryName
OperatingSystem isUNIXlike ifTrue:[^'libcairo.so.2'].
- OperatingSystem isMSWINDOWSlike ifTrue:[^'cairo.dll'].
+ OperatingSystem isMSWINDOWSlike ifTrue:[^'libcairo-2.dll'].
self error:'Library name for host OS is not known'
+
+ "Modified: / 19-02-2016 / 13:47:51 / jv"
! !
!CPrimitives class methodsFor:'primitives'!
@@ -2089,6 +2098,22 @@
self primitiveFailed
!
+cairo_win32_font_face_create_for_hfont: hfont
+
+ <cdecl: Cairo::FontFace "cairo_win32_font_face_create_for_hfont" ( handle ) >
+ self primitiveFailed
+
+ "Created: / 19-02-2016 / 16:35:36 / jv"
+!
+
+cairo_win32_surface_create: hfd
+ <cdecl: Cairo::SurfaceWin32 "cairo_win32_surface_create" ( handle ) >
+ self primitiveFailed
+
+ "Created: / 19-02-2016 / 12:06:16 / jv"
+ "Modified (format): / 19-02-2016 / 14:07:50 / jv"
+!
+
cairo_xlib_device_debug_cap_xrender_version: device _: major_version _: minor_version
<cdecl: void "cairo_xlib_device_debug_cap_xrender_version" ( Cairo::Device int32 int32 ) >
--- a/Cairo__FillRule.st Tue Feb 23 16:40:59 2016 +0000
+++ b/Cairo__FillRule.st Fri Feb 19 14:25:58 2016 +0000
@@ -9,6 +9,7 @@
category:'Cairo-Constants'
!
+
!FillRule class methodsFor:'initialization'!
initialize
@@ -29,5 +30,12 @@
^CAIRO_FILL_RULE_WINDING
! !
+!FillRule class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
FillRule initialize!
--- a/Cairo__FontFace.st Tue Feb 23 16:40:59 2016 +0000
+++ b/Cairo__FontFace.st Fri Feb 19 14:25:58 2016 +0000
@@ -19,6 +19,25 @@
pattern := FcPattern fromFontDescription: aFontDescription.
^ CPrimitives cairo_ft_font_face_create_for_pattern: pattern.
].
+ Screen current platformName = 'WIN32' ifTrue:[
+ | hfont |
+
+ hfont := aFontDescription fontId.
+ hfont isNil ifTrue:[
+ hfont := Screen current
+ getFontWithFamily:aFontDescription family
+ face:aFontDescription face
+ style:aFontDescription style
+ size:(aFontDescription sizeUnit == #px ifTrue:[aFontDescription pixelSize] ifFalse:[aFontDescription size])
+ sizeUnit:aFontDescription sizeUnit
+ encoding:aFontDescription encoding ? '*'.
+ hfont isNil ifTrue:[
+ self error: 'Faled to get HFONT'.
+ ^ nil.
+ ].
+ ].
+ ^ CPrimitives cairo_win32_font_face_create_for_hfont: hfont.
+ ].
self error: 'Noy yet implemented'.
"
@@ -26,6 +45,7 @@
"
"Created: / 17-02-2016 / 20:01:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-02-2016 / 21:01:50 / jv"
! !
!FontFace class methodsFor:'accessing'!
--- a/Cairo__Surface.st Tue Feb 23 16:40:59 2016 +0000
+++ b/Cairo__Surface.st Fri Feb 19 14:25:58 2016 +0000
@@ -49,6 +49,12 @@
"Modified: / 28-12-2014 / 22:05:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+newWin32WithHDC: hdc
+ ^ CPrimitives cairo_win32_surface_create:hdc
+
+ "Created: / 19-02-2016 / 12:07:29 / jv"
+!
+
newXlibWithDisplay:dpy drawable:drawable visual:visual width:width height:height
^ CPrimitives
cairo_xlib_surface_create:dpy
@@ -72,9 +78,16 @@
surface setView: aView.
^ surface.
].
+ (aView device platformName = 'WIN32') ifTrue:[
+ aView gcId isNil ifTrue:[
+ aView initGC
+ ].
+ ^ self newWin32WithHDC: (aView device hdcForGC: aView gcId)
+ ].
self error: 'Unsupported plarform'
"Created: / 13-02-2016 / 23:47:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-02-2016 / 12:11:20 / jv"
! !
!Surface class methodsFor:'accessing'!
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Cairo__SurfaceWin32.st Fri Feb 19 14:25:58 2016 +0000
@@ -0,0 +1,11 @@
+"{ Package: 'stx:goodies/libcairo' }"
+
+"{ NameSpace: Cairo }"
+
+Surface subclass:#SurfaceWin32
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:'Cairo::SurfaceType Cairo::Format'
+ category:'Cairo-Objects'
+!
+
--- a/Make.proto Tue Feb 23 16:40:59 2016 +0000
+++ b/Make.proto Fri Feb 19 14:25:58 2016 +0000
@@ -198,6 +198,7 @@
$(OUTDIR)Cairo__Surface.$(O) Cairo__Surface.$(H): Cairo__Surface.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__SurfaceType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cairo__SurfaceImage.$(O) Cairo__SurfaceImage.$(H): Cairo__SurfaceImage.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cairo__SurfacePDF.$(O) Cairo__SurfacePDF.$(H): Cairo__SurfacePDF.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__SurfaceWin32.$(O) Cairo__SurfaceWin32.$(H): Cairo__SurfaceWin32.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__SurfaceType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)Cairo__SurfaceXlib.$(O) Cairo__SurfaceXlib.$(H): Cairo__SurfaceXlib.st $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__CObject.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Format.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__Surface.$(H) $(INCLUDE_TOP)/stx/goodies/libcairo/Cairo__SurfaceType.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsDevice.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(STCHDR)
--- a/Make.spec Tue Feb 23 16:40:59 2016 +0000
+++ b/Make.spec Fri Feb 19 14:25:58 2016 +0000
@@ -105,6 +105,7 @@
Cairo::Surface \
Cairo::SurfaceImage \
Cairo::SurfacePDF \
+ Cairo::SurfaceWin32 \
Cairo::SurfaceXlib \
@@ -165,6 +166,7 @@
$(OUTDIR_SLASH)Cairo__Surface.$(O) \
$(OUTDIR_SLASH)Cairo__SurfaceImage.$(O) \
$(OUTDIR_SLASH)Cairo__SurfacePDF.$(O) \
+ $(OUTDIR_SLASH)Cairo__SurfaceWin32.$(O) \
$(OUTDIR_SLASH)Cairo__SurfaceXlib.$(O) \
$(OUTDIR_SLASH)extensions.$(O) \
--- a/abbrev.stc Tue Feb 23 16:40:59 2016 +0000
+++ b/abbrev.stc Fri Feb 19 14:25:58 2016 +0000
@@ -55,4 +55,5 @@
Cairo::Surface Cairo__Surface stx:goodies/libcairo 'Cairo-Objects' 0
Cairo::SurfaceImage Cairo__SurfaceImage stx:goodies/libcairo 'Cairo-Objects' 0
Cairo::SurfacePDF Cairo__SurfacePDF stx:goodies/libcairo 'Cairo-Objects' 0
+Cairo::SurfaceWin32 Cairo__SurfaceWin32 stx:goodies/libcairo 'Cairo-Objects' 0
Cairo::SurfaceXlib Cairo__SurfaceXlib stx:goodies/libcairo 'Cairo-Objects' 0
--- a/bc.mak Tue Feb 23 16:40:59 2016 +0000
+++ b/bc.mak Fri Feb 19 14:25:58 2016 +0000
@@ -123,6 +123,7 @@
$(OUTDIR)Cairo__Surface.$(O) Cairo__Surface.$(H): Cairo__Surface.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__SurfaceType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cairo__SurfaceImage.$(O) Cairo__SurfaceImage.$(H): Cairo__SurfaceImage.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cairo__SurfacePDF.$(O) Cairo__SurfacePDF.$(H): Cairo__SurfacePDF.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Cairo__SurfaceWin32.$(O) Cairo__SurfaceWin32.$(H): Cairo__SurfaceWin32.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__SurfaceType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)Cairo__SurfaceXlib.$(O) Cairo__SurfaceXlib.$(H): Cairo__SurfaceXlib.st $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__CObject.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Format.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__Surface.$(H) $(INCLUDE_TOP)\stx\goodies\libcairo\Cairo__SurfaceType.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsDevice.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(STCHDR)
--- a/libInit.cc Tue Feb 23 16:40:59 2016 +0000
+++ b/libInit.cc Fri Feb 19 14:25:58 2016 +0000
@@ -81,6 +81,7 @@
_Cairo__Surface_Init(pass,__pRT__,snd);
_Cairo__SurfaceImage_Init(pass,__pRT__,snd);
_Cairo__SurfacePDF_Init(pass,__pRT__,snd);
+_Cairo__SurfaceWin32_Init(pass,__pRT__,snd);
_Cairo__SurfaceXlib_Init(pass,__pRT__,snd);
_stx_137goodies_137libcairo_extensions_Init(pass,__pRT__,snd);
--- a/stx_goodies_libcairo.st Tue Feb 23 16:40:59 2016 +0000
+++ b/stx_goodies_libcairo.st Fri Feb 19 14:25:58 2016 +0000
@@ -171,6 +171,7 @@
#'Cairo::Surface'
#'Cairo::SurfaceImage'
#'Cairo::SurfacePDF'
+ #'Cairo::SurfaceWin32'
#'Cairo::SurfaceXlib'
)
!
Binary file support/win32/i586/libcairo-2.dll has changed
Binary file support/win32/i586/libfontconfig-1.dll has changed
Binary file support/win32/i586/libfreetype-6.dll has changed
Binary file support/win32/i586/liblzma-5.dll has changed
Binary file support/win32/i586/libpixman-1-0.dll has changed
Binary file support/win32/i586/libpng15-15.dll has changed
Binary file support/win32/i586/libxml2-2.dll has changed
Binary file support/win32/i586/zlib1.dll has changed
Binary file support/win32/x86_64/fontconfig.dll has changed
Binary file support/win32/x86_64/iconv.dll has changed
Binary file support/win32/x86_64/libcairo-2.dll has changed
Binary file support/win32/x86_64/libpng16.dll has changed
Binary file support/win32/x86_64/libxml2.dll has changed
Binary file support/win32/x86_64/pixman-1.dll has changed
Binary file support/win32/x86_64/zlib1.dll has changed