Skip to content

Commit

Permalink
Merge pull request #6 from eryx/master
Browse files Browse the repository at this point in the history
more apis implemented: CreateFromPngPtr(), CreateFromGifPtr(), ImageT…
  • Loading branch information
bolknote committed Sep 1, 2015
2 parents a307a06 + 5b9e56d commit 5485d34
Showing 1 changed file with 47 additions and 30 deletions.
77 changes: 47 additions & 30 deletions gd.go
@@ -1,4 +1,5 @@
package gd

// Evgeny Stepanischev. 2011. http://bolknote.ru/ imbolk@gmail.com

// #include <gd.h>
Expand Down Expand Up @@ -62,6 +63,14 @@ func CreateFromJpegPtr(imagebuffer []byte) *Image {
return img(C.gdImageCreateFromJpegPtr(C.int(len(imagebuffer)), Pointer(&imagebuffer[0])))
}

func CreateFromPngPtr(imagebuffer []byte) *Image {
return img(C.gdImageCreateFromPngPtr(C.int(len(imagebuffer)), Pointer(&imagebuffer[0])))
}

func CreateFromGifPtr(imagebuffer []byte) *Image {
return img(C.gdImageCreateFromGifPtr(C.int(len(imagebuffer)), Pointer(&imagebuffer[0])))
}

func ImageToJpegBuffer(p *Image, quality int) []byte {

var imgSize int
Expand All @@ -83,6 +92,15 @@ func ImageToPngBuffer(p *Image) []byte {
return C.GoBytes(buf, *pimgSize)
}

func ImageToGifBuffer(p *Image) []byte {
var imgSize int
pimgSize := (*C.int)(Pointer(&imgSize))

buf := C.gdImageGifPtr(p.img, pimgSize)
defer C.gdFree(buf)

return C.GoBytes(buf, *pimgSize)
}

func CreateFromJpeg(infile string) *Image {
file := C.fopen(C.CString(infile), C.CString("rb"))
Expand All @@ -96,7 +114,6 @@ func CreateFromJpeg(infile string) *Image {
panic(errors.New("Error occurred while opening file."))
}


func CreateFromGif(infile string) *Image {
file := C.fopen(C.CString(infile), C.CString("rb"))

Expand Down Expand Up @@ -499,43 +516,43 @@ func (p *Image) ColorsForIndex(index Color) map[string]int {
}

func searchfonts(dir string) (out []string) {
files, e := ioutil.ReadDir(dir)
if e == nil {
for _, file := range files {
if name := file.Name(); file.IsDir() {
entry := filepath.Join(dir, name)
out = append(out, searchfonts(entry)...)
} else {
if ext := filepath.Ext(name); ext != "" {
ext := strings.ToLower(ext[1:])
whitelist := []string{"ttf", "otf", "cid", "cff", "pcf", "fnt", "bdr", "pfr", "pfa", "pfb", "afm"}

for _, wext := range whitelist {
if ext == wext {
out = append(out, name)
break
}
}
}
}
}
}

return
files, e := ioutil.ReadDir(dir)
if e == nil {
for _, file := range files {
if name := file.Name(); file.IsDir() {
entry := filepath.Join(dir, name)
out = append(out, searchfonts(entry)...)
} else {
if ext := filepath.Ext(name); ext != "" {
ext := strings.ToLower(ext[1:])
whitelist := []string{"ttf", "otf", "cid", "cff", "pcf", "fnt", "bdr", "pfr", "pfa", "pfb", "afm"}

for _, wext := range whitelist {
if ext == wext {
out = append(out, name)
break
}
}
}
}
}
}

return
}

func GetFonts() (list []string) {
fontpath, pathseparator := "", ""

switch runtime.GOOS {
case "darwin":
fontpath, pathseparator = "/usr/share/fonts/truetype:/System/Library/Fonts:/Library/Fonts", ":"
case "darwin":
fontpath, pathseparator = "/usr/share/fonts/truetype:/System/Library/Fonts:/Library/Fonts", ":"

case "windows":
fontpath, pathseparator = `C:\WINDOWS\FONTS;C:\WINNT\FONTS`, ";"
case "windows":
fontpath, pathseparator = `C:\WINDOWS\FONTS;C:\WINNT\FONTS`, ";"

default:
fontpath, pathseparator = "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:"+
default:
fontpath, pathseparator = "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:"+
"/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/TrueType:/usr/share/fonts/truetype:"+
"/usr/openwin/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/Type1:/usr/lib/X11/fonts/Type1:"+
"/usr/openwin/lib/X11/fonts/Type1", ":"
Expand Down

0 comments on commit 5485d34

Please sign in to comment.