{"id":242,"date":"2006-03-29T11:58:34","date_gmt":"2006-03-29T17:58:34","guid":{"rendered":"http:\/\/blog.codedread.com\/?p=242"},"modified":"2006-03-29T11:58:34","modified_gmt":"2006-03-29T17:58:34","slug":"opera-extends-canvas","status":"publish","type":"post","link":"https:\/\/www.codedread.com\/blog\/archives\/2006\/03\/29\/opera-extends-canvas\/","title":{"rendered":"Opera Extends Canvas"},"content":{"rendered":"<p>Via <a href=\"http:\/\/virtuelvis.com\/archives\/2006\/03\/webapp-blog\">Arve<\/a>, the <a href=\"http:\/\/my.opera.com\/WebApplications\/blog\/show.dml\/200788\">Opera Web Applications blog<\/a> talks of how the <a href=\"http:\/\/labs.opera.com\/\" title=\"Download Opera 9 TP2 at Opera Labs\">Opera 9 Browser<\/a> has made extensions to the canvas element specifically for authoring games for the browser.  <!--more--><\/p>\n<p><script type=\"text\/javascript\" src=\"http:\/\/www.codedread.com\/googleads.js\"><\/script><script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script><\/p>\n<p>The extensions allow authors to:<\/p>\n<ul>\n<li>get\/set pixel values<\/li>\n<li>perform collision\/hit detection<\/li>\n<li>optimize redraws of the canvas (via locking)<\/li>\n<\/ul>\n<p>The benefits of such functionality should be obvious:  it allows fine-grained control over the canvas contents and interactivity, something closer to what SVG developers have already:<\/p>\n<ul>\n<li>While SVG developers are rarely concerned about individual pixels, <a href=\"http:\/\/www.w3.org\/TR\/SVG11\/filters.html\">SVG filters<\/a> provide an ability to produce interesting effects similar to getting\/setting individual pixels (for instance, blurring or lighting an image).<\/li>\n<li>SVG developers can easily <a href=\"http:\/\/www.w3.org\/TR\/SVG11\/interact.html\">attach standard DOM event listeners<\/a> to any graphical objects to test for hit detection.  General collision detection could also be done via scripting the SVG DOM.<\/li>\n<li>SVG developers can control when the image is drawn by using <a href=\"http:\/\/www.w3.org\/TR\/SVG11\/struct.html#DOMInterfaces\">SVG DOM methods<\/a>: suspendRedraw(), unsuspendRedraw() and forceRedraw().<\/li>\n<\/ul>\n<p>Anyway, I'm not trying to downplay these advancements from Opera, I think it's all good.  Putting more graphical\/interactive power into the developers hands is a good thing, whether it's canvas or SVG.  Either way it nudges the web closer to a platform that can support gaming technologies.<\/p>\n<p>It's a pity these guys weren't also at the <a href=\"http:\/\/www.gdconf.com\/\" title=\"Game Developer's Conference\">GDC<\/a> last week to discuss these advancements and learn what game authors are looking for in the web browser space, but I suppose this is fairly minor news at the moment.  What will make this bigger news is if other browser vendors start supporting these extensions in some way.<\/p>\n<p>As the canvas experimentation continues, I feel it becomes more and more important for somebody to own it and publish a <a href=\"http:\/\/whatwg.org\/specs\/web-apps\/current-work\/\">standard<\/a> so that we don't get fractured camps like we did with JavaScript back in the first Web boom.  I'm all for innovation, and it's a potential way for Opera to gain some more marketshare, but at some point to make it ultimately useful it needs to be ubiquitous across all browsers.<\/p>\n<p><script type=\"text\/javascript\" src=\"http:\/\/www.codedread.com\/googleads.js\"><\/script><script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Via Arve, the Opera Web Applications blog talks of how the Opera 9 Browser has made extensions to the canvas element specifically for authoring games for the browser.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,20,41,43,25,46,11,28],"tags":[],"class_list":["post-242","post","type-post","status-publish","format-standard","hentry","category-games","category-gdc","category-opera","category-ria","category-software","category-svg","category-technology","category-web"],"_links":{"self":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/comments?post=242"}],"version-history":[{"count":0,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/242\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/media?parent=242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/categories?post=242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/tags?post=242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}