From b8413f7bd4a8da3b2e68c2d58f0fc32ac299eccd Mon Sep 17 00:00:00 2001
From: vcaesar <vzvway@gmail.com>
Date: Wed, 27 Dec 2017 19:24:16 +0800
Subject: [PATCH] add tochar bitmap and gostring, update godoc and fmt code

---
 robotgo.go | 39 +++++++++++++++++++++++++++++++++------
 1 file changed, 33 insertions(+), 6 deletions(-)

diff --git a/robotgo.go b/robotgo.go
index 8071930..6919e0f 100644
--- a/robotgo.go
+++ b/robotgo.go
@@ -105,6 +105,11 @@ func Try(fun func(), handler func(interface{})) {
 	fun()
 }
 
+// GoString teans C.char to string
+func GoString(char *C.char) string {
+	return C.GoString(char)
+}
+
 /*
       _______.  ______ .______       _______  _______ .__   __.
     /       | /      ||   _  \     |   ____||   ____||  \ |  |
@@ -166,6 +171,7 @@ func GetPixelColor(x, y int) string {
 	// color := C.aGetPixelColor(x, y)
 	gcolor := C.GoString(color)
 	defer C.free(unsafe.Pointer(color))
+
 	return gcolor
 }
 
@@ -182,6 +188,7 @@ func SetXDisplayName(name string) string {
 	str := C.aSetXDisplayName(cname)
 	gstr := C.GoString(str)
 	defer C.free(unsafe.Pointer(cname))
+
 	return gstr
 }
 
@@ -190,6 +197,7 @@ func GetXDisplayName() string {
 	name := C.aGetXDisplayName()
 	gname := C.GoString(name)
 	defer C.free(unsafe.Pointer(name))
+
 	return gname
 }
 
@@ -435,6 +443,7 @@ func MouseClick(args ...interface{}) {
 		button = C.LEFT_BUTTON
 		double = false
 	})
+
 	C.aMouseClick(button, double)
 }
 
@@ -462,6 +471,7 @@ func Click(args ...interface{}) {
 		button = C.LEFT_BUTTON
 		double = false
 	})
+
 	C.aMouseClick(button, double)
 }
 
@@ -474,6 +484,7 @@ func MoveClick(x, y int, args ...interface{}) {
 // MouseToggle toggle the mouse
 func MouseToggle(args ...interface{}) {
 	var button C.MMMouseButton
+
 	Try(func() {
 		// button = args[1].(C.MMMouseButton)
 		if args[1].(string) == "left" {
@@ -489,6 +500,7 @@ func MouseToggle(args ...interface{}) {
 		// fmt.Println("err:::", e)
 		button = C.LEFT_BUTTON
 	})
+
 	down := C.CString(args[0].(string))
 	C.aMouseToggle(down, button)
 	defer C.free(unsafe.Pointer(down))
@@ -581,8 +593,8 @@ func KeyTap(args ...interface{}) {
 		defer C.free(unsafe.Pointer(amod))
 		defer C.free(unsafe.Pointer(amodt))
 	}
-	defer C.free(unsafe.Pointer(zkey))
 
+	defer C.free(unsafe.Pointer(zkey))
 }
 
 // KeyToggle toggle the keyboard
@@ -799,12 +811,14 @@ func PointInBounds(bitmap C.MMBitmapRef, x, y int) bool {
 func OpenBitmap(args ...interface{}) C.MMBitmapRef {
 	path := C.CString(args[0].(string))
 	var mtype C.uint16_t
+
 	Try(func() {
 		mtype = C.uint16_t(args[1].(int))
 	}, func(e interface{}) {
 		// fmt.Println("err:::", e)
 		mtype = 1
 	})
+
 	bit := C.bitmap_open(path, mtype)
 	defer C.free(unsafe.Pointer(path))
 	// fmt.Println("opening...", bit)
@@ -817,6 +831,7 @@ func BitmapStr(str string) C.MMBitmapRef {
 	cs := C.CString(str)
 	bit := C.bitmap_from_string(cs)
 	defer C.free(unsafe.Pointer(cs))
+
 	return bit
 }
 
@@ -847,15 +862,18 @@ func SaveBitmap(args ...interface{}) string {
 // 	// defer C.free(unsafe.Pointer(path))
 // }
 
-// TostringBitmap tostring bitmap to C.char
+// TostringBitmap tostring bitmap to string
 func TostringBitmap(bit C.MMBitmapRef) string {
-	// str_bit := C.aTostringBitmap(bit)
 	strBit := C.tostring_Bitmap(bit)
-	// fmt.Println("...", str_bit)
-	// return str_bit
 	return C.GoString(strBit)
 }
 
+// TocharBitmap tostring bitmap to C.char
+func TocharBitmap(bit C.MMBitmapRef) *C.char {
+	strBit := C.tostring_Bitmap(bit)
+	return strBit
+}
+
 // ToBitmap trans C.MMBitmapRef to Bitmap
 func ToBitmap(bit C.MMBitmapRef) Bitmap {
 	bitmap := Bitmap{
@@ -866,6 +884,7 @@ func ToBitmap(bit C.MMBitmapRef) Bitmap {
 		BitsPerPixel:  uint8(bit.bitsPerPixel),
 		BytesPerPixel: uint8(bit.bytesPerPixel),
 	}
+
 	return bitmap
 }
 
@@ -895,7 +914,8 @@ func Convert(args ...interface{}) {
 		// fmt.Println("err:::", e)
 		mtype = 1
 	})
-	//C.CString()
+
+	// C.CString()
 	opath := args[0].(string)
 	spath := args[1].(string)
 	bitmap := OpenBitmap(opath)
@@ -1009,6 +1029,7 @@ func AddEvent(aeve string) int {
 	// fmt.Println("event@@", eve)
 	geve := int(eve)
 	defer C.free(unsafe.Pointer(cs))
+
 	return geve
 }
 
@@ -1024,6 +1045,7 @@ func LEvent(aeve string) int {
 	// fmt.Println("event@@", eve)
 	geve := int(eve)
 	defer C.free(unsafe.Pointer(cs))
+
 	return geve
 }
 
@@ -1055,6 +1077,7 @@ func ShowAlert(title, msg string, args ...string) int {
 		defaultButton = "Ok"
 		cancelButton = "Cancel"
 	})
+
 	atitle := C.CString(title)
 	amsg := C.CString(msg)
 	adefaultButton := C.CString(defaultButton)
@@ -1062,10 +1085,12 @@ func ShowAlert(title, msg string, args ...string) int {
 
 	cbool := C.aShowAlert(atitle, amsg, adefaultButton, acancelButton)
 	ibool := int(cbool)
+
 	defer C.free(unsafe.Pointer(atitle))
 	defer C.free(unsafe.Pointer(amsg))
 	defer C.free(unsafe.Pointer(adefaultButton))
 	defer C.free(unsafe.Pointer(acancelButton))
+
 	return ibool
 }
 
@@ -1191,6 +1216,7 @@ func FindName(pid int32) (string, error) {
 	if err != nil {
 		return "", err
 	}
+
 	names, err := nps.Name()
 	if err != nil {
 		return "", err
@@ -1222,6 +1248,7 @@ func FindNames() ([]string, error) {
 		return strArr, err
 
 	}
+
 	return strArr, err
 }