

DeviantArt Muro - Setsuna
http://news.deviantart.com/article/125373/

======
ugh
Make sure to toggle the Basic/Pro switch. And I was told that layers would be
impossible with Canvas … (They stack several Canvas elements on top of each
other. Fire up you favorite DOM inspector or turn off CSS if you want a
demonstration of that.)

~~~
jshen
I don't understand why anyone would think it would be impossible. I also don't
see why you'd need to stack canvas elements on top of each other.

~~~
dandelany
Because canvas doesn't store layers, it is essentially just a bitmap.

If I drew a black box on a canvas, and then a blue circle on top of that black
box, the canvas element does not keep the part of the box under the circle in
memory; instead, it replaces the old "lower layer" bitmap data with the new
"higher layer" bitmap data. So there is no built-in way of deleting that
circle and having the canvas revert to the box data that was drawn first
underneath the circle, which is essentially what layers are.

If you stack canvas elements on top of each other, one canvas per layer, then
this restriction no longer exists - One canvas can store the box and the other
can store the circle. That way, if I delete some of the circle, the canvas
doesn't have to remember what was underneath it before, it just has to be
transparent to let the next-lowest canvas bitmap shine through.

~~~
jshen
I've done canvas coding before. I made a UI for an audio player entirely in
canvas. Canvas allows you to manipulate an array of pixels. You could keep a
separate array for each layer, maybe you have to coordinate between them, but
it seems entirely possible. You could generate an output array as a matrix
operation on the arrays of layers or do some other kind of merging logic? The
only difference I can see between canvas and a modern gui (other than speed)
is that someone else has already written these libraries for the gui so you
don't have to.

I still don't see why anyone would say it's impossible and I'm not sure why
I'm getting voted down for asking this technical question. If someone thinks
I'm wrong they should at least explain it as you did.

~~~
dandelany
I completely agree with you WRT downvoting... I'd much prefer a discussion
like this to a buried comment, regardless of the merit of the original
comment. Perhaps it was due to the perceived tone of your comment: "I don't
understand why anyone would think it would be impossible" ~= "Who would be
dumb enough to assume this isn't possible?" As for why anyone would claim the
task is impossible - not enough imagination! :) Although it's more likely that
they meant they thought it was impossible to achieve at a decent
speed/framerate, which is a pretty reasonable assumption at first glance.

Technically, I think you're right - you could implement a pseudolayering
system with only one canvas element. The limiting factor, however, is
redrawing speed. You have essentially two options - every time a layer moves,
you could redraw the entire canvas, which is conceptually easy but slow. Or
you could do some calculation to determine exactly which pixels need to be
redrawn - as you say, a matrix operation to determine a delta matrix. This may
be faster than redrawing the entire canvas, but it gets much slower as you
increase the number of layers. Speed may not seem like a huge issue here, but
imagine clicking a layer and dragging it around - this would require constant
(un-hardware-accelerated) canvas redrawing at ~10-30fps, which is probably
pretty difficult to achieve with any significantly-sized canvas.

The brilliant canvas-on-top-of-canvas implementation avoids this problem
altogether. While the layer being dragged still has to be redrawn, the process
of doing so is made a lot easier because you don't have to shuffle around the
data in the other layers in the process, you just have to worry about one
layer at a time.

~~~
jshen
"I don't understand why anyone would think it would be impossible" ~= "Who
would be dumb enough to assume this isn't possible?"

If that's how they feel about themselves they shouldn't take it out on me ;)

Back on topic, can there be multiple objects on a layer? If so what happens
when you drag one on top of another object on the same layer? I haven't used
the app, so this may be a dumb question. These are the sorts of things that
gave me headaches when I made my audio player UI, and it seems to lead to the
same sort of data shuffling that you'd have with multiple matrices.

------
phoboslab
I'm continuously impressed by the technical innovations of deviantArt. Some
years ago they implemented a feature, where if you drag an image anywhere, a
HUD pops up and you can drop this image into your favorites or collections.
They have tons of neat (in terms of usability) stuff like that.

They also launch a new "version" of their site almost every year. Not just
making it different, but better. For a 10 year old site with with 14 million
members, that's very impressive. They haven't stopped innovating like so many
of the larger sites do at some point.

~~~
zray
They've also innovated commercially, this application is a case in point.

Online drawing apps have been around for years yet none have thought to
integrate paid content like dA have in the form of 'brush packs'.

------
netghost
I just noticed that they support wacom tablets. That's huge. Personally any
illustration/painting I do really benefits from pressure sensitivity.

Has anyone tried this with a pressure sensitive tablet yet? Any thoughts?

~~~
robobenjie
Just did. The brushes are fully pressure sensitive. Works nicely. My only
problem is that the website isn't fast enough to catch quick strokes. (just
misses them)

------
NinetyNine
It seems to slow down hugely after doing anything non-trivial (Chrome 5). It's
not a hugely new idea, Oekaki boards have been around forever. Their execution
is impressive though, throwing in a 'pro' version for free is something that
throws a lot of people off, and paying for brushes is the real pay wall. I'd
bet that combination builds a lot more fandom than the traditional approach.

As far as the registration wall, I don't think the application itself is the
biggest part of this product. The integration with dA and the community in
general is what makes this worthwhile. Best of luck to them.

------
mishmash
Works flawlessly in Safari 5. What an incredible app.

------
0x5a177
I was looking for a painting app like this just yesterday. Some of the brushes
are very similar to this HTML5 drawing app:
<http://mrdoob.com/projects/harmony/> I wonder if they are related?

~~~
kemayo
The sketchy one is superficially quite similar. Once I started drawing with it
you can see it's using some different line algorithms though -- the sketching
plays off of previously drawn lines (and earlier segments of the current line)
instead of just the current draw-point.

------
Setsuna
It is also being used in forums <http://forum.deviantart.com/devart/drawplz/>
[sorta NSFW]

------
davidedicillo
Perfect drawing app for my iPad. This is a great example of the power of HTML
and how Flash is getting less and less necessary for this kind of
applications.

------
joshu
Man. I invested in a web-based photoshop-alike a few years ago. I guess they
were (a bit too far) ahead of their time.

~~~
Setsuna
What are your opinions on Muro?

~~~
joshu
i like it.

my advice to the company i invested in was make it integrate-able in a similar
manner.

------
varaon
For those reading the comments before the article, this is an HTML 5 drawing
app.

------
est
I accidentally pressed Ctrl+A in Chrome on Win7 and can do nothing about it.

~~~
mambodog
clicking Submit>Cancel got me out of that.. not really a solution though.

------
geuis
I was super excited about this until I tapped "Draw Now". And then I was taken
to an account sign-up screen. And then I folded my ipad case, and put it away.
I guess you need an account to save your drawings, but since I just want to
check it out and not go through the signup process, it was a wall to me.

~~~
hartror
It is pretty much standard to have a deviant art account as a young up and
coming designer/artist. I have yet to interview one that doesn't have one in
fact.

Now if I only had some artistic ability.

~~~
prs
Yet it is still misleading a visitor to that site as "Draw Now" actually means
"Sign Up Now" in case you do not have a DeviantART account.

------
akirk
Too bad that you can't try out all the brushes as a new user :(

------
sliverstorm
Great! Now if only I could draw...

