作者:kikh
项目:gda
// Compute raster histogram
func (rb RasterBand) Histogram(
min, max float64,
buckets int,
includeOutOfRange, approxOK int,
progress ProgressFunc,
data interface{},
) ([]int, error) {
arg := &goGDALProgressFuncProxyArgs{
progress, data,
}
histogram := make([]int, buckets)
err := C.GDALGetRasterHistogram(
rb.cval,
C.double(min),
C.double(max),
C.int(buckets),
(*C.int)(unsafe.Pointer(&histogram[0])),
C.int(includeOutOfRange),
C.int(approxOK),
C.goGDALProgressFuncProxyB(),
unsafe.Pointer(arg),
)
if err != 0 {
return nil, error(err)
}
return histogram, nil
}
作者:shiray
项目:liblinea
func toFeatureNodes(X *mat64.Dense) []*C.struct_feature_node {
featureNodes := []*C.struct_feature_node{}
nRows, nCols := X.Dims()
for i := 0; i < nRows; i++ {
row := []C.struct_feature_node{}
for j := 0; j < nCols; j++ {
val := X.At(i, j)
if val != 0 {
row = append(row, C.struct_feature_node{
index: C.int(j + 1),
value: C.double(val),
})
}
}
row = append(row, C.struct_feature_node{
index: C.int(-1),
value: C.double(0),
})
featureNodes = append(featureNodes, &row[0])
}
return featureNodes
}
作者:ungeri
项目:go-cair
func NewPDFSurface(filename string, widthInPoints, heightInPoints float64, version PDFVersion) *Surface {
cs := C.CString(filename)
defer C.free(unsafe.Pointer(cs))
s := C.cairo_pdf_surface_create(cs, C.double(widthInPoints), C.double(heightInPoints))
C.cairo_pdf_surface_restrict_to_version(s, C.cairo_pdf_version_t(version))
return &Surface{surface: s, context: C.cairo_create(s)}
}
作者:ericsnowcurrentl
项目:qur-gop
func NewComplex(v complex128) (*Complex, error) {
ret := C.PyComplex_FromDoubles(C.double(real(v)), C.double(imag(v)))
if ret == nil {
return nil, exception()
}
return newComplex(ret), nil
}
作者:raich
项目:gotk
// CreateForRectangle is a wrapper around cairo_surface_create_for_rectangle().
func (v *Surface) CreateForRectangle(x, y, width, height float64) *Surface {
c := C.cairo_surface_create_for_rectangle(v.native(), C.double(x),
C.double(y), C.double(width), C.double(height))
s := wrapSurface(c)
runtime.SetFinalizer(s, (*Surface).destroy)
return s
}
作者:godee
项目:bim
func vipsWatermark(image *C.VipsImage, w Watermark) (*C.VipsImage, error) {
var out *C.VipsImage
// Defaults
noReplicate := 0
if w.NoReplicate {
noReplicate = 1
}
text := C.CString(w.Text)
font := C.CString(w.Font)
background := [3]C.double{C.double(w.Background.R), C.double(w.Background.G), C.double(w.Background.B)}
textOpts := vipsWatermarkTextOptions{text, font}
opts := vipsWatermarkOptions{C.int(w.Width), C.int(w.DPI), C.int(w.Margin), C.int(noReplicate), C.float(w.Opacity), background}
defer C.free(unsafe.Pointer(text))
defer C.free(unsafe.Pointer(font))
err := C.vips_watermark(image, &out, (*C.WatermarkTextOptions)(unsafe.Pointer(&textOpts)), (*C.WatermarkOptions)(unsafe.Pointer(&opts)))
if err != 0 {
return nil, catchVipsError()
}
return out, nil
}
作者:mishudar
项目:gosex
// Adaptively blurs the image by blurring less intensely near the edges and more intensely far from edges.
func (cv Canvas) AdaptiveBlur(sigma float64) bool {
status := C.MagickAdaptiveBlurImage(cv.wand, C.double(0), C.double(sigma))
if status == C.MagickFalse {
return false
}
return true
}
作者:faf
项目:go-sc
// setColorTemp changes the Xrandr colors to reflect the specified color temperature.
func setColorTemp(gammar, gammag, gammab float64) {
dpy := C.XOpenDisplay(nil)
screenCount := C.screenCount(dpy)
for screen := C.int(0); screen < screenCount; screen++ {
root := C.RootWindowMacro(dpy, screen)
res := C.XRRGetScreenResourcesCurrent(dpy, root)
for c := C.int(0); c < res.ncrtc; c++ {
crtcxid := C.crtcxid(res.crtcs, c)
size := C.XRRGetCrtcGammaSize(dpy, crtcxid)
crtc_gamma := C.XRRAllocGamma(size)
for i := C.int(0); i < size; i++ {
g := 65535.0 * float64(i) / float64(size)
C.ushortSet(C.ushortCast(unsafe.Pointer(crtc_gamma.red)), i, C.double(g*gammar))
C.ushortSet(C.ushortCast(unsafe.Pointer(crtc_gamma.green)), i, C.double(g*gammag))
C.ushortSet(C.ushortCast(unsafe.Pointer(crtc_gamma.blue)), i, C.double(g*gammab))
}
C.XRRSetCrtcGamma(dpy, crtcxid, crtc_gamma)
C.XFree(unsafe.Pointer(crtc_gamma))
}
C.XFree(unsafe.Pointer(res))
}
C.XCloseDisplay(dpy)
}
作者:godee
项目:wellingto
// make is needed to create types for use by test
func makevalue(v interface{}) (UnionSassValue, error) {
f := reflect.ValueOf(v)
err := error(nil)
switch f.Kind() {
default:
return C.sass_make_null(), err
case reflect.Bool:
return C.sass_make_boolean(C.bool(v.(bool))), err
case reflect.String:
return C.sass_make_string(C.CString(v.(string))), err
case reflect.Struct: //only SassNumber and color.RGBA are supported
if reflect.TypeOf(v).String() == "context.SassNumber" {
var sn = v.(SassNumber)
return C.sass_make_number(C.double(sn.Value), C.CString(sn.Unit)), err
} else if reflect.TypeOf(v).String() == "color.RGBA" {
var sc = v.(color.RGBA)
return C.sass_make_color(C.double(sc.R), C.double(sc.G), C.double(sc.B), C.double(sc.A)), err
} else {
err = errors.New(fmt.Sprintf("The struct type %s is unsupported for marshalling", reflect.TypeOf(v).String()))
return C.sass_make_null(), err
}
case reflect.Slice:
// Initialize the list
l := C.sass_make_list(C.size_t(f.Len()), C.SASS_COMMA)
for i := 0; i < f.Len(); i++ {
t, er := makevalue(f.Index(i).Interface())
if err == nil && er != nil {
err = er
}
C.sass_list_set_value(l, C.size_t(i), t)
}
return l, err
}
}
作者:pebb
项目:nova
// Compute the apparent place of an object.
func (p *Body) App(t Time) BodyData {
t.update()
data := BodyData{}
var ra, dec, dis C.double
switch p.class {
case clPLANET:
if err := C.app_planet(C.double(t.jd_tt), &p.object, C.short(Accuracy), &ra, &dec, &dis); err != 0 {
log.Fatalf("Error %d from app_planet (%s)\n", int(err), p.name)
}
data.Dis = float64(dis)
case clSTAR:
if err := C.app_star(C.double(t.jd_tt), &p.cat_entry, C.short(Accuracy), &ra, &dec); err != 0 {
log.Fatalf("Error %d from app_star (%s)\n", int(err), p.name)
}
data.Dis = math.NaN()
}
data.RA = float64(ra)
data.Dec = float64(dec)
var elon, elat C.double
C.equ2ecl(C.double(t.jd_tt), 0, C.short(Accuracy), ra, dec, &elon, &elat)
data.ELon = float64(elon)
data.ELat = float64(elat)
return data
}
作者:ssr
项目:gosqlite
func (p QueryParameter) Bind(s *Statement, value interface{}) (e os.Error) {
var rv Errno
switch v := value.(type) {
case nil:
rv = Errno(C.sqlite3_bind_null(s.cptr, C.int(p)))
case int:
rv = Errno(C.sqlite3_bind_int(s.cptr, C.int(p), C.int(v)))
case string:
rv = Errno(C.gosqlite3_bind_text(s.cptr, C.int(p), C.CString(v), C.int(len(v))))
case int64:
rv = Errno(C.sqlite3_bind_int64(s.cptr, C.int(p), C.sqlite3_int64(v)))
case float32:
rv = Errno(C.sqlite3_bind_double(s.cptr, C.int(p), C.double(v)))
case float64:
rv = Errno(C.sqlite3_bind_double(s.cptr, C.int(p), C.double(v)))
default:
buffer := new(bytes.Buffer)
encoder := gob.NewEncoder(buffer)
if encoder.Encode(value) != nil {
rv = ENCODER
} else {
rawbuffer := string(buffer.Bytes())
rv = Errno(C.gosqlite3_bind_blob(s.cptr, C.int(p), unsafe.Pointer(C.CString(rawbuffer)), C.int(len(rawbuffer))))
}
}
if rv != OK {
e = rv
}
return
}
作者:postfi
项目:gsl-
func WaveFGArray(lMin float64, kmax int32, eta float64, x float64, fcArray []float64, gcArray []float64, fExponent []float64, gExponent []float64) int32 {
_slice_header_4 := (*reflect.SliceHeader)(unsafe.Pointer(&fcArray))
_slice_header_5 := (*reflect.SliceHeader)(unsafe.Pointer(&gcArray))
_slice_header_6 := (*reflect.SliceHeader)(unsafe.Pointer(&fExponent))
_slice_header_7 := (*reflect.SliceHeader)(unsafe.Pointer(&gExponent))
return int32(C.gsl_sf_coulomb_wave_FG_array(C.double(lMin), C.int(kmax), C.double(eta), C.double(x), (*C.double)(unsafe.Pointer(_slice_header_4.Data)), (*C.double)(unsafe.Pointer(_slice_header_5.Data)), (*C.double)(unsafe.Pointer(_slice_header_6.Data)), (*C.double)(unsafe.Pointer(_slice_header_7.Data))))
}
作者:mrlaue
项目:pdfmake
func (t *PDFStreamTextObject) WriteAt(text string, props TypesettingProps, x float64, y float64) error {
var layout *C.PangoLayout
var font_description *C.PangoFontDescription
font_description = C.pango_font_description_new()
cfontname := C.CString(props.Fontname)
defer C.free(unsafe.Pointer(cfontname))
C.pango_font_description_set_family(font_description, cfontname)
C.pango_font_description_set_weight(font_description, C.PANGO_WEIGHT_NORMAL)
C.pango_font_description_set_absolute_size(font_description, C.double(props.Fontsize)*C.PANGO_SCALE)
layout = C.pango_cairo_create_layout(t.context)
C.pango_layout_set_font_description(layout, font_description)
width := props.PageWidth - props.LeftMargin - props.RightMargin
fmt.Printf("width is %f\n", width)
C.pango_layout_set_width(layout, C.int(width*C.PANGO_SCALE))
C.pango_layout_set_justify(layout, C.TRUE)
ctext := C.CString(text)
defer C.free(unsafe.Pointer(ctext))
C.pango_layout_set_text(layout, ctext, -1)
C.cairo_set_source_rgb(t.context, 0.0, 0.0, 0.0)
C.cairo_move_to(t.context, C.double(x), C.double(y))
skip := props.Baselineskip
nlines := int(C.pango_layout_get_line_count(layout))
for i := 0; i < nlines; i++ {
C.cairo_move_to(t.context, C.double(x), C.double(y+float64(i)*skip))
C.pango_cairo_show_layout_line(t.context, C.pango_layout_get_line(layout, C.int(i)))
}
C.g_object_unref(C.gpointer(layout))
C.pango_font_description_free(font_description)
return nil
}
作者:Zwobo
项目:Go-SD
func (s *Surface) Zoom(zoomX, zoomY float64, smooth bool) *Surface {
cSmooth := C.int(0)
if smooth {
cSmooth = C.int(1)
}
return wrap(C.zoomSurface(s.cSurface, C.double(zoomX), C.double(zoomY), cSmooth))
}
作者:sridi
项目:gosv
func toCParameter(param Parameters) *C.svm_parameter_t {
cParam := C.parameter_new()
// SVM type parameters
cParam.svm_type = param.SVMType.svmType
cParam.C = param.SVMType.cost
cParam.nu = param.SVMType.nu
cParam.p = param.SVMType.epsilon
// Kernel type parameters
cParam.kernel_type = param.Kernel.kernelType
cParam.gamma = param.Kernel.gamma
cParam.coef0 = param.Kernel.coef0
cParam.degree = param.Kernel.degree
cParam.cache_size = C.double(param.CacheSize)
cParam.eps = C.double(param.Epsilon)
if param.Shrinking {
cParam.shrinking = 1
}
if param.Probability {
cParam.probability = 1
}
return cParam
}
作者:qw
项目:abelana-gc
// Draws a bezier curve through a set of points on the image.
func (dw *DrawingWand) Bezier(coordinates []PointInfo) {
ccoordinates := [1 << 16]C.PointInfo{}
for k, v := range coordinates {
ccoordinates[k] = C.PointInfo{C.double(v.X), C.double(v.Y)}
}
C.DrawBezier(dw.dw, C.size_t(len(coordinates)), (*C.PointInfo)(&ccoordinates[0]))
}
作者:postfi
项目:ov
func (state HSWDisplayState) toC() C.ovrHSWDisplayState {
return C.ovrHSWDisplayState{
Displayed: ovrBool(state.Displayed),
StartTime: C.double(state.StartTime),
DismissibleTime: C.double(state.DismissibleTime),
}
}
作者:sjn197
项目:u
// ArcTo adds a circular arc to the current figure of the Path.
// You pass it the center of the arc, its radius in radians, the starting
// angle (couterclockwise) in radians, and the number of radians the
// arc should sweep (counterclockwise). A line segment is drawn from
// the current point to the start of the arc. The current point is set to
// the end of the arc.
func (p *Path) ArcTo(xCenter float64, yCenter float64, radius float64, startAngle float64, sweep float64, isNegative bool) {
C.uiDrawPathArcTo(p.p,
C.double(xCenter), C.double(yCenter),
C.double(radius),
C.double(startAngle), C.double(sweep),
frombool(isNegative))
}
作者:fawic
项目:go-mapnik-
// Render returns the map as an encoded image.
func (m *Map) Render(opts RenderOpts) ([]byte, error) {
scaleFactor := opts.ScaleFactor
if scaleFactor == 0.0 {
scaleFactor = 1.0
}
i := C.mapnik_map_render_to_image(m.m, C.double(opts.Scale), C.double(scaleFactor))
if i == nil {
return nil, m.lastError()
}
defer C.mapnik_image_free(i)
if opts.Format == "raw" {
size := 0
raw := C.mapnik_image_to_raw(i, (*C.size_t)(unsafe.Pointer(&size)))
return C.GoBytes(unsafe.Pointer(raw), C.int(size)), nil
}
var format *C.char
if opts.Format != "" {
format = C.CString(opts.Format)
} else {
format = C.CString("png256")
}
b := C.mapnik_image_to_blob(i, format)
if b == nil {
return nil, errors.New("mapnik: " + C.GoString(C.mapnik_image_last_error(i)))
}
C.free(unsafe.Pointer(format))
defer C.mapnik_image_blob_free(b)
return C.GoBytes(unsafe.Pointer(b.ptr), C.int(b.len)), nil
}
作者:sjn197
项目:u
// TODO
func (m *Matrix) Scale(xCenter float64, yCenter float64, x float64, y float64) {
cm := m.toC()
C.uiDrawMatrixScale(cm,
C.double(xCenter), C.double(yCenter),
C.double(x), C.double(y))
m.fromC(cm)
}