Skip to content

Commit ca5ffb6

Browse files
author
Pierre Massat
committed
Add basic support for caption and annotation
1 parent 841ed3e commit ca5ffb6

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

canvas.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,46 @@ func (self *Canvas) Open(filename string) error {
200200
return nil
201201
}
202202

203+
func (self *Canvas) SetOption(key, value string) error {
204+
ckey := C.CString(key)
205+
cvalue := C.CString(value)
206+
207+
defer C.free(unsafe.Pointer(ckey))
208+
defer C.free(unsafe.Pointer(cvalue))
209+
210+
if C.MagickSetOption(self.wand, ckey, cvalue) == C.MagickFalse {
211+
return fmt.Errorf(`Could not set option "%s" to "%s": %s`, ckey, cvalue, self.Error())
212+
}
213+
214+
return nil
215+
}
216+
217+
func (self *Canvas) SetCaption(content string) error {
218+
ccontent := C.CString("caption:" + content)
219+
defer C.free(unsafe.Pointer(ccontent))
220+
221+
if C.MagickReadImage(self.wand, ccontent) == C.MagickFalse {
222+
return fmt.Errorf(`Could not open image "%s": %s`, content, self.Error())
223+
}
224+
225+
C.MagickDrawImage(self.wand, self.drawing)
226+
227+
return nil
228+
}
229+
230+
func (self *Canvas) DrawAnnotation(content string, width, height uint) error {
231+
ccontent := C.CString("caption:" + content)
232+
defer C.free(unsafe.Pointer(ccontent))
233+
234+
C.DrawAnnotation(self.drawing, 20, 20, (*C.uchar)(unsafe.Pointer(ccontent)))
235+
236+
if C.MagickDrawImage(self.wand, self.drawing) == C.MagickFalse {
237+
return fmt.Errorf(`Could not draw annotation: %s`, self.Error())
238+
}
239+
240+
return nil
241+
}
242+
203243
// Reads an image or image sequence from a blob.
204244
func (self *Canvas) OpenBlob(blob []byte, length uint) error {
205245
status := C.MagickReadImageBlob(self.wand, unsafe.Pointer(&blob[0]), C.size_t(length))
@@ -894,6 +934,14 @@ func (self *Canvas) Crop(x int, y int, width uint, height uint) error {
894934
return nil
895935
}
896936

937+
func (self *Canvas) SetSize(width, height uint) error {
938+
if C.MagickSetSize(self.wand, C.size_t(width), C.size_t(height)) == C.MagickFalse {
939+
return fmt.Errorf("Could not set size: %s", self.Error())
940+
}
941+
942+
return nil
943+
}
944+
897945
func (self *Canvas) SetContrast(factor float64) error {
898946
factor = math.Max(-100, factor)
899947
factor = math.Min(100, factor)

0 commit comments

Comments
 (0)