PDA

View Full Version : PhotoMonkee - My first foray into QTville



rob_zim
30th December 2011, 19:50
I've been aware of QT's existence for quite some time and decided to dive in, head first, and develop an application with it. A photo editor seemed like a nice venue to do so, plus it's something I've always wanted to try and implement. A buddy of mine dubbed the project "PhotoMonkee (http://photomonkee.com)" and it stuck. My goal was to see how much I could cook up before the years end and if something potentially came out of it with some commercial viability, pursue it.


7217

PhotoMonkee utilizes the following QT functional areas:

Custom Styles
Threading
The GraphicsScene framework
The QT OpenCL wrapper
QPainter, QPainter, and a little more QPainter :D
QUndo stack
Clipboard



As an added challenge I've taken on using OpenCL (http://en.wikipedia.org/wiki/OpenCL) (no, not GL) to accelerate rendering of layer filters and layer styles. The technology behind OpenCL is impressive and the performance increases the application gained by using it were significant. I blogged about one such performance increase over here (http://photomonkee.com/blog/2011/12/18/im-a-kernel-programmer-now/).

In terms of functionality, PhotoMonkee has a lot of the basics you'd find in a paint program plus a few extra bells and whistles. Don't get me wrong, it's no PhotoShop but it certainly isn't MSPaint either :p


Basic Tools

Brush
Scale/Rotate/Translate
Magic Wand
Text
Eraser
Pixel Selection (with additive and removal modes)
Flood Fill
Basic Shapes
Canvas Zoom
Color Picker

Layering System

Blending
Opacity
Styles (only drop-shadow so far)


Canvas Cropping and Size Modification
Color Palette system with support for RGB, HSL, HSV and CMYK color models
Filters

Color Inversion, Gray-scale, Sepia
Brightness/Contrast
Color Adjustments
Sharpen, Emboss, Smooth (Convolution Filters)
Jitter, Pixelate (displacement filters)


Copy/Paste from within the application and between other applications
Unlimited Undo/Redo
Import from all of QImage's supported types (png jpg bmp gif pbm pgm tiff xbm xpm)
Export to all of QImage's supported types(bmp, jpg, png, ppm, tiff, xbm, xpm)
Save/Load via the PhotoMonkee file format *.pm (no, not PERL modules, silly!)



I wanted the full QT experience so my development environment is 100% QT Creator on Windows (no Visual Studio). The project uses QTCore and QTGui. I was using QTSql for some time (sqlite) for the PhotoMonkee file format and the scratch disk but the performance and a significant bug (https://bugreports.qt.nokia.com/browse/QTBUG-16967) made me reverse course and simply use QDataStream. The only other "external" technology being used is the QT OpenCL wrapper (http://doc.qt.nokia.com/opencl-snapshot/index.html) which has worked like a charm.

Thank you, QT.
All of that in 6 months of nights and weekends (hey, I have to pay the bills!) wouldn't be even remotely possible without the QT framework. It's been an absolute labor of love and I look forward to releasing it to the wild after a little internal alpha testing from friends and family. The plan is to add more features that actual graphic artists* use and see if folks would be willing to part with their hard earned cash to acquire a copy.

I hope to put out a release for everyone to play with "soonâ„¢" and get everyone's feedback. Thanks for reading and Happy (early) New Year to you!

~Rob


*I am not artistically inclined so if any of you are of that ilk and would like to test...please drop me a note!

john_god
29th May 2012, 20:16
Hi

I'm not a designer but your program seems nice, I'll try it. The design is pretty, you have used some CSS right ?
Regards
John

rob_zim
30th May 2012, 14:56
Hey John,

Thanks for the kind words! You're correct, I have used CSS to get the custom styles. Since I put up that screenshot I've also added rounded corners to the tool dialog boxes and also docking which was much needed. If you have any suggestions or feature requests please don't hesitate to drop a ticket on the support site: http://photomonkee.uservoice.com/

All the best,
~Rob

rob_zim
5th June 2012, 01:15
By the way,

I did a blog post on how I used CSS to do the custom dialog box styling: http://photomonkee.com/blog/2012/03/28/creating-custom-dialog-boxes-with-qt/

Hope it can be of use to someone!

~Rob