bolknote / go-gd Goto Github PK
View Code? Open in Web Editor NEWGo bingings for GD (http://www.boutell.com/gd/)
Go bingings for GD (http://www.boutell.com/gd/)
pacman -Q | grep libgd
mingw-w64-i686-libgd 2.2.5-1
# github.com/bolknote/go-gd
..\.gopath\src\github.com\bolknote\go-gd\gd.go:655:16: type [1073741824]_Ctype_struct___1 larger than address space
..\.gopath\src\github.com\bolknote\go-gd\gd.go:655:16: type [1073741824]_Ctype_struct___1 too large
..\.gopath\src\github.com\bolknote\go-gd\gd.go:667:188: cannot use gdpoints (type _Ctype_gdPointPtr) as type *_Ctype_struct___3 in argument to func literal
..\.gopath\src\github.com\bolknote\go-gd\gd.go:674:192: cannot use gdpoints (type _Ctype_gdPointPtr) as type *_Ctype_struct___3 in argument to func literal
..\.gopath\src\github.com\bolknote\go-gd\gd.go:681:194: cannot use gdpoints (type _Ctype_gdPointPtr) as type *_Ctype_struct___3 in argument to func literal
gg works but pictures generated is much larger than gd (8x).
Line 118 in 3320b6f
And with buf := C.gdImageWebpPtrEx(p.img, pimgSize, C.int(quantization))
build OK
go version go1.10 darwin/amd64
In current implementation (which I believe partially follows PHP extension) StringFT initialize and destroy font cache on every call, which is OK if this function is used infrequently. But if StringFT is heavily used, then init/deinit of cache on every call is a waste. Moreover, cache is global in libgd, so init/deint of the cache in StringFT makes StringFT thread-unsafe.
I think, it would be handy to have option to control font cache manually, and provide another interface to the gdImageStringFT, which works with pre-initialized cache.
As a simpler option, according to the libgd docs, gdFontCacheSetup/gdFontCacheShutdown can be just omitted from StringFT, as gdImageStringFT will setup font cache if it is not yet initialized.
Greetings,
I am attempting to use the Polygon functions with the following code:
var points = []struct {
x int
y int
}{
{2, 2},
{2500, 2500},
{250, 4000},
{20, 100},
}
pict.FilledPolygon(points, white)
With go 1.10, I receive the following error upon go run main.go
:
./main.go:24:20: cannot use points (type []struct { x int; y int }) as type []struct { gd.x int; gd.y int } in argument to pict.FilledPolygon
What is the correct way to pass points to these functions? Thanks for any help you may be able to provide.
I have error return as:
cgo-gcc-prolog:922:30: warning: incompatible pointer types passing 'struct (anonymous struct at cgo-gcc-prolog:917:3)
so when I remove:
func (p *Image) Polygon(points [](struct{ x, y int }), c Color) {
C.gdImagePolygon(p.img, (C.gdPointPtr)(Pointer(&points)), C.int(len(points)), C.int(c))
}
func (p *Image) OpenPolygon(points [](struct{ x, y int }), c Color) {
C.gdImageOpenPolygon(p.img, (C.gdPointPtr)(Pointer(&points)), C.int(len(points)), C.int(c))
}
func (p *Image) FilledPolygon(points [](struct{ x, y int }), c Color) {
C.gdImageFilledPolygon(p.img, (C.gdPointPtr)(Pointer(&points)), C.int(len(points)), C.int(c))
}
go version:
go1.8 darwin/amd64
it's run ok. Can you fix it ?
# github.com/bolknote/go-gd
..\.gopath\src\github.com\bolknote\go-gd\gd.go:655:16: type [1073741824]_Ctype_struct___1 larger than address space
..\.gopath\src\github.com\bolknote\go-gd\gd.go:655:16: type [1073741824]_Ctype_struct___1 too large
..\.gopath\src\github.com\bolknote\go-gd\gd.go:667:188: cannot use gdpoints (type _Ctype_gdPointPtr) as type *_Ctype_struct___3 in argument to func literal
..\.gopath\src\github.com\bolknote\go-gd\gd.go:674:192: cannot use gdpoints (type _Ctype_gdPointPtr) as type *_Ctype_struct___3 in argument to func literal
..\.gopath\src\github.com\bolknote\go-gd\gd.go:681:194: cannot use gdpoints (type _Ctype_gdPointPtr) as type *_Ctype_struct___3 in argument to func literal
go version
go version go1.11 windows/386
Hi,
I'm recently working on processing images with go and this gd lib.
But I found errors during running go build
like following,
looks like the linker hasn't found the proper lib file.
but passing -ldflags "-lgd"
won't work.
What should I do building this library?
thanks!
# _/tmp/go-gd
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontCacheSetup':
./gd.go:62: undefined reference to `gdFontCacheSetup'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontGetGiant':
./gd.go:80: undefined reference to `gdFontGetGiant'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontGetLarge':
./gd.go:89: undefined reference to `gdFontGetLarge'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontGetMediumBold':
./gd.go:98: undefined reference to `gdFontGetMediumBold'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontGetSmall':
./gd.go:107: undefined reference to `gdFontGetSmall'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontGetTiny':
./gd.go:116: undefined reference to `gdFontGetTiny'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageArc':
./gd.go:153: undefined reference to `gdImageArc'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorAllocate':
./gd.go:196: undefined reference to `gdImageColorAllocate'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorAllocateAlpha':
./gd.go:211: undefined reference to `gdImageColorAllocateAlpha'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorClosest':
./gd.go:226: undefined reference to `gdImageColorClosest'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorClosestAlpha':
./gd.go:241: undefined reference to `gdImageColorClosestAlpha'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorClosestHWB':
./gd.go:256: undefined reference to `gdImageColorClosestHWB'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorExact':
./gd.go:282: undefined reference to `gdImageColorExact'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorExactAlpha':
./gd.go:297: undefined reference to `gdImageColorExactAlpha'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorResolve':
./gd.go:312: undefined reference to `gdImageColorResolve'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorResolveAlpha':
./gd.go:327: undefined reference to `gdImageColorResolveAlpha'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCopy':
./gd.go:354: undefined reference to `gdImageCopy'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCopyMerge':
./gd.go:372: undefined reference to `gdImageCopyMerge'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCopyMergeGray':
./gd.go:390: undefined reference to `gdImageCopyMergeGray'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCopyResampled':
./gd.go:408: undefined reference to `gdImageCopyResampled'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCopyResized':
./gd.go:426: undefined reference to `gdImageCopyResized'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCopyRotated':
./gd.go:444: undefined reference to `gdImageCopyRotated'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreate':
./gd.go:455: undefined reference to `gdImageCreate'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateFromGif':
./gd.go:465: undefined reference to `gdImageCreateFromGif'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateFromJpeg':
./gd.go:475: undefined reference to `gdImageCreateFromJpeg'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateFromPng':
./gd.go:485: undefined reference to `gdImageCreateFromPng'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateFromWBMP':
./gd.go:495: undefined reference to `gdImageCreateFromWBMP'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateFromXbm':
./gd.go:505: undefined reference to `gdImageCreateFromXbm'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateFromXpm':
./gd.go:515: undefined reference to `gdImageCreateFromXpm'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCreateTrueColor':
./gd.go:526: undefined reference to `gdImageCreateTrueColor'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageFilledArc':
./gd.go:593: undefined reference to `gdImageFilledArc'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageGetPixel':
./gd.go:648: undefined reference to `gdImageGetPixel'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSquareToCircle':
./gd.go:867: undefined reference to `gdImageSquareToCircle'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageStringFT':
./gd.go:901: undefined reference to `gdImageStringFT'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdFontCacheShutdown':
./gd.go:71: undefined reference to `gdFontCacheShutdown'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageAABlend':
./gd.go:125: undefined reference to `gdImageAABlend'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageAlphaBlending':
./gd.go:136: undefined reference to `gdImageAlphaBlending'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageChar':
./gd.go:167: undefined reference to `gdImageChar'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageCharUp':
./gd.go:181: undefined reference to `gdImageCharUp'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorDeallocate':
./gd.go:267: undefined reference to `gdImageColorDeallocate'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageColorTransparent':
./gd.go:338: undefined reference to `gdImageColorTransparent'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageDashedLine':
./gd.go:541: undefined reference to `gdImageDashedLine'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageDestroy':
./gd.go:550: undefined reference to `gdImageDestroy'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageFill':
./gd.go:563: undefined reference to `gdImageFill'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageFillToBorder':
./gd.go:576: undefined reference to `gdImageFillToBorder'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageFilledEllipse':
./gd.go:608: undefined reference to `gdImageFilledEllipse'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageFilledPolygon':
./gd.go:620: undefined reference to `gdImageFilledPolygon'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageFilledRectangle':
./gd.go:635: undefined reference to `gdImageFilledRectangle'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageGif':
./gd.go:658: undefined reference to `gdImageGif'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageInterlace':
./gd.go:669: undefined reference to `gdImageInterlace'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageJpeg':
./gd.go:681: undefined reference to `gdImageJpeg'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageLine':
./gd.go:696: undefined reference to `gdImageLine'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageOpenPolygon':
./gd.go:708: undefined reference to `gdImageOpenPolygon'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImagePaletteCopy':
./gd.go:718: undefined reference to `gdImagePaletteCopy'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImagePng':
./gd.go:728: undefined reference to `gdImagePng'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImagePolygon':
./gd.go:740: undefined reference to `gdImagePolygon'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageRectangle':
./gd.go:755: undefined reference to `gdImageRectangle'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSaveAlpha':
./gd.go:766: undefined reference to `gdImageSaveAlpha'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetAntiAliased':
./gd.go:777: undefined reference to `gdImageSetAntiAliased'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetAntiAliasedDontBlend':
./gd.go:788: undefined reference to `gdImageSetAntiAliasedDontBlend'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetBrush':
./gd.go:798: undefined reference to `gdImageSetBrush'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetPixel':
./gd.go:811: undefined reference to `gdImageSetPixel'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetStyle':
./gd.go:823: undefined reference to `gdImageSetStyle'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetThickness':
./gd.go:834: undefined reference to `gdImageSetThickness'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSetTile':
./gd.go:844: undefined reference to `gdImageSetTile'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageSharpen':
./gd.go:855: undefined reference to `gdImageSharpen'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageString':
./gd.go:882: undefined reference to `gdImageString'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageStringUp':
./gd.go:916: undefined reference to `gdImageStringUp'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageTrueColorToPalette':
./gd.go:927: undefined reference to `gdImageTrueColorToPalette'
/tmp/go-build529644233/_/tmp/go-gd/_obj/gd.cgo2.o: In function `_cgo_a69468c695dd_Cfunc_gdImageWBMP':
./gd.go:939: undefined reference to `gdImageWBMP'
collect2: ld returned 1 exit status
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.