{"action":"created","comment":{"url":"https://api.github.com/repos/gosexy/canvas/pulls/comments/33255442","id":33255442,"diff_hunk":"@@ -0,0 +1,236 @@\n+/* text.go contains functions for text annotation\n+TODO:\n+getters and setters for\n+- Stretch (redefine C type)\n+- Style (redefine C type)\n+- Resolution (two doubles)\n+- Decoration (redefine C type)\n+- Encoding (string)\n+-  DrawSetTextInterlineSpacing(DrawingWand *,const double),\n+-  DrawSetTextInterwordSpacing(DrawingWand *,const double),\n+-  DrawSetGravity(DrawingWand *wand,const GravityType gravity)\n+*/\n+\n+package canvas\n+\n+/*\n+#cgo CFLAGS: -fopenmp -I./_include\n+#cgo LDFLAGS: -lMagickWand -lMagickCore\n+\n+#include <wand/magick_wand.h>\n+*/\n+import \"C\"\n+\n+import (\n+\t\"unsafe\"\n+)\n+\n+type Alignment uint\n+\n+const (\n+ \tUndefinedAlign Alignment\t= Alignment(C.UndefinedAlign)\n+\tLeftAlign\t\t\t\t\t= Alignment(C.LeftAlign)\n+\tCenterAlign\t\t\t\t\t= Alignment(C.CenterAlign)\n+\tRightAlign\t\t\t\t\t= Alignment(C.RightAlign)\n+)\n+\n+// structure containing all text properties for an annotation\n+// except the colors that are defined by FillColor and StrokeColor\n+type TextProperties struct {\n+\tFont\t\tstring\n+\tFamily\t\tstring\n+\tSize\t\tfloat64\n+\t// Stretch\t\tC.StretchType\n+\tWeight\t\tuint\n+\t// Style\t\tC.StyleType\n+\t// Resolution  [2]C.double\n+\tAlignment\tAlignment\n+\tAntialias\tbool\n+\t// Decoration\tC.DecorationType\n+\t// Encoding\tstring\n+\tKerning\t\tfloat64\n+\t// Interline\tfloat64\n+\t// Interword\tfloat64\n+\tUnderColor\t*C.PixelWand\n+}\n+\n+// Returns a TextProperties structure.\n+// Parameters:\n+//   read_default: if false, returns an empty structure.\n+//\t\t\t\t   if true, returns a structure set with current canvas settings\n+func (self *Canvas) NewTextProperties(read_default bool) *TextProperties {\n+\tif read_default == true {\n+\t\tcfont := C.DrawGetFont(self.drawing)\n+\t\tdefer C.free(unsafe.Pointer(cfont))\n+\t\tcfamily := C.DrawGetFontFamily(self.drawing)\n+\t\tdefer C.free(unsafe.Pointer(cfamily))\n+\t\tcsize := C.DrawGetFontSize(self.drawing)\n+\t\tcweight := C.DrawGetFontWeight(self.drawing)\n+\t\tcalignment := C.DrawGetTextAlignment(self.drawing)\n+\t\tcantialias := C.DrawGetTextAntialias(self.drawing)\n+\t\tckerning := C.DrawGetTextKerning(self.drawing)\n+\t\tantialias := false\n+\t\tif cantialias == C.MagickTrue {\n+\t\t\tantialias = true\n+\t\t}\n+\n+\t\tunderColor :=C.NewPixelWand()\n+\t\tC.DrawGetTextUnderColor(self.drawing, underColor)\n+\t\treturn &TextProperties{\n+\t\t\tFont: C.GoString(cfont),\n+\t\t\tFamily: C.GoString(cfamily),\n+\t\t\tSize: float64(csize),\n+\t\t\tWeight: uint(cweight),\n+\t\t\tAlignment: Alignment(calignment),\n+\t\t\tAntialias: antialias,\n+\t\t\tKerning: float64(ckerning),\n+\t\t\tUnderColor: underColor,\n+\t\t}\n+\t}\n+\treturn &TextProperties{\n+\t\tUnderColor: C.NewPixelWand(),\n+\t}\n+}\n+\n+// Sets canvas' default TextProperties\n+func (self *Canvas) SetTextProperties(def *TextProperties) {\n+\tif def != nil {\n+\t\tself.text = def\n+\t\tself.SetFontFamily(def.Family)\n+\t\tself.SetFont(def.Font, def.Size)\n+\t\tself.SetFontWeight(def.Weight)\n+\t\tself.SetTextAlignment(def.Alignment)\n+\t\tself.SetTextAntialias(def.Antialias)\n+\t\tself.SetTextKerning(def.Kerning)\n+\t}\n+}\n+\n+// Gets a copy of canvas' current TextProperties\n+func (self *Canvas) TextProperties() *TextProperties {\n+\tif self.text == nil {\n+\t\treturn nil\n+\t}\n+\tcpy := *self.text\n+\treturn &cpy\n+}\n+\n+// Sets canvas' default font name\n+func (self *Canvas) SetFontName(font string) {\n+\tself.text.Font = font\n+\tcfont := C.CString(font)\n+\tdefer C.free(unsafe.Pointer(cfont))\n+\tC.DrawSetFont(self.drawing, cfont)\n+}\n+\n+// Returns canvas' current font name\n+func (self *Canvas) FontName() string {\n+\treturn self.text.Font\n+}\n+\n+// Sets canvas' default font family\n+func (self *Canvas) SetFontFamily(family string) {\n+\tself.text.Family = family\n+\tcfamily := C.CString(family)\n+\tdefer C.free(unsafe.Pointer(cfamily))\n+\tC.DrawSetFontFamily(self.drawing, cfamily)\t\n+}\n+\n+// Returns canvas' current font family\n+func (self *Canvas) FontFamily() string {\n+\treturn self.text.Family\n+}\n+\n+// Sets canvas' default font size\n+func (self *Canvas) SetFontSize(size float64) {\n+\tself.text.Size = size\n+\tC.DrawSetFontSize(self.drawing, C.double(size))\t\t\n+}\n+\n+// Returns canvas' current font size\n+func (self *Canvas) FontSize() float64 {\n+\treturn self.text.Size\n+}\n+\n+// Sets canvas' default font weight\n+func (self *Canvas) SetFontWeight(weight uint) {\n+\tself.text.Weight = weight\n+\tC.DrawSetFontWeight(self.drawing, C.size_t(weight))\t\t\n+}\n+\n+// Returns canvas' current font weight\n+func (self *Canvas) FontWeight() uint {\n+\treturn self.text.Weight\n+}\n+\n+\n+// Sets canvas' font name and size.\n+// If font is 0-length, the current font family is not changed\n+// If size is <= 0, the current font size is not changed\n+func (self *Canvas) SetFont(font string, size float64) {\n+\tif len(font) > 0 {\n+\t\tself.SetFontName(font)\n+\t}\n+\tif size > 0 {\n+\t\tself.SetFontSize(size)\n+\t}\n+}\n+\n+// Returns canvas' current font name and size\n+func (self *Canvas) Font() (string, float64) {\n+\treturn self.text.Font, self.text.Size\n+}\n+\n+// Sets canvas' default text alignment. Available values are:\n+// UndefinedAlign (?), LeftAlign, CenterAlign, RightAlign\n+func (self *Canvas) SetTextAlignment(a Alignment) {\n+\tself.text.Alignment = a\n+\tC.DrawSetTextAlignment(self.drawing, C.AlignType(a))\n+}\n+\n+// Returns the canvas' current text aligment\n+func (self *Canvas) TextAlignment() Alignment {\n+\treturn self.text.Alignment\n+}\n+\n+// Sets canvas' default text antialiasing option.\n+func (self *Canvas) SetTextAntialias(b bool) {\n+\tself.text.Antialias = b\n+\tC.DrawSetTextAntialias(self.drawing, magickBoolean(b))\n+}\n+\n+// Returns the canvas' current text aligment\n+func (self *Canvas) TextAntialias() bool {\n+\treturn self.text.Antialias\n+}\n+\n+// Sets canvas' default text antialiasing option.\n+func (self *Canvas) SetTextKerning(k float64) {\n+\tself.text.Kerning = k\n+\tC.DrawSetTextKerning(self.drawing, C.double(k))\n+}\n+\n+// Returns the canvas' current text aligment\n+func (self *Canvas) TextKerning() float64 {\n+\treturn self.text.Kerning\n+}\n+\n+// Draws a string at the specified coordinates and using the current canvas\n+// Alignment.\n+func (self *Canvas) Annotate(text string, x, y float64) {\n+\tc_text := C.CString(text)\n+\tdefer C.free(unsafe.Pointer(c_text))\n+\tC.DrawAnnotation(self.drawing, C.double(x), C.double(y), (*C.uchar)(unsafe.Pointer(c_text)))\n+}\n+\n+// Draws a string at the specified coordinates and using the specified Text Properties\n+// Does not modify the canvas' default TextProperties\n+func (self *Canvas) AnnotateWithProperties(text string, x, y float64, prop *TextProperties) {\n+\tif prop != nil {","path":"text.go","position":228,"original_position":228,"commit_id":"a5ba4b6f03f15dfbd99c577d832c4f241b95ffe5","original_commit_id":"a5ba4b6f03f15dfbd99c577d832c4f241b95ffe5","user":{"login":"phacops","id":336345,"avatar_url":"https://avatars.githubusercontent.com/u/336345?v=3","gravatar_id":"","url":"https://api.github.com/users/phacops","html_url":"https://github.com/phacops","followers_url":"https://api.github.com/users/phacops/followers","following_url":"https://api.github.com/users/phacops/following{/other_user}","gists_url":"https://api.github.com/users/phacops/gists{/gist_id}","starred_url":"https://api.github.com/users/phacops/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phacops/subscriptions","organizations_url":"https://api.github.com/users/phacops/orgs","repos_url":"https://api.github.com/users/phacops/repos","events_url":"https://api.github.com/users/phacops/events{/privacy}","received_events_url":"https://api.github.com/users/phacops/received_events","type":"User","site_admin":false},"body":"You can specialize this function, if we want to use the default text properties, we'll use annotate. We don't need a if/else to `Annotate` if `prop` is `nil`. I would just save the current properties, set the temporary ones (or reset all properties if `nil`) and set the old one back.","created_at":"2015-06-25T13:42:08Z","updated_at":"2015-06-25T13:42:08Z","html_url":"https://github.com/gosexy/canvas/pull/30#discussion_r33255442","pull_request_url":"https://api.github.com/repos/gosexy/canvas/pulls/30","_links":{"self":{"href":"https://api.github.com/repos/gosexy/canvas/pulls/comments/33255442"},"html":{"href":"https://github.com/gosexy/canvas/pull/30#discussion_r33255442"},"pull_request":{"href":"https://api.github.com/repos/gosexy/canvas/pulls/30"}}},"pull_request":{"url":"https://api.github.com/repos/gosexy/canvas/pulls/30","id":38316986,"html_url":"https://github.com/gosexy/canvas/pull/30","diff_url":"https://github.com/gosexy/canvas/pull/30.diff","patch_url":"https://github.com/gosexy/canvas/pull/30.patch","issue_url":"https://api.github.com/repos/gosexy/canvas/issues/30","number":30,"state":"open","locked":false,"title":"Text annotate + canvas.Fit()","user":{"login":"gotsunami","id":7566806,"avatar_url":"https://avatars.githubusercontent.com/u/7566806?v=3","gravatar_id":"","url":"https://api.github.com/users/gotsunami","html_url":"https://github.com/gotsunami","followers_url":"https://api.github.com/users/gotsunami/followers","following_url":"https://api.github.com/users/gotsunami/following{/other_user}","gists_url":"https://api.github.com/users/gotsunami/gists{/gist_id}","starred_url":"https://api.github.com/users/gotsunami/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gotsunami/subscriptions","organizations_url":"https://api.github.com/users/gotsunami/orgs","repos_url":"https://api.github.com/users/gotsunami/repos","events_url":"https://api.github.com/users/gotsunami/events{/privacy}","received_events_url":"https://api.github.com/users/gotsunami/received_events","type":"User","site_admin":false},"body":"Hello gosexy/canvas community!\r\n\r\nThis a pull request for a work I did quite a long time ago but that might be useful.\r\nIt mainly offers a function Annotate() to write text over an image (or create a text image).\r\nIt also makes a difference between Thumbnail() and Fit()\r\n\r\nFor contribution, it can be completed by two means:\r\n- writing some UT\r\n- adding more text functions (see comments in text.go)\r\n\r\nDo not hesitate to comment or criticize, I'd be happy to make this code better!\r\n\r\nCheers,\r\nAnthony\r\n","created_at":"2015-06-23T09:30:16Z","updated_at":"2015-06-25T13:42:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"475a22c36aa265e26ab3526471eb6193a3f56825","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/gosexy/canvas/pulls/30/commits","review_comments_url":"https://api.github.com/repos/gosexy/canvas/pulls/30/comments","review_comment_url":"https://api.github.com/repos/gosexy/canvas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gosexy/canvas/issues/30/comments","statuses_url":"https://api.github.com/repos/gosexy/canvas/statuses/a5ba4b6f03f15dfbd99c577d832c4f241b95ffe5","head":{"label":"gotsunami:text-annotate","ref":"text-annotate","sha":"a5ba4b6f03f15dfbd99c577d832c4f241b95ffe5","user":{"login":"gotsunami","id":7566806,"avatar_url":"https://avatars.githubusercontent.com/u/7566806?v=3","gravatar_id":"","url":"https://api.github.com/users/gotsunami","html_url":"https://github.com/gotsunami","followers_url":"https://api.github.com/users/gotsunami/followers","following_url":"https://api.github.com/users/gotsunami/following{/other_user}","gists_url":"https://api.github.com/users/gotsunami/gists{/gist_id}","starred_url":"https://api.github.com/users/gotsunami/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gotsunami/subscriptions","organizations_url":"https://api.github.com/users/gotsunami/orgs","repos_url":"https://api.github.com/users/gotsunami/repos","events_url":"https://api.github.com/users/gotsunami/events{/privacy}","received_events_url":"https://api.github.com/users/gotsunami/received_events","type":"User","site_admin":false},"repo":{"id":37904642,"name":"canvas","full_name":"gotsunami/canvas","owner":{"login":"gotsunami","id":7566806,"avatar_url":"https://avatars.githubusercontent.com/u/7566806?v=3","gravatar_id":"","url":"https://api.github.com/users/gotsunami","html_url":"https://github.com/gotsunami","followers_url":"https://api.github.com/users/gotsunami/followers","following_url":"https://api.github.com/users/gotsunami/following{/other_user}","gists_url":"https://api.github.com/users/gotsunami/gists{/gist_id}","starred_url":"https://api.github.com/users/gotsunami/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gotsunami/subscriptions","organizations_url":"https://api.github.com/users/gotsunami/orgs","repos_url":"https://api.github.com/users/gotsunami/repos","events_url":"https://api.github.com/users/gotsunami/events{/privacy}","received_events_url":"https://api.github.com/users/gotsunami/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gotsunami/canvas","description":"Image manipulation library based on ImageMagick's MagickWand, for Go.","fork":true,"url":"https://api.github.com/repos/gotsunami/canvas","forks_url":"https://api.github.com/repos/gotsunami/canvas/forks","keys_url":"https://api.github.com/repos/gotsunami/canvas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gotsunami/canvas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gotsunami/canvas/teams","hooks_url":"https://api.github.com/repos/gotsunami/canvas/hooks","issue_events_url":"https://api.github.com/repos/gotsunami/canvas/issues/events{/number}","events_url":"https://api.github.com/repos/gotsunami/canvas/events","assignees_url":"https://api.github.com/repos/gotsunami/canvas/assignees{/user}","branches_url":"https://api.github.com/repos/gotsunami/canvas/branches{/branch}","tags_url":"https://api.github.com/repos/gotsunami/canvas/tags","blobs_url":"https://api.github.com/repos/gotsunami/canvas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gotsunami/canvas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gotsunami/canvas/git/refs{/sha}","trees_url":"https://api.github.com/repos/gotsunami/canvas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gotsunami/canvas/statuses/{sha}","languages_url":"https://api.github.com/repos/gotsunami/canvas/languages","stargazers_url":"https://api.github.com/repos/gotsunami/canvas/stargazers","contributors_url":"https://api.github.com/repos/gotsunami/canvas/contributors","subscribers_url":"https://api.github.com/repos/gotsunami/canvas/subscribers","subscription_url":"https://api.github.com/repos/gotsunami/canvas/subscription","commits_url":"https://api.github.com/repos/gotsunami/canvas/commits{/sha}","git_commits_url":"https://api.github.com/repos/gotsunami/canvas/git/commits{/sha}","comments_url":"https://api.github.com/repos/gotsunami/canvas/comments{/number}","issue_comment_url":"https://api.github.com/repos/gotsunami/canvas/issues/comments{/number}","contents_url":"https://api.github.com/repos/gotsunami/canvas/contents/{+path}","compare_url":"https://api.github.com/repos/gotsunami/canvas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gotsunami/canvas/merges","archive_url":"https://api.github.com/repos/gotsunami/canvas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gotsunami/canvas/downloads","issues_url":"https://api.github.com/repos/gotsunami/canvas/issues{/number}","pulls_url":"https://api.github.com/repos/gotsunami/canvas/pulls{/number}","milestones_url":"https://api.github.com/repos/gotsunami/canvas/milestones{/number}","notifications_url":"https://api.github.com/repos/gotsunami/canvas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gotsunami/canvas/labels{/name}","releases_url":"https://api.github.com/repos/gotsunami/canvas/releases{/id}","created_at":"2015-06-23T07:44:31Z","updated_at":"2015-06-23T07:44:32Z","pushed_at":"2015-06-23T09:28:55Z","git_url":"git://github.com/gotsunami/canvas.git","ssh_url":"git@github.com:gotsunami/canvas.git","clone_url":"https://github.com/gotsunami/canvas.git","svn_url":"https://github.com/gotsunami/canvas","homepage":"","size":8459,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"gosexy:master","ref":"master","sha":"b1d5e6fd27936eb1177d8e731c8c5f19f7a79f1e","user":{"login":"gosexy","id":2037415,"avatar_url":"https://avatars.githubusercontent.com/u/2037415?v=3","gravatar_id":"","url":"https://api.github.com/users/gosexy","html_url":"https://github.com/gosexy","followers_url":"https://api.github.com/users/gosexy/followers","following_url":"https://api.github.com/users/gosexy/following{/other_user}","gists_url":"https://api.github.com/users/gosexy/gists{/gist_id}","starred_url":"https://api.github.com/users/gosexy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gosexy/subscriptions","organizations_url":"https://api.github.com/users/gosexy/orgs","repos_url":"https://api.github.com/users/gosexy/repos","events_url":"https://api.github.com/users/gosexy/events{/privacy}","received_events_url":"https://api.github.com/users/gosexy/received_events","type":"Organization","site_admin":false},"repo":{"id":4064870,"name":"canvas","full_name":"gosexy/canvas","owner":{"login":"gosexy","id":2037415,"avatar_url":"https://avatars.githubusercontent.com/u/2037415?v=3","gravatar_id":"","url":"https://api.github.com/users/gosexy","html_url":"https://github.com/gosexy","followers_url":"https://api.github.com/users/gosexy/followers","following_url":"https://api.github.com/users/gosexy/following{/other_user}","gists_url":"https://api.github.com/users/gosexy/gists{/gist_id}","starred_url":"https://api.github.com/users/gosexy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gosexy/subscriptions","organizations_url":"https://api.github.com/users/gosexy/orgs","repos_url":"https://api.github.com/users/gosexy/repos","events_url":"https://api.github.com/users/gosexy/events{/privacy}","received_events_url":"https://api.github.com/users/gosexy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/gosexy/canvas","description":"Image manipulation library based on ImageMagick's MagickWand, for Go.","fork":false,"url":"https://api.github.com/repos/gosexy/canvas","forks_url":"https://api.github.com/repos/gosexy/canvas/forks","keys_url":"https://api.github.com/repos/gosexy/canvas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gosexy/canvas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gosexy/canvas/teams","hooks_url":"https://api.github.com/repos/gosexy/canvas/hooks","issue_events_url":"https://api.github.com/repos/gosexy/canvas/issues/events{/number}","events_url":"https://api.github.com/repos/gosexy/canvas/events","assignees_url":"https://api.github.com/repos/gosexy/canvas/assignees{/user}","branches_url":"https://api.github.com/repos/gosexy/canvas/branches{/branch}","tags_url":"https://api.github.com/repos/gosexy/canvas/tags","blobs_url":"https://api.github.com/repos/gosexy/canvas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gosexy/canvas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gosexy/canvas/git/refs{/sha}","trees_url":"https://api.github.com/repos/gosexy/canvas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gosexy/canvas/statuses/{sha}","languages_url":"https://api.github.com/repos/gosexy/canvas/languages","stargazers_url":"https://api.github.com/repos/gosexy/canvas/stargazers","contributors_url":"https://api.github.com/repos/gosexy/canvas/contributors","subscribers_url":"https://api.github.com/repos/gosexy/canvas/subscribers","subscription_url":"https://api.github.com/repos/gosexy/canvas/subscription","commits_url":"https://api.github.com/repos/gosexy/canvas/commits{/sha}","git_commits_url":"https://api.github.com/repos/gosexy/canvas/git/commits{/sha}","comments_url":"https://api.github.com/repos/gosexy/canvas/comments{/number}","issue_comment_url":"https://api.github.com/repos/gosexy/canvas/issues/comments{/number}","contents_url":"https://api.github.com/repos/gosexy/canvas/contents/{+path}","compare_url":"https://api.github.com/repos/gosexy/canvas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gosexy/canvas/merges","archive_url":"https://api.github.com/repos/gosexy/canvas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gosexy/canvas/downloads","issues_url":"https://api.github.com/repos/gosexy/canvas/issues{/number}","pulls_url":"https://api.github.com/repos/gosexy/canvas/pulls{/number}","milestones_url":"https://api.github.com/repos/gosexy/canvas/milestones{/number}","notifications_url":"https://api.github.com/repos/gosexy/canvas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gosexy/canvas/labels{/name}","releases_url":"https://api.github.com/repos/gosexy/canvas/releases{/id}","created_at":"2012-04-18T14:56:38Z","updated_at":"2015-06-23T09:17:08Z","pushed_at":"2015-06-23T09:30:17Z","git_url":"git://github.com/gosexy/canvas.git","ssh_url":"git@github.com:gosexy/canvas.git","clone_url":"https://github.com/gosexy/canvas.git","svn_url":"https://github.com/gosexy/canvas","homepage":"","size":8707,"stargazers_count":102,"watchers_count":102,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19,"mirror_url":null,"open_issues_count":2,"forks":19,"open_issues":2,"watchers":102,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gosexy/canvas/pulls/30"},"html":{"href":"https://github.com/gosexy/canvas/pull/30"},"issue":{"href":"https://api.github.com/repos/gosexy/canvas/issues/30"},"comments":{"href":"https://api.github.com/repos/gosexy/canvas/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/gosexy/canvas/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/gosexy/canvas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gosexy/canvas/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/gosexy/canvas/statuses/a5ba4b6f03f15dfbd99c577d832c4f241b95ffe5"}}}}