forked from pool/racket
53 lines
2.0 KiB
Diff
53 lines
2.0 KiB
Diff
From 5629a6156a5720e51a277849f75b3135cb93664f Mon Sep 17 00:00:00 2001
|
|
From: Matthew Flatt <mflatt@racket-lang.org>
|
|
Date: Wed, 15 May 2013 20:28:05 -0600
|
|
Subject: [PATCH] support libpng16
|
|
|
|
---
|
|
collects/racket/draw/unsafe/png.rkt | 21 ++++++++++++++-------
|
|
1 file changed, 14 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/collects/racket/draw/unsafe/png.rkt b/collects/racket/draw/unsafe/png.rkt
|
|
index 596fcb4..a6b028d 100644
|
|
--- a/collects/racket/draw/unsafe/png.rkt
|
|
+++ b/collects/racket/draw/unsafe/png.rkt
|
|
@@ -10,11 +10,15 @@
|
|
[(unix)
|
|
;; Most Linux distros supply "libpng12", while other Unix
|
|
;; variants often have just "libpng", etc.
|
|
- (ffi-lib "libpng15" '("15" "")
|
|
- #:fail (lambda ()
|
|
- (ffi-lib "libpng12" '("0" "")
|
|
- #:fail (lambda ()
|
|
- (ffi-lib "libpng")))))]
|
|
+ (let loop ([alts '(("libpng16" ("16" ""))
|
|
+ ("libpng15" ("15" ""))
|
|
+ ("libpng12" ("0" ""))
|
|
+ ("libpng"))])
|
|
+ (cond
|
|
+ [(null? alts) #f]
|
|
+ [else (apply ffi-lib (car alts)
|
|
+ #:fail (lambda ()
|
|
+ (loop (cdr alts))))]))]
|
|
[(macosx) (ffi-lib "libpng15.15.dylib")]
|
|
[(windows)
|
|
(ffi-lib "zlib1.dll")
|
|
@@ -29,9 +33,12 @@
|
|
;; assume that other versions are also ok
|
|
(define PNG_LIBPNG_VER_STRING (string->bytes/latin-1
|
|
(let ([v (png_access_version_number)])
|
|
- (format "~s.~s"
|
|
+ (format "~s.~s~a"
|
|
(quotient v 10000)
|
|
- (quotient (remainder v 10000) 100)))))
|
|
+ (quotient (remainder v 10000) 100)
|
|
+ (if (zero? (remainder v 100))
|
|
+ ""
|
|
+ (format ".~a" (remainder v 100)))))))
|
|
|
|
(define _png_structp (_cpointer 'png_structp))
|
|
(define _png_infop (_cpointer 'png_infop))
|
|
--
|
|
1.8.2.3
|
|
|