Tuesday, December 5. 2006Edit -> FadeTime to catch up with new development features! That one was introduced 2 monthes ago, and provides a quick way to add a faded effect or a different paint mode for any drawable operation: a bucket fill, a blend, or any filter. This was already possible by creating or duplicating a layer, applying the operation on it, changing the opacity and mode of that layer, and merging down. So Edit -> Fade is a great way to gain time for that kind of work! Let's play with it to create a texture. Bucket Fill, plain color:
Bucket Fill, Rain pattern:
Edit->Fade:
Gradient:
Edit->Fade:
Plasma Clouds filter:
Edit->Fade:
Selective Gaussian Blur filter:
Edit->Fade:
So, even though the result is hideous, I've been able to play quickly with a lot of operations to modify more or less subtly my plain color image... That was fun! Saturday, September 2. 2006Gradient endpoint typesThis week in CVS GIMP: a new menu item for each point defining a gradient (that is, each end of each segment in the gradient editor).
GIMP already had four pre-defined gradients like this: FG to BG (HSV transition by hue clockwise, or counter-clockwise, or RGB transition) and FG to transparent. This allows users to define their own dynamic gradients, like this one: FG to transparent to BG, which uses the four new types of endpoints.
Tuesday, May 30. 2006Learning to paint with GIMPFollowing a beginner tutorial (for Photoshop, but there's nothing specific to that program so I followed exactly the same techniques with GIMP). A lot of airbrush/paintbrush, and even more smudge.
Wednesday, May 17. 2006Clipboard brushIt just made it in GIMP CVS, thanks to mitch who implemented a feature request made 2 years ago. One will thus be able, in next GIMP version, to copy any image part and paint with it. For example, I recently took flowers photos, so I'll use the foreground extraction tool (also to come in next GIMP version) to select a flower group. I check the Feather edges box to get a soft brush rather than a hard one.
No need to be very precise in the extraction for a soft brush, imperfections can lead to a more natural result.
The step one shouldn't forget once there is a selection: copy! I now pick the brush tool, and change brush to choose the first one in the list: the clipboard brush. I can see a preview in it, that will update each time I copy something new. Patterns took advantage of this: I also have a clipboard pattern at the beginning of my patterns list, that contains the last copy I made.
I test the brush on a white background: everything seems ok.
I can now use this temporary brush (beware, it will disappear as soon as I copy something, so if I want to keep it I can save the previous image as a brush or use Edit -> Paste as -> New Brush). For example, I can paint a textured background. I play a bit with the brush spacing parameter (do not hesitate to raise it much), and I make random strokes to get a non-linear effect.
That image could then be desaturated and used as a background... I can also try something more elaborated with that brush:
Monday, March 20. 2006edhel's LGMI've spent an extended week-end in Lyon for the Libre Graphics Meeting, a user and developer meeting around free graphics applications like GIMP, Inkscape, Scribus, Blender, and others. Many promising talks and the opportunity to meet again with the GIMP team!
A motivating talk by Øyvind on the GIMP futuren where we were able to fully understand GEGL and what it would allow.
Trying macro mode when the sun made an appearance...
My turn to get people interested in contributing to the GIMP or other free software projects.
Sven checks the way I fix the bug I chose for that talk, before committing the patch to the GIMP source code.
In the end, it looks like my talk got its point as several people told me afterwards they had no idea there was so few developers involved and it was so easy to contribute.
We were so much busy with the conference (and so much exhausted from listening carefully to english) that penguin and I didn't get much into the city. Happily, a gastronome dinner was organized, we were about 50 developers invited from all projects.
We still managed to see that Lyon's tramway drives on grass!
The day after, we all get together in a classroom to discuss the next GIMP release.
And again the last day... 6 hours total to talk about longterm tasks and refining what the GIMP really is.
Group photo, we are not so often in the same place!
End of the stay, walking in the Parc de la Tête d'Or...
Tuesday, March 7. 2006GIMP CVS and pkg-configI'm preparing the technical side of my LGM talk. I'd like to show GIMP hacking in action, with cvs diff and all the fun stuff, so I need to get GIMP CVS working on the laptop I'll be using. The actual laptop owner, my beloved penguin, does not want to upgrade his current glib/gtk/..., and set up a lovely pkg-config just for me.
After several headaches and --without-foobar flags, we have in /opt/gimp-dep/lib/:
libatk-1.0.so libgmodule-2.0.so libpangoft2-1.0.so libcairo.so libgobject-2.0.so libpangox-1.0.so libgdk-x11-2.0.so libgthread-2.0.so libpangoxft-1.0.so libgdk_pixbuf-2.0.so libgtk-x11-2.0.so libwmf.so libgdk_pixbuf_xlib-2.0.so libpango-1.0.so libwmflite.so libglib-2.0.so libpangocairo-1.0.so And here is the very latest headache we stumbled upon:
gcc -g -O2 -Wall -o .libs/svg svg-svg.o ../../libgimp/.libs/libgimpui-2.0.so /home/edhel/devel/gimp/libgimp/.libs/libgimp-2.0.so -L/opt/gimp-dep/lib /home/edhel/devel/gimp/libgimpwidgets/.libs/libgimpwidgets-2.0.so -L/usr/X11R6/lib /home/edhel/devel/gimp/libgimpmodule/.libs/libgimpmodule-2.0.so ../../libgimpconfig/.libs/libgimpconfig-2.0.so ../../libgimpwidgets/.libs/libgimpwidgets-2.0.so ../../libgimp/.libs/libgimp-2.0.so /home/edhel/devel/gimp/libgimpconfig/.libs/libgimpconfig-2.0.so /home/edhel/devel/gimp/libgimpmath/.libs/libgimpmath-2.0.so /home/edhel/devel/gimp/libgimpcolor/.libs/libgimpcolor-2.0.so /home/edhel/devel/gimp/libgimpbase/.libs/libgimpbase-2.0.so ../../libgimpcolor/.libs/libgimpcolor-2.0.so ../../libgimpmath/.libs/libgimpmath-2.0.so ../../libgimpbase/.libs/libgimpbase-2.0.so /usr/lib/librsvg-2.so /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libart_lgpl_2.so /usr/lib/libpangoft2-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libgsf-1.so -lbz2 /usr/lib/libgobject-2.0.so /usr/lib/libxml2.so -lpthread /usr/lib/libglib-2.0.so /opt/gimp-dep/lib/libgtk-x11-2.0.so /opt/gimp-dep/lib/libgdk-x11-2.0.so /opt/gimp-dep/lib/libatk-1.0.so /opt/gimp-dep/lib/libgdk_pixbuf-2.0.so /opt/gimp-dep/lib/libpangocairo-1.0.so /opt/gimp-dep/lib/libpangoft2-1.0.so /opt/gimp-dep/lib/libpango-1.0.so /opt/gimp-dep/lib/libcairo.so -lXrender -lX11 -lXext -lpng12 /usr/X11R6/lib/libfontconfig.so /usr/lib/libexpat.so /usr/lib/libfreetype.so -lz -lm /opt/gimp-dep/lib/libgobject-2.0.so /opt/gimp-dep/lib/libgmodule-2.0.so -ldl /opt/gimp-dep/lib/libglib-2.0.so -Wl,--rpath -Wl,/home/edhel/devel/build//lib -Wl,--rpath -Wl,/opt/gimp-dep/lib /opt/gimp-dep/lib/libgtk-x11-2.0.so: undefined reference to `g_file_set_contents' /opt/gimp-dep/lib/libpangocairo-1.0.so: undefined reference to `pango_font_get_font_map' /opt/gimp-dep/lib/libgtk-x11-2.0.so: undefined reference to `g_utf8_collate_key_for_filename' /opt/gimp-dep/lib/libpangocairo-1.0.so: undefined reference to `pango_fc_font_create_metrics_for_context' ../../libgimpconfig/.libs/libgimpconfig-2.0.so: undefined reference to `g_mapped_file_get_length' /opt/gimp-dep/lib/libgtk-x11-2.0.so: undefined reference to `g_get_host_name' /opt/gimp-dep/lib/libpangocairo-1.0.so: undefined reference to `pango_matrix_get_font_scale_factor' /opt/gimp-dep/lib/libgtk-x11-2.0.so: undefined reference to `g_object_compat_control' ../../libgimpconfig/.libs/libgimpconfig-2.0.so: undefined reference to `g_mapped_file_new' ../../libgimpconfig/.libs/libgimpconfig-2.0.so: undefined reference to `g_mapped_file_free' ../../libgimpconfig/.libs/libgimpconfig-2.0.so: undefined reference to `g_mapped_file_get_contents' collect2: ld returned 1 exit status make[3]: *** [svg] Error 1 make[3]: Leaving directory `/home/edhel/devel/gimp/plug-ins/common' [...] There are a bunch of libs that should be taken from /opt/gimp-dep/lib/, but are rather taken from /usr/lib/ - for example: libglib-2.0.so. This is not the first time it happens in this long quest, and it usually means one of the library linked uses directly something from /usr/lib/ instead of /opt/gimp-dep/lib/. And usually, you find the culprit by launching ldd on all the suspicious libs until you find the one that links to a /usr/lib/foobar.so, where foobar.so is available in the /opt lib path, and you can add the bad boy to your pkg-config pack... sounds awfully complex when you don't know pkg-config (and I don't), but it allowed us to go on, failed step after failed step.
But this one is though: no lib in the compilation in linked in any way to /usr/lib/libglib-2.0.so... so how can it appear here?
Finally, penguin added librsvg and libgsf to /opt/gimp-dep/lib/ and that was it, just because he thought they were suspicious enough, though ldd didn't report any link to /usr/lib/ from these two. One always needs a penguin at home.
Tuesday, December 13. 2005Golden section guides to cropRegarding bug #323669, there are a number of ways to deal with that in usability light (this post is a duplicate of the one on the GIMP Usability forums). First, here is what I understood with the help of Michael Schumacher (the report is not very explicit so I may have missed something): the crop tool should show some extra info inside its crop area, like lines or dots, that the user would try to align with the image content being cropped to achieve aesthetic results. The report seems to talk about several different sets of extra info: the easiest one would be "center-lines" (one vertical and one horizontal, intersecting in the center of the area), another one would be "rule of thirds", another one would be "golden sections". Here is an example of the center-lines set:
Another parameter could be whether the user wants to see plain lines, or dotted lines, or only intersection crosses, ... (like the Grid configuration dialog). Or XOR-ed lines (the line is bright when the image beneath is dark, and dark when bright, like in the above picture). Another parameter could be whether the user wants to see all lines (that would be 2 lines for center, 4 lines for thirds or golden) or only some of them (how disabling some of the lines could be done ?) Depending on how many options are finally offered, they could go in different places:
Tuesday, November 15. 2005Updating Grokking the GIMPI met Carey Bunks tonight and it seems I will be able to update his book Grokking the GIMP to match current GIMP release (and continue updating it while new GIMP versions are released). This is only the free online version, no printed book is scheduled, though Carey is convinced this could happen. Anyway, as I will spend little time on this update, I foresaw about 18 monthes / 2 years to complete it, so no printed book nor official online version will happen before that. This is slow work, but I do believe the result will be worthwile. Monday, November 14. 2005Rectangle boundaries: XOR and highlight fightThe new crop tool uses a rectangular area to show what will be kept after cropping. If you keep the Highlight option checked, this area will be highlighted (that is, the pixels inside will stay the same, while the pixels outside will lose half of their value and look dark). Between the inside and the outside of the rectangular area, there is a... border! The top one is drawn this way: gimp_canvas_draw_line (canvas, GIMP_CANVAS_STYLE_XOR,
dx1, dy1,
dx2, dy1);
XOR modifies what is beneath it: red, green and blue values will jump over the mean value, 128. 0 becomes 255 and vice-versa: black becomes white, blue becomes yellow, and mean grey will stay mean grey. So far, so good. But where is the XOR line drawn? Between the inside and the outside of the rectangular area. When you look at your image with a 1:1 zoom, it will look like it takes the same space as a one-pixel-wide line. When you look at it with a 2:1 zoom, it will still be one-pixel-wide, but your image is zoomed so it looks like it is half an image-pixel wide. Here it is with a 8:1 zoom.
Let it be clear: there is no space between two pixels, they are very tight in there and there is no way they will leave space for a boundary. So the boundary is drawn over the image pixels. If the line is horizontal, it is drawn on the pixels just below. If the line is vertical, on the pixels to the immediate right.
What happens when the area is "highlighted"? The remaining pixels are darkened. What pixels is XOR applied to? Top border: the pixels just below, highlighted (that is, with their usual value). Left border: the pixels to the right, highlighted. Bottom border: the pixels just below, ... uh-oh, darkened. Same with the right border, the pixels to the right are darkened. I was always testing the new crop tool on rather dark images and never saw the problem, it's a friend who asked me why there was a strange 3d feeling to the rectangular area. Why didn't I see it with dark images? Let's try with a completely black image. XOR on black (top and left boundary) = white. Non-highlight on black = black. XOR on non-highlight on black (bottom and right boundary) = XOR on black = white. So the whole border is white. Now let's try with a completely white image. XOR on white = black. Non-highlight on white = grey. XOR on non-highlight on white = XOR on grey = grey. You can't tell the bottom and right boundary from the darkened pixels!
(Let's just forget about the weird corners for now, I will fix that.) Update: the fight is over, I just had to move the bottom boundary one pixel up and the right boundary one pixel left... Wednesday, November 9. 2005HopelessIt's been three weeks I've been trying to fix a float point exception in my code. I encountered it while working on the fixed aspect option of the rectangle tool, and it was messing up things so bad I had to slogin from another box to kill gimp. OK, maybe the truth is I did a lot of other things during these three weeks and it did not take me that much time. But when I saw the zero division was taking place on the line just before the one I was checking and re-checking, I just thought I was hopeless. Happily, fixed aspect now works like it should. Saturday, October 15. 2005Status bar madnessToday came a new bug related to the text displayed in the status bar when using a rectangle tool.
The crop tool was already improved in that domain, but I guess that user would also like to see the rectangle size while resizing it. That info is already shown in the tool options though.
I did the same improvement on the other rectangle tool: the new rectangular selection tool. It was supposed to tell the user to click or press enter to turn the area into a selection, but I never saw that happening. I admit I didn't think much about it, told myself this was related to the old selection tools, and commited the fix for both rectangle tools.
I had a hard time finding where that damned "Replace the current selection" string was. It looks like the default status string when you are not pressing any modifier key. Still, the crop tool manages to replace it by pushing its own tip to the status bar, so something must be special with selection tools (new rect select tool derives from the generic selection tool).
While looking at the gimpselectiontool code, I saw that tool was using another function to change the status:
gimp_tool_replace_status (tool, gdisp, status);and tried that with my new rect select tool, but to no avail. There was another interesting bit concerning status in that code:
if (action == HALT) gimp_tool_pop_status (tool, gdisp);but commenting that out didn't change anything. Let's have a look a gimprectselecttool code... I see some status push and pop, so nothing unusual there. There's a pop just before the push, so I add it too in the gimpnewrectselecttool code, but still no luck.
What about looking at the other side: why does crop tool status stuff work? Crop tool derives from the generic draw tool (the generic selection tool also derives from it by the way). Looking at gimpdrawtool code... no status code to be found!
In a fit of anger, I comment out everything related to status in gimpselectiontool. And there, it works, I can see my status info displayed at last...
Took a deep breath and calmed down. Looked suspiciously at the gimp_tool_replace_status line, and changed it to gimp_tool_push_status. That was it, all is fine now (but I had to leave the pop before the push to make it work).
Friday, October 14. 2005Eek, my rectangle tool is brokenMitch said the rectangle tool must not construct the widgets but rather connect to them.
Thursday, October 13. 2005Sponsors dataI did the reordering on the sponsors page and tried a better layout for the logos.
I still think we need to put all donors information (name, amount, date, and if applicable: logo, url) in a data file (we don't put all this info in the sponsors page and we probably never will). My first idea, generating the sponsors page from that data file, doesn't seem to thrill anyone - so far the answers I got were like "don't spend too much time on this". If it's not generated, donors data will be duplicated, but well at least noone will have to go through all that Paypal records again...
Wednesday, October 12. 2005I won!I won the "write something simply terrible about Carol in your blog" contest.
In other news, David told me the new crop tool is an unfinished piece of crap (ok he did not say crap), Sven added empty lines in my patches to make my code more readable, and Michael wanted to hug my husband. These GIMP developers are a bunch of nice people.
Carol is mean.Carol said I am a newbie. She is so mean.
(Page 1 of 2, totaling 22 entries)
» next page
|
Calendar
QuicksearchArchivesCatégoriesSyndiquer ce BlogBlog Administration |
|||||||||||||||||||||||||||||||||||||||||||||||||
