2003-10-26 Sven Neumann <sven@gimp.org>
* app/config/gimpconfig-deserialize.c
(gimp_config_deserialize_fundamental): handle negative float and
double values similar to how this is done for integers and the
like.
* app/config/gimpconfig-params.h: added two new param flags and
documented all flags in the header file (for now).
* app/config/gimpconfig-serialize.h: handle the new param flags
GIMP_PARAM_DEFAULTS and GIMP_PARAM_IGNORE.
* app/text/text-enums.[ch]
* app/text/gimptext.[ch]: added some properties that we will need
sooner or later. Mark the new properties and a lot of the existing
ones as GIMP_PARAM_DEFAULTS so that their values are not
serialized unless changed from the default value.
* app/text/gimptextlayout.c
* app/tools/gimptextoptions.c: made all length properties in
GimpText depend on a single unit.
2003-10-25 Sven Neumann <sven@gimp.org>
* configure.in (ALL_LINUGUAS): added "ms" (Malay) now that all po
files are there.
(PANGOFT2_REQUIRED_VERSION) depend on PangoFT2 >= 1.2.2. There are
a couple of bug-fixes that are needed to make the text tool work.
Actually you should use at least version 1.2.4.
(GTK_REQUIRED_VERSION): depend on GTK+ >= 2.2.2. Earlier versions
had bugs that we don't want to work around any longer.
* INSTALL: document this change.
* app/gui/gui.c (gui_post_init): removed the GTK+ version check.
* app/text/gimptext.[ch]: added properties for letter spacing and
kerning for compatibility with future GIMP versions implementing
these features.
2003-10-18 Michael Natterer <mitch@gimp.org>
* app/text/gimp-fonts.c (gimp_fonts_load): added
gimp_container_freeze() / _thaw() around font list reloading.
* app/tools/gimp-tools.c (gimp_tools_init): added missing
gimp_container_freeze().
* app/widgets/gimpcontainerview.c: connect to the container's
"freeze" and "thaw" signals and empty / refill the view
accordingly. Ignore "add", "remove" and "reorder" signals while
the container is frozen. Fixes font list sorting after refresh and
speeds up refreshing of fonts, brushes, patterns etc.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpfontview.[ch]: new widget for the font list/grid.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_FONT_REFRESH.
* app/gui/dialogs-constructors.c: changed accordingly.
* app/gui/Makefile.am
* app/gui/fonts-commands.[ch]
* app/gui/fonts-menu.[ch]: new files: a menu for the font view.
* app/gui/menus.c (menus_init): register the new <Fonts> menu.
* app/gui/preferences-dialog.c (prefs_dialog_new): removed the
fonts refreshing hack from the "Environment" page.
2003-10-14 Sven Neumann <sven@gimp.org>
* app/config/gimpconfig-utils.[ch]: removed
gimp_config_copy_properties() and added the more intelligent
gimp_config_sync() instead.
* app/config/Makefile.am
* app/config/config-types.h
* app/config/gimpcoreconfig.[ch]
* app/config/gimprc-blurbs.h: replaced default image properties
with a single GimpTemplate object property. Changed the
set_property function to not replace aggregate objects but call
gimp_config_sync() instead.
* app/tools/gimptextoptions.c (gimp_text_options_set_property):
same change here.
* app/config/gimpconfig.[ch]: changed return value of
gimp_config_duplicate() to gpointer to avoid some casts that only
made the code harder to read.
* app/widgets/gimptemplateeditor.[ch]: don't keep an internal copy
here but edit the GimpTemplate passed when the editor was
constructed.
* app/gui/preferences-dialog.c: use a GimpTemplateEditor to allow
editing of the default image paramaters.
* app/config/gimprc.c
* app/core/core-types.h
* app/core/gimp.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-grid.c
* app/core/gimpimage-new.c
* app/core/gimpimage-undo-push.c
* app/core/gimpimage.c
* app/core/gimptemplate.[ch]
* app/gui/file-new-dialog.c
* app/gui/grid-dialog.c
* app/gui/info-window.c
* app/gui/resize-dialog.c
* app/gui/templates-commands.[ch]
* app/gui/tool-options-commands.c
* app/text/gimptextlayer.c
* app/text/gimptextlayer.c
* app/tools/gimptexttool.c
* app/widgets/gimptemplateview.c
* app/xcf/xcf-load.c: changed accordingly.
2003-10-09 Sven Neumann <sven@gimp.org>
* app/core/gimpobject.[ch]: added new function
gimp_object_name_collate() which compares two object names for
ordering using the linguistically correct rules for the current
locale and does some caching to speed up subsequent calls.
* app/core/gimpdatalist.c (gimp_data_list_data_compare_func): use
gimp_object_name_collate() from here.
* app/core/gimplist.[ch]: added convenience function
gimp_list_sort_by_name.
* app/text/gimpfontlist.c (gimp_font_list_restore): use
gimp_list_sort_by_name() instead of g_utf8_collate.
2003-10-09 Michael Natterer <mitch@gimp.org>
* app/core/gimpviewable.h: added GIMP_VIEWABLE_MAX_BUTTON_SIZE
GIMP_VIEWABLE_MAX_MENU_SIZE.
* app/core/gimpviewable.c (gimp_viewable_get_popup_size): smarter
popup size limitation: limit each axis to 2 * MAX_POPUP_SIZE
and the area to MAX_POPUP_SIZE ^ 2.
* app/core/gimpbuffer.c
* app/core/gimpimage-preview.c
* app/core/gimpitem-preview.c
* app/text/gimpfont.c (GimpViewable::get_popup_size): removed
all limitations.
* app/widgets/gimpcontainermenu.c
* app/widgets/gimpcontainermenuimpl.c
* app/widgets/gimpmenuitem.c
* app/widgets/gimpviewablebutton.c: use the new button and menu
size defines.
2003-10-01 Sven Neumann <sven@gimp.org>
* app/text/gimptextlayout.c: pango_font_description_set_size()
takes points not pixels as the old code assumed.
* app/text/gimptext.c
* app/text/gimptextlayout-render.c: fixed includes.
2003-10-01 Sven Neumann <sven@gimp.org>
* app/text/gimptext-compat.c (text_get_extents): set a default
resolution on the fontmap since Pango doesn't seem to do this for us.
2003-09-22 Sven Neumann <sven@gimp.org>
* app/core/gimpviewable.c (gimp_viewable_get_popup_size):
constrain popup size to GIMP_VIEWABLE_MAX_POPUP_SIZE but keep the
aspect ratio intact. Fixes bug #122923.
* app/text/gimpfont.c: use a smaller font size for popups so we
don't exceed the maximum size.
2003-09-11 Sven Neumann <sven@gimp.org>
* app/text/Makefile.am: removed PANGO_DISABLE_DEPRECATED again since
we have to use Pango API that is deprecated in the HEAD branch.
2003-09-06 Michael Natterer <mitch@gimp.org>
To optimize duplicate and/or wrong image updates away, introduced
new policy that a child object must never explicitly update or
invalidate its parent object (just like the GUI is not updated
explicitly by the core):
* app/core/gimpdrawable.[ch]: added new signal
GimpDrawable::update(). Never update or invalidate the image when
the drawable is updated or invalidated.
(gimp_drawable_set_visible): don't gimp_drawable_update() the
drawable since its pixels have not changed.
* app/core/gimpimage.[ch]: connect to the "add" and "remove"
signals of the layers and channels containers. Also connect to the
"update" and "visibility_changed" signals of all drawables in
these containers (optimizes away updates issued by drawables which
are not yet added to the image and updates of the selection
mask). Also, don't propagate updates to the image if the emitting
drawable is invisible (optimizes away updates issued by invisible
drawables).
(gimp_image_add_layer,channel)
(gimp_image_remove_layer,channel): don't update the image since
that's done by our "add" and "remove" handlers now.
(gimp_image_position_layer,channel): update just the image, not
the drawable since its pixels have not changed.
(gimp_image_real_colormap_changed)
(gimp_image_set_component_visible): always call
gimp_image_update() *and* gimp_viewable_invalidate_preview() to
get everything updated, since update and invalidate of images are
not connected.
* app/core/gimpimage-undo-push.c (undo_pop_layer,channel): don't
update the drawable since (a) its pixels don't change and (b) the
image updates itself upon adding/removing now.
(undo_pop_layer_mod): replaced gimp_image_update() by
gimp_drawable_update() (just for consistency with other similar
functions).
* app/core/gimplayer.c: connect to "update" of the layer mask and
issue updates on the layer if the mask update has any effect on
the projection.
(gimp_layer_create_mask): don't set the mask's offsets here since
they may be different when we later add the mask to the layer.
* app/core/gimplayermask.c (gimp_layer_mask_set_layer): set the
mask offsets here instead.
* app/core/gimpchannel.c (gimp_channel_translate): update the
channel even if push_undo == FALSE.
* app/paint/gimppaintcore.c (gimp_paint_core_finish)
* app/tools/gimpinktool.c (ink_finish): invalidate both the
drawable and the image preview since invalidating the drawable
doesn't invalidate the image any more.
* app/text/gimptextlayer.c (gimp_text_layer_render_now): also
update the new extents of the text layer, not only the old one.
(gimp_text_layer_render_layout): don't update the drawable since
gimp_drawable_fill() already updated it.
2003-09-04 Michael Natterer <mitch@gimp.org>
* app/core/gimpdrawable.[ch]: added new pure virtual function
GimpDrawable::invalidate_boundary().
* app/core/gimplayer.[ch]: implement it and removed public
function gimp_layer_invalidate_boundary().
* app/core/gimpchannel.[ch]: implement it.
* app/core/gimpselection.[ch]: implement it and removed public
function gimp_selection_invalidate().
* app/core/gimpimage-mask.c (gimp_image_mask_invalidate)
* app/core/gimpimage-undo-push.c
* app/core/gimpimage.c
* app/core/gimplayer-floating-sel.c
* app/text/gimptextlayer.c: changed accordingly.
* app/core/gimpchannel.[ch]: made gimp_channel_push_undo() a
public function and made it call
gimp_drawable_invalidate_boundary(). Added undo_desc strings for
all undo pushing functions to GimpChannelClass.
* app/core/gimpselection.[ch]: removed gimp_selection_push_undo()
since after the change above it was identical to
gimp_channel_push_undo(). Don't push any undo here since
upchaining does the right thing now. Override GimpChannelClass'
undo_desc strings to say "Selection".
* app/core/gimpimage-mask.c (gimp_image_mask_push_undo): changed
accordingly.
2003-09-01 Manish Singh <yosh@gimp.org>
Font configuration stuff: You can rescan for fonts on the fly now.
A couple caveats: the text tool font dialog doesn't get updated, but
that's supposed to be going away. The new font dock doesn't resort
on update, but mitch is supposed to fix that. :)
Some nice stuff for advanced font users: GIMP local font directories,
and an optional site and user fonts.conf.
I thought about supporting the auto-resan feature in fontconfig,
but it might take too much time to do a scan so I haven't implemented
it. Another thing I want to do is create fontconfig caches in the
local dirs.
* text/gimpfonts.[ch]: gimp_fonts_init/load/reset implementation.
* text/Makefile.am: added gimpfonts.[ch]
* app/core/gimp.c: use gimp_fonts_init/reset.
* app/config/gimpcoreconfig.[ch]
* app/config/gimprc-blurbs.h: added font-path config setting.
* app/gui/preferences-dialog.c: Add a Font Folders section for the
above. Also added a Rescan Font List button, which goes in the
Environment section. Not sure if this is the right place...
it also looks kinda ugly all by its lonesome.
* app/gui/user-install-dialog.c: mention the fonts directory.
* themes/Default/images/preferences/Makefile.am
* themes/Default/images/preferences/folders-fonts.png: dummy icon for
font folders pref, probably a folder with a little "T" in the corner
would be good.
2003-09-01 Sven Neumann <sven@gimp.org>
* app/xcf/xcf-load.c: removed excessive path debugging output.
* app/text/gimptext-vectors.c: always close strokes created from
text outlines.
2003-09-01 Sven Neumann <sven@gimp.org>
* app/text/gimptext-vectors.c: use the new bezier stroke API.
* app/vectors/gimpbezierstroke.c (gimp_bezier_stroke_new_moveto):
pass a NULL anchor to the first call of gimp_bezier_stroke_extend().
2003-08-31 Sven Neumann <sven@gimp.org>
* app/gui/layers-commands.[ch]
* app/gui/layers-menu.c: added "Merge Visible Layers..." and
"Flatten Image" menu entries as suggested in bug #120959.
* app/text/gimptext-vectors.c: fixed function declaration; we are
passing a PangoGlyph here, not a (PangoGlyph*).
2003-08-28 Larry Ewing <lewing@ximian.com>
* app/text/gimptext-vectors.c (conicto): interpolate the position
of the cubic control points correctly and set the previous control
point.
(cubicto): set the previous control point to the new value then
add remaining points.
2003-08-20 Sven Neumann <sven@gimp.org>
* app/gui/preferences-dialog.c
* app/text/gimptextlayer-transform.c
* app/widgets/gimpitemfactory.c: some changes for legacy compilers
based on a patch from Avi Bercovich (bug #120251).
2003-08-17 Simon Budig <simon@gimp.org>
* app/vectors/gimpstroke.[ch]
* app/vectors/gimpbezierstroke.[ch]: Virtualized
gimp_bezier_stroke_extend, added gimp_stroke_is_extendable.
* app/text/gimptext-vectors.c: changed accordingly.
* app/vectors/gimpvectors.[ch]: added gimp_vectors_anchor_select.
* app/tools/gimpvectoroptions.[ch]: dummy switch for future
extensions
* app/tools/gimpvectortool.[ch]: Major overhaul. Made use of
gimp_vector_tool_oper_update, cleaned up
gimp_vector_tool_button_press a lot and finally have a
working cursor_update. Still buggy, but I wanted to have it
in CVS.
2003-08-15 Sven Neumann <sven@gimp.org>
* app/text/Makefile.am
* app/text/gimptextlayer-transform.[ch]: new files that hold yet
unused GimpItem transform methods.
* app/text/gimptextlayer.[ch]: export gimp_text_layer_render().
* app/text/gimptext-bitmap.[ch]
* app/text/gimptext-private.h
* app/text/gimptext-vectors.c
* app/text/gimptextlayout-render.c: use the transformation matrix.
This doesn't change anything since it's still always the identity
matrix.
2003-07-28 Michael Natterer <mitch@gimp.org>
* app/text/gimptext-vectors.c: define FT_GLYPH_FORMAT_OUTLINE as
ft_glyph_format_outline if it doesn't exist so it compiles with
older freetype versions.
2003-07-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-undo-push.c (gimp_image_remove_layer)
* app/core/gimpimage.c (undo_pop_layer)
* app/text/gimptextlayer.c (gimp_text_layer_render):
gimp_layer_invalidate_boundary() must be called whenever a layer
gets translated, resized or removed. Fixes stale layer outlines in
the canvas padding area.
2003-07-24 Sven Neumann <sven@gimp.org>
* app/tools/gimptexttool.c (gimp_text_tool_create_vectors): set
the vectors offset from the text layer's offset.
* app/text/gimptext-vectors.c: removed debugging output.
2003-07-24 Sven Neumann <sven@gimp.org>
* app/text/gimptext-vectors.c: more work on glyph decomposition.
* app/tools/gimptextoptions.c
* app/tools/gimptexttool.c: added button to create a path from text.
2003-07-22 Sven Neumann <sven@gimp.org>
* app/text/gimptext-bitmap.c
* app/text/gimptextlayout-render.c: define FT_LOAD_TARGET_MONO to
FT_LOAD_MONOCHROME if it is undefined. This avoids a dependency on
recent versions of Freetype (bug #118066).
2003-07-20 Sven Neumann <sven@gimp.org>
Generalized text rendering and added a framework for creating
GimpVectors objects with text outlines.
* app/text/Makefile.am
* app/text/gimptext-bitmap.[ch]: new files with bitmap render
function.
* app/text/gimptext-vectors.[ch]: new files for rendering to
vectors.
* app/text/gimptextlayout-private.h: removed ...
* app/text/gimptext-private.h: ... and readded with this name.
* app/text/gimptextlayout-render.[ch]: reduced to the generic parts
of text rendering.
* app/text/gimptextlayer.c
* app/text/gimptextlayout.c: changed accordingly.
2003-07-17 Michael Natterer <mitch@gimp.org>
* app/config/gimpconfig-params.[ch]: added "gboolean allow_percent"
to gimp_param_spec_unit() and to the GIMP_CONFIG_INSTALL_PROP_UNIT()
macro. Changed value validation accordingly.
* app/config/gimpconfig-types.c (string_to_unit): parse "percent"
correctly.
* app/widgets/gimppropwidgets.c (gimp_prop_unit_menu_new): show
the "Percent" menu entry if the param_spec allows percent.
* app/config/gimpcoreconfig.c
* app/core/gimpgrid.c
* app/core/gimptemplate.c
* app/text/gimptext.c: pass FALSE to disallow percent.
* app/paint/gimppaintoptions.c
* app/tools/gimpselectionoptions.c: pass TRUE. Brings back the
percent feature for fade_length, gradient_length and fixed_size
rect/ellipse select.
* app/tools/gimpbucketfilloptions.c
* app/tools/gimpmagnifyoptions.c
* app/tools/gimpselectionoptions.c
* app/tools/gimptransformoptions.c: don't call the the reset()
functions from the GUI constructors (and reset the options just
deserialized from disk). Instead, added set_defaults() functions
which do everything the old reset() functions did (except
upchaining) and call set_defaults() from reset() and from the GUI
constructors.
2003-07-08 Sven Neumann <sven@gimp.org>
* app/text/gimptextlayer.c (gimp_text_layer_from_layer): replace
the layer in the global item hash table, fixes bug #116936.
* libgimp/gimpexport.c (gimp_export_image): added a warning that
would have helped to resolve above bug.
2003-07-07 Sven Neumann <sven@gimp.org>
* libgimpbase/gimpbasetypes.h: include <libgimpmath/gimpmathtypes.h>.
* libgimpmath/gimpmathtypes.h
* libgimpmath/gimpmatrix.[ch]: added GimpMatrix2 struct definition
and new function gimp_matrix2_identity().
* app/config/gimpconfig-deserialize.c
* app/config/gimpconfig-params.[ch]
* app/config/gimpconfig-serialize.c
* app/config/gimpconfig-types.[ch]
* app/config/gimpconfig.c
* app/config/gimpscanner.[ch]: added a boxed type around GimpMatrix2.
* app/text/gimptext.[ch]: added new property "transformation".
2003-07-06 Sven Neumann <sven@gimp.org>
* app/text/Makefile.am
* app/text/gimptextlayout-private.h
* app/text/gimptextlayout-render.[ch]: new files that implement
text rendering. Right now it's basically code copied from PangoFT2
but having it here will allow me to implement text transformations.
* app/text/gimptextlayout.[ch]
* app/text/gimptextlayer.c: changed accordingly.
2003-06-25 Sven Neumann <sven@gimp.org>
* app/text/gimptext-parasite.c (gimp_text_from_gdyntext_parasite):
attempt to convert text from locale encoding.
* app/vectors/gimpvectors-compat.c (gimp_vectors_compat_new):
allow paths with zero points (bug # 115955).
* plug-ins/script-fu/script-fu-server.c: if a connection to a
client is lost, invalidate file descriptors in the command queue.
Plugged a couple of memleaks.
2003-06-25 Sven Neumann <sven@gimp.org>
* app/text/gimptext-xlfd.[ch]: added convenience function
gimp_text_set_font_from_xlfd(). Improved and documented XLFD parsing.
* app/text/gimptext-parasite.c: use the new function.
2003-06-24 Sven Neumann <sven@gimp.org>
* app/config/gimpconfig.[ch]: added new function
gimp_config_serialize_to_fd() for the sake of completeness and
since it's a nice way to generate debugging output.
* app/text/Makefile.am
* app/text/gimptext-xlfd.[ch]: new files with routines to handle X
Logical Font Descriptions in an attempt to improve backwards
compatibility.
* app/text/gimptext-parasite.[ch]
* app/xcf/xcf-load.c: promote layers with GDynText parasite to
GimpTextLayer. Work in progress, we need to improve font matching.