OpenCanvas clone?
18 years ago
I noticed that everyone uses a bad outdated version of openCanvas to do online art collaborations. And it tends to crash and eat people's work, doesn't work on Mac, is difficult to set up, etc. etc.
Would there be interest in a free new openCanvas-like program compatible with oC? I could possibly look into writing such a thing if I get time. I may get a Tablet PC in the future, so it'd be ideal to experiment with. Reverse engineering the oC protocol in order to make it compatible would be of top priority.
Would there be interest in a free new openCanvas-like program compatible with oC? I could possibly look into writing such a thing if I get time. I may get a Tablet PC in the future, so it'd be ideal to experiment with. Reverse engineering the oC protocol in order to make it compatible would be of top priority.
semi vector based; (flash like)
doodle in chat as well? (so people can draw their language)
mac/win/linux?
gimp-based? (ignore the first one if this one is easier)
I'd be interested in knowing what language you'd plan on working on something for this on. The last attempts I made were in .NET, since GDI+ I thouht would be "fast enough". (It's not, but only because blitting 2000x2000 bitmaps in software hurts it so much). If you want to experiment with some of the crap I worked with, go here: http://nobuyuki.gpknow.com/lab/
My next attempt may be in Java......
It'll all be open source (BSD) too so anyone can play around with it.
Didn't realize tablet code was so complex, but that sounds odd since oC runs on Wine, and I haven't heard any problems with tablets. How does Wine do tablets, then?
BTW I've looked into Mono too. Its GDI+ drawing routines are based on Cairo, which is even slower, and definitely not well-suited to large canvases. If your code gets far enough, you might run into these same issues.
I really appreciate that it will be BSD though, the network code would be really helpful at least ;3
Tablet support on Wine in general is not fantastic. You should ask around and find out for sure, because oC is a very quirky program with how it implements things like windowing, tablet support, multiple screen support, and etc. I'm not familiar with Wine's tablet support since I don't run linux on the machine I do artwork on, so I googled it: http://www.winehq.org/pipermail/win.....er/012111.html
This seems to back up what I'm saying about oC's tablet support under Wine (probably nothing). So, to answer your question "How does Wine do tablets?" the answer is "Probably it doesn't do tablets at all in this case".
For brush strokes, you'll have to use some form of interpolation, because strokes is not how the input from mice and tablets are natively expressed. They express in discrete packets, which means you'll get little dots whenever you make a stroke with no interpolation. Most easy solutions then just connect the dots (this is linear interpolation) using lines. That option is less feasible when pressure support is added, since line widths in GDI+ are static. You would then have to figure out a way to interpolate line widths, or just throw either pressure or fancy interpretation out the window. The form of interpolation that Painter and oC uses is arc spline interpolation, which GDI+ DOES have, lucky you -- but again, with pressure, interpolation would not be possible just by calling Graphics.DrawArc.......
So as not to discourage you, I want to encourage your efforts at producing good netcode for all future potential oC clones. There's a lotttttt of work to be done before a project like this reaches feature parity, though...... (even to the buggy oc 1.1)
If you feel like messing around with it, check out TabletPressure2.rar from my source code. Consider it BSD for now (I haven't really decided how to license it yet). I went and attempted to see how fast it would blit a typical OC sized canvas with all the features and functionality I would have wanted to reach feature parity with oC 1.1. You'll need
Network code is something I *do* know something about, and the current code out there is just awful... I looked at warpaint, and it doesn't even know how to read anything beyond init/chat stuff, it just forwards all drawing messages around. Plus if performance is an issue you definitely don't want slow network code to add to the problem.
Any good client MUST terminate the connection upon any protocol error (autosaving the current session of course)... if the official oC client does not do this that's very bad, since every piece of data after a malformed packet will almost certainly be garbage.