   LodePaint
  Hello,LodePaint is a painting program supposed to be as easy to use as Paint, but with a lot more features, focused on pixel-editing and color math rather than printing and publishing.It has been getting more and more features lately, and I can already happily use it myself to create textures and pixel art drawings, as well as cropping screenshots and such.Please try it out! It can be downloaded here:https://sourceforge.net/projects/lodepaint/Features:-brushes such as pixel-pen, soft brush, eraser, color replacing brush, ...-geometric tools such as circles, polygons, rectangles and floodfill-full alpha channel support, more alpha channel features than any painting program I know-easy navigation: zoom and pan while in the middle of using any tool, full usage of all mouse buttons, use the arrow keys to move exactly one pixel, ...-many filters, including color manipulation, generation of patterns, fourier transform, convolution matrices, transformations, pixel-art rescaling, curves, ...-rectangular selections that can be dragged around and copied (when holding CTRL)-masks that allow filters to operate fully, partially or not at all on areas of any shape of the image-support for HDR images, with a color mode of 128-bit (one 32-bit float per color channel per pixel)-file formats: PNG, JPEG, BMP, TGA, RGBE (HDR) and an unofficial 128-bit dummy format because no other file format exists for the 128-bit RGBA images-plugin support for extra file formats and filters-unlimited undo and redo steps-support for many color models, both in the color chooser dialog and various filters-customizable colors of the GUI, as well as ability to customize all icons and the very GUI itself-pasting a screenshot or data from other painting programs-the GUI uses OpenGL, in fact this program runs in a computer game engine (requires 3D hardware acceleration)-multiplatform (Windows and Linux) and open sourceScreenshot:
  The interesting thing is that you do the same as me:We have a windowed application, with a custom windowed GUI inside it.This post is more like a question:Is it elegant to do like this, or is it more elegant to use the win32 windowing in case of a windowed program, or it doesn't matter?I feel it's a bit strange, but maybe it's a common thing.BTW the GUI is good, haven't tested all the edit box features yet (this is my whim)and still haven't implemented the offset thing :P   ;Quote:Original post by szecsThe interesting thing is that you do the same as me:We have a windowed application, with a custom windowed GUI inside it.This post is more like a question:Is it elegant to do like this, or is it more elegant to use the win32 windowing in case of a windowed program, or it doesn't matter?I feel it's a bit strange, but maybe it's a common thing.BTW the GUI is good, haven't tested all the edit box features yet (this is my whim)and still haven't implemented the offset thing :PWhether or not it's elegant, I don't know. I know that it's certainly not common at all, I've never seen any computer program with a built-in GUI, except computer games and old DOS programs which had their own GUI rendered with ASCII characters.A disadvantage is that some computers don't support it (when not having hardware acceleration), but an advantage is the flexibility and multiplatformness.   ;  First off, this is an incredible program, and it's clear you've put tons of work into it. It's very nice, and pretty polished.I've been looking for a new pixel editor for a couple months now, since I upgraded to Windows 7, and they made MSPaint a artistic brush program (paint/watercolor simulator thingy), which makes it not so good with pixel editting.Your program just became my new tile/sprite editor, if it can hold it's own for more than casual playing around.(I understand it's still work in progress, so pardon me if I point out bugs or wanted features that you're already aware of)Bugs:1) Drawing a line of pixels, using the Pencil tool, off the edge of the image, shuts down or crashes the program. (A very smooth/silent crash)2) When selecting the text in the RGBA sliders of the color, you can 'select' beyond what you are supposed to, when selecting from right to left.3) The [x]'s don't work on your GUI windows.4) Your triangle fill algorithm is slightly off; observe: 5) Your message boxes sometimes have too wide a string of text:GUI nit-picks:1) If the window does not have focus, and you click on the window, ignore that first click (Regain focus, but don't use that click to draw).2) Allow arrow keys to move the image around the view. (Especially since if you drag the image somewhere where you can't see it, you can't drag it back).3) When you have text input boxes, the first click in the box ought to select all the text (glad to see you accept double clicks!).4) Allow the text to be slightly larger, if possible. Some of your users will be running at a higher resolution (which many artists will be).5) If the window loses focus, make sure to collapse the menus.6) When you create a new window, center it in the view.7) Allow for drawing multiple lines of text (accept Enter presses as newlines).8) In the 'Rescale' window, instead of having a 'Use Percent' button, make changing the 'Width' automaticly change the 'Width (%)' field with it, and vice-versa.9) When you click of a drop down menu (like the one in the 'Rescale' window), close the menu.10) Clicking off the image, should unselect the current section of image you have selected.11) Instead of a 'Reload' button, sense if the image file changed, and pop up a "The image on file was changed, do you want to reload from the changed file? (Your work since last save will be lost)"12) 'Image->Selection->Select All' is typically in 'Edit->Select All'. Same with 'Select none'. As for 'Image->Selection->Delete Selection', it does the exact same thing as 'Image->Clear', and so isn't neccesary. 'Image->Clear' should also be in the 'Edit' menu.Feature requests:1) User customization of: - A) The colors the 'color pallette' in the upper-right corner. - B) The default colors in that corner, when the program starts up. (I don't mind if I have to do it in a text file)2) User customization of the default folder to 'Open' or 'Save' at.3) A way to edit just specific channels of the color (especially the alpha) without messing up the other channels (Little checkmarks next to the 'R' 'G' 'B' 'A' under in the Color selection window would be good). Also, a way to only have one channel of the image visible at a time.4) A way to view the image you're working on tiled side by side (good for tile editing for games).5) When setting shortcuts, why is the brush size shortcuts called 'Dyn change up' and 'Dyn change down'? Might I recommend, 'Brush size increase' and 'Brush size decrease'? Also, I feel it increases it's size in too high increments, obviously that is relative to how you use the program - large images or small images, but since holding CTRL and scrolling the mouse wheel already increases it in increments of 5, could the Dyn shortcuts only increase/decrease it by 1 (or perhaps allow the user to set it, when setting the shortcut)?I like the looks of the GUI! I really really like that you support transparency; it irritates me that MSPaint doesn't support it.You have in the 'File' menu: 'Save', 'Save as...', and 'Save Copy As...'. I'm not sure what the Linux has for standard menus, but it'll probably confuse Windows users. I assume (but haven't tried it) 'Save Copy As' functions how Windows users will expect 'Save As' to function. Maybe make 'Save as' work as normal, and save a new copy (and overwrite the older if named the same), and have 'Save as...' be renamed to 'Rename and save' or 'Rename image file' or something.Kudos for implementing your own Open/Save windows!Question: Why's the program say, 'Standby' every now and then? Shouldn't it go to standby when the window loses focus?This is an awesome application, excellent job! It's very very impressive (and much better than I would've done). I think the custom GUI gives it a nice personal touch.Thanks for sharing it, and thanks even more for making it freely available and open source.   ;  Thanks for your very thorough list of bugs and suggestions. Some of them are already on the TODO list, others will be added. This post certainly gives me a boost to fix certain ones instead of always implementing new filters :)I'm actively working on this program, so bug fixes such as the ones you mentioned, or others, and new features, can be added at any time.The arrow keys already have the purpose of moving the mouse cursor. But if the image is outside of view, press the "zoom 1" button in the toolbar to bring it in the center again.The small distinction between clear and delete selection is that clear also works if there's no selection. And with masks there's also a difference. The "del" key is assigned as shortcut to delete selection, but I don't think the "del" key fits as shortcut that clears the entire image if there's no selection at all.Having the ability to choose predefined color palettes (in the color chooser) and create your own ones is also planned.I'm also going to make the folders of the file menu much handier by remembering last location and such. User customization of this default path also sounds like a nice idea. I might even add customizable favorite locations in the file dialog.The "dyn change" shortcuts are called "change" because it can also change other things than brush size. It can for example be configured to change the hue of the color and such instead in the options dialog. Maybe separate shortcuts for some of those could be a good idea indeed...The full list of todo's is here: http://lodepaint.svn.sourceforge.net/viewvc/lodepaint/trunk/src/todo.h?view=markupAbout "save as" and "save copy as":-"save" and "save as" do exactly that what all Windows programs (as well as modern linux programs) do.-"save copy as" does exactly the same as "save as", except that after doing "save copy as", the path of the image is still set to the previous location. In other words, when doing "save" after "save copy as", the image is saved to the old location instead of the new location. So... Save copy as, is used to make a quick backup of the image to a separate file, while still working on the original file. I thought that this feature worked exactly like this in some windows programs, including photoshop.I haven't done anything to detect whether the window has focus or not. If SDL can do that, maybe I can use that, but for now I've not studied that. I must say that there's a trend in Flash games these days where Flash games pause if your browser window loses focus, and I HATE that. Must be a brand new feature in Flash because I never saw it before and now it's a trend.The "Standby" is there because LodePaint uses a game engine, so it redraws every frame. So the video card is being used all the time. So if you'd leave your computer and let LodePaint run, it'd constantly consume more electricity. Hence the pause feature, while in "pause" mode, it draws only every half second or so. So this is actually a "green" feature! :D   ;Quote:Original post by LodeWhether or not it's elegant, I don't know. I know that it's certainly not common at all, I've never seen any computer program with a built-in GUI, except computer games and old DOS programs which had their own GUI rendered with ASCII characters.It can often be found for 3D modelling applications. Look at blender, Maxon Cinema 4D, Poser, etc.   ;  So is this intended to be a paint application that eventually gets embedded in other applications (builtin image editing for games, etc)? I guess I'm not sure why you chose to have builtin GUI. The goal of the application in general seems like it might be similar to Paint.NET.Just curious, not denigrating your work in any way.   ;Quote:Original post by Dragon88So is this intended to be a paint application that eventually gets embedded in other applications (builtin image editing for games, etc)? I guess I'm not sure why you chose to have builtin GUI. The goal of the application in general seems like it might be similar to Paint.NET.Just curious, not denigrating your work in any way.In theory it would be kind of possible to embed this program in a screen in a wall in some 3D room of a game I guess (with some work), but no, that's not the intention, it's intended as a standalone application.   ;Quote:Original post by LodeAbout "save as" and "save copy as":-"save" and "save as" do exactly that what all Windows programs (as well as modern linux programs) do.-"save copy as" does exactly the same as "save as", except that after doing "save copy as", the path of the image is still set to the previous location. [*snip*] I thought that this feature worked exactly like this in some windows programs, including photoshop.That makes sense; I always find myself doing 'Save As: myfile_WIP_1.png', and then having to 'Save as:' or 'Recent files...' to get back to my original. I don't use Photoshop, but now that you mentioned it, PaintShopPro has that also, I just was confused about what it was so I never used it.Quote:I haven't done anything to detect whether the window has focus or not. If SDL can do that, maybe I can use that, but for now I've not studied that.It's pretty easy, if you feel it's important (as a user, I probably wouldn't notice unless I was running 50 things at once), just capture 'SDL_ACTIVEEVENT', and if 'state' contains (bitwise) 'SDL_APPINPUTFOCUS' the window lost or gained focus. If the 'state' field contains 'SDL_APPACTIVE', it was minimized/maximized, and you can go to lower intensity of drawing.   ;Quote:Original post by Servant of the LordThat makes sense; I always find myself doing 'Save As: myfile_WIP_1.png', and then having to 'Save as:' or 'Recent files...' to get back to my original. I don't use Photoshop, but now that you mentioned it, PaintShopPro has that also, I just was confused about what it was so I never used it..On closer inspection it turns out Photoshop doesn't have it, so my memory probably also comes from Paint Shop Pro instead (I don't actually own these programs, just have memories of them or can search screenshots of their file menu on the web). I just know I've seen that functionality before, somewhere. And indeed, avoiding having to use the save as twice for such cases is exactly the intention of this :)   