mirror of https://github.com/GNOME/gimp.git
![]() * applied gimp-lecorfec-99041[02]-0, changes follow * plug-ins/FractalExplorer/Dialogs.h (make_color_map): replaced free with g_free to fix segfault. * plug-ins/Lighting/lighting_preview.c (compute_preview): allocate xpostab and ypostab only when needed (it could also be allocated on stack with a compilation-fixed size like MapObject). It avoids to lose some Kb on each preview :) Also reindented (unfortunate C-c C-q) some other lines. * plug-ins/Lighting/lighting_main.c (run): release allocated postabs. * plug-ins/Lighting/lighting_ui.c: callbacks now have only one argument because gck widget use gtk_signal_connect_object. Caused segfault for scale widget. * plug-ins/autocrop/autocrop.c (doit): return if image has only background (thus fixing a segfault). * plug-ins/emboss/emboss.c (pluginCore, emboss_do_preview): replaced malloc/free with g_malloc/g_free (unneeded, but shouldn't everyone use glib calls ? :) * plug-ins/flame/flame.c : replaced a segfaulting free, and several harmless malloc/free pairs. * plug-ins/flame/megawidget.c (mw_preview_build): replaced harmless malloc/free pair. Note : mwp->bits is malloc'ed but seems to be never freed. * plug-ins/fractaltrace/fractaltrace.c (pixels_free): replaced a bunch of segfaulting free. (pixels_get, dialog_show): replaced gtk_signal_connect_object with gtk_signal_connect to accomodate callbacks (caused STRANGE dialog behaviour, coz you destroyed buttons one by one). * plug-ins/illusion/illusion.c (dialog): same gtk_signal_connect_object replacement for same reasons. * plug-ins/libgck/gck/gckcolor.c : changed all gck_rgb_to_color* functions to use a static GdkColor instead of a malloc'ed area. Provided reentrant functions with the old behaviour (gck_rgb_to_color*_r). Made some private functions static, too. gck_rgb_to_gdkcolor now use the new functions while gck_rgb_to_gdkcolor_r is the reentrant version. Also affected by this change: gck_gc_set_foreground and gck_gc_set_background (no more free(color)). * plug-ins/libgck/gck/gckcolor.h : added the gck_rgb_to_gdkcolor_r proto. * plug-ins/lic/lic.c (ok_button_clicked, cancel_button_clicked) : segfault on gtk_widget_destroy, now calls gtk_main_quit. (dialog_destroy) : segfault on window closure when called by "destroy" event. Now called by "delete_event". * plug-ins/megawidget/megawidget.c (mw_preview_build): replaced harmless malloc/free pair. Note : mwp->bits is malloc'ed but seems to be never freed. * plug-ins/png/png.c (load_image): replaced 2 segfaulting free. * plug-ins/print/print-ps.c (ps_print): replaced a segfaulting free (called many times :). * plug-ins/sgi/sgi.c (load_image, save_image): replaced a bunch of segfaulting free, and did some harmless inits to avoid a few gcc warnings. * plug-ins/wind/wind.c (render_wind): replaced a segfaulting free. (render_blast): replaced harmless malloc/free pair. * plug-ins/bmp/bmpread.c (ReadImage): yet another free()/g_free() problem fixed. * plug-ins/exchange/exchange.c (real_exchange): ditto. * plug-ins/fp/fp.h: added Frames_Check_Button_In_A_Box proto. * plug-ins/fp/fp_gtk.c: closing subdialogs via window manager wasn't handled, thus leading to errors and crashes. Now delete_event signals the dialog control button to close a dialog with the good way. * plug-ins/ifscompose/ifscompose.c (value_pair_create): tried to set events mask on scale widget (a NO_WINDOW widget). * plug-ins/png/png.c (save_image): Replaced 2 free() with g_free() for g_malloc'ed memory. Mysteriously I corrected the loading bug but not the saving one :) -Yosh |
||
---|---|---|
.. | ||
.cvsignore | ||
Makefile.am | ||
README.ifscompose | ||
ifscompose.c | ||
ifscompose.h | ||
ifscompose_utils.c |
README.ifscompose
IfsCompose-0.6.1 ---------------- IfsCompose is a plug-in for the GIMP that allows the creation of Iterated Function System fractals by direct manipulation onscreen of the component transforms. Although v0.6.1 is fairly full featured, it is still lacking some essentials. Most importantly, it is not yet possible to save fractals in unrendered form for future modification. The rendering code could also use some more work. IFS Fractals ------------ You may be familiar with IFS's from the screen hack 'Flame'. They are also the basis of fractal image compression. For a brief introduction to IFS's see Foley and van Dam, et al,. _Computer Graphics, Principles and Practice_, 2nd Ed., (Addison Wesley, 1990). The standard references in the field are Michael Barnsley's books (though I haven't looked at them yet): M. Barnsley, _Fractals Everywhere_, Academic Press Inc., 1988. M. Barnsley and L. Hurd, _Fractal Image Compression_, Jones and Bartlett. Briefly, you take a point and repeatedly apply one of a set of transformations to it, choosing randomly between them, and plot the point at each step. An interesting result (the Collage Theorem) says that if you can find a set of transformations that break up an image into smaller copies of itself, then the resulting fractal exactly reproduces the original image. For example, here is a classic image of a leaf and the same image with the four component transforms colored distinctively. But the best way to appreciate this may to install this program and try it out. I've extended the basic concept as found in Foley and van Dam to include transformations in color space as well as in real space. Installation ------------ The included Makefile should work with minor modifications on most systems if you have installed Gimp normally. Put the resulting binary in ~/.gimp/plug-ins or the system-wide plug-ins directory. The included files gtkaspectframe.c/.h implement a modified frame widget that guarantees that the aspect ratio of the child widget remains constant when the parent is resized. It's sort of specialized, but if you think it would be useful for other purposes, let me know and I'll lobby for its inclusion in the standard gtk. Use --- The interface is somewhat complex and it may take you a little while to get the hang of it. (There are 19 parameters for each transformation in your fractal, after all). The best way to learn is probably to start by making small changes, and seeing what they do. Click on the transformations (represented by polygons) in the design window to manipulate them interactively. Button-1: rotate/scale Button-2: distort Button-3: move If you hold down shift while clicking, you can select multiple polygons to apply the transformation to. Try not to click too near the center of a polygon, as this will amplify your actions. Note that if you render onto an image with an alpha channel, the background will be transparent (very useful for compositing several fractals), otherwise the background will be the current background. There is a tutorial and some example images at: http://www.msc.cornell.edu/~otaylor/plug-ins/ifscompose.html Have fun! Owen Taylor owt1@cornell.edu