Introducing Pinta
Over the holiday break, I stumbled upon this article from OSNews stating that there was a need for something like Paint.NET for Gtk. Having some experience with porting Paint.NET to Mono Winforms before, I knew that that was a massive task. But it still got me curious about Cairo and creating a layered canvas, since I had never played with Cairo or Gtk.
After playing around for a few hours, I actually had a working paintbrush and canvas. Intrigued by my success, I played around with it for a few more days. By the end of the week I had a nifty little paint program with a few features. Now, a month later, it's time to open my little project up to the world: Pinta.
Pinta is a clone of Paint.NET. It already has a small, but hopefully useful, set of features like multiple layers and infinite levels of Undo/Redo.
I hope to implement the same feature set as Paint.NET. Currently there are several tools missing, as well as adjustments like brightness/contrast and levels and Paint.NET's effects.
Being written in Mono/Gtk, Pinta is naturally cross-platform.
To download Pinta or the source code, check out the website!
Note: I didn't misspell "Hello" in my screenshot, my dog's name is Helo. ;)
After playing around for a few hours, I actually had a working paintbrush and canvas. Intrigued by my success, I played around with it for a few more days. By the end of the week I had a nifty little paint program with a few features. Now, a month later, it's time to open my little project up to the world: Pinta.
Pinta is a clone of Paint.NET. It already has a small, but hopefully useful, set of features like multiple layers and infinite levels of Undo/Redo.
I hope to implement the same feature set as Paint.NET. Currently there are several tools missing, as well as adjustments like brightness/contrast and levels and Paint.NET's effects.
Being written in Mono/Gtk, Pinta is naturally cross-platform.
To download Pinta or the source code, check out the website!
Note: I didn't misspell "Hello" in my screenshot, my dog's name is Helo. ;)
Comments
Best of luck.
[stereotyping here (in a good way I guess)]
My congrats on this one! Hopefully to be included soon as a replacement for Gimp in some distro(s).
One suggestion - could you provide a better error message (on Windows) when GTK# is missing and also provide an easy link to the GTK# distro from your download page?
Do you think you'll add plugins for it? If you do, I always thought it would be so much better if Paint.Net allowed plugin developers to register new tools on the tool palette, not just new effects under a menu.
I really hope this will become the default Gnome paint app in OpenSUSE and Ubuntu.
If you need more code, here is the last FOSS version of Paint.NET:
http://rapidshare.com/files/319893558/paint_dot_net_source_code_336.7z
Cheers
BTW: You made the OSnews frontpage ;)
I hope Pinta will have a more liberal license that allows me to use it in the workplace.
@RichB: It's on the FAQ. I'm not sure if I can create a nicer message when the program is run, but I'll look into it, because it would be much better. (And later, a .msi would help with this.)
@Ben: I expect to move to Mono.Addins as this matures, and I think adding new tools would be a great use of that.
@Ammaar: Pinta is MIT X11. I don't think it get much more liberal than that. ;)
My guess is that it is going to rely heavily on System.Drawing/Windows GDI+ constructs, like Surfaces, Regions, and Paths.
I can probably make it provide the same methods, but they would likely have to port to use my non-GDI+ pieces.
Thank you so much for this perfect apps! I think Paint.Net is the best quick, simple, useful and freeware editor for Windows. And now, thanks God, we have the same for Linux!
Good Luck!
Don't get me wrong, I love Mono apps (Banshee, F-Spot...) and Mono dev tools and I kind of see why you'd prefer not to work with Gimp (plain C), but there was another possibility as Tom mentions, which is to fork Paint.NET from the last version that had a FOSS license.
If this project got started so fast, I think it's partly because the developer masters his code base (plus the fact it's in C#). How much could he have achieved in just one month, if he had worked on GIMP instead?
But I'm thinking in a more general idea of benefit to open source. And for that you always have to think about the 2 extremes:
a) Imaging if all the potential contributors of free software had did what Jonathan did. There would be no collaboration at all in projects. All would be one-man projects. Definitely free software wouldn't even exist in this scenario.
b) Now think that for every use case out there, there would be only 2 free software projects existing (let's say one for KDE and another for Gnome). I would say that if this was the case, FLOSS today would be so much more advanced and spread.
Having worked previously on doing a straight port of Paint.NET, I fully believe rewriting the interface and backend in Gtk/Cairo, and then borrowing some platform agnostic code from Paint.NET is the right way to go.
Paint.NET is *extremely* tied to Windows. P/Invokes number in the hundreds. And even if a straight port was done, no one on Linux would want a Winforms app. You can see this sentiment when companies port their software with Wine instead of writing a native version (Picasa, Google Earth).
To me (and the article I linked as my inspiration), there really is a difference in purpose between GIMP and Paint.NET. It's kinda like having both Gedit and OpenOffice at the same time. They both create text documents, but still have very different purposes.
I guess time will tell if other people feel the same. :)
a) You could program in not C/C++ for Gimp: I believe you already can use C# for plugins. For the rest, you can always use Vala which is very a-la Mono ;)
b) How about bringing all those p-invokes to an only-windows-specific assembly and working with them upstream? Now, not having done this will not pay off for what you want to do now: it will be difficult as well to separate Paint.NET agnostic parts into libraries, if there hasn't been much separation already upstream :(
PS: I get the point about the different purposes between GEdit and OpenOffice, however I don't get the comparison. What is the program that is needed in between the features of GEdit and OpenOffice? I think having those two is fine, I don't want anything more.
Sorry, but I find your suggestions pointless and I never said that Jonathan should do anything like you said. I only pointed him to the last Paint.NET source because maybe there is more code he can use in it(version 3.36 instead of 3.0).
FOSS is evolution. If Pinta does not find a developer community it will die eventually, but at the moment it has a lot of potential. Space limited distros like Ubuntu are likely to ship something this small and powerful because they have Mono already on the CD. Gimp had to go because it was too big and too powerful.
So as Thom in his OSnews article mentioned Gnome needs something like this and we should all thank Jonathan for starting it and moving the a to the end :)
We will see if Pinta or Nathive or whatever will eventually find a sustaining community, but it is no use in not starting it, because Pinta has a great head start because of all the Paint.NET code.
mono-runtime (3.5MB)
depends: libc6, libglib2.0-0, mono-gac (127KB), zlib1g
libmono-posix2.0-cil (295KB)
depends: libc6, libmono-corlib2.0-cil (2.5MB), libmono-system2.0-cil (4.5MB), mono-runtime
libgtk2.0-cil (4.5MB)
depends: libatk1.0-0, libc6, libcairo2, libglib2.0-2, libglib2.0-cil, libgtk2.0-0, libmono-cairo2.0-cil (180KB), libmono-corlib2.0-cil, libmono-system2.0-cil, libpango1.0-0
(~15.6MB total; The dependencies with no size listed were already installed as dependencies of packages that are included in Ubuntu and all mono related packages were removed before I started. Those are the uncompressed sizes. I used aptitude -R, so recommends weren't installed)
btw, one thing I noticed that's nice is it tells you what's missing when you try to run it, so I didn't have to search too much to find what I needed. Dependencies in the deb would have been nice, but I understand this is early stuff and that would be a hassle.
Thanks for the work! ^.^
I wish you all the best and pray that your work will become a default application in Ubuntu when it reaches full maturity!
Keep up the amazing work!
(from a Linux n00b)
many misnomers I've been hearing.
As put above, *for me*, Mono is the only way I can/will write an application on Linux. I am a happy C# developer and have no desire to write C/C++.
There are plenty of applications out there written in a myriad of languages who would love support. Find the one(s) that best fits you and your preferred language and help them out.
A key tenet of open source is choice. Different people want different things. Make your own choices, and let other people make theirs.
Paint.NET 3.36 was the last version that was MIT licensed...
Still, I'm impressed with your undertaking.
Fixed with 2nd sic. Ironic how he disses someone else's "language" in the same sentence. :p
Not sure what you're fixing. "You're" is a contraction, meaning "you are". "Your" is used to refer to something that belongs to "you".
Looking back at my comment, it looks like I said "may", not "many". If you did that on purpose, I don't quite get what you were trying to get across.
By the way, I could have also left that question as a statement, but I subconsciously fixed it. At least I can catch mistakes when I try, and I can rely on my brain to catch them when I don't.
a few misnomers I've seen
Did you tried Vala?
As long as I am happy, I will spend my time writing useful code instead of learning the latest new fad. :)
some misnomers I've heard
Whatever!
It's too much double-chain related with Microsoft!
Today it's [almost] "free", but there's A LOT of stuff, inside, that M$ could lock (or "enhanche") tomorrow.
We don't want another monopoly.
Please!!!
(P.S.: good work, but we will not install it; nor contribute to Mono-related projects) :-(