1
1
mirror of https://gitlab.gnome.org/GNOME/gimp.git synced 2025-10-06 01:12:40 +02:00

Compare commits

...

167 Commits

Author SHA1 Message Date
Martin Nordholts
7f693281d9 Reverting r28031 that was a commit in the GIMP_2_6_4 tag
svn path=/tags/GIMP_2_6_4/; revision=28033
2009-02-14 15:20:20 +00:00
Goran Rakic
feda20f0b3 Updated Serbian translation (by Miloš Popović)
svn path=/tags/GIMP_2_6_4/; revision=28031
2009-02-14 13:55:07 +00:00
Sven Neumann
f9e8fb9991 Made 2.6.4 release.
2009-01-01  Sven Neumann  <sven@gimp.org>

        * Made 2.6.4 release.


svn path=/branches/gimp-2-6/; revision=27870
2009-01-01 14:58:45 +00:00
Sven Neumann
c295f28c4d Merged from trunk:
2009-01-01  Sven Neumann  <sven@gimp.org>

        Merged from trunk:

        Bug 565223 – Perspective transformation jagged edges / comb effect

        * app/core/gimp-transform-region.c: reverted the code change, but
        not the cleanups, from commit r26786.


svn path=/branches/gimp-2-6/; revision=27867
2009-01-01 13:58:08 +00:00
Rajesh Ranjan
487e416c42 hindi update
svn path=/branches/gimp-2-6/; revision=27865
2008-12-31 11:48:18 +00:00
Rajesh Ranjan
efd5c8f4bc hindi update
svn path=/branches/gimp-2-6/; revision=27864
2008-12-31 11:46:20 +00:00
Sven Neumann
0d669e76f6 updated list of translation updates
svn path=/branches/gimp-2-6/; revision=27858
2008-12-30 20:08:20 +00:00
Marco Ciampa
815c8c6af6 Updated italian translation
svn path=/branches/gimp-2-6/; revision=27855
2008-12-29 14:40:15 +00:00
Rajesh Ranjan
a988981c8f hindi gimp updated
svn path=/branches/gimp-2-6/; revision=27854
2008-12-29 12:16:34 +00:00
Duarte Loreto
0bd92c01ac Updated Portuguese translation by Bruno Queiros
2008-12-28  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation by Bruno Queiros
	<brunoqueiros@portugalmail.com>.

svn path=/branches/gimp-2-6/; revision=27852
2008-12-28 17:37:41 +00:00
Duarte Loreto
76d43759b6 Updated Portuguese translation by Bruno Queiros
2008-12-28  Duarte Loreto <happyguy_pt@hotmail.com>

	* pt.po: Updated Portuguese translation by Bruno Queiros
	<brunoqueiros@portugalmail.com>.

svn path=/branches/gimp-2-6/; revision=27851
2008-12-28 17:36:29 +00:00
Sven Neumann
f9d0c373d1 fixed handling of GEGL minor version number in compile-time check.
2008-12-28  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpgegltool.c (gimp_param_spec_duplicate): fixed
	handling of GEGL minor version number in compile-time check.


svn path=/branches/gimp-2-6/; revision=27847
2008-12-28 02:30:30 +00:00
Sven Neumann
2f8cf85eeb updated
svn path=/branches/gimp-2-6/; revision=27846
2008-12-28 02:20:37 +00:00
Sven Neumann
72ef363094 fixed typo in GEGL version number check.
2008-12-28  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpgegltool.c (gimp_param_spec_duplicate): fixed 
typo
	in GEGL version number check.


svn path=/branches/gimp-2-6/; revision=27845
2008-12-28 02:19:50 +00:00
Sven Neumann
0dbac3183b Merged from trunk:
2008-12-28  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 563985 – jpg save dialog: "cancel" is treated like "commit"
	for settings

	* plug-ins/file-jpeg/jpeg.c (run): only attach the comment and
	settings to the image if the save was successful.


svn path=/branches/gimp-2-6/; revision=27844
2008-12-28 02:11:31 +00:00
Sven Neumann
9d0e60e1bf news update for 2.6.4 release
svn path=/branches/gimp-2-6/; revision=27838
2008-12-27 23:39:44 +00:00
Sven Neumann
1eada4e802 Merged from trunk:
2008-12-27  Sven Neumann  <sven@gimp.org>

        Merged from trunk:

        Bug 564087 – Using clone tool on a layer with a part out of 
canvas
        causes crashes

        * app/paint/gimppaintcore.c (gimp_paint_core_paste): intersect 
the
        rectangle with the extents of the saved projection.


svn path=/branches/gimp-2-6/; revision=27836
2008-12-27 16:05:10 +00:00
Sven Neumann
1dec860bd1 Merged from trunk:
2008-12-27  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 564593 – crash when the drawable is changed while a color
	tools is active

	* app/core/gimpdrawable-shadow.c 
(gimp_drawable_merge_shadow_tiles):
	keep a reference to the shadow tiles because it might otherwise 
be
	free'd under our feet.


svn path=/branches/gimp-2-6/; revision=27833
2008-12-27 15:15:18 +00:00
Sven Neumann
502458b5d2 also commit the ChangeLog entry
svn path=/branches/gimp-2-6/; revision=27821
2008-12-21 15:50:36 +00:00
Sven Neumann
5cde3344f5 Merged from trunk:
2008-12-21  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 564869 – GIMP crashes on selecting Tools->GEGL operation

	* app/tools/gimptool.c (gimp_tool_initialize): check if the tool
	has set an error.


svn path=/branches/gimp-2-6/; revision=27820
2008-12-21 15:50:08 +00:00
Sven Neumann
952efd1fc2 Merged from trunk:
2008-12-21  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 565138 – python-fu-foggify does not check if image is in rgb 
mode

	* plug-ins/pygimp/plug-ins/foggify.py (foggify): fixed handling 
of
	grayscale images.


svn path=/branches/gimp-2-6/; revision=27818
2008-12-21 15:33:56 +00:00
Felix I
00532e4c68 tamil translation updated
svn path=/branches/gimp-2-6/; revision=27811
2008-12-18 10:29:47 +00:00
Gabor Kelemen
8cb2399a6d Translation updated.
2008-12-18  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.

svn path=/branches/gimp-2-6/; revision=27809
2008-12-18 08:58:03 +00:00
Sven Neumann
c7519202cc reverted last change, it was bogus
svn path=/branches/gimp-2-6/; revision=27807
2008-12-17 19:32:01 +00:00
Sven Neumann
4ef9010e25 Merged from trunk:
2008-12-17  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* plug-ins/common/file-png.c (load_image) (save_image): use a 
tile
	cache to optimize pixel access.


svn path=/branches/gimp-2-6/; revision=27806
2008-12-17 19:26:09 +00:00
Gabor Kelemen
c805ee969a Translation updated by Arpad Biro.
2008-12-17  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated by Arpad Biro.

svn path=/branches/gimp-2-6/; revision=27803
2008-12-17 00:26:48 +00:00
Gabor Kelemen
0098ac4fbd Translation updated by Arpad Biro.
2008-12-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated by Arpad Biro.

svn path=/branches/gimp-2-6/; revision=27794
2008-12-15 00:41:21 +00:00
Gabor Kelemen
e9f606917e Translation updated by Arpad Biro.
2008-12-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated by Arpad Biro.

svn path=/branches/gimp-2-6/; revision=27793
2008-12-15 00:14:11 +00:00
Gabor Kelemen
05cc3ef351 Translation updated by Arpad Biro.
2008-12-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated by Arpad Biro.

svn path=/branches/gimp-2-6/; revision=27792
2008-12-14 23:43:32 +00:00
Gabor Kelemen
72a27966aa Translation updated by Arpad Biro.
2008-12-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated by Arpad Biro.

svn path=/branches/gimp-2-6/; revision=27791
2008-12-14 23:38:57 +00:00
Gabor Kelemen
ba6ccc8e16 Translation updated by Arpad Biro.
2008-12-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated by Arpad Biro.

svn path=/branches/gimp-2-6/; revision=27790
2008-12-14 23:34:51 +00:00
Gabor Kelemen
1a996fa051 Translation updated.
2008-12-15  Gabor Kelemen  <kelemeng@gnome.hu>

	* hu.po: Translation updated.

svn path=/branches/gimp-2-6/; revision=27789
2008-12-14 23:12:28 +00:00
Aron Xu
216b0f2e76 Fixed problem of zh_CN.po
svn path=/branches/gimp-2-6/; revision=27786
2008-12-13 15:52:30 +00:00
Aron Xu
bcbd2fb9ea Updated Simplified Chinese translation
svn path=/branches/gimp-2-6/; revision=27785
2008-12-13 15:42:47 +00:00
Aron Xu
eca52e47ba Updated Simplified Chinese translations for gimp-2.6
svn path=/branches/gimp-2-6/; revision=27769
2008-12-07 14:42:16 +00:00
Aron Xu
6b7134cc16 Updated Simplified Chinese translation by kappa0806.
svn path=/branches/gimp-2-6/; revision=27767
2008-12-06 08:52:41 +00:00
Sven Neumann
e74df7b28d Merged from trunk:
2008-12-04  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 563130 – Hue selection mode does not cross the 0-360 degrees 
line

	* app/core/gimpimage-contiguous-region.c (pixel_difference):
	applied patch from Daniel Hornung.


svn path=/branches/gimp-2-6/; revision=27765
2008-12-04 20:59:42 +00:00
Martin Nordholts
627736b8d1 Merged from trunk:
Bug 563179 – Scrollbars not resized when we extend the canvas size

* app/display/gimpdisplayshell-handlers.c
(gimp_display_shell_size_changed_detailed_handler): Add explicit
call to gimp_display_shell_scroll_clamp_and_update() at the end to
make sure it is called.

svn path=/branches/gimp-2-6/; revision=27763
2008-12-04 20:26:14 +00:00
Sven Neumann
9a3e7c5557 Merged from trunk:
2008-12-04  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* tools/pdbgen/pdb/convert.pdb: fixed an error in the 
documentation
	of the gimp-image-convert-rgb procedure.

	* app/pdb/convert-cmds.c
	* libgimp/gimpconvert_pdb.c: regenerated.


svn path=/branches/gimp-2-6/; revision=27759
2008-12-04 11:10:14 +00:00
Simos Xenitellis
30130874e9 Updated Greek translation by Nikolaos Pantazis.
svn path=/branches/gimp-2-6/; revision=27752
2008-12-03 14:54:23 +00:00
Sven Neumann
beaca73f41 when compiling against GEGL from trunk, use "gegl:translate" instead of
2008-12-03  Sven Neumann  <sven@gimp.org>

	* app/core/gimpimagemap.c (gimp_image_map_apply): when compiling
	against GEGL from trunk, use "gegl:translate" instead of 
"shift".


svn path=/branches/gimp-2-6/; revision=27748
2008-12-03 11:25:28 +00:00
Aron Xu
71fe89d878 Updated zh_CN.po for gimp-2.6
svn path=/branches/gimp-2-6/; revision=27747
2008-12-02 15:50:43 +00:00
Sven Neumann
420ff86aa2 Merged from trunk:
2008-11-27  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 562459 – PF_PALETTE: 'TypeError' when used in a plugin that 
is
	registered in <Image>

	* plug-ins/pygimp/gimpui.defs (gimp_palette_select_button_new):
	the 'title' parameter is optional.


svn path=/branches/gimp-2-6/; revision=27736
2008-11-27 20:50:03 +00:00
Daniel Nylander
9dfd140dc2 sv.po: Updated Swedish translation
svn path=/branches/gimp-2-6/; revision=27734
2008-11-27 20:08:30 +00:00
Michael Natterer
dcc79eec24 Merged from trunk:
2008-11-27  Michael Natterer  <mitch@gimp.org>

	Merged from trunk:

	Bug 562427 – Compilation with --as-needed

	* app/Makefile.am (gimp_console_2_7_LDADD): add $(GLIB_LIBS) so
	libgthread gets pulled in explicitely.


svn path=/branches/gimp-2-6/; revision=27733
2008-11-27 19:24:24 +00:00
Sven Neumann
b4459bb65b Merged from trunk:
2008-11-27  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 562386 – PF_SLIDER and PF_SPINNER 'Step' values do not 
change
	consistently...

	* plug-ins/pygimp/gimpfu.py (SliderEntry): set the precision on
	the slider just as we do it for the spin-button.


svn path=/branches/gimp-2-6/; revision=27731
2008-11-27 12:58:16 +00:00
Sven Neumann
95438acb2e Merged from trunk:
2008-11-27  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* plug-ins/pygimp/gimpfu.py (SpinnerEntry): let SpinnerEntry
	return a float instead of trying to convert the value to an int.


svn path=/branches/gimp-2-6/; revision=27729
2008-11-27 11:53:11 +00:00
Sven Neumann
50bf14ad79 Merged from trunk:
2008-11-27  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 562386 – PF_SLIDER and PF_SPINNER 'Step' values do not 
change
	consistently...

	* plug-ins/pygimp/gimpfu.py (SpinnerEntry): initialize the
	spin-button the way that gtk_spin_button_new_with_range() is
	implemented.


svn path=/branches/gimp-2-6/; revision=27727
2008-11-27 10:25:59 +00:00
Martin Nordholts
87a36289f6 Merged from trunk:
Bug 562366 – Default image dimensions are not correctly
transferred in the file/new dialog box

* app/dialogs/preferences-dialog.c
(prefs_template_select_callback): We need to copy the template in
the same way as in the New Image dialog.

* app/dialogs/image-new-dialog.c (image_new_dialog_set): ... and
when we copy the template to the New Image dialog.

svn path=/branches/gimp-2-6/; revision=27725
2008-11-27 07:28:38 +00:00
Matic Žgur
bb701a93ce Updated Slovenian translation.
svn path=/branches/gimp-2-6/; revision=27723
2008-11-26 20:44:51 +00:00
Martin Nordholts
12a1ab7e11 Merged from trunk:
Bug 562366 – Default image dimensions are not correctly
transferred in the file/new dialog box

* app/dialogs/preferences-dialog.c
(prefs_template_select_callback): We need to copy the template in
the same way as in the New Image dialog.

svn path=/branches/gimp-2-6/; revision=27721
2008-11-26 19:18:37 +00:00
Changwoo Ryu
323b5c63f4 Updated Korean translation by Choi, Ji-Hui
svn path=/branches/gimp-2-6/; revision=27717
2008-11-25 13:15:27 +00:00
Takeshi AIHANA
a9afbf144f Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-24  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27713
2008-11-24 00:21:45 +00:00
Sven Neumann
bb5288edb2 Merged from trunk:
2008-11-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 561899 – GIMP can't save to mounted filesystem if file 
exists

	* plug-ins/file-uri/uri-backend-gvfs.c (copy_uri): pass the
	G_FILE_COPY_OVERWRITE flag to g_file_copy().


svn path=/branches/gimp-2-6/; revision=27710
2008-11-22 16:56:12 +00:00
Aron Xu
9c1a56ca48 Updated Simplified Chinese translations
svn path=/branches/gimp-2-6/; revision=27706
2008-11-22 11:22:35 +00:00
Aron Xu
ddeaefad21 Updated Simplified Chinese translations.
svn path=/branches/gimp-2-6/; revision=27705
2008-11-22 08:03:08 +00:00
Sven Neumann
1cf264c333 bumped version to 2.6.4 (interface age 4).
2008-11-21  Sven Neumann  <sven@gimp.org>

	* configure.in: bumped version to 2.6.4 (interface age 4).


svn path=/branches/gimp-2-6/; revision=27701
2008-11-21 19:57:19 +00:00
Sven Neumann
9b77a17ab1 Made 2.6.3 release.
2008-11-21  Sven Neumann  <sven@gimp.org>

	* Made 2.6.3 release.


svn path=/branches/gimp-2-6/; revision=27699
2008-11-21 19:53:42 +00:00
Sven Neumann
231478f87e news update
svn path=/branches/gimp-2-6/; revision=27687
2008-11-19 10:22:53 +00:00
Sven Neumann
e88b920e95 fixed typo
svn path=/branches/gimp-2-6/; revision=27686
2008-11-19 08:19:52 +00:00
Sven Neumann
59e86cd7f7 Merged from trunk:
2008-11-19  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 558454 – Plugin Map Color Range disapears from GIMP

	* plug-ins/script-fu/scripts/Makefile.am

	* plug-ins/script-fu/scripts/plug-in-compat.init: new file
	providing compatibility with plug-ins from older GIMP
	versions. Contains a reimplementation of plug-in-color-map based
	on ideas and code from Eric Lamarque.

	* plug-ins/script-fu/scheme-wrapper.c (tinyscheme_init): load 
the
	plug-in-compat.init file.


svn path=/branches/gimp-2-6/; revision=27684
2008-11-19 08:17:55 +00:00
Martin Nordholts
da51068265 Merged from trunk:
Bug 559239 – Error while loading psd-data

* plug-ins/file-psd/psd-layer-res-load.c (load_layer_resource):
Layer resource data should not be padded.

svn path=/branches/gimp-2-6/; revision=27681
2008-11-18 19:56:53 +00:00
Sven Neumann
bf06538f08 added list of updated translations
svn path=/branches/gimp-2-6/; revision=27678
2008-11-17 12:52:44 +00:00
Ihar Hrachyshka
f589f79dad Updated Belarusian translation.
svn path=/branches/gimp-2-6/; revision=27673
2008-11-16 20:16:24 +00:00
Sven Neumann
4d960c813c updated list of bug-fixes for the 2.6.3 release
svn path=/branches/gimp-2-6/; revision=27665
2008-11-15 18:44:15 +00:00
Sven Neumann
5e7fea1fa0 Merged from trunk:
2008-11-15  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	* app/display/gimpdisplayshell-scroll.[ch]: removed function
	gimp_display_shell_scroll_get_scaled_viewport_offset() as it was
	only returning -shell->offset_x and -shell->offset_y and it
	started to show up in profiles.

	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-transform.c
	* app/display/gimpdisplayshell-scale.c: use the shell offsets
	directly.


svn path=/branches/gimp-2-6/; revision=27664
2008-11-15 18:41:58 +00:00
Martin Nordholts
7b16775970 Format ChangeLog..
svn path=/branches/gimp-2-6/; revision=27655
2008-11-15 10:40:35 +00:00
Martin Nordholts
4a69180038 Merged from trunk:
Bug 560903 – Explicit zooming with e.g. '1' should handle
zoom-focus better

* app/display/display-enums.h: Added
GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS.

* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_get_zoom_focus): Take the new enum into
account; if the image is centered, keep it centered, else use the
best-guess method.

* app/actions/view-commands.c (view_zoom_explicit_cmd_callback):
Use the new enum for explicit zooming.

svn path=/branches/gimp-2-6/; revision=27654
2008-11-15 10:30:36 +00:00
Martin Nordholts
deeb37611d Merged from trunk:
Bug 560245 – Zoom selection always centered in the Navigation tab

* app/display/gimpdisplayshell-scale.c (gimp_display_shell_scale):
Also take the image center and not only the zoom focus point into
account when deciding whether or not to center the image after
zoom.

svn path=/branches/gimp-2-6/; revision=27652
2008-11-15 08:07:43 +00:00
Sven Neumann
7e613cb725 added a missing entry and changed list order
svn path=/branches/gimp-2-6/; revision=27648
2008-11-14 08:06:27 +00:00
Sven Neumann
579196d85f news update in preparation of 2.6.3 release
svn path=/branches/gimp-2-6/; revision=27647
2008-11-14 08:02:28 +00:00
Sven Neumann
f7a24e615a Bug 559490 – Wrong lang tags for 'no'
2008-11-14  Sven Neumann  <sven@gimp.org>

	Bug 559490 – Wrong lang tags for 'no'

	* nb.po
	* nn.po: fixed tips locales.


svn path=/branches/gimp-2-6/; revision=27645
2008-11-14 07:24:35 +00:00
Sven Neumann
46df773a7c Merged from trunk:
2008-11-14  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	* app/display/gimpdisplayshell-preview.c
	(gimp_display_shell_draw_quad): check that the resulting area 
has
	positive width and height.


svn path=/branches/gimp-2-6/; revision=27643
2008-11-13 23:15:10 +00:00
Sven Neumann
b9f26b0878 Merged from trunk:
2008-11-13  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	Bug 559292 – SOTA Chrome cannot accept different textures

	* app/pdb/gimppdb-utils.c (gimp_pdb_image_is_base_type)
	(gimp_pdb_image_is_not_base_type): gimp_object_get_name() may 
	return NULL for images. Use gimp_image_get_uri() instead.


svn path=/branches/gimp-2-6/; revision=27636
2008-11-13 08:21:47 +00:00
Sven Neumann
39bc923949 Merged from trunk:
2008-11-11  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	Bug 560375 – Clearing an already empty document history crashes 
GIMP

	* app/actions/documents-commands.c 
(documents_clear_cmd_callback):
	gtk_recent_manager_purge_items() may return 0 but not set an
	error.


svn path=/branches/gimp-2-6/; revision=27621
2008-11-11 20:10:53 +00:00
Mugurel Tudor
97090b5e83 Updated Romanian translation by Cristian Secară <cristi AT secarica DOT
2008-11-11  Mugurel Tudor  <mugurelu@gnome.ro>

	* ro.po: Updated Romanian translation
	by Cristian Secară <cristi AT secarica DOT ro>

svn path=/branches/gimp-2-6/; revision=27619
2008-11-11 18:36:33 +00:00
Michael Natterer
d0f8b82b49 Merged from trunk:
2008-11-11  Michael Natterer  <mitch@gimp.org>

 	Merged from trunk:

	Bug 559580 – Image windows need better default locations

	* app/display/gimpdisplayshell.c (gimp_display_shell_style_set):
	Only set GDK_HINT_USER_POS on the empty display because it gets a
	position set by gimp. All other displays should be placed by the
	window manager. Fixes all displays appearing at 0,0.


svn path=/branches/gimp-2-6/; revision=27616
2008-11-11 10:16:41 +00:00
Sven Neumann
3bde105cc6 Merged from trunk:
2008-11-11  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	Bug 560283 – "Scale image..." causes distortion around edges.

	* app/paint-funcs/scale-region.c (scale): corrected fix for
	bug #556248.


svn path=/branches/gimp-2-6/; revision=27613
2008-11-11 07:48:13 +00:00
Sven Neumann
8e76c83094 Merged from trunk:
2008-11-11  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	* plug-ins/common/file-pdf.c: fixed size of the GimpParam array
	used for the return values.


svn path=/branches/gimp-2-6/; revision=27611
2008-11-10 23:18:28 +00:00
Martin Nordholts
22ca0ca2ec Merged from trunk:
Bug 559716 – Changing crop size in Crop Tool Options can make UI
unresponsive

* app/tools/gimprectangletool.c: Accept a broader range of x, y,
width and height values from the tool options so we don't end up
in an infinite signal emission loop.

svn path=/branches/gimp-2-6/; revision=27606
2008-11-10 20:19:59 +00:00
Michael Natterer
2363b9da61 Merged from trunk:
2008-11-10  Michael Natterer  <mitch@gimp.org>

 	Merged from trunk:

	* app/core/gimpdrawable-curves.c (gimp_drawable_curves_explicit):
	use GIMP_CURVE_FREE, not _SMOOTH. Fixes the resp. PDB call.


svn path=/branches/gimp-2-6/; revision=27602
2008-11-10 15:19:21 +00:00
Sven Neumann
ce84deadad updated German translation.
2008-11-10  Sven Neumann  <sven@gimp.org>

	* de.po: updated German translation.


svn path=/branches/gimp-2-6/; revision=27596
2008-11-10 08:50:03 +00:00
Sven Neumann
822c75a811 added file with a new string that was needed to fix a crash.
2008-11-10  Sven Neumann  <sven@gimp.org>

	* POTFILES.in: added file with a new string that was needed to 
fix
	a crash.


svn path=/branches/gimp-2-6/; revision=27594
2008-11-10 08:07:35 +00:00
Martin Nordholts
bdd117f7a3 Merged from trunk:
Bug 558549 – Stroking a single-point path with a paint tool
crashes GIMP

* app/paint/gimppaintcore-stroke.c
(gimp_paint_core_stroke_vectors): Return an error message if there
were not enough points to stroke.

* app/dialogs/stroke-dialog.c (stroke_dialog_response): Guard
against crashes if an implementator forgets to set an error.

svn path=/branches/gimp-2-6/; revision=27590
2008-11-09 20:49:44 +00:00
Martin Nordholts
1adaf5d4bb Merged from trunk:
* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_update_rulers): Avoid critical warnings
when converting an image window with a unit other than pixels into
a the empty image window. Probably fixes some of the crashes
reported by Windows users.

svn path=/branches/gimp-2-6/; revision=27587
2008-11-09 19:59:40 +00:00
Wadim Dziedzic
e0569162a7 Updated Polish translation by Bartosz Kosiorek
2008-11-08  Wadim Dziedzic  <wdziedzic@aviary.pl>

	* pl.po: Updated Polish translation by Bartosz Kosiorek

svn path=/branches/gimp-2-6/; revision=27575
2008-11-08 21:05:58 +00:00
Sven Neumann
6793220b35 Merged from trunk:
2008-11-04  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	* app/display/gimpdisplayshell-dnd.c
	(gimp_display_shell_drop_uri_list): when dropping multiple 
images
	to the empty image window, open them as seperate images.


svn path=/branches/gimp-2-6/; revision=27555
2008-11-04 22:34:45 +00:00
Sven Neumann
c962de9995 app/file/file-procedure.c app/file/file-save.c be careful when passing
2008-11-04  Sven Neumann  <sven@gimp.org>

	* app/file/file-procedure.c
	* app/file/file-save.c
	* app/pdb/gimpprocedure.c: be careful when passing literal 
strings
	to g_set_error().


svn path=/branches/gimp-2-6/; revision=27550
2008-11-04 12:36:01 +00:00
Michael Natterer
734d303422 Merged from trunk:
2008-11-03  Michael Natterer  <mitch@gimp.org>

 	Merged from trunk:

	Bug 559015 – Move tool gives bad information about px moved

	* app/tools/gimpeditselectiontool.c (gimp_edit_selection_tool_init):
	set cursor precision to PIXEL_BORDER because that's what the move
	tool snaps to.

	Unrelated: set CENTER_CROSS_SIZE to an odd number so it's drawn
	symmetrically.


svn path=/branches/gimp-2-6/; revision=27534
2008-11-03 19:33:07 +00:00
Wouter Bolsterlee
18271766d8 Updated Dutch translations by Filip Vervloesem.
2008-11-01  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* Updated Dutch translations by Filip Vervloesem.

svn path=/branches/gimp-2-6/; revision=27516
2008-11-01 14:58:14 +00:00
Takeshi AIHANA
4b331aa251 Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-01  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27508
2008-11-01 02:15:36 +00:00
Takeshi AIHANA
862570bb91 Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-01  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27507
2008-11-01 02:14:13 +00:00
Takeshi AIHANA
6d9b3ce298 Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-01  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27506
2008-11-01 02:12:20 +00:00
Takeshi AIHANA
392935c9fe Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-01  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27505
2008-11-01 02:10:58 +00:00
Takeshi AIHANA
d939fcb1e4 Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-01  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27504
2008-11-01 02:09:34 +00:00
Takeshi AIHANA
bf73252534 Fixed Japanese translation by Kiyotaka Nishibori.
2008-11-01  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Fixed Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27503
2008-11-01 02:08:11 +00:00
Sven Neumann
ca80cf72b4 Bug 558660 – help behavior for locales without manual translation
2008-10-31  Sven Neumann  <sven@gimp.org>

	Bug 558660 – help behavior for locales without manual 
translation
	
	* app/widgets/gimphelp.c (gimp_help_user_manual_is_installed):
	as a fallback check for the english user manual.


svn path=/branches/gimp-2-6/; revision=27501
2008-10-31 20:01:24 +00:00
Žygimantas Beručka
a4bd329270 Updated Lithuanian translation.
2008-10-30  Žygimantas Beručka  <zygis@gnome.org>

        * lt.po: Updated Lithuanian translation.

svn path=/branches/gimp-2-6/; revision=27479
2008-10-30 13:47:12 +00:00
Sven Neumann
28ba204bb5 bumped version to 2.6.3 (interface age 3).
2008-10-30  Sven Neumann  <sven@gimp.org>

	* configure.in: bumped version to 2.6.3 (interface age 3).


svn path=/branches/gimp-2-6/; revision=27478
2008-10-30 12:19:12 +00:00
Sven Neumann
f9b8861f17 Made 2.6.2 release.
2008-10-30  Sven Neumann  <sven@gimp.org>

        * Made 2.6.2 release.


svn path=/branches/gimp-2-6/; revision=27476
2008-10-30 12:17:26 +00:00
Sven Neumann
e3a95e0625 Backed out this change for now as it causes problem with some window
2008-10-30  Sven Neumann  <sven@gimp.org>

	Backed out this change for now as it causes problem with some
	window managers:

        Bug 556896 – Dialogs don't get minimized with single image 
window

	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplay-foreach.[ch]
	* app/widgets/gimpdialogfactory.[ch]: merged changes from trunk.
	Hide the toolbox and docks if the last display is iconified.
	Unhide them if a display is uniconified.


svn path=/branches/gimp-2-6/; revision=27475
2008-10-29 23:27:16 +00:00
Sven Neumann
b9a232a130 another news update for 2.6.2
svn path=/branches/gimp-2-6/; revision=27474
2008-10-29 23:08:20 +00:00
Sven Neumann
c7062fbe13 Merged from trunk:
2008-10-29  Sven Neumann  <sven@gimp.org>

 	Merged from trunk:

	Bug 557950 – Scaling in Gimp 2.6 is much slower than in Gimp 2.4

        * app/paint-funcs/scale-region.c: don't do multi-pass scaling
	when we are scaling up.


svn path=/branches/gimp-2-6/; revision=27473
2008-10-29 22:51:29 +00:00
Martin Nordholts
ff3915faad Merged from trunk:
Bug 558215 – unit and zoom entries in Statusbar not visible

* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_canvas_size_allocate): Don't try to be clever,
call gimp_display_shell_scaled() whenever the canvas size changes
so a newly created display shell gets updated properly.

svn path=/branches/gimp-2-6/; revision=27471
2008-10-29 22:38:03 +00:00
Sven Neumann
c49a888f90 Merged from trunk:
2008-10-29  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 558451 – Cannot build GIMP using Sun CC on Solaris 2.8

	* app/pdb/gimp-pdb-compat.c
	* app/gegl/gimpoperationtilesink.c
	* app/gegl/gimpoperationtilesource.c
	* app/tools/gimpgegltool.c: applied patches from Eric Lamarque
	fixing the build using Sun CC on Solaris.


svn path=/branches/gimp-2-6/; revision=27468
2008-10-29 22:25:13 +00:00
Sven Neumann
da52731c61 news update for 2.6.2
svn path=/branches/gimp-2-6/; revision=27463
2008-10-29 19:46:38 +00:00
Sven Neumann
9b6b2150f3 Merged from trunk:
2008-10-29  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 558420 – projection incorrect with alpha-less layers

	* app/core/gimpprojection-construct.c 
(gimp_projection_initialize):
	need to initialize the projection if the covering layer is not
	opaque.


svn path=/branches/gimp-2-6/; revision=27461
2008-10-29 19:18:37 +00:00
Martin Nordholts
c7da31ff67 Merged from trunk:
Bug 556603 – Zoom region always zooms in center of image

* app/tools/gimpmagnifytool.c (gimp_magnify_tool_button_release):
When zooming with a click, use gimp_display_shell_scale() instead
of local zoom logic.

svn path=/branches/gimp-2-6/; revision=27454
2008-10-28 18:24:42 +00:00
Petr Kovář
f141af3118 Fixed Czech translation (bug #517967).
svn path=/branches/gimp-2-6/; revision=27447
2008-10-27 23:28:56 +00:00
Leonardo Ferreira Fontenelle
e116ec86f6 Updated Brazilian Portuguese translation.
2008-10-26  Leonardo Ferreira Fontenelle  <leonardof@gnome.org>

	* pt_BR.po: Updated Brazilian Portuguese translation.

svn path=/branches/gimp-2-6/; revision=27414
2008-10-26 16:07:36 +00:00
Michael Natterer
22df4530dd Merged from trunk:
2008-10-25  Michael Natterer  <mitch@gimp.org>

	Merged from trunk:

	Bug 557870 – "Qmask" message popping up here and there

	* app/display/gimpdisplayshell-title.c
	(gimp_display_shell_format_title): use
	gimp_viewable_get_description() instead of gimp_object_get_name()
	for displaying the active drawable's name so the quick mask and
	the floating selection have the same names as in the
	layers/channels dialogs.


svn path=/branches/gimp-2-6/; revision=27406
2008-10-25 15:30:28 +00:00
Sven Neumann
b431ad5b7c Bug 557705 – compatibility with GEGL > 0.0.20
2008-10-24  Sven Neumann  <sven@gimp.org>

	Bug 557705 – compatibility with GEGL > 0.0.20

	* app/core/gimpdrawable-brightness-contrast.c
	* app/core/gimpdrawable-invert.c
	* app/tools/gimpbrightnesscontrasttool.c: choose GEGL operation
	names based on the GEGL version we are being used with.


svn path=/branches/gimp-2-6/; revision=27391
2008-10-24 18:39:48 +00:00
Sven Neumann
546bad8d6c added gimp_gegl_check_version(), a run-time GEGL version check.
2008-10-24  Sven Neumann  <sven@gimp.org>

	* app/gegl/gimp-gegl-utils.[ch]: added 
gimp_gegl_check_version(),
	a run-time GEGL version check.

	* app/core/gimpimagemap.c (gimp_image_map_apply): use the new
	function to determine the names of the GEGL ops to use.


svn path=/branches/gimp-2-6/; revision=27389
2008-10-24 15:56:57 +00:00
Sven Neumann
5c4e7329cc also commit ChangeLog entry...
svn path=/branches/gimp-2-6/; revision=27387
2008-10-24 07:25:18 +00:00
Sven Neumann
3f3b0629f2 Bug 556896 – Dialogs don't get minimized with single image window
2008-10-24  Sven Neumann  <sven@gimp.org>

        Bug 556896 – Dialogs don't get minimized with single image 
window

	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplay-foreach.[ch]
	* app/widgets/gimpdialogfactory.[ch]: merged changes from trunk.
	Hide the toolbox and docks if the last display is iconified.
	Unhide them if a display is uniconified.


svn path=/branches/gimp-2-6/; revision=27386
2008-10-24 07:23:52 +00:00
Sven Neumann
b3fc164e3a Merged from trunk:
2008-10-24  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

        Bug 556248 – Scaling gives 'jagged' edges

        * app/paint-funcs/scale-region.c (scale): calculate pixel
        contributions based on pixel centers, not on pixel origins.


svn path=/branches/gimp-2-6/; revision=27381
2008-10-23 22:11:02 +00:00
Michael Natterer
5fec7a5fec Merged from trunk:
2008-10-23  Michael Natterer  <mitch@gimp.org>

	Merged from trunk:

	* app/plug-in/gimppluginprocframe.c
	(gimp_plug_in_proc_frame_dispose): set proc_frame->procedure to
	NULL *after* calling gimp_plug_in_cleanup(). Fixes the crash on
	windows in bug #557061 (but not the bug).


svn path=/branches/gimp-2-6/; revision=27377
2008-10-23 17:14:22 +00:00
Sven Neumann
05f306be9a fixed configure output
svn path=/branches/gimp-2-6/; revision=27373
2008-10-22 22:08:40 +00:00
Sven Neumann
c827e2f876 Merged from trunk:
2008-10-23  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* configure.in: removed check for Carbon and added a test for 
the
	target OS being Darwin instead.

	* app/config/gimpguiconfig.c: use PLATFORM_OSX instead of
	HAVE_CARBON to determine the default "web-browser" command.


svn path=/branches/gimp-2-6/; revision=27371
2008-10-22 22:05:18 +00:00
Sven Neumann
506c041b6c Merged from trunk:
2008-10-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* plug-ins/print/print-preview.c 
(print_preview_leave_notify_event):
	check the crossing mode and don't unset the "inside" flag when 
the
	event is caused by a pointer grab/ungrab.


svn path=/branches/gimp-2-6/; revision=27369
2008-10-22 20:34:59 +00:00
Martin Nordholts
8e0eec5e24 Bug 556804 – Zoom drop down doesn't update
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-callbacks.c: Fix calls to
gimp_display_shell_scaled() when Resize window on zoom is enabled.

svn path=/branches/gimp-2-6/; revision=27367
2008-10-22 19:03:41 +00:00
Sven Neumann
61fce9da50 Merged from trunk:
2008-10-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 524615 – Print not to scale

	* plug-ins/print/print.c: set the unit for dimensions on the 
Cairo
	context used for printing to GTK_UNIT_PIXELS.

	* plug-ins/print/print-draw-page.c (print_draw_page): changed 
the
	Cairo scale factors accordingly. Seems to fix printing on 
Windows.


svn path=/branches/gimp-2-6/; revision=27365
2008-10-22 15:02:26 +00:00
Sven Neumann
7eddc7067e Merged from trunk:
2008-10-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* app/widgets/gimpprogressbox.c: set box->progress to NULL in
	destroy() and check for progress being NULL in various places so
	we don't crash on API calls after the widget is destroyed.


svn path=/branches/gimp-2-6/; revision=27363
2008-10-22 11:04:48 +00:00
Sven Neumann
f40d14687e Merged from trunk:
2008-10-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 555246 – gimp crashes when a file is opened while a preview 
is
	generating

	* app/widgets/gimpthumbbox.c: set box->progress to NULL in
	destroy() and check for progress being NULL in various places so
	we don't crash on API calls after the widget is destroyed.


svn path=/branches/gimp-2-6/; revision=27361
2008-10-22 07:28:33 +00:00
Sven Neumann
74099ec043 Merged from trunk:
2008-10-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 556741 – Alpha layer automatically added (in psd format) but
	not desired

	* plug-ins/file-psd/psd-save.c: applied patch from Dennis Ranke
	that flattens the projection for indexed images.


svn path=/branches/gimp-2-6/; revision=27359
2008-10-22 06:48:02 +00:00
Sven Neumann
8ea8575729 Merged from trunk:
2008-10-22  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 555246 – gimp crashes when a file is opened while a preview 
is
	generating

        * app/widgets/gimpfiledialog.c: set dialog->progress to NULL in
        destroy() and check for progress being NULL in various places so
        we don't crash on API calls after the widget is destroyed.


svn path=/branches/gimp-2-6/; revision=27355
2008-10-22 05:58:20 +00:00
Sven Neumann
66878a5596 Merged from trunk:
2008-10-21  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* app/tools/gimpgegltool.c (gimp_param_spec_duplicate):
	GEGL_IS_PARAM_SPEC_PATH() became GEGL_IS_PARAM_SPEC_FILE_PATH()
	in GEGL 0.0.21.

	* app/tools/gimpgegltool.c (gimp_gegl_tool_dialog): for the
	combo-box, strip known prefixes from the GEGL operation names 
and
	use icons instead.


svn path=/branches/gimp-2-6/; revision=27352
2008-10-21 14:37:06 +00:00
Sven Neumann
48bb457d2d no need for "gimp:" in the 2.6 blacklist
svn path=/branches/gimp-2-6/; revision=27349
2008-10-21 11:08:30 +00:00
Sven Neumann
01f7d36fb7 make the operations blacklist work with GEGL >= 0.0.21.
2008-10-21  Sven Neumann  <sven@sven>

	* app/tools/gimpgegltool.c 
(gimp_gegl_tool_operation_blacklisted):
	make the operations blacklist work with GEGL >= 0.0.21.


svn path=/branches/gimp-2-6/; revision=27348
2008-10-21 11:05:56 +00:00
Sven Neumann
98d91c753c Merged from trunk:
2008-10-21  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* app/actions/file-commands.c (file_open_recent_cmd_callback): 
ref
	the GimpDisplay and GimpImageFile objects while holding a
	reference to them. Fixes a potential crash if GIMP is closed 
while
	the image is being loaded.


svn path=/branches/gimp-2-6/; revision=27347
2008-10-21 07:52:15 +00:00
Kenneth Nielsen
8635688949 Updated Danish translation
svn path=/branches/gimp-2-6/; revision=27344
2008-10-20 20:59:52 +00:00
Sven Neumann
e74d529b5b Merged from trunk:
2008-10-20  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* app/widgets/gimperrorconsole.c (gimp_error_console_init): 
don't
	make the font size even smaller. We already use a smaller font 
in
	the dock windows.


svn path=/branches/gimp-2-6/; revision=27342
2008-10-20 13:49:34 +00:00
Timo Jyrinki
d748c9b6e0 updated Finnish translation
svn path=/branches/gimp-2-6/; revision=27336
2008-10-20 12:47:38 +00:00
Gil Forcada Codinachs
c9bd78cd16 Updated Catalan translation by Joaquim Perez
svn path=/branches/gimp-2-6/; revision=27313
2008-10-18 17:07:35 +00:00
Sven Neumann
1dedf9dd93 Merged from trunk:
2008-10-17  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* plug-ins/file-psd/psd-save.c (xfwrite): fixed handling of 
empty
	strings. Don't quit silently, write an error message to stderr 
at
	least.


svn path=/branches/gimp-2-6/; revision=27303
2008-10-17 20:30:54 +00:00
Sven Neumann
fd440511ec another ChangeLog entry fix
svn path=/branches/gimp-2-6/; revision=27300
2008-10-17 16:35:45 +00:00
Sven Neumann
d1ece07d46 fixed ChangeLog entry
svn path=/branches/gimp-2-6/; revision=27299
2008-10-17 16:35:08 +00:00
Sven Neumann
fd794dcd81 Merged from trunk:
2008-10-17  Sven Neumann  <sven@sven>

	Merged from trunk:

	* app/core/gimp.[ch]: added signal Gimp::image-opened to 
announce
	that an image has been loaded and a display was created for it.

	* app/file/file-open.c (file_open_with_proc_and_display): call
	gimp_opened() to emit the new signal.

	* app/gui/dbus-service.xml
	* app/gui/gimpdbusservice.[ch]: propagate the 'opened' signal to
	listeners of the "org.gimp.GIMP.UI" DBus service.

	* app/gui/gui-unique.c: formatting.


svn path=/branches/gimp-2-6/; revision=27298
2008-10-17 12:04:32 +00:00
Kenneth Nielsen
0f1c045e6e Updated Danish translation
svn path=/branches/gimp-2-6/; revision=27295
2008-10-16 22:11:24 +00:00
Wadim Dziedzic
1509ad199a Updated Polish translation by Bartosz Kosiorek
2008-10-15  Wadim Dziedzic  <wdziedzic@aviary.pl>

	* pl.po: Updated Polish translation by Bartosz Kosiorek

svn path=/branches/gimp-2-6/; revision=27291
2008-10-15 19:34:00 +00:00
Sven Neumann
ee0700eab4 Merged from trunk:
2008-10-14  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* themes/Default/images/stock-gegl.svg
	* themes/Default/images/stock-gegl-22.svg
	* themes/Default/images/stock-gegl-22.png: remove white from the
	shadow to render correctly on dark backgrounds.


svn path=/branches/gimp-2-6/; revision=27289
2008-10-15 16:22:21 +00:00
Sven Neumann
1f964d809b Merged from trunk:
2008-10-14  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	* app/widgets/gimpdialogfactory.c 
(gimp_dialog_factory_add_dialog):
	let new docks appear at the pointer position.


svn path=/branches/gimp-2-6/; revision=27283
2008-10-14 21:59:35 +00:00
Kenneth Nielsen
295aaddec6 Updated Danish translation by Joe Dalton
svn path=/branches/gimp-2-6/; revision=27280
2008-10-14 20:31:55 +00:00
Sven Neumann
3cb4decc3e Merged from trunk:
2008-10-13  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 556182 – Could you please explain a few strings [I18N]
	
	* plug-ins/pygimp/plug-ins/py-slice.py: added translator 
comments.


svn path=/branches/gimp-2-6/; revision=27273
2008-10-13 20:34:14 +00:00
Timo Jyrinki
a1dba13e8b updated Finnish translation
svn path=/branches/gimp-2-6/; revision=27267
2008-10-13 18:42:55 +00:00
Takeshi AIHANA
d1605dff42 Updated Japanese translation by Kiyotaka Nishibori.
2008-10-13  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27264
2008-10-13 10:46:35 +00:00
Takeshi AIHANA
6462994811 Updated Japanese translation by Kiyotaka Nishibori.
2008-10-13  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27263
2008-10-13 10:45:27 +00:00
Takeshi AIHANA
eea2cb805a Updated Japanese translation by Kiyotaka Nishibori.
2008-10-13  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation by
                  Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27262
2008-10-13 10:44:14 +00:00
Takeshi AIHANA
74b9c377d1 Updated Japanese translation by Kiyotaka Nishibori.
2008-10-13  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27261
2008-10-13 10:43:00 +00:00
Takeshi AIHANA
1054e1f3dc Updated Japanese translation by Kiyotaka Nishibori.
2008-10-13  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation by
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27260
2008-10-13 10:42:02 +00:00
Takeshi AIHANA
2145d1b848 Updated Japanese translation by Kiyotaka Nishibori.
2008-10-13  Takeshi AIHANA <takeshi.aihana@gmail.com>

        * ja.po: Updated Japanese translation by 
                 Kiyotaka Nishibori.

svn path=/branches/gimp-2-6/; revision=27259
2008-10-13 10:40:55 +00:00
Aron Xu
2e55bbad69 Updated zh_CN translation.
svn path=/branches/gimp-2-6/; revision=27225
2008-10-11 08:34:24 +00:00
Aron Xu
49095c2b72 Updated zh_CN translations by kappa8086.
svn path=/branches/gimp-2-6/; revision=27224
2008-10-11 05:20:25 +00:00
Aron Xu
a057214ad6 Updated zh_CN translations by kappa8086.
svn path=/branches/gimp-2-6/; revision=27223
2008-10-11 05:18:09 +00:00
Aron Xu
fdfff5d785 Updated zh_CN translations by kappa8086.
svn path=/branches/gimp-2-6/; revision=27222
2008-10-11 05:17:49 +00:00
Aron Xu
c77ab8f021 Updated zh_CN translations by kappa8086.
svn path=/branches/gimp-2-6/; revision=27221
2008-10-11 05:17:17 +00:00
Aron Xu
bb8427568c Updated zh_CN translations by kappa8086.
svn path=/branches/gimp-2-6/; revision=27220
2008-10-11 05:15:38 +00:00
Aron Xu
69f584c215 Updated zh_CN translations by kappa8086.
svn path=/branches/gimp-2-6/; revision=27219
2008-10-11 05:15:13 +00:00
Claude Paroz
8ab4012d0b Updated French translation.
2008-10-10  Claude Paroz  <claude@2xlibre.net>

	* fr.po: Updated French translation.

svn path=/branches/gimp-2-6/; revision=27215
2008-10-10 20:29:11 +00:00
Claude Paroz
8e607bf30c Updated French translation by Julien Hardelin.
2008-10-10  Claude Paroz  <claude@2xlibre.net>

	* fr.po: Updated French translation by Julien Hardelin.

svn path=/branches/gimp-2-6/; revision=27213
2008-10-10 20:24:20 +00:00
Michael Natterer
cae04603dd Merged from trunk:
2008-10-10  Michael Natterer  <mitch@gimp.org>

	Merged from trunk:

	* app/tools/gimpmovetool.c (gimp_move_tool_button_release): flush
	the image after setting active items back from temporarily
	selected ones. Fixes menu item sensitivity.


svn path=/branches/gimp-2-6/; revision=27210
2008-10-10 15:42:13 +00:00
Daniel Nylander
4e35289b4b sv.po: Updated Swedish translation
svn path=/branches/gimp-2-6/; revision=27201
2008-10-09 20:19:59 +00:00
Sven Neumann
fb58d98168 updated German translation.
2008-10-09  Sven Neumann  <sven@gimp.org>

	* de.po: updated German translation.



svn path=/branches/gimp-2-6/; revision=27198
2008-10-09 18:54:10 +00:00
Sven Neumann
e97a0a1900 Merged from trunk:
2008-10-09  Sven Neumann  <sven@gimp.org>

	Merged from trunk:

	Bug 555697 – build fails if configured with --without-libjpeg
	
	* plug-ins/Makefile.am: applied patch from Simon Zilliken that
	disables the build of the PSD plug-in if JPEG support is 
disabled.


svn path=/branches/gimp-2-6/; revision=27197
2008-10-09 16:36:04 +00:00
Michael Natterer
d8a1a39157 Merged from trunk:
2008-10-09  Michael Natterer  <mitch@gimp.org>

	Merged from trunk:

	This is not exactly a bugfix-only commit, but fixing this bug
	was the original reason for all the curve and image map tool
	refactorings that went into 2.6. It would be silly not to
	fix it just because I simply forgot to hack the final step of
	enabling all the new code. The two new translatable strings are
	a PITA, sorry about that; but better than still only exporting
	the old curves and levels formats in 2.6.

	Bug 134956 – Curves tool doesn't save free curves

	* app/core/gimpmarshal.list
	* app/widgets/gimpsettingsbox.[ch]: add signal "file-dialog-setup"
	and emit it when the export/import file chooser is fully
	constructed. Callbacks can then do additional things to the
	dialog, like adding custom buttons.

	* app/tools/gimpcurvestool.h
	* app/tools/gimplevelstool.h: add boolean member
	"export_old_format".

	* app/tools/gimpcurvestool.c
	* app/tools/gimplevelstool.c (gimp_*_tool_dialog): connect to
	the settings box' "file-dialog-setup".

	(gimp_*_tool_export_setup): new callback which adds a toggle to
	the file choosers that allows to export to the old format.
	Default saving the new format, we defaulted to the old one before.

	(gimp_*_tool_settings_export): check the "export_old_format"
	boolean and only save the cruft format if it is TRUE; chain up
	otherwise, which generically saves the new format.

	* app/tools/gimplevelstool.c (gimp_levels_tool_settings_import):
	add the same file format detection code as in the curves tool
	so it transparently loads old and new levels files.


svn path=/branches/gimp-2-6/; revision=27195
2008-10-09 15:32:24 +00:00
Michael Natterer
27967223ef Merged from trunk:
2008-10-09  Michael Natterer  <mitch@gimp.org>

	Merged from trunk:

	* app/gegl/gimpcurvesconfig.c (gimp_curves_config_save_cruft):
	when saving a curve of type GIMP_CURVE_FREE, don't use
	gimp_curve_get_point() because that returns nothing for free
	curves.

	(gimp_curves_config_load_cruft): reset the curve before loading it.

	* app/core/gimpcurve.c (gimp_curve_get_point): instead of above
	mentioned uninitialized nonsense, at least return -1,-1 for free
	curves.


svn path=/branches/gimp-2-6/; revision=27191
2008-10-09 09:44:56 +00:00
Sven Neumann
3c261c36db bumped version to 2.6.2 (interface age 2).
2008-10-09  Sven Neumann  <sven@gimp.org>

	* configure.in: bumped version to 2.6.2 (interface age 2).


svn path=/branches/gimp-2-6/; revision=27186
2008-10-08 22:43:22 +00:00
173 changed files with 105293 additions and 83971 deletions

757
ChangeLog
View File

@@ -1,3 +1,758 @@
2009-01-01 Sven Neumann <sven@gimp.org>
* Made 2.6.4 release.
2009-01-01 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 565223 Perspective transformation jagged edges / comb effect
* app/core/gimp-transform-region.c: reverted the code change, but
not the cleanups, from commit r26786.
2008-12-28 Sven Neumann <sven@gimp.org>
* app/tools/gimpgegltool.c (gimp_param_spec_duplicate): fixed
handling of GEGL minor version number in compile-time check.
2008-12-28 Sven Neumann <sven@gimp.org>
* app/tools/gimpgegltool.c (gimp_param_spec_duplicate): fixed typo
in GEGL version number check.
2008-12-28 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 563985 jpg save dialog: "cancel" is treated like "commit"
for settings
* plug-ins/file-jpeg/jpeg.c (run): only attach the comment and
settings to the image if the save was successful.
2008-12-27 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 564087 Using clone tool on a layer with a part out of canvas
causes crashes
* app/paint/gimppaintcore.c (gimp_paint_core_paste): intersect the
rectangle with the extents of the saved projection.
2008-12-27 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 564593 crash when the drawable is changed while a color
tools is active
* app/core/gimpdrawable-shadow.c (gimp_drawable_merge_shadow_tiles):
keep a reference to the shadow tiles because it might otherwise be
free'd under our feet.
2008-12-21 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 564869 GIMP crashes on selecting Tools->GEGL operation
* app/tools/gimptool.c (gimp_tool_initialize): check if the tool
has set an error.
2008-12-21 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 565138 python-fu-foggify does not check if image is in rgb mode
* plug-ins/pygimp/plug-ins/foggify.py (foggify): fixed handling of
grayscale images.
2008-12-04 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 563130 Hue selection mode does not cross the 0-360 degrees line
* app/core/gimpimage-contiguous-region.c (pixel_difference):
applied patch from Daniel Hornung.
2008-12-04 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 563179 Scrollbars not resized when we extend the canvas size
* app/display/gimpdisplayshell-handlers.c
(gimp_display_shell_size_changed_detailed_handler): Add explicit
call to gimp_display_shell_scroll_clamp_and_update() at the end to
make sure it is called.
2008-12-04 Sven Neumann <sven@gimp.org>
Merged from trunk:
* tools/pdbgen/pdb/convert.pdb: fixed an error in the documentation
of the gimp-image-convert-rgb procedure.
* app/pdb/convert-cmds.c
* libgimp/gimpconvert_pdb.c: regenerated.
2008-12-03 Sven Neumann <sven@gimp.org>
* app/core/gimpimagemap.c (gimp_image_map_apply): when compiling
against GEGL from trunk, use "gegl:translate" instead of "shift".
2008-11-27 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 562459 PF_PALETTE: 'TypeError' when used in a plugin that is
registered in <Image>
* plug-ins/pygimp/gimpui.defs (gimp_palette_select_button_new):
the 'title' parameter is optional.
2008-11-27 Michael Natterer <mitch@gimp.org>
Merged from trunk:
Bug 562427 Compilation with --as-needed
* app/Makefile.am (gimp_console_2_7_LDADD): add $(GLIB_LIBS) so
libgthread gets pulled in explicitely.
2008-11-27 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 562386 PF_SLIDER and PF_SPINNER 'Step' values do not change
consistently...
* plug-ins/pygimp/gimpfu.py (SliderEntry): set the precision on
the slider just as we do it for the spin-button.
2008-11-27 Sven Neumann <sven@gimp.org>
Merged from trunk:
* plug-ins/pygimp/gimpfu.py (SpinnerEntry): let SpinnerEntry
return a float instead of trying to convert the value to an int.
2008-11-27 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 562386 PF_SLIDER and PF_SPINNER 'Step' values do not change
consistently...
* plug-ins/pygimp/gimpfu.py (SpinnerEntry): initialize the
spin-button the way that gtk_spin_button_new_with_range() is
implemented.
2008-11-26 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 562366 Default image dimensions are not correctly
transferred in the file/new dialog box
* app/dialogs/preferences-dialog.c
(prefs_template_select_callback): We need to copy the template in
the same way as in the New Image dialog.
* app/dialogs/image-new-dialog.c (image_new_dialog_set): ... and
when we copy the template to the New Image dialog.
2008-11-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 561899 GIMP can't save to mounted filesystem if file exists
* plug-ins/file-uri/uri-backend-gvfs.c (copy_uri): pass the
G_FILE_COPY_OVERWRITE flag to g_file_copy().
2008-11-21 Sven Neumann <sven@gimp.org>
* configure.in: bumped version to 2.6.4 (interface age 4).
2008-11-21 Sven Neumann <sven@gimp.org>
* Made 2.6.3 release.
2008-11-19 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 558454 Plugin Map Color Range disappears from GIMP
* plug-ins/script-fu/scripts/Makefile.am
* plug-ins/script-fu/scripts/plug-in-compat.init: new file
providing compatibility with plug-ins from older GIMP
versions. Contains a reimplementation of plug-in-color-map based
on ideas and code from Eric Lamarque.
* plug-ins/script-fu/scheme-wrapper.c (tinyscheme_init): load the
plug-in-compat.init file.
2008-11-18 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 559239 Error while loading psd-data
* plug-ins/file-psd/psd-layer-res-load.c (load_layer_resource):
Layer resource data should not be padded.
2008-11-15 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/display/gimpdisplayshell-scroll.[ch]: removed function
gimp_display_shell_scroll_get_scaled_viewport_offset() as it was
only returning -shell->offset_x and -shell->offset_y and it
started to show up in profiles.
* app/display/gimpdisplayshell-draw.c
* app/display/gimpdisplayshell-transform.c
* app/display/gimpdisplayshell-scale.c: use the shell offsets
directly.
2008-11-15 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 560903 Explicit zooming with e.g. '1' should handle
zoom-focus better
* app/display/display-enums.h: Added
GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS.
* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_get_zoom_focus): Take the new enum into
account; if the image is centered, keep it centered, else use the
best-guess method.
* app/actions/view-commands.c (view_zoom_explicit_cmd_callback):
Use the new enum for explicit zooming.
* app/display/display-enums.c: Regenerated.
2008-11-15 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 560245 Zoom selection always centered in the Navigation tab
* app/display/gimpdisplayshell-scale.c (gimp_display_shell_scale):
Also take the image center and not only the zoom focus point into
account when deciding whether or not to center the image after
zoom.
2008-11-14 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/display/gimpdisplayshell-preview.c
(gimp_display_shell_draw_quad): check that the resulting area has
positive width and height.
2008-11-13 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 559292 SOTA Chrome cannot accept different textures
* app/pdb/gimppdb-utils.c (gimp_pdb_image_is_base_type)
(gimp_pdb_image_is_not_base_type): gimp_object_get_name() may
return NULL for images. Use gimp_image_get_uri() instead.
2008-11-11 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 560375 Clearing an already empty document history crashes GIMP
* app/actions/documents-commands.c (documents_clear_cmd_callback):
gtk_recent_manager_purge_items() may return 0 but not set an
error.
2008-11-11 Michael Natterer <mitch@gimp.org>
Merged from trunk:
Bug 559580 Image windows need better default locations
* app/display/gimpdisplayshell.c (gimp_display_shell_style_set):
Only set GDK_HINT_USER_POS on the empty display because it gets a
position set by gimp. All other displays should be placed by the
window manager. Fixes all displays appearing at 0,0.
2008-11-11 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 560283 "Scale image..." causes distortion around edges.
* app/paint-funcs/scale-region.c (scale): corrected fix for
bug #556248.
2008-11-11 Sven Neumann <sven@gimp.org>
Merged from trunk:
* plug-ins/common/file-pdf.c: fixed size of the GimpParam array
used for the return values.
2008-11-10 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 559716 Changing crop size in Crop Tool Options can make UI
unresponsive
* app/tools/gimprectangletool.c: Accept a broader range of x, y,
width and height values from the tool options so we don't end up
in an infinite signal emission loop.
2008-11-10 Michael Natterer <mitch@gimp.org>
Merged from trunk:
* app/core/gimpdrawable-curves.c (gimp_drawable_curves_explicit):
use GIMP_CURVE_FREE, not _SMOOTH. Fixes the resp. PDB call.
2008-11-09 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 558549 Stroking a single-point path with a paint tool
crashes GIMP
* app/paint/gimppaintcore-stroke.c
(gimp_paint_core_stroke_vectors): Return an error message if there
were not enough points to stroke.
* app/dialogs/stroke-dialog.c (stroke_dialog_response): Guard
against crashes if an implementator forgets to set an error.
2008-11-09 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_update_rulers): Avoid critical warnings
when converting an image window with a unit other than pixels into
a the empty image window. Probably fixes some of the crashes
reported by Windows users.
2008-11-04 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/display/gimpdisplayshell-dnd.c
(gimp_display_shell_drop_uri_list): when dropping multiple images
to the empty image window, open them as seperate images.
2008-11-04 Sven Neumann <sven@gimp.org>
* app/file/file-procedure.c
* app/file/file-save.c
* app/pdb/gimpprocedure.c: be careful when passing literal strings
to g_set_error().
2008-11-03 Michael Natterer <mitch@gimp.org>
Merged from trunk:
Bug 559015 Move tool gives bad information about px moved
* app/tools/gimpeditselectiontool.c (gimp_edit_selection_tool_init):
set cursor precision to PIXEL_BORDER because that's what the move
tool snaps to.
Unrelated: set CENTER_CROSS_SIZE to an odd number so it's drawn
symmetrically.
2008-10-31 Sven Neumann <sven@gimp.org>
Bug 558660 help behavior for locales without manual translation
* app/widgets/gimphelp.c (gimp_help_user_manual_is_installed):
as a fallback check for the english user manual.
2008-10-30 Sven Neumann <sven@gimp.org>
* configure.in: bumped version to 2.6.3 (interface age 3).
2008-10-30 Sven Neumann <sven@gimp.org>
* Made 2.6.2 release.
2008-10-30 Sven Neumann <sven@gimp.org>
Backed out this change for now as it causes problem with some
window managers:
Bug 556896 Dialogs don't get minimized with single image window
* app/display/gimpdisplayshell.c
* app/display/gimpdisplay-foreach.[ch]
* app/widgets/gimpdialogfactory.[ch]: merged changes from trunk.
Hide the toolbox and docks if the last display is iconified.
Unhide them if a display is uniconified.
2008-10-29 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 557950 Scaling in Gimp 2.6 is much slower than in Gimp 2.4
* app/paint-funcs/scale-region.c: don't do multi-pass scaling
when we are scaling up.
2008-10-29 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 558215 unit and zoom entries in Statusbar not visible
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_canvas_size_allocate): Don't try to be clever,
call gimp_display_shell_scaled() whenever the canvas size changes
so a newly created display shell gets updated properly.
2008-10-29 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 558451 Cannot build GIMP using Sun CC on Solaris 2.8
* app/pdb/gimp-pdb-compat.c
* app/gegl/gimpoperationtilesink.c
* app/gegl/gimpoperationtilesource.c
* app/tools/gimpgegltool.c: applied patches from Eric Lamarque
fixing the build using Sun CC on Solaris.
2008-10-29 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 558420 projection incorrect with alpha-less layers
* app/core/gimpprojection-construct.c (gimp_projection_initialize):
need to initialize the projection if the covering layer is not
opaque.
2008-10-28 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 556603 Zoom region always zooms in center of image
* app/tools/gimpmagnifytool.c (gimp_magnify_tool_button_release):
When zooming with a click, use gimp_display_shell_scale() instead
of local zoom logic.
2008-10-25 Michael Natterer <mitch@gimp.org>
Merged from trunk:
Bug 557870 "Qmask" message popping up here and there
* app/display/gimpdisplayshell-title.c
(gimp_display_shell_format_title): use
gimp_viewable_get_description() instead of gimp_object_get_name()
for displaying the active drawable's name so the quick mask and
the floating selection have the same names as in the
layers/channels dialogs.
2008-10-24 Sven Neumann <sven@gimp.org>
Bug 557705 compatibility with GEGL > 0.0.20
* app/core/gimpdrawable-brightness-contrast.c
* app/core/gimpdrawable-invert.c
* app/tools/gimpbrightnesscontrasttool.c: choose GEGL operation
names based on the GEGL version we are being used with.
2008-10-24 Sven Neumann <sven@gimp.org>
Bug 557705 compatibility with GEGL > 0.0.20
* app/gegl/gimp-gegl-utils.[ch]: added gimp_gegl_check_version(),
a run-time GEGL version check.
* app/core/gimpimagemap.c (gimp_image_map_apply): use the new
function to determine the names of the GEGL ops to use.
2008-10-24 Sven Neumann <sven@gimp.org>
Bug 556896 Dialogs don't get minimized with single image window
* app/display/gimpdisplayshell.c
* app/display/gimpdisplay-foreach.[ch]
* app/widgets/gimpdialogfactory.[ch]: merged changes from trunk.
Hide the toolbox and docks if the last display is iconified.
Unhide them if a display is uniconified.
2008-10-24 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 556248 Scaling gives 'jagged' edges
* app/paint-funcs/scale-region.c (scale): calculate pixel
contributions based on pixel centers, not on pixel origins.
2008-10-23 Michael Natterer <mitch@gimp.org>
Merged from trunk:
* app/plug-in/gimppluginprocframe.c
(gimp_plug_in_proc_frame_dispose): set proc_frame->procedure to
NULL *after* calling gimp_plug_in_cleanup(). Fixes the crash on
windows in bug #557061 (but not the bug).
2008-10-23 Sven Neumann <sven@gimp.org>
Merged from trunk:
* configure.in: removed check for Carbon and added a test for the
target OS being Darwin instead.
* app/config/gimpguiconfig.c: use PLATFORM_OSX instead of
HAVE_CARBON to determine the default "web-browser" command.
2008-10-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
* plug-ins/print/print-preview.c (print_preview_leave_notify_event):
check the crossing mode and don't unset the "inside" flag when the
event is caused by a pointer grab/ungrab.
2008-10-22 Martin Nordholts <martinn@svn.gnome.org>
Merged from trunk:
Bug 556804 Zoom drop down doesn't update
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-callbacks.c: Fix calls to
gimp_display_shell_scaled() when Resize window on zoom is enabled.
2008-10-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 524615 Print not to scale
* plug-ins/print/print.c: set the unit for dimensions on the Cairo
context used for printing to GTK_UNIT_PIXELS.
* plug-ins/print/print-draw-page.c (print_draw_page): changed the
Cairo scale factors accordingly. Seems to fix printing on Windows.
2008-10-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/widgets/gimpprogressbox.c: set box->progress to NULL in
destroy() and check for progress being NULL in various places so
we don't crash on API calls after the widget is destroyed.
2008-10-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 555246 gimp crashes when a file is opened while a preview is
generating
* app/widgets/gimpthumbbox.c: set box->progress to NULL in
destroy() and check for progress being NULL in various places so
we don't crash on API calls after the widget is destroyed.
2008-10-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 556741 Alpha layer automatically added (in psd format) but
not desired
* plug-ins/file-psd/psd-save.c: applied patch from Dennis Ranke
that flattens the projection for indexed images.
2008-10-22 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/widgets/gimpfiledialog.c: set dialog->progress to NULL in
destroy() and check for progress being NULL in various places so
we don't crash on API calls after the widget is destroyed.
2008-10-21 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/tools/gimpgegltool.c (gimp_param_spec_duplicate):
GEGL_IS_PARAM_SPEC_PATH() became GEGL_IS_PARAM_SPEC_FILE_PATH()
in GEGL 0.0.21.
* app/tools/gimpgegltool.c (gimp_gegl_tool_dialog): for the
combo-box, strip known prefixes from the GEGL operation names and
use icons instead.
2008-10-21 Sven Neumann <sven@gimp.org>
* app/tools/gimpgegltool.c (gimp_gegl_tool_operation_blacklisted):
make the operations blacklist work with GEGL >= 0.0.21.
2008-10-21 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/actions/file-commands.c (file_open_recent_cmd_callback): ref
the GimpDisplay and GimpImageFile objects while holding a
reference to them. Fixes a potential crash if GIMP is closed while
the image is being loaded.
2008-10-20 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/widgets/gimperrorconsole.c (gimp_error_console_init): don't
make the font size even smaller. We already use a smaller font in
the dock windows.
2008-10-17 Sven Neumann <sven@gimp.org>
Merged from trunk:
* plug-ins/file-psd/psd-save.c (xfwrite): fixed handling of empty
strings. Don't quit silently, write an error message to stderr at
least.
2008-10-17 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/core/gimp.[ch]: added signal Gimp::image-opened to announce
that an image has been loaded and a display was created for it.
* app/file/file-open.c (file_open_with_proc_and_display): call
gimp_image_opened() to emit the new signal.
* app/gui/dbus-service.xml
* app/gui/gimpdbusservice.[ch]: propagate the 'opened' signal to
listeners of the "org.gimp.GIMP.UI" DBus service.
* app/gui/gui-unique.c: formatting.
2008-10-14 Sven Neumann <sven@gimp.org>
Merged from trunk:
* themes/Default/images/stock-gegl.svg
* themes/Default/images/stock-gegl-22.svg
* themes/Default/images/stock-gegl-22.png: remove white from the
shadow to render correctly on dark backgrounds.
2008-10-14 Sven Neumann <sven@gimp.org>
Merged from trunk:
* app/widgets/gimpdialogfactory.c (gimp_dialog_factory_add_dialog):
let new docks appear at the pointer position.
2008-10-13 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 556182 Could you please explain a few strings [I18N]
* plug-ins/pygimp/plug-ins/py-slice.py: added translator comments.
2008-10-10 Michael Natterer <mitch@gimp.org>
Merged from trunk:
* app/tools/gimpmovetool.c (gimp_move_tool_button_release): flush
the image after setting active items back from temporarily
selected ones. Fixes menu item sensitivity.
2008-10-09 Sven Neumann <sven@gimp.org>
Merged from trunk:
Bug 555697 build fails if configured with --without-libjpeg
* plug-ins/Makefile.am: applied patch from Simon Zilliken that
disables the build of the PSD plug-in if JPEG support is disabled.
2008-10-09 Michael Natterer <mitch@gimp.org>
Merged from trunk:
This is not exactly a bugfix-only commit, but fixing this bug
was the original reason for all the curve and image map tool
refactorings that went into 2.6. It would be silly not to
fix it just because I simply forgot to hack the final step of
enabling all the new code. The two new translatable strings are
a PITA, sorry about that; but better than still only exporting
the old curves and levels formats in 2.6.
Bug 134956 Curves tool doesn't save free curves
* app/core/gimpmarshal.list
* app/widgets/gimpsettingsbox.[ch]: add signal "file-dialog-setup"
and emit it when the export/import file chooser is fully
constructed. Callbacks can then do additional things to the
dialog, like adding custom buttons.
* app/tools/gimpcurvestool.h
* app/tools/gimplevelstool.h: add boolean member
"export_old_format".
* app/tools/gimpcurvestool.c
* app/tools/gimplevelstool.c (gimp_*_tool_dialog): connect to
the settings box' "file-dialog-setup".
(gimp_*_tool_export_setup): new callback which adds a toggle to
the file choosers that allows to export to the old format.
Default saving the new format, we defaulted to the old one before.
(gimp_*_tool_settings_export): check the "export_old_format"
boolean and only save the cruft format if it is TRUE; chain up
otherwise, which generically saves the new format.
* app/tools/gimplevelstool.c (gimp_levels_tool_settings_import):
add the same file format detection code as in the curves tool
so it transparently loads old and new levels files.
2008-10-09 Michael Natterer <mitch@gimp.org>
Merged from trunk:
* app/gegl/gimpcurvesconfig.c (gimp_curves_config_save_cruft):
when saving a curve of type GIMP_CURVE_FREE, don't use
gimp_curve_get_point() because that returns nothing for free
curves.
(gimp_curves_config_load_cruft): reset the curve before loading it.
* app/core/gimpcurve.c (gimp_curve_get_point): instead of above
mentioned uninitialized nonsense, at least return -1,-1 for free
curves.
2008-10-09 Sven Neumann <sven@gimp.org>
* configure.in: bumped version to 2.6.2 (interface age 2).
2008-10-09 Sven Neumann <sven@gimp.org>
* Made 2.6.1 release.
@@ -200,7 +955,7 @@
2008-10-03 Hans Breuer <hans@breuer.org>
* plug-ins/common/web-browser.c : when ShellExecute() is failing give
the detailed (currently intentionally untranslated) error message via
the detailed (currently intentionally untranslated) error message via
g_message()
* **/makefie.msc gimpdefs.msc app/gimpcore.def : updated

111
NEWS
View File

@@ -7,6 +7,117 @@ This is the stable branch of GIMP. No new features are being added
here, just bug-fixes.
Overview of Changes from GIMP 2.6.3 to GIMP 2.6.4
=================================================
* Bugs fixed:
565223 Perspective transformation jagged edges / comb effect
563985 jpg save dialog: "cancel" is treated like "commit"
for settings
564087 Using clone tool on a layer with a part out of canvas
causes crashes
564593 crash when the drawable is changed while a color tool
is active
564869 GIMP crashes on selecting Tools->GEGL operation
565138 python-fu-foggify does not check if image is in rgb mode
563130 Hue selection mode does not cross the 0-360 degrees line
563179 Scrollbars not resized when we extend the canvas size
562459 PF_PALETTE: 'TypeError' when used in a plugin that is
registered in <Image>
562427 Compilation with --as-needed
562386 PF_SLIDER and PF_SPINNER 'Step' values do not change
consistently...
562366 Default image dimensions are not correctly
transferred in the file/new dialog box
561899 GIMP can't save to mounted filesystem if file exists
* Updated translations:
Greek (el)
Hindi (hi)
Hungarian (hu)
Italian (it)
Japanese (ja)
Korean (ko)
Slovenian (sl)
Swedish (sv)
Tamil (ta)
Simplified Chinese (zh_CN)
Overview of Changes from GIMP 2.6.2 to GIMP 2.6.3
=================================================
* Bugs fixed:
558454 Plugin Map Color Range disappears from GIMP
559239 Error while loading psd-data
560903 Explicit zooming with e.g. '1' should handle
zoom-focus better
560245 Zoom selection always centered in the Navigation tab
559490 Wrong lang tags for 'no'
559292 SOTA Chrome cannot accept different textures
560375 Clearing an already empty document history crashes GIMP
559580 Image windows need better default locations
560283 "Scale image..." causes distortion around edges
559716 Changing crop size in Crop Tool Options can make UI
unresponsive
558549 Stroking a single-point path with a paint tool
crashes GIMP
559015 Move tool gives bad information about px moved
558660 help behavior for locales without manual translation
* Updated translations:
Belarusian (be)
Dutch (nl)
German (de)
Japanese (ja)
Lithuanian (lt)
Norwegian Bokmål (nb)
Norwegian Nynorsk (nn)
Polish (pl)
Romanian (ro)
Overview of Changes from GIMP 2.6.1 to GIMP 2.6.2
=================================================
* Bugs fixed:
557950 Scaling in Gimp 2.6 is much slower than in Gimp 2.4
558215 unit and zoom entries in Statusbar not visible
558451 Cannot build GIMP using Sun CC on Solaris 2.8
558420 projection incorrect with alpha-less layers
556603 Zoom region always zooms in center of image
557870 "Qmask" message popping up here and there
557705 compatibility with GEGL > 0.0.20
556248 Scaling gives 'jagged' edges
556804 Zoom drop down doesn't update
524615 Print not to scale
555246 gimp crashes when a file is opened while a preview is generating
556741 Alpha layer automatically added (in psd format)
556182 Could you please explain a few strings [I18N]
555697 build fails if configured with --without-libjpeg
134956 Curves tool doesn't save free curves
* Updated translations:
Czech (cs)
Danish (da)
Finnish (fi)
French (fr)
Japanese (ja)
Polish (pl)
Brazilian Portuguese (pt_BR)
Swedish (sv)
Simplified Chinese (zh_CN)
Overview of Changes from GIMP 2.6.0 to GIMP 2.6.1
=================================================

View File

@@ -182,6 +182,7 @@ gimp_console_2_6_LDADD = \
$(FONTCONFIG_LIBS) \
$(FREETYPE_LIBS) \
$(GEGL_LIBS) \
$(GLIB_LIBS) \
$(RT_LIBS) \
$(INTLLIBS) \
$(GIMPICONRC)

View File

@@ -232,8 +232,10 @@ documents_clear_cmd_callback (GtkAction *action,
gimp_container_clear (gimp->documents);
if (! gtk_recent_manager_purge_items (gtk_recent_manager_get_default (),
&error))
gtk_recent_manager_purge_items (gtk_recent_manager_get_default (),
&error);
if (error)
{
gimp_message (gimp, G_OBJECT (dialog), GIMP_MESSAGE_ERROR,
"%s", error->message);

View File

@@ -165,6 +165,9 @@ file_open_recent_cmd_callback (GtkAction *action,
GError *error = NULL;
return_if_no_display (display, data);
g_object_ref (display);
g_object_ref (imagefile);
progress = display->image ? NULL : GIMP_PROGRESS (display);
image = file_open_with_display (gimp, action_data_get_context (data),
@@ -184,6 +187,9 @@ file_open_recent_cmd_callback (GtkAction *action,
g_free (filename);
}
g_object_unref (imagefile);
g_object_unref (display);
}
}

View File

@@ -218,7 +218,7 @@ view_zoom_explicit_cmd_callback (GtkAction *action,
gimp_display_shell_scale (shell,
GIMP_ZOOM_TO,
(gdouble) value / 10000,
GIMP_ZOOM_FOCUS_IMAGE_CENTER);
GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS);
}
}

View File

@@ -42,7 +42,7 @@
#ifdef G_OS_WIN32
# define DEFAULT_WEB_BROWSER "not used on Windows"
#elif HAVE_CARBON
#elif PLATFORM_OSX
# define DEFAULT_WEB_BROWSER "open %s"
#else
# define DEFAULT_WEB_BROWSER "firefox %s"

View File

@@ -105,8 +105,8 @@ static void gimp_transform_region_lanczos (TileManager *orig_tiles,
GimpProgress *progress);
static inline void untransform_coords (const GimpMatrix3 *m,
gint x,
gint y,
const gint x,
const gint y,
gdouble *tu,
gdouble *tv,
gdouble *tw);
@@ -126,21 +126,22 @@ static inline gboolean supersample_dtest (const gdouble u0,
const gdouble u3,
const gdouble v3);
static void sample_adapt (PixelSurround *surround,
const gdouble uc,
const gdouble vc,
const gdouble u0,
const gdouble v0,
const gdouble u1,
const gdouble v1,
const gdouble u2,
const gdouble v2,
const gdouble u3,
const gdouble v3,
const gint level,
static void sample_adapt (TileManager *tm,
const gdouble xc,
const gdouble yc,
const gdouble x0,
const gdouble y0,
const gdouble x1,
const gdouble y1,
const gdouble x2,
const gdouble y2,
const gdouble x3,
const gdouble y3,
const gint level,
guchar *color,
const gint bpp,
const gint alpha);
const guchar *bg_color,
gint bpp,
gint alpha);
static void sample_linear (PixelSurround *surround,
const gdouble u,
@@ -431,14 +432,14 @@ gimp_transform_region_linear (TileManager *orig_tiles,
if (supersample_dtest (u[1], v[1], u[2], v[2],
u[3], v[3], u[4], v[4]))
{
sample_adapt (surround,
sample_adapt (orig_tiles,
u[0] - u1, v[0] - v1,
u[1] - u1, v[1] - v1,
u[2] - u1, v[2] - v1,
u[3] - u1, v[3] - v1,
u[4] - u1, v[4] - v1,
recursion_level,
d, destPR->bytes, alpha);
d, bg_color, destPR->bytes, alpha);
}
else
{
@@ -533,14 +534,14 @@ gimp_transform_region_cubic (TileManager *orig_tiles,
if (supersample_dtest (u[1], v[1], u[2], v[2],
u[3], v[3], u[4], v[4]))
{
sample_adapt (surround,
sample_adapt (orig_tiles,
u[0] - u1, v[0] - v1,
u[1] - u1, v[1] - v1,
u[2] - u1, v[2] - v1,
u[3] - u1, v[3] - v1,
u[4] - u1, v[4] - v1,
recursion_level,
d, destPR->bytes, alpha);
d, bg_color, destPR->bytes, alpha);
}
else
{
@@ -641,14 +642,14 @@ gimp_transform_region_lanczos (TileManager *orig_tiles,
if (supersample_dtest (u[1], v[1], u[2], v[2],
u[3], v[3], u[4], v[4]))
{
sample_adapt (surround,
sample_adapt (orig_tiles,
u[0] - u1, v[0] - v1,
u[1] - u1, v[1] - v1,
u[2] - u1, v[2] - v1,
u[3] - u1, v[3] - v1,
u[4] - u1, v[4] - v1,
recursion_level,
d, destPR->bytes, alpha);
d, bg_color, destPR->bytes, alpha);
}
else
{
@@ -838,42 +839,49 @@ sample_linear (PixelSurround *surround,
bilinear interpolation of a fixed point pixel
*/
static void
sample_bi (PixelSurround *surround,
const gint x,
const gint y,
guchar *color,
const gint bpp,
const gint alpha)
sample_bi (TileManager *tm,
const gint x,
const gint y,
guchar *color,
const guchar *bg_color,
const gint bpp,
const gint alpha)
{
const gint xscale = x & (FIXED_UNIT - 1);
const gint yscale = y & (FIXED_UNIT - 1);
const gint x0 = x >> FIXED_SHIFT;
const gint y0 = y >> FIXED_SHIFT;
gint rowstride;
const guchar *src = pixel_surround_lock (surround, x0, y0, &rowstride);
const guchar *s0 = src;
const guchar *s1 = src + bpp;
const guchar *s2 = src + rowstride;
const guchar *s3 = src + rowstride + bpp;
gint i;
const gint xscale = (x & (FIXED_UNIT-1));
const gint yscale = (y & (FIXED_UNIT-1));
const gint x0 = x >> FIXED_SHIFT;
const gint y0 = y >> FIXED_SHIFT;
const gint x1 = x0 + 1;
const gint y1 = y0 + 1;
guchar C[4][4];
gint i;
/* fill the color with default values, since read_pixel_data_1
* does nothing, when accesses are out of bounds.
*/
for (i = 0; i < 4; i++)
*(guint*) (&C[i]) = *(guint*) (bg_color);
read_pixel_data_1 (tm, x0, y0, C[0]);
read_pixel_data_1 (tm, x1, y0, C[2]);
read_pixel_data_1 (tm, x0, y1, C[1]);
read_pixel_data_1 (tm, x1, y1, C[3]);
#define lerp(v1, v2, r) \
(((guint)(v1) * (FIXED_UNIT - (guint)(r)) + \
(guint)(v2) * (guint)(r)) >> FIXED_SHIFT)
color[alpha]= lerp (lerp (s0[alpha], s1[alpha], yscale),
lerp (s2[alpha], s3[alpha], yscale), xscale);
color[alpha]= lerp (lerp (C[0][alpha], C[1][alpha], yscale),
lerp (C[2][alpha], C[3][alpha], yscale), xscale);
if (color[alpha])
{
/* to avoid problems, calculate with premultiplied alpha */
for (i = 0; i < alpha; i++)
{
color[i] = lerp (lerp (s0[i] * s0[alpha] / 255,
s1[i] * s1[alpha] / 255, yscale),
lerp (s2[i] * s2[alpha] / 255,
s3[i] * s3[alpha] / 255, yscale), xscale);
}
color[i] = lerp (lerp (C[0][i] * C[0][alpha] / 255,
C[1][i] * C[1][alpha] / 255, yscale),
lerp (C[2][i] * C[2][alpha] / 255,
C[3][i] * C[3][alpha] / 255, yscale), xscale);
}
else
{
@@ -936,29 +944,30 @@ supersample_dtest (const gdouble x0, const gdouble y0,
0..3 is a cycle around the quad
*/
static void
get_sample (PixelSurround *surround,
const gint xc,
const gint yc,
const gint x0,
const gint y0,
const gint x1,
const gint y1,
const gint x2,
const gint y2,
const gint x3,
const gint y3,
gint *cc,
const gint level,
guint *color,
const gint bpp,
const gint alpha)
get_sample (TileManager *tm,
const gint xc,
const gint yc,
const gint x0,
const gint y0,
const gint x1,
const gint y1,
const gint x2,
const gint y2,
const gint x3,
const gint y3,
gint *cc,
const gint level,
guint *color,
const guchar *bg_color,
const gint bpp,
const gint alpha)
{
if (!level || !supersample_test (x0, y0, x1, y1, x2, y2, x3, y3))
{
gint i;
guchar C[4];
sample_bi (surround, xc, yc, C, bpp, alpha);
sample_bi (tm, xc, yc, C, bg_color, bpp, alpha);
for (i = 0; i < bpp; i++)
color[i]+= C[i];
@@ -992,30 +1001,30 @@ get_sample (PixelSurround *surround,
bry = (y2 + yc) / 2;
by = (y3 + y2) / 2;
get_sample (surround,
get_sample (tm,
tlx,tly,
x0,y0, tx,ty, xc,yc, lx,ly,
cc, level-1, color, bpp, alpha);
cc, level-1, color, bg_color, bpp, alpha);
get_sample (surround,
get_sample (tm,
trx,try,
tx,ty, x1,y1, rx,ry, xc,yc,
cc, level-1, color, bpp, alpha);
cc, level-1, color, bg_color, bpp, alpha);
get_sample (surround,
get_sample (tm,
brx,bry,
xc,yc, rx,ry, x2,y2, bx,by,
cc, level-1, color, bpp, alpha);
cc, level-1, color, bg_color, bpp, alpha);
get_sample (surround,
get_sample (tm,
blx,bly,
lx,ly, xc,yc, bx,by, x3,y3,
cc, level-1, color, bpp, alpha);
cc, level-1, color, bg_color, bpp, alpha);
}
}
static void
sample_adapt (PixelSurround *surround,
sample_adapt (TileManager *tm,
const gdouble xc,
const gdouble yc,
const gdouble x0,
@@ -1028,6 +1037,7 @@ sample_adapt (PixelSurround *surround,
const gdouble y3,
const gint level,
guchar *color,
const guchar *bg_color,
const gint bpp,
const gint alpha)
{
@@ -1037,13 +1047,13 @@ sample_adapt (PixelSurround *surround,
C[0] = C[1] = C[2] = C[3] = 0;
get_sample (surround,
get_sample (tm,
DOUBLE2FIXED (xc), DOUBLE2FIXED (yc),
DOUBLE2FIXED (x0), DOUBLE2FIXED (y0),
DOUBLE2FIXED (x1), DOUBLE2FIXED (y1),
DOUBLE2FIXED (x2), DOUBLE2FIXED (y2),
DOUBLE2FIXED (x3), DOUBLE2FIXED (y3),
&cc, level, C, bpp, alpha);
&cc, level, C, bg_color, bpp, alpha);
if (!cc)
cc=1;
@@ -1124,8 +1134,8 @@ sample_cubic (PixelSurround *surround,
gint i;
const gint iu = floor(u);
const gint iv = floor(v);
gdouble du, dv;
gint rowstride;
gdouble du, dv;
const guchar *data;
/* lock the pixel surround */

View File

@@ -84,6 +84,7 @@ enum
RESTORE,
EXIT,
BUFFER_CHANGED,
IMAGE_OPENED,
LAST_SIGNAL
};
@@ -161,6 +162,15 @@ gimp_class_init (GimpClass *klass)
gimp_marshal_VOID__VOID,
G_TYPE_NONE, 0);
gimp_signals[IMAGE_OPENED] =
g_signal_new ("image-opened",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GimpClass, image_opened),
NULL, NULL,
gimp_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
object_class->dispose = gimp_dispose;
object_class->finalize = gimp_finalize;
@@ -1072,6 +1082,16 @@ gimp_message_valist (Gimp *gimp,
g_free (message);
}
void
gimp_image_opened (Gimp *gimp,
const gchar *uri)
{
g_return_if_fail (GIMP_IS_GIMP (gimp));
g_return_if_fail (uri != NULL);
g_signal_emit (gimp, gimp_signals[IMAGE_OPENED], 0, uri);
}
gboolean
gimp_use_gegl (Gimp *gimp)
{

View File

@@ -129,6 +129,10 @@ struct _GimpClass
gboolean force);
void (* buffer_changed) (Gimp *gimp);
/* emitted if an image is loaded and opened with a display */
void (* image_opened) (Gimp *gimp,
const gchar *uri);
};
@@ -188,6 +192,9 @@ void gimp_message_valist (Gimp *gimp,
const gchar *format,
va_list args);
void gimp_image_opened (Gimp *gimp,
const gchar *uri);
gboolean gimp_use_gegl (Gimp *gimp);

View File

@@ -809,7 +809,12 @@ gimp_curve_get_point (GimpCurve *curve,
g_return_if_fail (point >= 0 && point < curve->n_points);
if (curve->curve_type == GIMP_CURVE_FREE)
return;
{
if (x) *x = -1.0;
if (y) *y = -1.0;
return;
}
if (x) *x = curve->points[point].x;
if (y) *y = curve->points[point].y;

View File

@@ -25,9 +25,10 @@
#include "base/gimplut.h"
#include "base/lut-funcs.h"
#include "gegl/gimp-gegl-utils.h"
#include "gegl/gimpbrightnesscontrastconfig.h"
/* temp */
/* temporary */
#include "gimp.h"
#include "gimpimage.h"
@@ -60,10 +61,14 @@ gimp_drawable_brightness_contrast (GimpDrawable *drawable,
if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
{
GeglNode *node;
GeglNode *node;
const gchar *name;
name = (gimp_gegl_check_version (0, 0, 21) ?
"gegl:brightness-contrast" : "brightness-contrast");
node = g_object_new (GEGL_TYPE_NODE,
"operation", "brightness-contrast",
"operation", name,
NULL);
gimp_brightness_contrast_config_set_node (config, node);

View File

@@ -129,7 +129,7 @@ gimp_drawable_curves_explicit (GimpDrawable *drawable,
gimp_data_freeze (GIMP_DATA (curve));
gimp_curve_set_curve_type (curve, GIMP_CURVE_SMOOTH);
gimp_curve_set_curve_type (curve, GIMP_CURVE_FREE);
for (i = 0; i < 256; i++)
gimp_curve_set_curve (curve,

View File

@@ -25,7 +25,9 @@
#include "base/gimplut.h"
#include "base/lut-funcs.h"
/* temp */
#include "gegl/gimp-gegl-utils.h"
/* temporary */
#include "gimp.h"
#include "gimpimage.h"
@@ -48,9 +50,12 @@ gimp_drawable_invert (GimpDrawable *drawable,
if (gimp_use_gegl (GIMP_ITEM (drawable)->image->gimp))
{
GeglNode *invert;
GeglNode *invert;
const gchar *name;
invert = g_object_new (GEGL_TYPE_NODE, "operation", "invert", NULL);
name = gimp_gegl_check_version (0, 0, 21) ? "gegl:invert" : "invert";
invert = g_object_new (GEGL_TYPE_NODE, "operation", name, NULL);
gimp_drawable_apply_operation (drawable, progress, _("Invert"),
invert, TRUE);

View File

@@ -89,14 +89,16 @@ gimp_drawable_merge_shadow_tiles (GimpDrawable *drawable,
*/
if (gimp_drawable_mask_intersect (drawable, &x, &y, &width, &height))
{
PixelRegion shadowPR;
TileManager *tiles = tile_manager_ref (drawable->shadow);
PixelRegion shadowPR;
pixel_region_init (&shadowPR, drawable->shadow,
x, y, width, height, FALSE);
pixel_region_init (&shadowPR, tiles, x, y, width, height, FALSE);
gimp_drawable_apply_region (drawable, &shadowPR,
push_undo, undo_desc,
GIMP_OPACITY_OPAQUE, GIMP_REPLACE_MODE,
NULL, x, y);
tile_manager_unref (tiles);
}
}

View File

@@ -379,36 +379,44 @@ pixel_difference (const guchar *col1,
break;
case GIMP_SELECT_CRITERION_H:
av0 = (gint)col1[0];
av1 = (gint)col1[1];
av2 = (gint)col1[2];
bv0 = (gint)col2[0];
bv1 = (gint)col2[1];
bv2 = (gint)col2[2];
av0 = (gint) col1[0];
av1 = (gint) col1[1];
av2 = (gint) col1[2];
bv0 = (gint) col2[0];
bv1 = (gint) col2[1];
bv2 = (gint) col2[2];
gimp_rgb_to_hsv_int (&av0, &av1, &av2);
gimp_rgb_to_hsv_int (&bv0, &bv1, &bv2);
max = abs (av0 - bv0);
/* wrap around candidates for the actual distance */
{
gint dist1 = abs (av0 - bv0);
gint dist2 = abs (av0 - 360 - bv0);
gint dist3 = abs (av0 - bv0 + 360);
max = MIN (dist1, dist2);
if (max > dist3)
max = dist3;
}
break;
case GIMP_SELECT_CRITERION_S:
av0 = (gint)col1[0];
av1 = (gint)col1[1];
av2 = (gint)col1[2];
bv0 = (gint)col2[0];
bv1 = (gint)col2[1];
bv2 = (gint)col2[2];
av0 = (gint) col1[0];
av1 = (gint) col1[1];
av2 = (gint) col1[2];
bv0 = (gint) col2[0];
bv1 = (gint) col2[1];
bv2 = (gint) col2[2];
gimp_rgb_to_hsv_int (&av0, &av1, &av2);
gimp_rgb_to_hsv_int (&bv0, &bv1, &bv2);
max = abs (av1 - bv1);
break;
case GIMP_SELECT_CRITERION_V:
av0 = (gint)col1[0];
av1 = (gint)col1[1];
av2 = (gint)col1[2];
bv0 = (gint)col2[0];
bv1 = (gint)col2[1];
bv2 = (gint)col2[2];
av0 = (gint) col1[0];
av1 = (gint) col1[1];
av2 = (gint) col1[2];
bv0 = (gint) col2[0];
bv1 = (gint) col2[1];
bv2 = (gint) col2[2];
gimp_rgb_to_hsv_int (&av0, &av1, &av2);
gimp_rgb_to_hsv_int (&bv0, &bv1, &bv2);
max = abs (av2 - bv2);

View File

@@ -29,6 +29,8 @@
#include "paint-funcs/paint-funcs.h"
#include "gegl/gimp-gegl-utils.h"
#include "gimpdrawable.h"
#include "gimpdrawable-shadow.h"
#include "gimpimage.h"
@@ -455,6 +457,8 @@ gimp_image_map_apply (GimpImageMap *image_map,
{
if (! image_map->gegl)
{
const gchar *shift_name;
image_map->gegl = gegl_node_new ();
if (g_object_class_find_property (
@@ -466,9 +470,12 @@ gimp_image_map_apply (GimpImageMap *image_map,
"operation", "gimp-tilemanager-source",
NULL);
shift_name =
gimp_gegl_check_version (0, 0, 21) ? "gegl:translate" : "shift";
image_map->shift =
gegl_node_new_child (image_map->gegl,
"operation", "shift",
"operation", shift_name,
NULL);
gegl_node_add_child (image_map->gegl, image_map->operation);
@@ -510,9 +517,15 @@ gimp_image_map_apply (GimpImageMap *image_map,
* source OP, blend its result on top of the original
* pixels.
*/
GeglNode *over = gegl_node_new_child (image_map->gegl,
"operation", "over",
NULL);
const gchar *over_name;
GeglNode *over;
over_name =
gimp_gegl_check_version (0, 0, 21) ? "gegl:over" : "over";
over = gegl_node_new_child (image_map->gegl,
"operation", over_name,
NULL);
gegl_node_link_many (image_map->input,
image_map->shift,

View File

@@ -44,6 +44,7 @@ VOID: INT
VOID: INT, INT
VOID: INT, INT, INT, INT
VOID: OBJECT
VOID: OBJECT, BOOLEAN
VOID: OBJECT, INT
VOID: OBJECT, OBJECT
VOID: OBJECT, POINTER

View File

@@ -361,13 +361,14 @@ gimp_projection_initialize (GimpProjection *proj,
gimp_item_offsets (item, &off_x, &off_y);
if (gimp_item_get_visible (item) &&
! gimp_drawable_has_alpha (GIMP_DRAWABLE (item)) &&
! gimp_layer_get_mask (GIMP_LAYER (item)) &&
gimp_layer_get_mode (GIMP_LAYER (item)) == GIMP_NORMAL_MODE &&
(off_x <= x) &&
(off_y <= y) &&
(off_x + gimp_item_width (item) >= x + w) &&
if (gimp_item_get_visible (item) &&
! gimp_drawable_has_alpha (GIMP_DRAWABLE (item)) &&
! gimp_layer_get_mask (GIMP_LAYER (item)) &&
gimp_layer_get_mode (GIMP_LAYER (item)) == GIMP_NORMAL_MODE &&
gimp_layer_get_opacity (GIMP_LAYER (item)) == GIMP_OPACITY_OPAQUE &&
(off_x <= x) &&
(off_y <= y) &&
(off_x + gimp_item_width (item) >= x + w) &&
(off_y + gimp_item_height (item) >= y + h))
{
coverage = TRUE;

View File

@@ -187,7 +187,11 @@ image_new_dialog_set (GtkWidget *widget,
template = gimp_image_new_get_last_template (dialog->context->gimp,
image);
gimp_config_sync (G_OBJECT (template), G_OBJECT (dialog->template), 0);
/* make sure the resolution values are copied first (see bug #546924) */
gimp_config_sync (G_OBJECT (template), G_OBJECT (dialog->template),
GIMP_TEMPLATE_PARAM_COPY_FIRST);
gimp_config_sync (G_OBJECT (template), G_OBJECT (dialog->template),
0);
g_object_unref (template);
}

View File

@@ -425,7 +425,13 @@ prefs_template_select_callback (GimpContainerView *view,
GimpTemplate *edit_template)
{
if (template)
gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template), 0);
{
/* make sure the resolution values are copied first (see bug #546924) */
gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template),
GIMP_TEMPLATE_PARAM_COPY_FIRST);
gimp_config_sync (G_OBJECT (template), G_OBJECT (edit_template),
0);
}
}
static void

View File

@@ -318,9 +318,10 @@ stroke_dialog_response (GtkWidget *widget,
if (! gimp_item_stroke (item, drawable, context, desc, FALSE, NULL,
&error))
{
gimp_message (context->gimp, G_OBJECT (widget),
gimp_message (context->gimp,
G_OBJECT (widget),
GIMP_MESSAGE_WARNING,
error->message);
error ? error->message : "NULL");
g_clear_error (&error);
return;
}

View File

@@ -166,6 +166,7 @@ gimp_zoom_focus_get_type (void)
{ GIMP_ZOOM_FOCUS_BEST_GUESS, "GIMP_ZOOM_FOCUS_BEST_GUESS", "best-guess" },
{ GIMP_ZOOM_FOCUS_POINTER, "GIMP_ZOOM_FOCUS_POINTER", "pointer" },
{ GIMP_ZOOM_FOCUS_IMAGE_CENTER, "GIMP_ZOOM_FOCUS_IMAGE_CENTER", "image-center" },
{ GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS, "GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS", "retain-centering-else-best-guess" },
{ 0, NULL, NULL }
};
@@ -174,6 +175,7 @@ gimp_zoom_focus_get_type (void)
{ GIMP_ZOOM_FOCUS_BEST_GUESS, "GIMP_ZOOM_FOCUS_BEST_GUESS", NULL },
{ GIMP_ZOOM_FOCUS_POINTER, "GIMP_ZOOM_FOCUS_POINTER", NULL },
{ GIMP_ZOOM_FOCUS_IMAGE_CENTER, "GIMP_ZOOM_FOCUS_IMAGE_CENTER", NULL },
{ GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS, "GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS", NULL },
{ 0, NULL, NULL }
};

View File

@@ -87,9 +87,20 @@ GType gimp_zoom_focus_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_ZOOM_FOCUS_BEST_GUESS, /* Make a best guess */
GIMP_ZOOM_FOCUS_POINTER, /* Use the mouse cursor (if within canvas) */
GIMP_ZOOM_FOCUS_IMAGE_CENTER /* Use the image center */
/* Make a best guess */
GIMP_ZOOM_FOCUS_BEST_GUESS,
/* Use the mouse cursor (if within canvas) */
GIMP_ZOOM_FOCUS_POINTER,
/* Use the image center */
GIMP_ZOOM_FOCUS_IMAGE_CENTER,
/* If the image is centered, retain the centering. Else use
* _BEST_GUESS
*/
GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS
} GimpZoomFocus;

View File

@@ -350,7 +350,6 @@ gimp_display_shell_canvas_size_allocate (GtkWidget *widget,
}
gimp_display_shell_scroll_clamp_and_update (shell);
gimp_display_shell_scaled (shell);
/* Reset */

View File

@@ -461,9 +461,12 @@ gimp_display_shell_drop_uri_list (GtkWidget *widget,
GimpImage *image = shell->display->image;
GimpContext *context = gimp_get_user_context (shell->display->gimp);
GList *list;
gboolean open_as_layers;
GIMP_LOG (DND, NULL);
open_as_layers = (shell->display->image != NULL);
for (list = uri_list; list; list = g_list_next (list))
{
const gchar *uri = list->data;
@@ -471,17 +474,7 @@ gimp_display_shell_drop_uri_list (GtkWidget *widget,
GError *error = NULL;
gboolean warn = FALSE;
if (! shell->display->image)
{
image = file_open_with_display (shell->display->gimp, context,
GIMP_PROGRESS (shell->display),
uri, FALSE,
&status, &error);
if (! image && status != GIMP_PDB_CANCEL)
warn = TRUE;
}
else
if (open_as_layers)
{
GList *new_layers;
@@ -510,6 +503,30 @@ gimp_display_shell_drop_uri_list (GtkWidget *widget,
warn = TRUE;
}
}
else if (shell->display->image)
{
/* open any subsequent images in a new display */
GimpImage *new_image;
new_image = file_open_with_display (shell->display->gimp, context,
NULL,
uri, FALSE,
&status, &error);
if (! new_image && status != GIMP_PDB_CANCEL)
warn = TRUE;
}
else
{
/* open the first image in the empty display */
image = file_open_with_display (shell->display->gimp, context,
GIMP_PROGRESS (shell->display),
uri, FALSE,
&status, &error);
if (! image && status != GIMP_PDB_CANCEL)
warn = TRUE;
}
if (warn)
{

View File

@@ -573,7 +573,9 @@ gimp_display_shell_draw_area (const GimpDisplayShell *shell,
if (! shell->display->image)
return;
gimp_display_shell_scroll_get_scaled_viewport_offset (shell, &sx, &sy);
sx = - shell->offset_x;
sy = - shell->offset_y;
gimp_display_shell_draw_get_scaled_image_size (shell, &sw, &sh);
/* check if the passed in area intersects with

View File

@@ -538,6 +538,13 @@ gimp_display_shell_size_changed_detailed_handler (GimpImage *image,
shell->offset_y + scaled_previous_origin_y);
gimp_display_shell_scroll_center_image (shell, horizontally, vertically);
/* The above calls might not lead to a call to
* gimp_display_shell_scroll_clamp_and_update() in all cases we
* need it to be called, so simply call it explicitly here at
* the end
*/
gimp_display_shell_scroll_clamp_and_update (shell);
}
}

View File

@@ -349,14 +349,13 @@ gimp_display_shell_draw_quad (GimpDrawable *texture,
gfloat *v,
guchar opacity)
{
gint x2[3], y2[3];
gfloat u2[3], v2[3];
gint minx, maxx, miny, maxy; /* screen bounds of the quad */
gint dwidth, dheight; /* dimensions of dest */
GdkPixbuf *area; /* quad sized area with dest pixels */
gint c;
gint x2[3], y2[3];
gfloat u2[3], v2[3];
gint minx, maxx, miny, maxy; /* screen bounds of the quad */
gint dwidth, dheight; /* dimensions of dest */
gint c;
g_return_if_fail(GDK_IS_DRAWABLE (dest));
g_return_if_fail (GDK_IS_DRAWABLE (dest));
x2[0] = x[3]; y2[0] = y[3]; u2[0] = u[3]; v2[0] = v[3];
x2[1] = x[2]; y2[1] = y[2]; u2[1] = u[2]; v2[1] = v[2];
@@ -382,21 +381,27 @@ gimp_display_shell_draw_quad (GimpDrawable *texture,
}
if (minx < 0) minx = 0;
if (miny < 0) miny = 0;
if (maxx > dwidth - 1) maxx=dwidth - 1;
if (maxy > dheight - 1) maxy=dheight - 1;
if (maxx > dwidth - 1) maxx = dwidth - 1;
if (maxy > dheight - 1) maxy = dheight - 1;
area = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
maxx - minx + 1, maxy - miny + 1);
g_return_if_fail (area != NULL);
if (minx <= maxx && miny <= maxy)
{
GdkPixbuf *area;
gimp_display_shell_draw_tri (texture, dest, area, minx, miny,
mask, mask_offx, mask_offy,
x, y, u, v, opacity);
gimp_display_shell_draw_tri (texture, dest, area, minx, miny,
mask, mask_offx, mask_offy,
x2, y2, u2, v2, opacity);
area = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
maxx - minx + 1, maxy - miny + 1);
g_object_unref (area);
g_return_if_fail (area != NULL);
gimp_display_shell_draw_tri (texture, dest, area, minx, miny,
mask, mask_offx, mask_offy,
x, y, u, v, opacity);
gimp_display_shell_draw_tri (texture, dest, area, minx, miny,
mask, mask_offx, mask_offy,
x2, y2, u2, v2, opacity);
g_object_unref (area);
}
}
/**

View File

@@ -59,13 +59,19 @@ static gboolean gimp_display_shell_scale_image_starts_to_fit
gdouble current_scale,
gboolean *vertically,
gboolean *horizontally);
static void gimp_display_shell_scale_viewport_coord_almost_centered
static gboolean gimp_display_shell_scale_viewport_coord_almost_centered
(GimpDisplayShell *shell,
gint x,
gint y,
gboolean *horizontally,
gboolean *vertically);
static void gimp_display_shell_scale_get_image_center_viewport
(GimpDisplayShell *shell,
gint *image_center_x,
gint *image_center_y);
static void gimp_display_shell_scale_get_zoom_focus (GimpDisplayShell *shell,
gdouble new_scale,
gdouble current_scale,
@@ -162,8 +168,6 @@ gimp_display_shell_scale_update_rulers (GimpDisplayShell *shell)
gdouble vertical_lower;
gdouble vertical_upper;
gdouble vertical_max_size;
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
if (! shell->display)
return;
@@ -211,24 +215,22 @@ gimp_display_shell_scale_update_rulers (GimpDisplayShell *shell)
/* Adjust due to scrolling */
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
horizontal_lower -= img2real (shell, TRUE,
FUNSCALEX (shell,
(gdouble) scaled_viewport_offset_x));
horizontal_upper -= img2real (shell, TRUE,
FUNSCALEX (shell,
(gdouble) scaled_viewport_offset_x));
vertical_lower -= img2real (shell, FALSE,
FUNSCALEY (shell,
(gdouble) scaled_viewport_offset_y));
vertical_upper -= img2real (shell, FALSE,
FUNSCALEY (shell,
(gdouble) scaled_viewport_offset_y));
if (image)
{
horizontal_lower += img2real (shell, TRUE,
FUNSCALEX (shell,
(gdouble) shell->offset_x));
horizontal_upper += img2real (shell, TRUE,
FUNSCALEX (shell,
(gdouble) shell->offset_x));
vertical_lower += img2real (shell, FALSE,
FUNSCALEY (shell,
(gdouble) shell->offset_y));
vertical_upper += img2real (shell, FALSE,
FUNSCALEY (shell,
(gdouble) shell->offset_y));
}
/* Finally setup the actual rulers */
@@ -367,14 +369,20 @@ gimp_display_shell_scale (GimpDisplayShell *shell,
* get things rolling
*/
gimp_zoom_model_zoom (shell->zoom, GIMP_ZOOM_TO, real_new_scale);
gimp_display_shell_scaled (shell);
gimp_display_shell_shrink_wrap (shell, FALSE);
}
else
{
gboolean starts_fitting_horizontally;
gboolean starts_fitting_vertically;
gboolean almost_centered_horizontally;
gboolean almost_centered_vertically;
gboolean starts_fitting_horiz;
gboolean starts_fitting_vert;
gboolean zoom_focus_almost_centered_horiz;
gboolean zoom_focus_almost_centered_vert;
gboolean image_center_almost_centered_horiz;
gboolean image_center_almost_centered_vert;
gint image_center_x;
gint image_center_y;
gimp_display_shell_scale_get_zoom_focus (shell,
real_new_scale,
@@ -382,6 +390,9 @@ gimp_display_shell_scale (GimpDisplayShell *shell,
&x,
&y,
zoom_focus);
gimp_display_shell_scale_get_image_center_viewport (shell,
&image_center_x,
&image_center_y);
gimp_display_shell_scale_to (shell, real_new_scale, x, y);
@@ -393,18 +404,27 @@ gimp_display_shell_scale (GimpDisplayShell *shell,
gimp_display_shell_scale_image_starts_to_fit (shell,
real_new_scale,
current_scale,
&starts_fitting_horizontally,
&starts_fitting_vertically);
&starts_fitting_horiz,
&starts_fitting_vert);
gimp_display_shell_scale_viewport_coord_almost_centered (shell,
x,
y,
&almost_centered_horizontally,
&almost_centered_vertically);
&zoom_focus_almost_centered_horiz,
&zoom_focus_almost_centered_vert);
gimp_display_shell_scale_viewport_coord_almost_centered (shell,
image_center_x,
image_center_y,
&image_center_almost_centered_horiz,
&image_center_almost_centered_vert);
gimp_display_shell_scroll_center_image (shell,
starts_fitting_horizontally ||
almost_centered_horizontally,
starts_fitting_vertically ||
almost_centered_vertically);
starts_fitting_horiz ||
(zoom_focus_almost_centered_horiz &&
image_center_almost_centered_horiz),
starts_fitting_vert ||
(zoom_focus_almost_centered_vert &&
image_center_almost_centered_vert));
}
}
}
@@ -448,7 +468,7 @@ gimp_display_shell_scale_fit_in (GimpDisplayShell *shell)
GIMP_ZOOM_TO,
zoom_factor,
GIMP_ZOOM_FOCUS_BEST_GUESS);
gimp_display_shell_scroll_center_image (shell, TRUE, TRUE);
}
@@ -865,21 +885,43 @@ gimp_display_shell_scale_image_stops_to_fit (GimpDisplayShell *shell,
* @vertically:
*
**/
static void
static gboolean
gimp_display_shell_scale_viewport_coord_almost_centered (GimpDisplayShell *shell,
gint x,
gint y,
gboolean *horizontally,
gboolean *vertically)
{
gint center_x = shell->disp_width / 2;
gint center_y = shell->disp_height / 2;
gboolean local_horizontally;
gboolean local_vertically;
gint center_x = shell->disp_width / 2;
gint center_y = shell->disp_height / 2;
*horizontally = x > center_x - ALMOST_CENTERED_THRESHOLD &&
x < center_x + ALMOST_CENTERED_THRESHOLD;
local_horizontally = (x > center_x - ALMOST_CENTERED_THRESHOLD &&
x < center_x + ALMOST_CENTERED_THRESHOLD);
*vertically = y > center_y - ALMOST_CENTERED_THRESHOLD &&
y < center_y + ALMOST_CENTERED_THRESHOLD;
local_vertically = (y > center_y - ALMOST_CENTERED_THRESHOLD &&
y < center_y + ALMOST_CENTERED_THRESHOLD);
if (horizontally) *horizontally = local_horizontally;
if (vertically) *vertically = local_vertically;
return local_horizontally && local_vertically;
}
static void
gimp_display_shell_scale_get_image_center_viewport (GimpDisplayShell *shell,
gint *image_center_x,
gint *image_center_y)
{
gint sw, sh;
gimp_display_shell_draw_get_scaled_image_size (shell,
&sw,
&sh);
if (image_center_x) *image_center_x = -shell->offset_x + sw / 2;
if (image_center_y) *image_center_y = -shell->offset_y + sh / 2;
}
/**
@@ -900,19 +942,14 @@ gimp_display_shell_scale_get_zoom_focus (GimpDisplayShell *shell,
gint *y,
GimpZoomFocus zoom_focus)
{
gint image_center_x, image_center_y;
gint other_x, other_y;
GimpZoomFocus real_zoom_focus = zoom_focus;
gint image_center_x, image_center_y;
gint other_x, other_y;
/* Calculate stops-to-fit focus point */
{
gint sw, sh;
gimp_display_shell_draw_get_scaled_image_size (shell,
&sw,
&sh);
image_center_x = -shell->offset_x + sw / 2;
image_center_y = -shell->offset_y + sh / 2;
}
gimp_display_shell_scale_get_image_center_viewport (shell,
&image_center_x,
&image_center_y);
/* Calculate other focus point */
{
@@ -964,7 +1001,25 @@ gimp_display_shell_scale_get_zoom_focus (GimpDisplayShell *shell,
}
/* Decide which one to use for each axis */
switch (zoom_focus)
if (zoom_focus == GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS)
{
gboolean centered;
centered = gimp_display_shell_scale_viewport_coord_almost_centered (shell,
image_center_x,
image_center_y,
NULL,
NULL);
real_zoom_focus = (centered ?
GIMP_ZOOM_FOCUS_IMAGE_CENTER :
GIMP_ZOOM_FOCUS_BEST_GUESS);
}
else
{
real_zoom_focus = zoom_focus;
}
switch (real_zoom_focus)
{
case GIMP_ZOOM_FOCUS_POINTER:
*x = other_x;

View File

@@ -432,18 +432,12 @@ gimp_display_shell_scroll_get_scaled_viewport (const GimpDisplayShell *shell,
gint *w,
gint *h)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
if (x) *x = -scaled_viewport_offset_x;
if (y) *y = -scaled_viewport_offset_y;
if (w) *w = shell->disp_width;
if (h) *h = shell->disp_height;
*x = shell->offset_x;
*y = shell->offset_y;
*w = shell->disp_width;
*h = shell->disp_height;
}
/**
@@ -466,30 +460,10 @@ gimp_display_shell_scroll_get_viewport (const GimpDisplayShell *shell,
{
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
if (x) *x = shell->offset_x / shell->scale_x;
if (y) *y = shell->offset_y / shell->scale_y;
if (w) *w = shell->disp_width / shell->scale_x;
if (h) *h = shell->disp_height / shell->scale_y;
}
/**
* gimp_display_shell_scroll_get_scaled_viewport_offset:
* @shell:
* @x:
* @y:
*
* Gets the scaled image offset in viewport coordinates
*
**/
void
gimp_display_shell_scroll_get_scaled_viewport_offset (const GimpDisplayShell *shell,
gint *x,
gint *y)
{
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
if (x) *x = -shell->offset_x;
if (y) *y = -shell->offset_y;
*x = shell->offset_x / shell->scale_x;
*y = shell->offset_y / shell->scale_y;
*w = shell->disp_width / shell->scale_x;
*h = shell->disp_height / shell->scale_y;
}
/**
@@ -551,8 +525,8 @@ gimp_display_shell_scroll_get_render_start_offset (const GimpDisplayShell *shell
{
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
if (offset_x) *offset_x = MAX (0, shell->offset_x);
if (offset_y) *offset_y = MAX (0, shell->offset_y);
*offset_x = MAX (0, shell->offset_x);
*offset_y = MAX (0, shell->offset_y);
}
/**

View File

@@ -53,9 +53,6 @@ void gimp_display_shell_scroll_get_viewport (const GimpDisplaySh
gdouble *y,
gdouble *w,
gdouble *h);
void gimp_display_shell_scroll_get_scaled_viewport_offset (const GimpDisplayShell *shell,
gint *x,
gint *y);
void gimp_display_shell_scroll_get_disp_offset (const GimpDisplayShell *shell,
gint *disp_xoffset,
gint *disp_yoffset);

View File

@@ -331,10 +331,20 @@ gimp_display_shell_format_title (GimpDisplayShell *shell,
GimpDrawable *drawable = gimp_image_get_active_drawable (image);
if (drawable)
i += print (title, title_len, i, "%s",
gimp_object_get_name (GIMP_OBJECT (drawable)));
{
gchar *desc;
desc = gimp_viewable_get_description (GIMP_VIEWABLE (drawable),
NULL);
i += print (title, title_len, i, "%s", desc);
g_free (desc);
}
else
i += print (title, title_len, i, "%s", _("(none)"));
{
i += print (title, title_len, i, "%s", _("(none)"));
}
}
break;

View File

@@ -49,9 +49,6 @@ gimp_display_shell_transform_coordinate (const GimpDisplayShell *shell,
GimpCoords *image_coords,
GimpCoords *display_coords)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (image_coords != NULL);
g_return_if_fail (display_coords != NULL);
@@ -61,12 +58,8 @@ gimp_display_shell_transform_coordinate (const GimpDisplayShell *shell,
display_coords->x = SCALEX (shell, image_coords->x);
display_coords->y = SCALEY (shell, image_coords->y);
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
display_coords->x += scaled_viewport_offset_x;
display_coords->y += scaled_viewport_offset_y;
display_coords->x -= shell->offset_x;
display_coords->y -= shell->offset_y;
}
/**
@@ -83,21 +76,14 @@ gimp_display_shell_untransform_coordinate (const GimpDisplayShell *shell,
GimpCoords *display_coords,
GimpCoords *image_coords)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (display_coords != NULL);
g_return_if_fail (image_coords != NULL);
*image_coords = *display_coords;
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
image_coords->x = display_coords->x - scaled_viewport_offset_x;
image_coords->y = display_coords->y - scaled_viewport_offset_y;
image_coords->x = display_coords->x + shell->offset_x;
image_coords->y = display_coords->y + shell->offset_y;
image_coords->x /= shell->scale_x;
image_coords->y /= shell->scale_y;
@@ -111,8 +97,6 @@ gimp_display_shell_transform_xy (const GimpDisplayShell *shell,
gint *ny,
gboolean use_offsets)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gint offset_x = 0;
gint offset_y = 0;
gint64 tx;
@@ -136,11 +120,8 @@ gimp_display_shell_transform_xy (const GimpDisplayShell *shell,
tx = ((gint64) x * shell->x_src_dec) / shell->x_dest_inc;
ty = ((gint64) y * shell->y_src_dec) / shell->y_dest_inc;
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
tx += scaled_viewport_offset_x;
ty += scaled_viewport_offset_y;
tx -= shell->offset_x;
ty -= shell->offset_y;
/* The projected coordinates might overflow a gint in the case of big
images at high zoom levels, so we clamp them here to avoid problems. */
@@ -173,8 +154,6 @@ gimp_display_shell_untransform_xy (const GimpDisplayShell *shell,
gboolean round,
gboolean use_offsets)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gint offset_x = 0;
gint offset_y = 0;
gint64 tx;
@@ -192,11 +171,8 @@ gimp_display_shell_untransform_xy (const GimpDisplayShell *shell,
gimp_item_offsets (item, &offset_x, &offset_y);
}
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
tx = (gint64) x - scaled_viewport_offset_x;
ty = (gint64) y - scaled_viewport_offset_y;
tx = (gint64) x + shell->offset_x;
ty = (gint64) y + shell->offset_y;
tx *= shell->x_dest_inc;
ty *= shell->y_dest_inc;
@@ -232,8 +208,6 @@ gimp_display_shell_transform_xy_f (const GimpDisplayShell *shell,
gdouble *ny,
gboolean use_offsets)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gint offset_x = 0;
gint offset_y = 0;
@@ -249,12 +223,8 @@ gimp_display_shell_transform_xy_f (const GimpDisplayShell *shell,
gimp_item_offsets (item, &offset_x, &offset_y);
}
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
*nx = SCALEX (shell, x + offset_x) + scaled_viewport_offset_x;
*ny = SCALEY (shell, y + offset_y) + scaled_viewport_offset_y;
*nx = SCALEX (shell, x + offset_x) - shell->offset_x;
*ny = SCALEY (shell, y + offset_y) - shell->offset_y;
}
/**
@@ -279,8 +249,6 @@ gimp_display_shell_untransform_xy_f (const GimpDisplayShell *shell,
gdouble *ny,
gboolean use_offsets)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gint offset_x = 0;
gint offset_y = 0;
@@ -296,12 +264,8 @@ gimp_display_shell_untransform_xy_f (const GimpDisplayShell *shell,
gimp_item_offsets (item, &offset_x, &offset_y);
}
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
*nx = (x - scaled_viewport_offset_x) / shell->scale_x - offset_x;
*ny = (y - scaled_viewport_offset_y) / shell->scale_y - offset_y;
*nx = (x + shell->offset_x) / shell->scale_x - offset_x;
*ny = (y + shell->offset_y) / shell->scale_y - offset_y;
}
/**
@@ -339,21 +303,15 @@ gimp_display_shell_transform_points (const GimpDisplayShell *shell,
for (i = 0; i < n_points ; i++)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gdouble x = points[i].x + offset_x;
gdouble y = points[i].y + offset_y;
x = x * shell->x_src_dec / shell->x_dest_inc;
y = y * shell->y_src_dec / shell->y_dest_inc;
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
coords[i].x = CLAMP (PROJ_ROUND64 (x) + scaled_viewport_offset_x,
coords[i].x = CLAMP (PROJ_ROUND64 (x) - shell->offset_x,
G_MININT, G_MAXINT);
coords[i].y = CLAMP (PROJ_ROUND64 (y) + scaled_viewport_offset_y,
coords[i].y = CLAMP (PROJ_ROUND64 (y) - shell->offset_y,
G_MININT, G_MAXINT);
}
}
@@ -393,21 +351,15 @@ gimp_display_shell_transform_coords (const GimpDisplayShell *shell,
for (i = 0; i < n_coords ; i++)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gdouble x = image_coords[i].x + offset_x;
gdouble y = image_coords[i].y + offset_y;
x = x * shell->x_src_dec / shell->x_dest_inc;
y = y * shell->y_src_dec / shell->y_dest_inc;
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
disp_coords[i].x = CLAMP (PROJ_ROUND64 (x) + scaled_viewport_offset_x,
disp_coords[i].x = CLAMP (PROJ_ROUND64 (x) - shell->offset_x,
G_MININT, G_MAXINT);
disp_coords[i].y = CLAMP (PROJ_ROUND64 (y) + scaled_viewport_offset_y,
disp_coords[i].y = CLAMP (PROJ_ROUND64 (y) - shell->offset_y,
G_MININT, G_MAXINT);
}
}
@@ -447,8 +399,6 @@ gimp_display_shell_transform_segments (const GimpDisplayShell *shell,
for (i = 0; i < n_segs ; i++)
{
gint scaled_viewport_offset_x;
gint scaled_viewport_offset_y;
gint64 x1, x2;
gint64 y1, y2;
@@ -462,18 +412,10 @@ gimp_display_shell_transform_segments (const GimpDisplayShell *shell,
y1 = (y1 * shell->y_src_dec) / shell->y_dest_inc;
y2 = (y2 * shell->y_src_dec) / shell->y_dest_inc;
gimp_display_shell_scroll_get_scaled_viewport_offset (shell,
&scaled_viewport_offset_x,
&scaled_viewport_offset_y);
dest_segs[i].x1 = CLAMP (x1 + scaled_viewport_offset_x,
G_MININT, G_MAXINT);
dest_segs[i].x2 = CLAMP (x2 + scaled_viewport_offset_x,
G_MININT, G_MAXINT);
dest_segs[i].y1 = CLAMP (y1 + scaled_viewport_offset_y,
G_MININT, G_MAXINT);
dest_segs[i].y2 = CLAMP (y2 + scaled_viewport_offset_y,
G_MININT, G_MAXINT);
dest_segs[i].x1 = CLAMP (x1 - shell->offset_x, G_MININT, G_MAXINT);
dest_segs[i].x2 = CLAMP (x2 - shell->offset_x, G_MININT, G_MAXINT);
dest_segs[i].y1 = CLAMP (y1 - shell->offset_y, G_MININT, G_MAXINT);
dest_segs[i].y2 = CLAMP (y2 - shell->offset_y, G_MININT, G_MAXINT);
}
}

View File

@@ -674,6 +674,7 @@ gimp_display_shell_style_set (GtkWidget *widget,
GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (widget);
GtkRequisition requisition;
GdkGeometry geometry;
GdkWindowHints geometry_mask;
GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
@@ -691,9 +692,17 @@ gimp_display_shell_style_set (GtkWidget *widget,
geometry.min_height += requisition.height;
}
geometry_mask = GDK_HINT_MIN_SIZE;
/* Only set user pos on the empty display because it gets a pos
* set by gimp. All other displays should be placed by the window
* manager. See http://bugzilla.gnome.org/show_bug.cgi?id=559580
*/
if (! shell->display->image)
geometry_mask |= GDK_HINT_USER_POS;
gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL,
&geometry,
GDK_HINT_MIN_SIZE | GDK_HINT_USER_POS);
&geometry, geometry_mask);
}
static void

View File

@@ -366,6 +366,9 @@ file_open_with_proc_and_display (Gimp *gimp,
/* the display owns the image now */
g_object_unref (image);
/* announce that we opened this image */
gimp_image_opened (image->gimp, uri);
}
return image;

View File

@@ -138,7 +138,7 @@ file_procedure_find (GSList *procs,
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (errno),
g_strerror (errno));
"%s", g_strerror (errno));
}
}
@@ -173,7 +173,7 @@ file_procedure_find (GSList *procs,
g_set_error (error,
G_FILE_ERROR,
g_file_error_from_errno (errno),
g_strerror (errno));
"%s", g_strerror (errno));
fclose (ifp);
}

View File

@@ -108,7 +108,7 @@ file_save (GimpImage *image,
if (! g_file_test (filename, G_FILE_TEST_IS_REGULAR))
{
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
_("Not a regular file"));
"%s", _("Not a regular file"));
status = GIMP_PDB_EXECUTION_ERROR;
goto out;
}
@@ -116,7 +116,7 @@ file_save (GimpImage *image,
if (g_access (filename, W_OK) != 0)
{
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_ACCES,
g_strerror (errno));
"%s", g_strerror (errno));
status = GIMP_PDB_EXECUTION_ERROR;
goto out;
}

View File

@@ -85,3 +85,27 @@ gimp_bpp_to_babl_format_linear (guint bpp)
return NULL;
}
/**
* gimp_gegl_check_version:
* @required_major: the required major version.
* @required_minor: the required minor version.
* @required_micro: the required micro version.
*
* Return value: %TRUE if the GEGL library in use is the given
* version or newer, %FALSE otherwise
*/
gboolean
gimp_gegl_check_version (guint required_major,
guint required_minor,
guint required_micro)
{
gint major, minor, micro;
if (required_major != GEGL_MAJOR_VERSION)
return FALSE; /* major mismatch */
gegl_get_version (&major, &minor, &micro);
return (100 * minor + micro >= 100 * required_minor + required_micro);
}

View File

@@ -26,6 +26,9 @@
const Babl * gimp_bpp_to_babl_format (guint bpp) G_GNUC_CONST;
const Babl * gimp_bpp_to_babl_format_linear (guint bpp) G_GNUC_CONST;
gboolean gimp_gegl_check_version (guint required_major,
guint required_minor,
guint required_micro);
#endif /* __GIMP_GEGL_UTILS_H__ */

View File

@@ -411,10 +411,12 @@ gimp_curves_config_load_cruft (GimpCurvesConfig *config,
gimp_curve_set_curve_type (curve, GIMP_CURVE_SMOOTH);
gimp_curve_reset (curve, FALSE);
for (j = 0; j < GIMP_CURVE_N_CRUFT_POINTS; j++)
{
if (index[i][j] < 0 || value[i][j] < 0)
gimp_curve_set_point (curve, j, -1, -1);
gimp_curve_set_point (curve, j, -1.0, -1.0);
else
gimp_curve_set_point (curve, j,
(gdouble) index[i][j] / 255.0,
@@ -476,9 +478,11 @@ gimp_curves_config_save_cruft (GimpCurvesConfig *config,
for (j = 0; j < curve->n_points; j++)
{
gdouble x, y;
gimp_curve_get_point (curve, j, &x, &y);
/* don't use gimp_curve_get_point() becaue that doesn't
* work when the curve type is GIMP_CURVE_FREE
*/
gdouble x = curve->points[j].x;
gdouble y = curve->points[j].y;
if (x < 0.0 || y < 0.0)
{

View File

@@ -218,7 +218,7 @@ gimp_operation_tile_sink_process (GeglOperation *operation,
pr;
pr = pixel_regions_process (pr))
{
const GeglRectangle rect = { destPR.x, destPR.y, destPR.w, destPR.h };
GeglRectangle rect = { destPR.x, destPR.y, destPR.w, destPR.h };
gegl_buffer_get (input,
1.0, &rect, format, destPR.data, destPR.rowstride);

View File

@@ -238,7 +238,7 @@ gimp_operation_tile_source_process (GeglOperation *operation,
pr;
pr = pixel_regions_process (pr))
{
const GeglRectangle rect = { srcPR.x, srcPR.y, srcPR.w, srcPR.h };
GeglRectangle rect = { srcPR.x, srcPR.y, srcPR.w, srcPR.h };
gegl_buffer_set (output, &rect, format, srcPR.data, srcPR.rowstride);
}

View File

@@ -3,17 +3,26 @@
<node name="/org/gimp/GIMP/UI">
<interface name="org.gimp.GIMP.UI">
<annotation name="org.freedesktop.DBus.GLib.CSymbol"
value="gimp_dbus_service" />
<method name="Open">
<arg type="s" name="uri" direction="in" />
<arg type="b" name="success" direction="out" />
</method>
<method name="OpenAsNew">
<arg type="s" name="uri" direction="in" />
<arg type="b" name="success" direction="out" />
</method>
<method name="Activate" />
<signal name="Opened">
<arg type="s" name="uri" />
</signal>
</interface>
</node>

View File

@@ -39,6 +39,12 @@
#include "gimpdbusservice-glue.h"
enum
{
OPENED,
LAST_SIGNAL
};
typedef struct
{
gchar *uri;
@@ -52,6 +58,10 @@ static void gimp_dbus_service_init (GimpDBusService *service);
static void gimp_dbus_service_dispose (GObject *object);
static void gimp_dbus_service_finalize (GObject *object);
static void gimp_dbus_service_gimp_opened (Gimp *gimp,
const gchar *uri,
GimpDBusService *service);
static gboolean gimp_dbus_service_queue_open (GimpDBusService *service,
const gchar *uri,
gboolean as_new);
@@ -67,12 +77,23 @@ G_DEFINE_TYPE (GimpDBusService, gimp_dbus_service, G_TYPE_OBJECT)
#define parent_class gimp_dbus_service_parent_class
static guint gimp_dbus_service_signals[LAST_SIGNAL] = { 0 };
static void
gimp_dbus_service_class_init (GimpDBusServiceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
gimp_dbus_service_signals[OPENED] =
g_signal_new ("opened",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpDBusServiceClass, opened),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
object_class->dispose = gimp_dbus_service_dispose;
object_class->finalize = gimp_dbus_service_finalize;
@@ -97,6 +118,10 @@ gimp_dbus_service_new (Gimp *gimp)
service->gimp = gimp;
g_signal_connect_object (gimp, "image-opened",
G_CALLBACK (gimp_dbus_service_gimp_opened),
service, 0);
return G_OBJECT (service);
}
@@ -185,6 +210,14 @@ gimp_dbus_service_activate (GimpDBusService *service,
return TRUE;
}
static void
gimp_dbus_service_gimp_opened (Gimp *gimp,
const gchar *uri,
GimpDBusService *service)
{
g_signal_emit (service, gimp_dbus_service_signals[OPENED], 0, uri);
}
/*
* Adds a request to open a file to the end of the queue and
* starts an idle source if it is not already running.

View File

@@ -53,6 +53,10 @@ struct _GimpDBusService
struct _GimpDBusServiceClass
{
GObjectClass parent_class;
/* signals */
void (* opened) (GimpDBusService *service,
const gchar *uri);
};

View File

@@ -51,8 +51,8 @@ static DBusGConnection *dbus_connection = NULL;
#ifdef G_OS_WIN32
#include "file/file-open.h"
static void gui_unique_win32_init (Gimp *gimp);
static void gui_unique_win32_exit (void);
static void gui_unique_win32_init (Gimp *gimp);
static void gui_unique_win32_exit (void);
static Gimp *unique_gimp = NULL;
static HWND proxy_window = NULL;

View File

@@ -208,20 +208,7 @@ scale_determine_levels (PixelRegion *srcPR,
gint width = srcPR->w;
gint height = srcPR->h;
/* determine scaling levels */
while (scalex > 2)
{
scalex /= 2;
width *= 2;
*levelx -= 1;
}
while (scaley > 2)
{
scaley /= 2;
height *= 2;
*levely -= 1;
}
/* downscaling is done in multiple steps */
while (scalex < 0.5 && width > 1)
{
@@ -466,8 +453,8 @@ scale (TileManager *srcTM,
const guint bytes = tile_manager_bpp (dstTM);
const guint dst_width = tile_manager_width (dstTM);
const guint dst_height = tile_manager_height (dstTM);
const gdouble scaley = (gdouble) dst_height / (gdouble) src_height;
const gdouble scalex = (gdouble) dst_width / (gdouble) src_width;
const gdouble scaley = (gdouble) src_height / (gdouble) dst_height;
const gdouble scalex = (gdouble) src_width / (gdouble) dst_width;
gpointer pr;
gfloat *kernel_lookup = NULL;
@@ -522,38 +509,38 @@ scale (TileManager *srcTM,
for (y = region.y; y < y1; y++)
{
guchar *pixel = row;
gdouble yfrac = y / scaley;
gint sy0 = (gint) yfrac;
gdouble yfrac = (y + 0.5) * scaley - 0.5;
gint sy = (gint) yfrac;
gint x;
yfrac = yfrac - sy0;
yfrac = yfrac - sy;
for (x = region.x; x < x1; x++)
{
gdouble xfrac = x / scalex;
gint sx0 = (gint) xfrac;
gdouble xfrac = (x + 0.5) * scalex - 0.5;
gint sx = (gint) xfrac;
xfrac = xfrac - sx0;
xfrac = xfrac - sx;
switch (interpolation)
{
case GIMP_INTERPOLATION_NONE:
interpolate_nearest (srcTM, sx0, sy0, xfrac, yfrac, pixel);
interpolate_nearest (srcTM, sx, sy, xfrac, yfrac, pixel);
break;
case GIMP_INTERPOLATION_LINEAR:
interpolate_bilinear (surround,
sx0, sy0, xfrac, yfrac, bytes, pixel);
sx, sy, xfrac, yfrac, bytes, pixel);
break;
case GIMP_INTERPOLATION_CUBIC:
interpolate_cubic (surround,
sx0, sy0, xfrac, yfrac, bytes, pixel);
sx, sy, xfrac, yfrac, bytes, pixel);
break;
case GIMP_INTERPOLATION_LANCZOS:
interpolate_lanczos3 (surround,
sx0, sy0, xfrac, yfrac, bytes, pixel,
sx, sy, xfrac, yfrac, bytes, pixel,
kernel_lookup);
break;
}

View File

@@ -33,6 +33,8 @@
#include "gimppaintcore-stroke.h"
#include "gimppaintoptions.h"
#include "gimp-intl.h"
static void gimp_paint_core_stroke_emulate_dynamics (GimpCoords *coords,
gint length);
@@ -233,6 +235,7 @@ gimp_paint_core_stroke_vectors (GimpPaintCore *core,
{
GList *stroke;
gboolean initialized = FALSE;
gboolean due_to_lack_of_points = FALSE;
gint off_x, off_y;
gint vectors_off_x, vectors_off_y;
@@ -306,6 +309,10 @@ gimp_paint_core_stroke_vectors (GimpPaintCore *core,
break;
}
}
else
{
due_to_lack_of_points = TRUE;
}
if (coords)
g_array_free (coords, TRUE);
@@ -318,6 +325,13 @@ gimp_paint_core_stroke_vectors (GimpPaintCore *core,
gimp_paint_core_cleanup (core);
}
if (! initialized &&
due_to_lack_of_points &&
*error == NULL)
{
g_set_error (error, 0, 0, _("Not enough points to stroke"));
}
return initialized;
}

View File

@@ -22,6 +22,8 @@
#include <glib-object.h>
#include "libgimpbase/gimpbase.h"
#include "paint-types.h"
#include "base/pixel-region.h"
@@ -799,15 +801,24 @@ gimp_paint_core_paste (GimpPaintCore *core,
GimpProjection *projection = gimp_image_get_projection (image);
gint off_x;
gint off_y;
gint x, y;
gint w, h;
gimp_item_offsets (GIMP_ITEM (drawable), &off_x, &off_y);
gimp_paint_core_validate_saved_proj_tiles (core,
GIMP_PICKABLE (projection),
core->canvas_buf->x + off_x,
core->canvas_buf->y + off_y,
core->canvas_buf->width,
core->canvas_buf->height);
if (gimp_rectangle_intersect (core->canvas_buf->x + off_x,
core->canvas_buf->y + off_y,
core->canvas_buf->width,
core->canvas_buf->height,
0, 0,
tile_manager_width (core->saved_proj_tiles),
tile_manager_height (core->saved_proj_tiles),
&x, &y, &w, &h))
{
gimp_paint_core_validate_saved_proj_tiles (core,
GIMP_PICKABLE (projection),
x, y, w, h);
}
}
/* If the mode is CONSTANT:

View File

@@ -216,7 +216,7 @@ register_convert_procs (GimpPDB *pdb)
gimp_procedure_set_static_strings (procedure,
"gimp-image-convert-rgb",
"Convert specified image to RGB color",
"This procedure converts the specified image to RGB color. This process requires an image in RGB or Indexed color mode. No image content is lost in this process aside from the colormap for an indexed image.",
"This procedure converts the specified image to RGB color. This process requires an image in Grayscale or Indexed color mode. No image content is lost in this process aside from the colormap for an indexed image.",
"Spencer Kimball & Peter Mattis",
"Spencer Kimball & Peter Mattis",
"1995-1996",

View File

@@ -272,7 +272,7 @@ gimp_pdb_compat_arg_type_from_gtype (GType type)
if (! pdb_type_quark)
{
const struct
struct
{
GType g_type;
GimpPDBArgType pdb_type;

View File

@@ -32,6 +32,8 @@
#include "core/gimpimage.h"
#include "core/gimpitem.h"
#include "file/file-utils.h"
#include "text/gimptextlayer.h"
#include "vectors/gimpvectors.h"
@@ -385,21 +387,27 @@ gimp_pdb_image_is_base_type (GimpImage *image,
GimpImageBaseType type,
GError **error)
{
gchar *name;
g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
if (gimp_image_base_type (image) == type)
return TRUE;
name = file_utils_uri_display_basename (gimp_image_get_uri (image));
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Image '%s' (%d) is of type '%s', "
"but an image of type '%s' is expected"),
gimp_object_get_name (GIMP_OBJECT (image)),
name,
gimp_image_get_ID (image),
gimp_pdb_enum_value_get_nick (GIMP_TYPE_IMAGE_BASE_TYPE,
gimp_image_base_type (image)),
gimp_pdb_enum_value_get_nick (GIMP_TYPE_IMAGE_BASE_TYPE, type));
g_free (name);
return FALSE;
}
@@ -408,18 +416,24 @@ gimp_pdb_image_is_not_base_type (GimpImage *image,
GimpImageBaseType type,
GError **error)
{
gchar *name;
g_return_val_if_fail (GIMP_IS_IMAGE (image), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
if (gimp_image_base_type (image) != type)
return TRUE;
name = file_utils_uri_display_basename (gimp_image_get_uri (image));
g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_INVALID_ARGUMENT,
_("Image '%s' (%d) is already of type '%s'"),
gimp_object_get_name (GIMP_OBJECT (image)),
name,
gimp_image_get_ID (image),
gimp_pdb_enum_value_get_nick (GIMP_TYPE_IMAGE_BASE_TYPE, type));
g_free (name);
return FALSE;
}

View File

@@ -347,7 +347,8 @@ gimp_procedure_execute (GimpProcedure *procedure,
G_VALUE_HOLDS_STRING (&return_vals->values[1]))
{
g_set_error (error, 0, 0,
g_value_get_string (&return_vals->values[1]));
"%s",
g_value_get_string (&return_vals->values[1]));
}
}
}

View File

@@ -118,12 +118,6 @@ gimp_plug_in_proc_frame_dispose (GimpPlugInProcFrame *proc_frame,
proc_frame->main_context = NULL;
}
if (proc_frame->procedure)
{
g_object_unref (proc_frame->procedure);
proc_frame->procedure = NULL;
}
if (proc_frame->return_vals)
{
g_value_array_free (proc_frame->return_vals);
@@ -138,6 +132,12 @@ gimp_plug_in_proc_frame_dispose (GimpPlugInProcFrame *proc_frame,
if (proc_frame->image_cleanups || proc_frame->item_cleanups)
gimp_plug_in_cleanup (plug_in, proc_frame);
if (proc_frame->procedure)
{
g_object_unref (proc_frame->procedure);
proc_frame->procedure = NULL;
}
}
GimpPlugInProcFrame *

View File

@@ -31,6 +31,7 @@
#include "base/gimplut.h"
#include "base/lut-funcs.h"
#include "gegl/gimp-gegl-utils.h"
#include "gegl/gimpbrightnesscontrastconfig.h"
#include "core/gimpdrawable.h"
@@ -196,6 +197,7 @@ gimp_brightness_contrast_tool_get_operation (GimpImageMapTool *im_tool,
GObject **config)
{
GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (im_tool);
const gchar *name;
bc_tool->config = g_object_new (GIMP_TYPE_BRIGHTNESS_CONTRAST_CONFIG, NULL);
@@ -205,8 +207,11 @@ gimp_brightness_contrast_tool_get_operation (GimpImageMapTool *im_tool,
G_CALLBACK (brightness_contrast_config_notify),
G_OBJECT (bc_tool), 0);
name = (gimp_gegl_check_version (0, 0, 21) ?
"gegl:brightness-contrast" : "brightness-contrast");
return g_object_new (GEGL_TYPE_NODE,
"operation", "brightness-contrast",
"operation", name,
NULL);
}

View File

@@ -101,6 +101,10 @@ static gboolean gimp_curves_tool_settings_export(GimpImageMapTool *image_m
const gchar *filename,
GError **error);
static void gimp_curves_tool_export_setup (GimpSettingsBox *settings_box,
GtkFileChooserDialog *dialog,
gboolean export,
GimpCurvesTool *tool);
static void gimp_curves_tool_config_notify (GObject *object,
GParamSpec *pspec,
GimpCurvesTool *tool);
@@ -422,6 +426,10 @@ gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool)
GtkWidget *bar;
GtkWidget *combo;
g_signal_connect (image_map_tool->settings_box, "file-dialog-setup",
G_CALLBACK (gimp_curves_tool_export_setup),
image_map_tool);
main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool);
label_group = gimp_image_map_tool_dialog_get_label_group (image_map_tool);
@@ -605,7 +613,6 @@ gimp_curves_tool_settings_import (GimpImageMapTool *image_map_tool,
{
GimpCurvesTool *tool = GIMP_CURVES_TOOL (image_map_tool);
FILE *file;
gboolean success;
gchar header[64];
file = g_fopen (filename, "rt");
@@ -631,6 +638,8 @@ gimp_curves_tool_settings_import (GimpImageMapTool *image_map_tool,
if (g_str_has_prefix (header, "# GIMP Curves File\n"))
{
gboolean success;
rewind (file);
success = gimp_curves_config_load_cruft (tool->config, file, error);
@@ -653,25 +662,55 @@ gimp_curves_tool_settings_export (GimpImageMapTool *image_map_tool,
GError **error)
{
GimpCurvesTool *tool = GIMP_CURVES_TOOL (image_map_tool);
FILE *file;
gboolean success;
file = g_fopen (filename, "wt");
if (! file)
if (tool->export_old_format)
{
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Could not open '%s' for writing: %s"),
gimp_filename_to_utf8 (filename),
g_strerror (errno));
return FALSE;
FILE *file;
gboolean success;
file = g_fopen (filename, "wt");
if (! file)
{
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Could not open '%s' for writing: %s"),
gimp_filename_to_utf8 (filename),
g_strerror (errno));
return FALSE;
}
success = gimp_curves_config_save_cruft (tool->config, file, error);
fclose (file);
return success;
}
success = gimp_curves_config_save_cruft (tool->config, file, error);
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_export (image_map_tool,
filename,
error);
}
fclose (file);
static void
gimp_curves_tool_export_setup (GimpSettingsBox *settings_box,
GtkFileChooserDialog *dialog,
gboolean export,
GimpCurvesTool *tool)
{
GtkWidget *button;
return success;
if (! export)
return;
button = gtk_check_button_new_with_mnemonic (_("Use _old curves file format"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
tool->export_old_format);
gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), button);
gtk_widget_show (button);
g_signal_connect (button, "toggled",
G_CALLBACK (gimp_toggle_button_update),
&tool->export_old_format);
}
static void

View File

@@ -48,6 +48,9 @@ struct _GimpCurvesTool
GtkWidget *yrange;
GtkWidget *graph;
GtkWidget *curve_type;
/* export dialog */
gboolean export_old_format;
};
struct _GimpCurvesToolClass

View File

@@ -62,7 +62,7 @@
#define EDIT_SELECT_SCROLL_LOCK FALSE
#define ARROW_VELOCITY 25
#define CENTER_CROSS_SIZE 6
#define CENTER_CROSS_SIZE 7
typedef struct _GimpEditSelectionTool
@@ -148,6 +148,8 @@ gimp_edit_selection_tool_init (GimpEditSelectionTool *edit_selection_tool)
gimp_tool_control_set_scroll_lock (tool->control, EDIT_SELECT_SCROLL_LOCK);
gimp_tool_control_set_motion_mode (tool->control, GIMP_MOTION_MODE_COMPRESS);
gimp_tool_control_set_precision (tool->control,
GIMP_CURSOR_PRECISION_PIXEL_BORDER);
edit_selection_tool->origx = 0;
edit_selection_tool->origy = 0;

View File

@@ -45,6 +45,15 @@
#include "gimp-intl.h"
enum
{
COLUMN_NAME,
COLUMN_LABEL,
COLUMN_STOCK_ID,
NUM_COLUMNS
};
/* local function prototypes */
static void gimp_gegl_tool_finalize (GObject *object);
@@ -226,8 +235,13 @@ gimp_gegl_tool_operation_blacklisted (const gchar *name)
{
static const gchar * const blacklist[] =
{
"convert-format", "gimp-", "introspect", "stress", "text"
"gimp-",
"convert-format", "gegl:convert-format",
"introspect", "gegl:introspect",
"stress", "gegl:stress",
"text", "gegl:text"
};
gint i;
for (i = 0; i < G_N_ELEMENTS (blacklist); i++)
@@ -325,11 +339,12 @@ gimp_gegl_tool_dialog (GimpImageMapTool *image_map_tool)
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
store = gtk_list_store_new (1, G_TYPE_STRING);
store = gtk_list_store_new (NUM_COLUMNS,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
opclasses = gimp_get_geglopclasses ();
for (iter = opclasses; iter; iter=iter->next)
for (iter = opclasses; iter; iter = iter->next)
{
GeglOperationClass *opclass = GEGL_OPERATION_CLASS (iter->data);
@@ -340,8 +355,29 @@ gimp_gegl_tool_dialog (GimpImageMapTool *image_map_tool)
strstr (opclass->categories, "edge") ||
strstr (opclass->categories, "render"))
{
const gchar *stock_id;
const gchar *label;
if (g_str_has_prefix (opclass->name, "gegl:"))
{
label = opclass->name + strlen ("gegl:");
stock_id = GIMP_STOCK_GEGL;
}
else if (g_str_has_prefix (opclass->name, "gimp:"))
{
label = opclass->name + strlen ("gimp:");
stock_id = GIMP_STOCK_WILBER;
}
else
{
label = opclass->name;
stock_id = NULL;
}
gtk_list_store_insert_with_values (store, NULL, -1,
0, opclass->name,
COLUMN_NAME, opclass->name,
COLUMN_LABEL, label,
COLUMN_STOCK_ID, stock_id,
-1);
}
}
@@ -349,14 +385,19 @@ gimp_gegl_tool_dialog (GimpImageMapTool *image_map_tool)
g_list_free (opclasses);
combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
cell = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE);
gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), cell,
"text", 0);
g_object_unref (store);
gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
gtk_widget_show (combo);
g_object_unref (store);
cell = gtk_cell_renderer_pixbuf_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, FALSE);
gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), cell,
"stock-id", COLUMN_STOCK_ID);
cell = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE);
gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), cell,
"text", COLUMN_LABEL);
g_signal_connect (combo, "changed",
G_CALLBACK (gimp_gegl_tool_operation_changed),
@@ -405,7 +446,13 @@ gimp_param_spec_duplicate (GParamSpec *pspec)
{
GParamSpecString *spec = G_PARAM_SPEC_STRING (pspec);
#if (GEGL_MAJOR_VERSION > 0 || \
(GEGL_MAJOR_VERSION == 0 && GEGL_MINOR_VERSION > 0) || \
(GEGL_MAJOR_VERSION == 0 && GEGL_MINOR_VERSION == 0 && GEGL_MICRO_VERSION >= 21))
if (GEGL_IS_PARAM_SPEC_FILE_PATH (pspec))
#else
if (GEGL_IS_PARAM_SPEC_PATH (pspec))
#endif
{
return gimp_param_spec_config_path (pspec->name,
g_param_spec_get_nick (pspec),
@@ -673,7 +720,7 @@ gimp_gegl_tool_get_config (GimpGeglTool *tool)
if (! config_type)
{
const GTypeInfo info =
GTypeInfo info =
{
sizeof (GimpObjectClass),
(GBaseInitFunc) NULL,
@@ -737,7 +784,7 @@ gimp_gegl_tool_operation_changed (GtkWidget *widget,
}
gtk_tree_model_get (model, &iter,
0, &tool->operation,
COLUMN_NAME, &tool->operation,
-1);
if (! tool->operation)

View File

@@ -94,6 +94,10 @@ static gboolean gimp_levels_tool_settings_export(GimpImageMapTool *im_tool,
const gchar *filename,
GError **error);
static void gimp_levels_tool_export_setup (GimpSettingsBox *settings_box,
GtkFileChooserDialog *dialog,
gboolean export,
GimpLevelsTool *tool);
static void gimp_levels_tool_config_notify (GObject *object,
GParamSpec *pspec,
GimpLevelsTool *tool);
@@ -361,6 +365,10 @@ gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool)
GtkObject *data;
gint border;
g_signal_connect (image_map_tool->settings_box, "file-dialog-setup",
G_CALLBACK (gimp_levels_tool_export_setup),
image_map_tool);
main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool);
label_group = gimp_image_map_tool_dialog_get_label_group (image_map_tool);
@@ -725,7 +733,7 @@ gimp_levels_tool_settings_import (GimpImageMapTool *image_map_tool,
{
GimpLevelsTool *tool = GIMP_LEVELS_TOOL (image_map_tool);
FILE *file;
gboolean success;
gchar header[64];
file = g_fopen (filename, "rt");
@@ -738,11 +746,34 @@ gimp_levels_tool_settings_import (GimpImageMapTool *image_map_tool,
return FALSE;
}
success = gimp_levels_config_load_cruft (tool->config, file, error);
if (! fgets (header, sizeof (header), file))
{
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Could not read header from '%s': %s"),
gimp_filename_to_utf8 (filename),
g_strerror (errno));
fclose (file);
return FALSE;
}
if (g_str_has_prefix (header, "# GIMP Levels File\n"))
{
gboolean success;
rewind (file);
success = gimp_levels_config_load_cruft (tool->config, file, error);
fclose (file);
return success;
}
fclose (file);
return success;
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_import (image_map_tool,
filename,
error);
}
static gboolean
@@ -751,25 +782,55 @@ gimp_levels_tool_settings_export (GimpImageMapTool *image_map_tool,
GError **error)
{
GimpLevelsTool *tool = GIMP_LEVELS_TOOL (image_map_tool);
FILE *file;
gboolean success;
file = g_fopen (filename, "wt");
if (! file)
if (tool->export_old_format)
{
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Could not open '%s' for writing: %s"),
gimp_filename_to_utf8 (filename),
g_strerror (errno));
return FALSE;
FILE *file;
gboolean success;
file = g_fopen (filename, "wt");
if (! file)
{
g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
_("Could not open '%s' for writing: %s"),
gimp_filename_to_utf8 (filename),
g_strerror (errno));
return FALSE;
}
success = gimp_levels_config_save_cruft (tool->config, file, error);
fclose (file);
return success;
}
success = gimp_levels_config_save_cruft (tool->config, file, error);
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_export (image_map_tool,
filename,
error);
}
fclose (file);
static void
gimp_levels_tool_export_setup (GimpSettingsBox *settings_box,
GtkFileChooserDialog *dialog,
gboolean export,
GimpLevelsTool *tool)
{
GtkWidget *button;
return success;
if (! export)
return;
button = gtk_check_button_new_with_mnemonic (_("Use _old levels file format"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
tool->export_old_format);
gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), button);
gtk_widget_show (button);
g_signal_connect (button, "toggled",
G_CALLBACK (gimp_toggle_button_update),
&tool->export_old_format);
}
static void

View File

@@ -61,6 +61,9 @@ struct _GimpLevelsTool
GtkAdjustment *high_output;
GtkWidget *active_picker;
/* export dialog */
gboolean export_old_format;
};
struct _GimpLevelsToolClass

View File

@@ -189,8 +189,10 @@ gimp_magnify_tool_button_release (GimpTool *tool,
if (release_type == GIMP_BUTTON_RELEASE_CLICK ||
release_type == GIMP_BUTTON_RELEASE_NO_MOTION)
{
new_scale = gimp_zoom_model_zoom_step (options->zoom_type,
current_scale);
gimp_display_shell_scale (shell,
options->zoom_type,
0.0,
GIMP_ZOOM_FOCUS_BEST_GUESS);
}
else
{
@@ -218,71 +220,71 @@ gimp_magnify_tool_button_release (GimpTool *tool,
}
new_scale = current_scale * factor;
}
if (new_scale != current_scale)
{
gdouble xres;
gdouble yres;
gint offset_x = 0;
gint offset_y = 0;
gimp_image_get_resolution (display->image, &xres, &yres);
switch (options->zoom_type)
if (new_scale != current_scale)
{
case GIMP_ZOOM_IN:
/* move the center of the rectangle to the center of the
* viewport:
*
* new_offset = center of rectangle in new scale screen coords
* including offset
* -
* center of viewport in screen coords without
* offset
*/
offset_x = RINT (new_scale * ((x1 + x2) / 2.0) *
SCREEN_XRES (shell) / xres -
(shell->disp_width / 2.0));
gdouble xres;
gdouble yres;
gint offset_x = 0;
gint offset_y = 0;
offset_y = RINT (new_scale * ((y1 + y2) / 2.0) *
SCREEN_YRES (shell) / yres -
(shell->disp_height / 2.0));
break;
gimp_image_get_resolution (display->image, &xres, &yres);
case GIMP_ZOOM_OUT:
/* move the center of the viewport to the center of the
* rectangle:
*
* new_offset = center of viewport in new scale screen coords
* including offset
* -
* center of rectangle in screen coords without
* offset
*/
offset_x = RINT (new_scale * UNSCALEX (shell,
shell->offset_x +
shell->disp_width / 2.0) *
SCREEN_XRES (shell) / xres -
(SCALEX (shell, (x1 + x2) / 2.0) -
shell->offset_x));
switch (options->zoom_type)
{
case GIMP_ZOOM_IN:
/* move the center of the rectangle to the center of the
* viewport:
*
* new_offset = center of rectangle in new scale screen coords
* including offset
* -
* center of viewport in screen coords without
* offset
*/
offset_x = RINT (new_scale * ((x1 + x2) / 2.0) *
SCREEN_XRES (shell) / xres -
(shell->disp_width / 2.0));
offset_y = RINT (new_scale * UNSCALEY (shell,
shell->offset_y +
shell->disp_height / 2.0) *
SCREEN_YRES (shell) / yres -
(SCALEY (shell, (y1 + y2) / 2.0) -
shell->offset_y));
break;
offset_y = RINT (new_scale * ((y1 + y2) / 2.0) *
SCREEN_YRES (shell) / yres -
(shell->disp_height / 2.0));
break;
default:
break;
case GIMP_ZOOM_OUT:
/* move the center of the viewport to the center of the
* rectangle:
*
* new_offset = center of viewport in new scale screen coords
* including offset
* -
* center of rectangle in screen coords without
* offset
*/
offset_x = RINT (new_scale * UNSCALEX (shell,
shell->offset_x +
shell->disp_width / 2.0) *
SCREEN_XRES (shell) / xres -
(SCALEX (shell, (x1 + x2) / 2.0) -
shell->offset_x));
offset_y = RINT (new_scale * UNSCALEY (shell,
shell->offset_y +
shell->disp_height / 2.0) *
SCREEN_YRES (shell) / yres -
(SCALEY (shell, (y1 + y2) / 2.0) -
shell->offset_y));
break;
default:
break;
}
gimp_display_shell_scale_by_values (shell,
new_scale,
offset_x, offset_y,
options->auto_resize);
}
gimp_display_shell_scale_by_values (shell,
new_scale,
offset_x, offset_y,
options->auto_resize);
}
}
}

View File

@@ -453,6 +453,8 @@ gimp_move_tool_button_release (GimpTool *tool,
}
else
{
gboolean flush = FALSE;
if (! config->move_tool_changes_active ||
(release_type == GIMP_BUTTON_RELEASE_CANCEL))
{
@@ -461,6 +463,8 @@ gimp_move_tool_button_release (GimpTool *tool,
gimp_image_set_active_layer (display->image,
move->old_active_layer);
move->old_active_layer = NULL;
flush = TRUE;
}
if (move->old_active_vectors)
@@ -468,6 +472,8 @@ gimp_move_tool_button_release (GimpTool *tool,
gimp_image_set_active_vectors (display->image,
move->old_active_vectors);
move->old_active_vectors = NULL;
flush = TRUE;
}
}
@@ -476,9 +482,13 @@ gimp_move_tool_button_release (GimpTool *tool,
if (move->floating_layer)
{
floating_sel_anchor (move->floating_layer);
gimp_image_flush (display->image);
flush = TRUE;
}
}
if (flush)
gimp_image_flush (display->image);
}
}

View File

@@ -91,7 +91,8 @@ typedef enum
} SideToResize;
#define FEQUAL(a,b) (fabs ((a) - (b)) < 0.0001)
#define FEQUAL(a,b) (fabs ((a) - (b)) < 0.0001)
#define PIXEL_FEQUAL(a,b) (fabs ((a) - (b)) < 0.5)
#define GIMP_RECTANGLE_TOOL_GET_PRIVATE(obj) \
(gimp_rectangle_tool_get_private (GIMP_RECTANGLE_TOOL (obj)))
@@ -2254,7 +2255,7 @@ gimp_rectangle_tool_options_notify (GimpRectangleOptions *options,
gimp_draw_tool_resume (GIMP_DRAW_TOOL (rect_tool));
}
else if (strcmp (pspec->name, "x") == 0 &&
!FEQUAL (private->x1, options_private->x))
!PIXEL_FEQUAL (private->x1, options_private->x))
{
gimp_rectangle_tool_synthesize_motion (rect_tool,
GIMP_RECTANGLE_TOOL_MOVING,
@@ -2262,7 +2263,7 @@ gimp_rectangle_tool_options_notify (GimpRectangleOptions *options,
private->y1);
}
else if (strcmp (pspec->name, "y") == 0 &&
!FEQUAL (private->y1, options_private->y))
!PIXEL_FEQUAL (private->y1, options_private->y))
{
gimp_rectangle_tool_synthesize_motion (rect_tool,
GIMP_RECTANGLE_TOOL_MOVING,
@@ -2270,7 +2271,7 @@ gimp_rectangle_tool_options_notify (GimpRectangleOptions *options,
options_private->y);
}
else if (strcmp (pspec->name, "width") == 0 &&
!FEQUAL (private->x2 - private->x1, options_private->width))
!PIXEL_FEQUAL (private->x2 - private->x1, options_private->width))
{
/* Calculate x2, y2 that will create a rectangle of given width, for the
* current options.
@@ -2293,7 +2294,7 @@ gimp_rectangle_tool_options_notify (GimpRectangleOptions *options,
private->y2);
}
else if (strcmp (pspec->name, "height") == 0 &&
!FEQUAL (private->y2 - private->y1, options_private->height))
!PIXEL_FEQUAL (private->y2 - private->y1, options_private->height))
{
/* Calculate x2, y2 that will create a rectangle of given height, for the
* current options.

View File

@@ -427,8 +427,12 @@ gimp_tool_initialize (GimpTool *tool,
if (! GIMP_TOOL_GET_CLASS (tool)->initialize (tool, display, &error))
{
gimp_tool_message (tool, display, error->message);
g_clear_error (&error);
if (error)
{
gimp_tool_message (tool, display, error->message);
g_clear_error (&error);
}
return FALSE;
}

View File

@@ -895,6 +895,9 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory,
"creating session info %p (widget %p) for dock",
info, info->widget);
/* let new docks appear at the pointer position */
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
/* if we create a new session info, we never call
* gimp_session_info_set_geometry(), but still the
* dialog needs GDK_HINT_USER_POS so it keeps its

View File

@@ -77,10 +77,10 @@ gimp_error_console_init (GimpErrorConsole *console)
console->text_buffer = gtk_text_buffer_new (NULL);
gtk_text_buffer_create_tag (console->text_buffer, "title",
"scale", PANGO_SCALE_LARGE,
"weight", PANGO_WEIGHT_BOLD,
NULL);
gtk_text_buffer_create_tag (console->text_buffer, "message",
"scale", PANGO_SCALE_SMALL,
NULL);
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
@@ -201,7 +201,7 @@ gimp_error_console_add (GimpErrorConsole *console,
pixbuf = gtk_widget_render_icon (console->text_view,
gimp_get_message_stock_id (severity),
GTK_ICON_SIZE_MENU, NULL);
GTK_ICON_SIZE_BUTTON, NULL);
gtk_text_buffer_insert_pixbuf (console->text_buffer, &end, pixbuf);
g_object_unref (pixbuf);

View File

@@ -62,6 +62,8 @@ struct _GimpFileDialogState
static void gimp_file_dialog_progress_iface_init (GimpProgressInterface *iface);
static void gimp_file_dialog_destroy (GtkObject *object);
static gboolean gimp_file_dialog_delete_event (GtkWidget *widget,
GdkEventAny *event);
static void gimp_file_dialog_response (GtkDialog *dialog,
@@ -121,9 +123,12 @@ G_DEFINE_TYPE_WITH_CODE (GimpFileDialog, gimp_file_dialog,
static void
gimp_file_dialog_class_init (GimpFileDialogClass *klass)
{
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GtkDialogClass *dialog_class = GTK_DIALOG_CLASS (klass);
object_class->destroy = gimp_file_dialog_destroy;
widget_class->delete_event = gimp_file_dialog_delete_event;
dialog_class->response = gimp_file_dialog_response;
@@ -147,6 +152,16 @@ gimp_file_dialog_progress_iface_init (GimpProgressInterface *iface)
iface->get_window = gimp_file_dialog_progress_get_window;
}
static void
gimp_file_dialog_destroy (GtkObject *object)
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (object);
GTK_OBJECT_CLASS (parent_class)->destroy (object);
dialog->progress = NULL;
}
static gboolean
gimp_file_dialog_delete_event (GtkWidget *widget,
GdkEventAny *event)
@@ -164,7 +179,8 @@ gimp_file_dialog_response (GtkDialog *dialog,
{
file_dialog->canceled = TRUE;
if (GIMP_PROGRESS_BOX (file_dialog->progress)->active &&
if (file_dialog->progress &&
GIMP_PROGRESS_BOX (file_dialog->progress)->active &&
GIMP_PROGRESS_BOX (file_dialog->progress)->cancelable)
{
gimp_progress_cancel (GIMP_PROGRESS (dialog));
@@ -178,14 +194,17 @@ gimp_file_dialog_progress_start (GimpProgress *progress,
gboolean cancelable)
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
GimpProgress *retval;
GimpProgress *retval = NULL;
retval = gimp_progress_start (GIMP_PROGRESS (dialog->progress),
message, cancelable);
gtk_widget_show (dialog->progress);
if (dialog->progress)
{
retval = gimp_progress_start (GIMP_PROGRESS (dialog->progress),
message, cancelable);
gtk_widget_show (dialog->progress);
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
GTK_RESPONSE_CANCEL, cancelable);
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
GTK_RESPONSE_CANCEL, cancelable);
}
return retval;
}
@@ -195,8 +214,11 @@ gimp_file_dialog_progress_end (GimpProgress *progress)
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
gimp_progress_end (GIMP_PROGRESS (dialog->progress));
gtk_widget_hide (dialog->progress);
if (dialog->progress)
{
gimp_progress_end (GIMP_PROGRESS (dialog->progress));
gtk_widget_hide (dialog->progress);
}
}
static gboolean
@@ -204,7 +226,10 @@ gimp_file_dialog_progress_is_active (GimpProgress *progress)
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
return gimp_progress_is_active (GIMP_PROGRESS (dialog->progress));
if (dialog->progress)
return gimp_progress_is_active (GIMP_PROGRESS (dialog->progress));
return FALSE;
}
static void
@@ -213,7 +238,8 @@ gimp_file_dialog_progress_set_text (GimpProgress *progress,
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
gimp_progress_set_text (GIMP_PROGRESS (dialog->progress), message);
if (dialog->progress)
gimp_progress_set_text (GIMP_PROGRESS (dialog->progress), message);
}
static void
@@ -222,7 +248,8 @@ gimp_file_dialog_progress_set_value (GimpProgress *progress,
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
gimp_progress_set_value (GIMP_PROGRESS (dialog->progress), percentage);
if (dialog->progress)
gimp_progress_set_value (GIMP_PROGRESS (dialog->progress), percentage);
}
static gdouble
@@ -230,7 +257,10 @@ gimp_file_dialog_progress_get_value (GimpProgress *progress)
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
return gimp_progress_get_value (GIMP_PROGRESS (dialog->progress));
if (dialog->progress)
return gimp_progress_get_value (GIMP_PROGRESS (dialog->progress));
return 0.0;
}
static void
@@ -238,7 +268,8 @@ gimp_file_dialog_progress_pulse (GimpProgress *progress)
{
GimpFileDialog *dialog = GIMP_FILE_DIALOG (progress);
gimp_progress_pulse (GIMP_PROGRESS (dialog->progress));
if (dialog->progress)
gimp_progress_pulse (GIMP_PROGRESS (dialog->progress));
}
static guint32
@@ -368,6 +399,10 @@ gimp_file_dialog_set_sensitive (GimpFileDialog *dialog,
g_return_if_fail (GIMP_IS_FILE_DIALOG (dialog));
/* bail out if we are already destroyed */
if (! dialog->progress)
return;
children =
gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox));

View File

@@ -171,6 +171,15 @@ gimp_help_user_manual_is_installed (Gimp *gimp)
}
g_free (locales);
if (! found)
{
gchar *path = g_build_filename (basedir, "en", "gimp-help.xml", NULL);
found = g_file_test (path, G_FILE_TEST_IS_REGULAR);
g_free (path);
}
}
g_free (basedir);

View File

@@ -37,6 +37,8 @@
static void gimp_progress_box_progress_iface_init (GimpProgressInterface *iface);
static void gimp_progress_box_destroy (GtkObject *object);
static GimpProgress *
gimp_progress_box_progress_start (GimpProgress *progress,
const gchar *message,
@@ -55,10 +57,15 @@ G_DEFINE_TYPE_WITH_CODE (GimpProgressBox, gimp_progress_box, GTK_TYPE_VBOX,
G_IMPLEMENT_INTERFACE (GIMP_TYPE_PROGRESS,
gimp_progress_box_progress_iface_init))
#define parent_class gimp_progress_box_parent_class
static void
gimp_progress_box_class_init (GimpProgressBoxClass *klass)
{
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
object_class->destroy = gimp_progress_box_destroy;
}
static void
@@ -93,6 +100,16 @@ gimp_progress_box_progress_iface_init (GimpProgressInterface *iface)
iface->pulse = gimp_progress_box_progress_pulse;
}
static void
gimp_progress_box_destroy (GtkObject *object)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (object);
GTK_OBJECT_CLASS (parent_class)->destroy (object);
box->progress = NULL;
}
static GimpProgress *
gimp_progress_box_progress_start (GimpProgress *progress,
const gchar *message,
@@ -100,6 +117,9 @@ gimp_progress_box_progress_start (GimpProgress *progress,
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
if (! box->progress)
return NULL;
if (! box->active)
{
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
@@ -123,11 +143,10 @@ gimp_progress_box_progress_start (GimpProgress *progress,
static void
gimp_progress_box_progress_end (GimpProgress *progress)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
if (box->active)
if (gimp_progress_box_progress_is_active (progress))
{
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
gtk_label_set_text (GTK_LABEL (box->label), "");
gtk_progress_bar_set_fraction (bar, 0.0);
@@ -143,17 +162,17 @@ gimp_progress_box_progress_is_active (GimpProgress *progress)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
return box->active;
return (box->progress && box->active);
}
static void
gimp_progress_box_progress_set_text (GimpProgress *progress,
const gchar *message)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
if (box->active)
if (gimp_progress_box_progress_is_active (progress))
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
gtk_label_set_text (GTK_LABEL (box->label), message);
if (GTK_WIDGET_DRAWABLE (box->progress))
@@ -165,11 +184,10 @@ static void
gimp_progress_box_progress_set_value (GimpProgress *progress,
gdouble percentage)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
if (box->active)
if (gimp_progress_box_progress_is_active (progress))
{
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
box->value = percentage;
@@ -188,10 +206,10 @@ gimp_progress_box_progress_set_value (GimpProgress *progress,
static gdouble
gimp_progress_box_progress_get_value (GimpProgress *progress)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
if (box->active)
return box->value;
if (gimp_progress_box_progress_is_active (progress))
{
return GIMP_PROGRESS_BOX (progress)->value;
}
return 0.0;
}
@@ -199,11 +217,10 @@ gimp_progress_box_progress_get_value (GimpProgress *progress)
static void
gimp_progress_box_progress_pulse (GimpProgress *progress)
{
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
if (box->active)
if (gimp_progress_box_progress_is_active (progress))
{
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
GimpProgressBox *box = GIMP_PROGRESS_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
gtk_progress_bar_pulse (bar);

View File

@@ -44,6 +44,7 @@
enum
{
FILE_DIALOG_SETUP,
IMPORT,
EXPORT,
LAST_SIGNAL
@@ -127,6 +128,17 @@ gimp_settings_box_class_init (GimpSettingsBoxClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
settings_box_signals[FILE_DIALOG_SETUP] =
g_signal_new ("file-dialog-setup",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GimpSettingsBoxClass, file_dialog_setup),
NULL, NULL,
gimp_marshal_VOID__OBJECT_BOOLEAN,
G_TYPE_NONE, 2,
GTK_TYPE_FILE_CHOOSER_DIALOG,
G_TYPE_BOOLEAN);
settings_box_signals[IMPORT] =
g_signal_new ("import",
G_TYPE_FROM_CLASS (klass),
@@ -152,6 +164,7 @@ gimp_settings_box_class_init (GimpSettingsBoxClass *klass)
object_class->set_property = gimp_settings_box_set_property;
object_class->get_property = gimp_settings_box_get_property;
klass->file_dialog_setup = NULL;
klass->import = NULL;
klass->export = NULL;
@@ -741,6 +754,10 @@ gimp_settings_box_file_dialog (GimpSettingsBox *box,
gimp_help_connect (box->file_dialog, gimp_standard_help_func,
box->file_dialog_help_id, NULL);
/* allow callbacks to add widgets to the dialog */
g_signal_emit (box, settings_box_signals[FILE_DIALOG_SETUP], 0,
box->file_dialog, save);
gtk_widget_show (box->file_dialog);
}

View File

@@ -60,10 +60,13 @@ struct _GimpSettingsBoxClass
{
GtkHBoxClass parent_class;
void (* import) (GimpSettingsBox *box,
const gchar *filename);
void (* export) (GimpSettingsBox *box,
const gchar *filename);
void (* file_dialog_setup) (GimpSettingsBox *box,
GtkFileChooserDialog *dialog,
gboolean export);
void (* import) (GimpSettingsBox *box,
const gchar *filename);
void (* export) (GimpSettingsBox *box,
const gchar *filename);
};

View File

@@ -57,6 +57,8 @@ static void gimp_thumb_box_progress_iface_init (GimpProgressInterface *iface
static void gimp_thumb_box_dispose (GObject *object);
static void gimp_thumb_box_finalize (GObject *object);
static void gimp_thumb_box_destroy (GtkObject *object);
static void gimp_thumb_box_style_set (GtkWidget *widget,
GtkStyle *prev_style);
@@ -108,13 +110,16 @@ G_DEFINE_TYPE_WITH_CODE (GimpThumbBox, gimp_thumb_box, GTK_TYPE_FRAME,
static void
gimp_thumb_box_class_init (GimpThumbBoxClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->dispose = gimp_thumb_box_dispose;
object_class->finalize = gimp_thumb_box_finalize;
object_class->dispose = gimp_thumb_box_dispose;
object_class->finalize = gimp_thumb_box_finalize;
widget_class->style_set = gimp_thumb_box_style_set;
gtk_object_class->destroy = gimp_thumb_box_destroy;
widget_class->style_set = gimp_thumb_box_style_set;
}
static void
@@ -167,6 +172,16 @@ gimp_thumb_box_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
gimp_thumb_box_destroy (GtkObject *object)
{
GimpThumbBox *box = GIMP_THUMB_BOX (object);
GTK_OBJECT_CLASS (parent_class)->destroy (object);
box->progress = NULL;
}
static void
gimp_thumb_box_style_set (GtkWidget *widget,
GtkStyle *prev_style)
@@ -197,6 +212,9 @@ gimp_thumb_box_progress_start (GimpProgress *progress,
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
if (! box->progress)
return NULL;
if (! box->progress_active)
{
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
@@ -221,10 +239,9 @@ gimp_thumb_box_progress_start (GimpProgress *progress,
static void
gimp_thumb_box_progress_end (GimpProgress *progress)
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
if (box->progress_active)
if (gimp_thumb_box_progress_is_active (progress))
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
gtk_progress_bar_set_fraction (bar, 0.0);
@@ -238,17 +255,16 @@ gimp_thumb_box_progress_is_active (GimpProgress *progress)
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
return box->progress_active;
return (box->progress && box->progress_active);
}
static void
gimp_thumb_box_progress_set_value (GimpProgress *progress,
gdouble percentage)
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
if (box->progress_active)
if (gimp_thumb_box_progress_is_active (progress))
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
gtk_progress_bar_set_fraction (bar, percentage);
@@ -258,10 +274,9 @@ gimp_thumb_box_progress_set_value (GimpProgress *progress,
static gdouble
gimp_thumb_box_progress_get_value (GimpProgress *progress)
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
if (box->progress_active)
if (gimp_thumb_box_progress_is_active (progress))
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
return gtk_progress_bar_get_fraction (bar);
@@ -273,10 +288,9 @@ gimp_thumb_box_progress_get_value (GimpProgress *progress)
static void
gimp_thumb_box_progress_pulse (GimpProgress *progress)
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
if (box->progress_active)
if (gimp_thumb_box_progress_is_active (progress))
{
GimpThumbBox *box = GIMP_THUMB_BOX (progress);
GtkProgressBar *bar = GTK_PROGRESS_BAR (box->progress);
gtk_progress_bar_pulse (bar);

View File

@@ -8,11 +8,11 @@ AC_PREREQ(2.54)
m4_define([gimp_major_version], [2])
m4_define([gimp_minor_version], [6])
m4_define([gimp_micro_version], [1])
m4_define([gimp_micro_version], [4])
m4_define([gimp_real_version],
[gimp_major_version.gimp_minor_version.gimp_micro_version])
m4_define([gimp_version], [gimp_real_version])
m4_define([gimp_interface_age], [1])
m4_define([gimp_interface_age], [4])
m4_define([gimp_binary_age],
[m4_eval(100 * gimp_minor_version + gimp_micro_version)])
@@ -1706,12 +1706,28 @@ AC_SUBST(MAIL)
AC_SUBST(SCREENSHOT)
############################################################
# Check for Mac OS X TWAIN framework (can't build on Darwin)
############################################################
####################
# Check for Mac OS X
####################
AC_MSG_CHECKING([if compiling for Mac OS X])
case "$target_or_host" in
*-*-darwin*)
AC_MSG_RESULT(yes)
AC_DEFINE(PLATFORM_OSX, 1, [define to 1 if compiling for Mac OS X])
;;
*)
AC_MSG_RESULT(no)
;;
esac
####################################
# Check for Mac OS X TWAIN framework
####################################
mac_twain_ok=no
AC_MSG_CHECKING([checking for Mac OS X TWAIN support])
AC_MSG_CHECKING([for Mac OS X TWAIN support])
AC_TRY_CPP([
#include <Carbon/Carbon.h>
#include <TWAIN/TWAIN.h>
@@ -1720,25 +1736,6 @@ AC_MSG_RESULT($mac_twain_ok)
AM_CONDITIONAL(HAVE_MAC_TWAIN, test "x$mac_twain_ok" = xyes)
#############################################################
# Check for Mac OS X Carbon framework (can't build on Darwin)
#############################################################
carbon_ok=no
AC_MSG_CHECKING([checking for Mac OS X Carbon support])
AC_TRY_CPP([
#include <Carbon/Carbon.h>
#include <CoreServices/CoreServices.h>
], carbon_ok=yes)
AC_MSG_RESULT($carbon_ok)
if test "x$carbon_ok" = "xyes"; then
AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
CARBON_LDFLAGS="-framework Carbon"
AC_SUBST(CARBON_LDFLAGS)
fi
AM_CONDITIONAL(HAVE_CARBON, test "x$carbon_ok" = "xyes")
##########################################################
# Determine where to install the desktop & mime info files
##########################################################

View File

@@ -32,8 +32,8 @@
* Convert specified image to RGB color
*
* This procedure converts the specified image to RGB color. This
* process requires an image in RGB or Indexed color mode. No image
* content is lost in this process aside from the colormap for an
* process requires an image in Grayscale or Indexed color mode. No
* image content is lost in this process aside from the colormap for an
* indexed image.
*
* Returns: TRUE on success.

View File

@@ -10,6 +10,7 @@ endif
if BUILD_JPEG
file_jpeg = file-jpeg
file_psd = file-psd
endif
if BUILD_PRINT
@@ -57,7 +58,7 @@ SUBDIRS = \
file-fli \
$(file_ico) \
$(file_jpeg) \
file-psd \
$(file_psd) \
file-sgi \
$(file_uri) \
$(file_xjt) \

View File

@@ -323,7 +323,7 @@ run (const gchar *name,
gint *nreturn_vals,
GimpParam **return_vals)
{
static GimpParam values[2];
static GimpParam values[4];
GimpRunMode run_mode;
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
gint32 image_ID = -1;

View File

@@ -498,28 +498,31 @@ run (const gchar *name,
gimp_display_delete (display_ID);
else
gimp_image_delete (image_ID);
}
}
/* pw - now we need to change the defaults to be whatever
* was used to save this image. Dump the old parasites
* and add new ones. */
gimp_image_parasite_detach (orig_image_ID, "gimp-comment");
if (image_comment && strlen (image_comment))
if (status == GIMP_PDB_SUCCESS)
{
parasite = gimp_parasite_new ("gimp-comment",
GIMP_PARASITE_PERSISTENT,
strlen (image_comment) + 1,
image_comment);
/* pw - now we need to change the defaults to be whatever
* was used to save this image. Dump the old parasites
* and add new ones. */
gimp_image_parasite_detach (orig_image_ID, "gimp-comment");
if (image_comment && strlen (image_comment))
{
parasite = gimp_parasite_new ("gimp-comment",
GIMP_PARASITE_PERSISTENT,
strlen (image_comment) + 1,
image_comment);
gimp_image_parasite_attach (orig_image_ID, parasite);
gimp_parasite_free (parasite);
}
gimp_image_parasite_detach (orig_image_ID, "jpeg-save-options");
parasite = gimp_parasite_new ("jpeg-save-options",
0, sizeof (jsvals), &jsvals);
gimp_image_parasite_attach (orig_image_ID, parasite);
gimp_parasite_free (parasite);
}
gimp_image_parasite_detach (orig_image_ID, "jpeg-save-options");
parasite = gimp_parasite_new ("jpeg-save-options",
0, sizeof (jsvals), &jsvals);
gimp_image_parasite_attach (orig_image_ID, parasite);
gimp_parasite_free (parasite);
}
else
{

View File

@@ -173,8 +173,6 @@ load_layer_resource (PSDlayerres *res_a,
FILE *f,
GError **error)
{
gint pad;
/* Set file position to start of layer resource data block */
if (fseek (f, res_a->data_start, SEEK_SET) < 0)
{
@@ -232,14 +230,8 @@ load_layer_resource (PSDlayerres *res_a,
load_resource_unknown (res_a, lyr_a, f, error);
}
/* Layer blocks are null padded to even length */
if (res_a->data_len % 2 == 0)
pad = 0;
else
pad = 1;
/* Set file position to end of layer resource block */
if (fseek (f, res_a->data_start + res_a->data_len + pad, SEEK_SET) < 0)
if (fseek (f, res_a->data_start + res_a->data_len, SEEK_SET) < 0)
{
psd_set_error (feof (f), errno, error);
return -1;

View File

@@ -436,9 +436,12 @@ xfwrite (FILE *fd,
glong len,
const gchar *why)
{
if (len == 0)
return;
if (fwrite (buf, len, 1, fd) == 0)
{
IFDBG printf (" Function: xfwrite: Error while writing '%s'\n", why);
g_printerr ("%s: Error while writing '%s'\n", G_STRFUNC, why);
gimp_quit ();
}
}
@@ -458,7 +461,7 @@ write_gchar (FILE *fd,
pos = ftell (fd);
if (fwrite (&b, 1, 2, fd) == 0)
{
IFDBG printf (" Function: write_gchar: Error while writing '%s'\n", why);
g_printerr ("%s: Error while writing '%s'\n", G_STRFUNC, why);
gimp_quit ();
}
fseek (fd, pos + 1, SEEK_SET);
@@ -479,7 +482,7 @@ write_gint16 (FILE *fd,
if (fwrite (&b, 1, 2, fd) == 0)
{
IFDBG printf (" Function: write_gint16: Error while writing '%s'\n", why);
g_printerr ("%s: Error while writing '%s'\n", G_STRFUNC, why);
gimp_quit ();
}
}
@@ -501,7 +504,7 @@ write_gint32 (FILE *fd,
if (fwrite (&b, 1, 4, fd) == 0)
{
IFDBG printf (" Function: write_gint32: Error while writing '%s'\n", why);
g_printerr ("%s: Error while writing '%s'\n", G_STRFUNC, why);
gimp_quit ();
}
}
@@ -626,7 +629,8 @@ gimpBaseTypeToPsdMode (GimpImageBaseType gimpBaseType)
return 2; /* Indexed */
default:
g_message (_("Error: Can't convert GIMP base imagetype to PSD mode"));
IFDBG printf ("PSD Save: gimpBaseType value is %d, can't convert to PSD mode", gimpBaseType);
IFDBG printf ("PSD Save: gimpBaseType value is %d, "
"can't convert to PSD mode", gimpBaseType);
gimp_quit ();
return 3; /* Return RGB by default */
}
@@ -1540,6 +1544,11 @@ create_merged_image (gint32 image_id)
if (! transparency_found)
gimp_layer_flatten (projection);
}
else
{
if (gimp_drawable_has_alpha (projection))
gimp_layer_flatten (projection); /* PSDs don't support transparency information in indexed images*/
}
return projection;
}

View File

@@ -298,7 +298,7 @@ copy_uri (const gchar *src_uri,
progress.mode = mode;
success = g_file_copy (src_file, dest_file, 0, NULL,
success = g_file_copy (src_file, dest_file, G_FILE_COPY_OVERWRITE, NULL,
uri_progress_callback, &progress,
error);

View File

@@ -133,25 +133,15 @@ print_draw_page (GtkPrintContext *context,
{
cairo_t *cr;
cairo_surface_t *surface;
gdouble cr_width;
gdouble cr_height;
gdouble cr_dpi_x;
gdouble cr_dpi_y;
cr = gtk_print_context_get_cairo_context (context);
surface = print_cairo_surface_from_drawable (data->drawable_id);
cr_width = gtk_print_context_get_width (context);
cr_height = gtk_print_context_get_height (context);
cr_dpi_x = gtk_print_context_get_dpi_x (context);
cr_dpi_y = gtk_print_context_get_dpi_y (context);
cairo_translate (cr,
data->offset_x / cr_dpi_x * 72.0,
data->offset_y / cr_dpi_y * 72.0);
cairo_translate (cr, data->offset_x, data->offset_y);
cairo_scale (cr,
cr_dpi_x / data->xres, cr_dpi_y / data->yres);
gtk_print_context_get_dpi_x (context) / data->xres,
gtk_print_context_get_dpi_y (context) / data->yres);
cairo_rectangle (cr,
0, 0,

View File

@@ -372,8 +372,7 @@ print_preview_motion_notify_event (GtkWidget *widget,
if (preview->image_offset_x != offset_x ||
preview->image_offset_y != offset_y)
{
print_preview_set_image_offsets (preview,
offset_x, offset_y);
print_preview_set_image_offsets (preview, offset_x, offset_y);
g_signal_emit (preview,
print_preview_signals[OFFSETS_CHANGED], 0,
@@ -397,7 +396,8 @@ print_preview_leave_notify_event (GtkWidget *widget,
{
PrintPreview *preview = PRINT_PREVIEW (widget);
print_preview_set_inside (preview, FALSE);
if (event->mode == GDK_CROSSING_NORMAL)
print_preview_set_inside (preview, FALSE);
return FALSE;
}
@@ -794,10 +794,12 @@ print_preview_get_thumbnail (GimpDrawable *drawable,
case 3:
format = CAIRO_FORMAT_RGB24;
break;
case 2:
case 4:
format = CAIRO_FORMAT_ARGB32;
break;
default:
g_assert_not_reached ();
break;

View File

@@ -234,7 +234,7 @@ print_image (gint32 image_ID,
print_settings_load (&data);
gtk_print_operation_set_unit (operation, GTK_UNIT_POINTS);
gtk_print_operation_set_unit (operation, GTK_UNIT_PIXEL);
g_signal_connect (operation, "begin-print",
G_CALLBACK (begin_print),

View File

@@ -71,6 +71,7 @@ are installed.
'''
import string as _string
import math
import gimp
import gimpcolor
from gimpenums import *
@@ -479,13 +480,25 @@ def _interact(proc_name, start_params):
# def get_value(self):
# return eval(self.get_text(), {}, {})
def precision(step):
# calculate a reasonable precision from a given step size
if math.fabs(step) >= 1.0 or step == 0.0:
digits = 0
else:
digits = abs(math.floor(math.log10(math.fabs(step))));
if digits > 20:
digits = 20
return int(digits)
class SliderEntry(gtk.HScale):
# bounds is (upper, lower, step)
def __init__(self, default=0, bounds=(0, 100, 5)):
self.adj = gtk.Adjustment(default, bounds[0],
bounds[1], bounds[2],
bounds[2], 0)
step = bounds[2]
self.adj = gtk.Adjustment(default, bounds[0], bounds[1],
step, 10 * step, 0)
gtk.HScale.__init__(self, self.adj)
self.set_digits(precision(step))
def get_value(self):
return self.adj.value
@@ -493,16 +506,10 @@ def _interact(proc_name, start_params):
class SpinnerEntry(gtk.SpinButton):
# bounds is (upper, lower, step)
def __init__(self, default=0, bounds=(0, 100, 5)):
self.adj = gtk.Adjustment(default, bounds[0],
bounds[1], bounds[2],
bounds[2], 0)
gtk.SpinButton.__init__(self, self.adj, 1, 0)
def get_value(self):
try:
return int(self.get_text())
except ValueError, e:
raise EntryValueError, e.args
step = bounds[2]
self.adj = gtk.Adjustment(default, bounds[0], bounds[1],
step, 10 * step, 0)
gtk.SpinButton.__init__(self, self.adj, step, precision(step))
class ToggleEntry(gtk.ToggleButton):
def __init__(self, default=0):

View File

@@ -3120,7 +3120,7 @@
(is-constructor-of "GimpPaletteSelectButton")
(return-type "GtkWidget*")
(properties
'("title")
'("title" (optional))
'("palette-name" (argname "palette_name") (optional))
)
)

View File

@@ -27,8 +27,12 @@ def foggify(img, layer, name, colour, turbulence, opacity):
gimp.context_push()
img.undo_group_start()
fog = gimp.Layer(img, name, layer.width, layer.height, RGBA_IMAGE,
opacity, NORMAL_MODE)
if img.base_type is RGB:
type = RGBA_IMAGE
else:
type = GRAYA_IMAGE
fog = gimp.Layer(img, name,
layer.width, layer.height, type, opacity, NORMAL_MODE)
fog.fill(TRANSPARENT_FILL)
img.add_layer(fog, 0)

View File

@@ -396,16 +396,17 @@ End of the part generated by GIMP
try:
html_file = open (self.filename)
#Regular expression to pick everything up to the next doublequote
#character after finding the sequence 'href="'. The found sequences
#will be returned as a list by the "findall" method.
# Regular expression to pick everything up to the next
# doublequote character after finding the sequence 'href="'.
# The found sequences will be returned as a list by the
# "findall" method.
expr = re.compile (r"""href\=\"([^\"]*?)\"""")
url_list = expr.findall (html_file.read (2 ** 18))
html_file.close()
except:
#silently ignore any errors parsing this. The file being
#ovewriten may not be a file genrated by py-slice.
# silently ignore any errors parsing this. The file being
# overwritten may not be a file created by py-slice.
pass
return url_list
@@ -413,6 +414,7 @@ End of the part generated by GIMP
register(
"python-fu-slice",
# table snippet means a small piece of HTML code here
N_("Cuts an image along its guides, creates images and a HTML table snippet"),
"""Add guides to an image. Then run this. It will cut along the guides,
and give you the html to reassemble the resulting images. If you
@@ -440,6 +442,7 @@ register(
(0,15,1)),
(PF_TOGGLE, "animate", _("Javascript for onmouseover and clicked"),
False),
# table caps are table cells on the edge of the table
(PF_TOGGLE, "skip-caps", _("Skip animation for table caps"), True)
],
[],

View File

@@ -68,6 +68,8 @@ static pointer script_fu_quit_call (scheme *sc,
static pointer script_fu_nil_call (scheme *sc,
pointer a);
static gboolean ts_load_file (const gchar *dirname,
const gchar *basename);
typedef struct
{
@@ -239,30 +241,17 @@ tinyscheme_init (const gchar *path,
for (list = dir_list; list; list = g_list_next (list))
{
gchar *filename = g_build_filename (list->data,
"script-fu.init", NULL);
FILE *fin = g_fopen (filename, "rb");
g_free (filename);
if (fin)
if (ts_load_file (list->data, "script-fu.init"))
{
scheme_load_file (&sc, fin);
fclose (fin);
/* To improve compatibility with older Script-Fu scripts,
* load script-fu-compat.init from the same directory.
*/
filename = g_build_filename (list->data,
"script-fu-compat.init", NULL);
fin = g_fopen (filename, "rb");
g_free (filename);
ts_load_file (list->data, "script-fu-compat.init");
if (fin)
{
scheme_load_file (&sc, fin);
fclose (fin);
}
/* To improve compatibility with older GIMP version,
* load plug-in-compat.init from the same directory.
*/
ts_load_file (list->data, "plug-in-compat.init");
break;
}
@@ -578,6 +567,30 @@ ts_init_procedures (scheme *sc,
g_free (proc_list);
}
static gboolean
ts_load_file (const gchar *dirname,
const gchar *basename)
{
gchar *filename;
FILE *fin;
filename = g_build_filename (dirname, basename, NULL);
fin = g_fopen (filename, "rb");
g_free (filename);
if (fin)
{
scheme_load_file (&sc, fin);
fclose (fin);
return TRUE;
}
return FALSE;
}
static void
convert_string (gchar *str)
{

View File

@@ -7,6 +7,7 @@ scriptdatadir = $(gimpdatadir)/scripts
scripts = \
script-fu.init \
script-fu-compat.init \
plug-in-compat.init \
3d-outline.scm \
3dTruchet.scm \
add-bevel.scm \

View File

@@ -0,0 +1,24 @@
; The Scheme code in this file provides some compatibility with
; scripts that were originally written for use with older versions of
; GIMP.
;
; It provides PDB procedures that used to be provided by plug-ins that
; were since then removed from the GIMP distribution. You should not
; use these in newly written scripts as the functions defined here may
; be removed at some later date.
(define (plug-in-color-map run-mode img layer
src-color-1 src-color-2 dest-color-1 dest-color-2
map-mode)
(gimp-levels layer HISTOGRAM-RED
(car src-color-1) (car src-color-2) 1.0
(- 255 (car dest-color-1)) (- 255 (car dest-color-2)))
(gimp-levels layer HISTOGRAM-GREEN
(cadr src-color-1) (cadr src-color-2) 1.0
(- 255 (cadr dest-color-1)) (- 255 (cadr dest-color-2)))
(gimp-levels layer HISTOGRAM-BLUE
(caddr src-color-1) (caddr src-color-2) 1.0
(- 255 (caddr dest-color-1)) (- 255 (caddr dest-color-2)))
(gimp-levels layer HISTOGRAM-VALUE 0 255 1.0 255 0)
)

View File

@@ -1,3 +1,38 @@
2008-12-15 Gabor Kelemen <kelemeng@gnome.hu>
* hu.po: Translation updated by Arpad Biro.
2008-11-16 Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
* be.po: Updated Belarusian translation by Hleb Valoshka.
2008-11-11 Mugurel Tudor <mugurelu@gnome.ro>
* ro.po: Updated Romanian translation
by Cristian Secară <cristi AT secarica DOT ro>
2008-11-08 Wadim Dziedzic <wdziedzic@aviary.pl>
* pl.po: Updated Polish translation by Bartosz Kosiorek
2008-11-01 Wouter Bolsterlee <wbolster@svn.gnome.org>
* nl.po: Updated Dutch translation by Filip Vervloesem.
2008-11-01 Takeshi AIHANA <takeshi.aihana@gmail.com>
* ja.po: Fixed Japanese translation by
Kiyotaka Nishibori.
2008-10-28 Petr Kovar <pknbe@volny.cz>
* cs.po: Fixed Czech translation (bug #517967).
2008-10-13 Takeshi AIHANA <takeshi.aihana@gmail.com>
* ja.po: Updated Japanese translation by
Kiyotaka Nishibori.
2008-10-08 Mugurel Tudor <mugurelu@gnome.ro>
* ro.po: Updated Romanian translation by

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp 2.4.5\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-08-08 15:29+0000\n"
"PO-Revision-Date: 2008-08-15 20:02+0300\n"
"POT-Creation-Date: 2008-11-07 03:54+0000\n"
"PO-Revision-Date: 2008-11-07 10:46+0300\n"
"Last-Translator: Hleb Valoshka <375gnu@gmail.com>\n"
"Language-Team: Belarusian <i18n@mova.org>\n"
"MIME-Version: 1.0\n"
@@ -15,6 +15,26 @@ msgstr ""
"X-Poedit-SourceCharset: utf-8\n"
"X-Poedit-Basepath: /home/globus/build/gimp-2.4.1/po\n"
#. procedure executed successfully
#: ../libgimp/gimp.c:1045
msgid "success"
msgstr "посьпех"
#. procedure execution failed
#: ../libgimp/gimp.c:1049
msgid "execution error"
msgstr "памылка выконваньня"
#. procedure called incorrectly
#: ../libgimp/gimp.c:1053
msgid "calling error"
msgstr "памылка выкліку"
#. procedure execution cancelled
#: ../libgimp/gimp.c:1057
msgid "cancelled"
msgstr "адменена"
#: ../libgimp/gimpbrushselectbutton.c:170
msgid "Brush Selection"
msgstr "Выбар пэндзля"
@@ -22,7 +42,7 @@ msgstr "Выбар пэндзля"
#: ../libgimp/gimpbrushselectbutton.c:913
#: ../libgimp/gimppatternselectbutton.c:714
msgid "_Browse..."
msgstr "_Прагледзець..."
msgstr "_Прагледзець"
#: ../libgimp/gimpexport.c:217
#: ../libgimp/gimpexport.c:253
@@ -35,7 +55,7 @@ msgstr "Дадатак %s не апрацоўвае пласты"
#: ../libgimp/gimpexport.c:236
#: ../libgimp/gimpexport.c:254
msgid "Merge Visible Layers"
msgstr "Аб'яднаць бачныя пласты"
msgstr "Абʼяднаць бачныя пласты"
#: ../libgimp/gimpexport.c:226
#, c-format
@@ -631,7 +651,7 @@ msgid "Incremental"
msgstr "З павелічэньнем"
#: ../libgimpbase/gimpbaseenums.c:624
#: ../modules/cdisplay_lcms.c:195
#: ../modules/display-filter-lcms.c:191
msgid "None"
msgstr "Няма"
@@ -699,51 +719,51 @@ msgstr "Абрэзаць да выніку"
msgid "Crop with aspect"
msgstr "Абрэзаць з суадносінамі бакоў"
#: ../libgimpbase/gimpbaseenums.c:880
#: ../libgimpbase/gimpbaseenums.c:909
msgid "Internal GIMP procedure"
msgstr "Унутраная працэдура GIMP"
#: ../libgimpbase/gimpbaseenums.c:881
#: ../libgimpbase/gimpbaseenums.c:910
msgid "GIMP Plug-In"
msgstr "Дадатак GIMP"
#: ../libgimpbase/gimpbaseenums.c:882
#: ../libgimpbase/gimpbaseenums.c:911
msgid "GIMP Extension"
msgstr "Пашыральнік GIMP"
#: ../libgimpbase/gimpbaseenums.c:883
#: ../libgimpbase/gimpbaseenums.c:912
msgid "Temporary Procedure"
msgstr "Часовая працэдура"
#: ../libgimpbase/gimpbaseenums.c:1045
#: ../libgimpbase/gimpbaseenums.c:1074
msgid "From left to right"
msgstr "Зьлева направа"
#: ../libgimpbase/gimpbaseenums.c:1046
#: ../libgimpbase/gimpbaseenums.c:1075
msgid "From right to left"
msgstr "Справа налева"
#: ../libgimpbase/gimpbaseenums.c:1076
#: ../libgimpbase/gimpbaseenums.c:1105
msgid "Left justified"
msgstr "Па левы бок"
#: ../libgimpbase/gimpbaseenums.c:1077
#: ../libgimpbase/gimpbaseenums.c:1106
msgid "Right justified"
msgstr "Па правы бок"
#: ../libgimpbase/gimpbaseenums.c:1078
#: ../libgimpbase/gimpbaseenums.c:1107
msgid "Centered"
msgstr "Цэнтраваны"
#: ../libgimpbase/gimpbaseenums.c:1079
#: ../libgimpbase/gimpbaseenums.c:1108
msgid "Filled"
msgstr "Запоўнены"
#: ../libgimpbase/gimputils.c:170
#: ../libgimpbase/gimputils.c:175
#: ../modules/cdisplay_lcms.c:187
#: ../modules/colorsel_cmyk_lcms.c:411
#: ../modules/colorsel_cmyk_lcms.c:417
#: ../modules/display-filter-lcms.c:183
#: ../modules/color-selector-cmyk-lcms.c:407
#: ../modules/color-selector-cmyk-lcms.c:413
msgid "(invalid UTF-8 string)"
msgstr "(недапушчальны радок UTF-8)"
@@ -813,7 +833,7 @@ msgstr "Насычаная"
#: ../libgimpconfig/gimpcolorconfig-enums.c:59
msgid "Absolute colorimetric"
msgstr "Абсалючная калерамэтрычная"
msgstr "Абсалючная колерамэтрычная"
#: ../libgimpconfig/gimpconfig-deserialize.c:97
#, c-format
@@ -824,22 +844,22 @@ msgstr "значэньне элемэнта %s не зьяўляецца дап
#: ../libgimpconfig/gimpconfig-deserialize.c:436
#, c-format
msgid "expected 'yes' or 'no' for boolean token %s, got '%s'"
msgstr "чакаўся 'yes' або 'no' для лягічнага элемэнта %s, атрыманы '%s'"
msgstr "чакаўся «yes» або «no» для лягічнага элемэнта %s, атрыманы «%s»"
#: ../libgimpconfig/gimpconfig-deserialize.c:510
#, c-format
msgid "invalid value '%s' for token %s"
msgstr "недапушчальнае значэньне '%s' элемэнта %s"
msgstr "недапушчальнае значэньне «%s» элемэнта %s"
#: ../libgimpconfig/gimpconfig-deserialize.c:525
#, c-format
msgid "invalid value '%ld' for token %s"
msgstr "недапушчальнае значэньне '%ld' элемэнта %s"
msgstr "недапушчальнае значэньне «%ld» элемэнта %s"
#: ../libgimpconfig/gimpconfig-deserialize.c:594
#, c-format
msgid "while parsing token '%s': %s"
msgstr "падчас аналізу элемэнта '%s': %s"
msgstr "падчас аналізу элемэнта «%s»: %s"
#: ../libgimpconfig/gimpconfig-iface.c:474
#: ../libgimpconfig/gimpconfig-iface.c:487
@@ -858,17 +878,17 @@ msgstr "Немагчыма раскрыць ${%s}"
#: ../libgimpconfig/gimpconfigwriter.c:693
#, c-format
msgid "Error writing to '%s': %s"
msgstr "Памылка запісу '%s': %s"
msgstr "Памылка запісу «%s»: %s"
#: ../libgimpconfig/gimpconfigwriter.c:136
#, c-format
msgid "Could not create temporary file for '%s': %s"
msgstr "Немагчыма стварыць часовы файл для '%s': %s"
msgstr "Немагчыма стварыць часовы файл для «%s»: %s"
#: ../libgimpconfig/gimpconfigwriter.c:149
#, c-format
msgid "Could not open '%s' for writing: %s"
msgstr "Немагчыма адкрыць '%s' на запіс: %s"
msgstr "Немагчыма адкрыць «%s» на запіс: %s"
#: ../libgimpconfig/gimpconfigwriter.c:674
#, c-format
@@ -876,7 +896,7 @@ msgid ""
"Error writing to temporary file for '%s': %s\n"
"The original file has not been touched."
msgstr ""
"Памылка запісу ў часовы файл для '%s': %s\n"
"Памылка запісу ў часовы файл для «%s»: %s\n"
"Арыгінальны відарыс не закрануты."
#: ../libgimpconfig/gimpconfigwriter.c:682
@@ -885,13 +905,13 @@ msgid ""
"Error writing to temporary file for '%s': %s\n"
"No file has been created."
msgstr ""
"Памылка запісу ў часовы файл для '%s': %s\n"
"Памылка запісу ў часовы файл для «%s»: %s\n"
"Файл ня быў створаны."
#: ../libgimpconfig/gimpconfigwriter.c:711
#, c-format
msgid "Could not create '%s': %s"
msgstr "Немагчыма стварыць '%s': %s"
msgstr "Немагчыма стварыць «%s»: %s"
#: ../libgimpconfig/gimpscanner.c:255
#, c-format
@@ -901,7 +921,7 @@ msgstr "недапушчальны радок UTF-8"
#: ../libgimpconfig/gimpscanner.c:606
#, c-format
msgid "Error while parsing '%s' in line %d: %s"
msgstr "Памылка пад час аналізу '%s' у радку %d: %s"
msgstr "Памылка пад час аналізу «%s» у радку %d: %s"
#: ../libgimpmodule/gimpmodule.c:153
#: ../libgimpmodule/gimpmodule.c:171
@@ -910,7 +930,7 @@ msgstr "Памылка пад час аналізу '%s' у радку %d: %s"
#: ../libgimpmodule/gimpmodule.c:418
#, c-format
msgid "Module '%s' load error: %s"
msgstr "Памылка загрузкі модуля '%s': %s"
msgstr "Памылка загрузкі модуля «%s»: %s"
#: ../libgimpmodule/gimpmodule.c:375
msgid "Module error"
@@ -941,7 +961,7 @@ msgstr ""
#: ../libgimpthumb/gimpthumb-utils.c:315
#, c-format
msgid "Failed to create thumbnail folder '%s'."
msgstr "Не ўдалося стварыць тэчку для мініятураў '%s'."
msgstr "Не ўдалося стварыць тэчку для мініятураў «%s»."
#: ../libgimpthumb/gimpthumbnail.c:498
#, c-format
@@ -975,12 +995,12 @@ msgstr "_Белы"
#: ../libgimpwidgets/gimpcolorprofilestore.c:144
msgid "Select color profile from disk..."
msgstr "Выбраць профіль колера з дыску..."
msgstr "Выбраць профіль колера з дыску"
#: ../libgimpwidgets/gimpcolorprofilestore.c:280
msgctxt "profile"
msgid "None"
msgstr "Ніякі"
msgstr "Няма"
#: ../libgimpwidgets/gimpcolorscales.c:98
msgid "Scales"
@@ -1100,7 +1120,7 @@ msgstr "Стыль клетак"
msgid "_Preview"
msgstr "_Агляд"
#: ../libgimpwidgets/gimppropwidgets.c:1861
#: ../libgimpwidgets/gimppropwidgets.c:1860
#, c-format
msgid "This text input field is limited to %d character."
msgid_plural "This text input field is limited to %d characters."
@@ -1184,7 +1204,7 @@ msgstr "_Нахіліць"
#: ../libgimpwidgets/gimpunitmenu.c:266
msgid "More..."
msgstr "Болей..."
msgstr "Болей"
#: ../libgimpwidgets/gimpunitmenu.c:581
msgid "Unit Selection"
@@ -1278,552 +1298,552 @@ msgstr "Набліжэньне"
msgid "Zoom out"
msgstr "Аддаленьне"
#: ../modules/cdisplay_colorblind.c:67
#: ../modules/display-filter-color-blind.c:67
msgid "Protanopia (insensitivity to red)"
msgstr "Пратанопія (чырвоная сьлепата)"
#: ../modules/cdisplay_colorblind.c:69
#: ../modules/display-filter-color-blind.c:69
msgid "Deuteranopia (insensitivity to green)"
msgstr "Дэўтэранопія (зялёная сьлепата)"
#: ../modules/cdisplay_colorblind.c:71
#: ../modules/display-filter-color-blind.c:71
msgid "Tritanopia (insensitivity to blue)"
msgstr "Трытанопія (сіняя сьлепата)"
#: ../modules/cdisplay_colorblind.c:198
#: ../modules/display-filter-color-blind.c:198
msgid "Color deficit simulation filter (Brettel-Vienot-Mollon algorithm)"
msgstr "Фільтр удаваньня нястачы колераў (альгарытм Брэтэль-Вено-Малон)"
#: ../modules/cdisplay_colorblind.c:261
#: ../modules/display-filter-color-blind.c:261
msgid "Color Deficient Vision"
msgstr "Слабасьць на бачаньне колераў"
#: ../modules/cdisplay_colorblind.c:483
#: ../modules/display-filter-color-blind.c:483
msgid "Color _deficiency type:"
msgstr "_Слабасьць на бачаньне колераў:"
#: ../modules/cdisplay_gamma.c:90
#: ../modules/display-filter-gamma.c:90
msgid "Gamma color display filter"
msgstr "Фільтар гамы"
#: ../modules/cdisplay_gamma.c:129
#: ../modules/display-filter-gamma.c:129
msgid "Gamma"
msgstr "Гамма"
#: ../modules/cdisplay_gamma.c:232
#: ../modules/display-filter-gamma.c:232
msgid "_Gamma:"
msgstr "_Гамма:"
#: ../modules/cdisplay_highcontrast.c:90
#: ../modules/display-filter-high-contrast.c:90
msgid "High Contrast color display filter"
msgstr "Фільтр высокага кантрасту"
#: ../modules/cdisplay_highcontrast.c:129
#: ../modules/display-filter-high-contrast.c:129
msgid "Contrast"
msgstr "Кантраст"
#: ../modules/cdisplay_highcontrast.c:232
#: ../modules/display-filter-high-contrast.c:232
msgid "Contrast c_ycles:"
msgstr "Узровень кантрасту:"
#: ../modules/cdisplay_lcms.c:106
#: ../modules/display-filter-lcms.c:102
msgid "Color management display filter using ICC color profiles"
msgstr "Фільтр кіраваньня колерамі з дапамогай профіляў ICC"
#: ../modules/cdisplay_lcms.c:138
#: ../modules/display-filter-lcms.c:134
msgid "Color Management"
msgstr "Кіраваньне колерамі"
#: ../modules/cdisplay_lcms.c:216
#: ../modules/display-filter-lcms.c:212
msgid "This filter takes its configuration from the Color Management section in the Preferences dialog."
msgstr "Гэты фільтр бярэ настаўленьні з разьдзелу «Кіраваньне колерам» дыялёгу «Настаўленьні»."
#: ../modules/cdisplay_lcms.c:230
#: ../modules/display-filter-lcms.c:226
msgid "Mode of operation:"
msgstr "Рэжым дзеяньня:"
#: ../modules/cdisplay_lcms.c:237
#: ../modules/display-filter-lcms.c:233
msgid "Image profile:"
msgstr "Профіль відарыса:"
#: ../modules/cdisplay_lcms.c:245
#: ../modules/display-filter-lcms.c:241
msgid "Monitor profile:"
msgstr "Профіль манітора:"
#: ../modules/cdisplay_lcms.c:253
#: ../modules/display-filter-lcms.c:249
msgid "Print simulation profile:"
msgstr "Профіль удаваньня друкаркі:"
#: ../modules/cdisplay_proof.c:101
#: ../modules/display-filter-proof.c:97
msgid "Color proof filter using ICC color profile"
msgstr "Фільтар колерапробы з выкарыстаньнем профіля ICC"
#: ../modules/cdisplay_proof.c:149
#: ../modules/display-filter-proof.c:145
msgid "Color Proof"
msgstr "Колепраба"
#: ../modules/cdisplay_proof.c:315
#: ../modules/display-filter-proof.c:311
msgid "Choose an ICC Color Profile"
msgstr "Выберы профіль колераў ICC"
#: ../modules/cdisplay_proof.c:342
#: ../modules/display-filter-proof.c:338
msgid "All files (*.*)"
msgstr "Усе файлы (*.*)"
#: ../modules/cdisplay_proof.c:347
#: ../modules/display-filter-proof.c:343
msgid "ICC color profile (*.icc, *.icm)"
msgstr "Профіль колераў ICC (*.icc, *.icm)"
#: ../modules/cdisplay_proof.c:405
#: ../modules/display-filter-proof.c:401
msgid "_Profile:"
msgstr "_Профіль:"
#: ../modules/cdisplay_proof.c:411
#: ../modules/display-filter-proof.c:407
msgid "_Intent:"
msgstr "_Перадача: "
#: ../modules/cdisplay_proof.c:416
#: ../modules/display-filter-proof.c:412
msgid "_Black Point Compensation"
msgstr "_Кампэнсацыя чорнага пункту"
#: ../modules/colorsel_cmyk.c:71
#: ../modules/color-selector-cmyk.c:71
msgid "CMYK color selector"
msgstr "Выбіральнік колераў CMYK"
#: ../modules/colorsel_cmyk.c:102
#: ../modules/colorsel_cmyk_lcms.c:154
#: ../modules/color-selector-cmyk.c:102
#: ../modules/color-selector-cmyk-lcms.c:150
msgid "CMYK"
msgstr "CMYK"
#. Cyan
#: ../modules/colorsel_cmyk.c:125
#: ../modules/colorsel_cmyk_lcms.c:173
#: ../modules/color-selector-cmyk.c:125
#: ../modules/color-selector-cmyk-lcms.c:169
msgid "_C"
msgstr "_Б"
#. Magenta
#: ../modules/colorsel_cmyk.c:127
#: ../modules/colorsel_cmyk_lcms.c:175
#: ../modules/color-selector-cmyk.c:127
#: ../modules/color-selector-cmyk-lcms.c:171
msgid "_M"
msgstr "_П"
#. Yellow
#: ../modules/colorsel_cmyk.c:129
#: ../modules/colorsel_cmyk_lcms.c:177
#: ../modules/color-selector-cmyk.c:129
#: ../modules/color-selector-cmyk-lcms.c:173
msgid "_Y"
msgstr "_Ж"
#. Key (Black)
#: ../modules/colorsel_cmyk.c:131
#: ../modules/colorsel_cmyk_lcms.c:179
#: ../modules/color-selector-cmyk.c:131
#: ../modules/color-selector-cmyk-lcms.c:175
msgid "_K"
msgstr "_Ч"
#: ../modules/colorsel_cmyk.c:135
#: ../modules/colorsel_cmyk_lcms.c:183
#: ../modules/color-selector-cmyk.c:135
#: ../modules/color-selector-cmyk-lcms.c:179
msgid "Cyan"
msgstr "Блакітны"
#: ../modules/colorsel_cmyk.c:136
#: ../modules/colorsel_cmyk_lcms.c:184
#: ../modules/color-selector-cmyk.c:136
#: ../modules/color-selector-cmyk-lcms.c:180
msgid "Magenta"
msgstr "Пурпуровы"
#: ../modules/colorsel_cmyk.c:137
#: ../modules/colorsel_cmyk_lcms.c:185
#: ../modules/color-selector-cmyk.c:137
#: ../modules/color-selector-cmyk-lcms.c:181
msgid "Yellow"
msgstr "Жоўты"
#: ../modules/colorsel_cmyk.c:138
#: ../modules/colorsel_cmyk_lcms.c:186
#: ../modules/color-selector-cmyk.c:138
#: ../modules/color-selector-cmyk-lcms.c:182
msgid "Black"
msgstr "Чорны"
#: ../modules/colorsel_cmyk.c:172
#: ../modules/color-selector-cmyk.c:172
msgid "Black _pullout:"
msgstr "Выхад _чорнага:"
#: ../modules/colorsel_cmyk.c:189
#: ../modules/color-selector-cmyk.c:189
msgid "The percentage of black to pull out of the colored inks."
msgstr "Адсотак выхаду чорнага колеру з каляровых чарнілаў."
#: ../modules/colorsel_cmyk_lcms.c:91
#: ../modules/color-selector-cmyk-lcms.c:87
msgid "CMYK color selector (using color profile)"
msgstr "Выбіральнік колеру CMYK (ужываючы профіль колеру)"
#: ../modules/colorsel_cmyk_lcms.c:399
#: ../modules/color-selector-cmyk-lcms.c:395
msgid "Profile: (none)"
msgstr "Профіль: (няма)"
#: ../modules/colorsel_cmyk_lcms.c:420
#: ../modules/color-selector-cmyk-lcms.c:416
#, c-format
msgid "Profile: %s"
msgstr "Профіль: %s"
#: ../modules/colorsel_water.c:82
#: ../modules/color-selector-water.c:82
msgid "Watercolor style color selector"
msgstr "Акварэльны выбіральнік"
#: ../modules/colorsel_water.c:118
#: ../modules/color-selector-water.c:118
msgid "Watercolor"
msgstr "Акварэль"
#: ../modules/colorsel_water.c:186
#: ../modules/color-selector-water.c:186
msgid "Pressure"
msgstr "Націск"
#: ../modules/colorsel_wheel.c:95
#: ../modules/color-selector-wheel.c:103
msgid "HSV color wheel"
msgstr "Кола колераў HSV"
#: ../modules/colorsel_wheel.c:126
#: ../modules/color-selector-wheel.c:134
msgid "Wheel"
msgstr "Кола"
#: ../modules/controller_linux_input.c:58
#: ../modules/controller-linux-input.c:58
msgid "Button 0"
msgstr "Кнопка 0"
#: ../modules/controller_linux_input.c:59
#: ../modules/controller-linux-input.c:59
msgid "Button 1"
msgstr "Кнопка 1"
#: ../modules/controller_linux_input.c:60
#: ../modules/controller-linux-input.c:60
msgid "Button 2"
msgstr "Кнопка 2"
#: ../modules/controller_linux_input.c:61
#: ../modules/controller-linux-input.c:61
msgid "Button 3"
msgstr "Кнопка 3"
#: ../modules/controller_linux_input.c:62
#: ../modules/controller-linux-input.c:62
msgid "Button 4"
msgstr "Кнопка 4"
#: ../modules/controller_linux_input.c:63
#: ../modules/controller-linux-input.c:63
msgid "Button 5"
msgstr "Кнопка 5"
#: ../modules/controller_linux_input.c:64
#: ../modules/controller-linux-input.c:64
msgid "Button 6"
msgstr "Кнопка 6"
#: ../modules/controller_linux_input.c:65
#: ../modules/controller-linux-input.c:65
msgid "Button 7"
msgstr "Кнопка 7"
#: ../modules/controller_linux_input.c:66
#: ../modules/controller-linux-input.c:66
msgid "Button 8"
msgstr "Кнопка 8"
#: ../modules/controller_linux_input.c:67
#: ../modules/controller-linux-input.c:67
msgid "Button 9"
msgstr "Кнопка 9"
#: ../modules/controller_linux_input.c:68
#: ../modules/controller-linux-input.c:68
msgid "Button Mouse"
msgstr "Кнопка мышы"
#: ../modules/controller_linux_input.c:69
#: ../modules/controller-linux-input.c:69
msgid "Button Left"
msgstr "Левая кнопка"
#: ../modules/controller_linux_input.c:70
#: ../modules/controller-linux-input.c:70
msgid "Button Right"
msgstr "Правая кнопка"
#: ../modules/controller_linux_input.c:71
#: ../modules/controller-linux-input.c:71
msgid "Button Middle"
msgstr "Сярэдняя кнопка"
#: ../modules/controller_linux_input.c:72
#: ../modules/controller-linux-input.c:72
msgid "Button Side"
msgstr "Бакавая кнопка"
#: ../modules/controller_linux_input.c:73
#: ../modules/controller-linux-input.c:73
msgid "Button Extra"
msgstr "Дадатковая кнопка"
#: ../modules/controller_linux_input.c:74
#: ../modules/controller-linux-input.c:74
msgid "Button Forward"
msgstr "Кнопка «Наперад»"
#: ../modules/controller_linux_input.c:75
#: ../modules/controller-linux-input.c:75
msgid "Button Back"
msgstr "Кнопка «Назад»"
#: ../modules/controller_linux_input.c:76
#: ../modules/controller-linux-input.c:76
msgid "Button Task"
msgstr "Кнопка «Задача»"
#: ../modules/controller_linux_input.c:78
#: ../modules/controller-linux-input.c:78
msgid "Button Wheel"
msgstr "Кола мышы"
#: ../modules/controller_linux_input.c:81
#: ../modules/controller-linux-input.c:81
msgid "Button Gear Down"
msgstr "Кнопка запаволеньня"
#: ../modules/controller_linux_input.c:84
#: ../modules/controller-linux-input.c:84
msgid "Button Gear Up"
msgstr "Кнопка паскарэньня"
#: ../modules/controller_linux_input.c:90
#: ../modules/controller_dx_dinput.c:443
#: ../modules/controller-linux-input.c:90
#: ../modules/controller-dx-dinput.c:443
msgid "X Move Left"
msgstr "Улева па X"
#: ../modules/controller_linux_input.c:91
#: ../modules/controller_dx_dinput.c:446
#: ../modules/controller-linux-input.c:91
#: ../modules/controller-dx-dinput.c:446
msgid "X Move Right"
msgstr "Управа па X"
#: ../modules/controller_linux_input.c:92
#: ../modules/controller-linux-input.c:92
msgid "Y Move Forward"
msgstr "Наперад па Y"
#: ../modules/controller_linux_input.c:93
#: ../modules/controller-linux-input.c:93
msgid "Y Move Back"
msgstr "Назад па Y"
#: ../modules/controller_linux_input.c:94
#: ../modules/controller_dx_dinput.c:461
#: ../modules/controller-linux-input.c:94
#: ../modules/controller-dx-dinput.c:461
msgid "Z Move Up"
msgstr "Уверх па Z"
#: ../modules/controller_linux_input.c:95
#: ../modules/controller_dx_dinput.c:464
#: ../modules/controller-linux-input.c:95
#: ../modules/controller-dx-dinput.c:464
msgid "Z Move Down"
msgstr "Уніз па Z"
#: ../modules/controller_linux_input.c:97
#: ../modules/controller-linux-input.c:97
msgid "X Axis Tilt Forward"
msgstr "Вось X нахіленая наперад"
#: ../modules/controller_linux_input.c:98
#: ../modules/controller-linux-input.c:98
msgid "X Axis Tilt Back"
msgstr "Вось X нахіленая назад"
#: ../modules/controller_linux_input.c:99
#: ../modules/controller_dx_dinput.c:479
#: ../modules/controller-linux-input.c:99
#: ../modules/controller-dx-dinput.c:479
msgid "Y Axis Tilt Right"
msgstr "Вось Y нахіленая ўправа"
#: ../modules/controller_linux_input.c:100
#: ../modules/controller_dx_dinput.c:482
#: ../modules/controller-linux-input.c:100
#: ../modules/controller-dx-dinput.c:482
msgid "Y Axis Tilt Left"
msgstr "Вось Y нахіленая ўлева"
#: ../modules/controller_linux_input.c:101
#: ../modules/controller_dx_dinput.c:488
#: ../modules/controller-linux-input.c:101
#: ../modules/controller-dx-dinput.c:488
msgid "Z Axis Turn Left"
msgstr "Вось Z павернутая ўлева"
#: ../modules/controller_linux_input.c:102
#: ../modules/controller_dx_dinput.c:491
#: ../modules/controller-linux-input.c:102
#: ../modules/controller-dx-dinput.c:491
msgid "Z Axis Turn Right"
msgstr "Вось Z павернутая ўправа"
#: ../modules/controller_linux_input.c:104
#: ../modules/controller-linux-input.c:104
msgid "Horiz. Wheel Turn Back"
msgstr "Паварот гарыз. кола назад"
#: ../modules/controller_linux_input.c:105
#: ../modules/controller-linux-input.c:105
msgid "Horiz. Wheel Turn Forward"
msgstr "Паварот гарыз. кола наперад"
#: ../modules/controller_linux_input.c:106
#: ../modules/controller-linux-input.c:106
msgid "Dial Turn Left"
msgstr "Паварот дыску ўлева"
#: ../modules/controller_linux_input.c:107
#: ../modules/controller-linux-input.c:107
msgid "Dial Turn Right"
msgstr "Паварот дыску ўправа"
#: ../modules/controller_linux_input.c:108
#: ../modules/controller-linux-input.c:108
msgid "Wheel Turn Left"
msgstr "Папрот кола ўлева"
#: ../modules/controller_linux_input.c:109
#: ../modules/controller-linux-input.c:109
msgid "Wheel Turn Right"
msgstr "Паварот кола ўправа"
#: ../modules/controller_linux_input.c:178
#: ../modules/controller-linux-input.c:178
msgid "Linux input event controller"
msgstr "Кантролер падзей уводу Linux"
#: ../modules/controller_linux_input.c:218
#: ../modules/controller_dx_dinput.c:196
#: ../modules/controller_midi.c:212
#: ../modules/controller-linux-input.c:218
#: ../modules/controller-dx-dinput.c:196
#: ../modules/controller-midi.c:212
msgid "Device:"
msgstr "Прылада:"
#: ../modules/controller_linux_input.c:219
#: ../modules/controller-linux-input.c:219
msgid "The name of the device to read Linux Input events from."
msgstr "Назва прылады, зь якой чытаць падзеі ўводу Linux."
#: ../modules/controller_linux_input.c:230
#: ../modules/controller-linux-input.c:230
msgid "Linux Input"
msgstr "Увод Linux"
#: ../modules/controller_linux_input.c:513
#: ../modules/controller-linux-input.c:513
msgid "Linux Input Events"
msgstr "Падзеі ўводу Linux"
#: ../modules/controller_linux_input.c:525
#: ../modules/controller_dx_dinput.c:1095
#: ../modules/controller_midi.c:505
#: ../modules/controller-linux-input.c:525
#: ../modules/controller-dx-dinput.c:1095
#: ../modules/controller-midi.c:505
msgid "No device configured"
msgstr "Няма настаўленых прыладаў"
#: ../modules/controller_linux_input.c:551
#: ../modules/controller_midi.c:454
#: ../modules/controller_midi.c:480
#: ../modules/controller-linux-input.c:551
#: ../modules/controller-midi.c:454
#: ../modules/controller-midi.c:480
#, c-format
msgid "Reading from %s"
msgstr "Чытаньне з %s"
#: ../modules/controller_linux_input.c:569
#: ../modules/controller_linux_input.c:623
#: ../modules/controller_midi.c:436
#: ../modules/controller_midi.c:497
#: ../modules/controller_midi.c:568
#: ../modules/controller-linux-input.c:569
#: ../modules/controller-linux-input.c:623
#: ../modules/controller-midi.c:436
#: ../modules/controller-midi.c:497
#: ../modules/controller-midi.c:568
#, c-format
msgid "Device not available: %s"
msgstr "Прылада недасяжная: %s"
#: ../modules/controller_linux_input.c:588
#: ../modules/controller_dx_dinput.c:1120
#: ../modules/controller-linux-input.c:588
#: ../modules/controller-dx-dinput.c:1120
msgid "Device not available"
msgstr "Прылада недасяжная"
#: ../modules/controller_linux_input.c:632
#: ../modules/controller_midi.c:577
#: ../modules/controller-linux-input.c:632
#: ../modules/controller-midi.c:577
msgid "End of file"
msgstr "Канец файла"
#: ../modules/controller_dx_dinput.c:156
#: ../modules/controller-dx-dinput.c:156
msgid "DirectX DirectInput event controller"
msgstr "Кантролер падзей DirectX DirectInput "
#: ../modules/controller_dx_dinput.c:197
#: ../modules/controller-dx-dinput.c:197
msgid "The device to read DirectInput events from."
msgstr "Прылада, зь якой чытаць падзеі DirectInput."
#: ../modules/controller_dx_dinput.c:206
#: ../modules/controller-dx-dinput.c:206
msgid "DirectX DirectInput"
msgstr "DirectX DirectInput"
#: ../modules/controller_dx_dinput.c:420
#: ../modules/controller-dx-dinput.c:420
#, c-format
msgid "Button %d"
msgstr "Кнопка %d"
#: ../modules/controller_dx_dinput.c:423
#: ../modules/controller-dx-dinput.c:423
#, c-format
msgid "Button %d Press"
msgstr "Кнопка %d націснутая"
#: ../modules/controller_dx_dinput.c:426
#: ../modules/controller-dx-dinput.c:426
#, c-format
msgid "Button %d Release"
msgstr "Кнопка %d адпушчаная"
#: ../modules/controller_dx_dinput.c:452
#: ../modules/controller-dx-dinput.c:452
msgid "Y Move Away"
msgstr "Аддаленьне Y"
#: ../modules/controller_dx_dinput.c:455
#: ../modules/controller-dx-dinput.c:455
msgid "Y Move Near"
msgstr "Набліжэньне Y"
#: ../modules/controller_dx_dinput.c:470
#: ../modules/controller-dx-dinput.c:470
msgid "X Axis Tilt Away"
msgstr "Нахіл восі X далей"
#: ../modules/controller_dx_dinput.c:473
#: ../modules/controller-dx-dinput.c:473
msgid "X Axis Tilt Near"
msgstr "Нахіл восі X бліжэй"
#: ../modules/controller_dx_dinput.c:502
#: ../modules/controller-dx-dinput.c:502
#, c-format
msgid "Slider %d Increase"
msgstr "Павелічэньне сьлізгача %d"
#: ../modules/controller_dx_dinput.c:505
#: ../modules/controller-dx-dinput.c:505
#, c-format
msgid "Slider %d Decrease"
msgstr "Зьмяншэньне сьлізгача %d"
#: ../modules/controller_dx_dinput.c:515
#: ../modules/controller-dx-dinput.c:515
#, c-format
msgid "POV %d X View"
msgstr "Агляд па Y POV %d"
#: ../modules/controller_dx_dinput.c:518
#: ../modules/controller-dx-dinput.c:518
#, c-format
msgid "POV %d Y View"
msgstr "Агляд па Х POV %d"
#: ../modules/controller_dx_dinput.c:521
#: ../modules/controller-dx-dinput.c:521
#, c-format
msgid "POV %d Return"
msgstr "Вязтаньне POV %d"
#: ../modules/controller_dx_dinput.c:1084
#: ../modules/controller-dx-dinput.c:1084
msgid "DirectInput Events"
msgstr "Падзеі DirectInput"
#: ../modules/controller_midi.c:164
#: ../modules/controller-midi.c:164
msgid "MIDI event controller"
msgstr "Кантролер падзей MIDI"
#: ../modules/controller_midi.c:203
#: ../modules/controller-midi.c:203
msgid "The name of the device to read MIDI events from."
msgstr "Назва прылады, адкуль чытаць падзеі MIDI."
#: ../modules/controller_midi.c:206
#: ../modules/controller-midi.c:206
msgid "Enter 'alsa' to use the ALSA sequencer."
msgstr "Увядзі 'alsa', каб выкарыстоўваць сынтэзатар ALSA"
msgstr "Увядзі «alsa», каб выкарыстоўваць сынтэзатар ALSA"
#: ../modules/controller_midi.c:221
#: ../modules/controller-midi.c:221
msgid "Channel:"
msgstr "Канал:"
#: ../modules/controller_midi.c:222
#: ../modules/controller-midi.c:222
msgid "The MIDI channel to read events from. Set to -1 for reading from all MIDI channels."
msgstr "Канал MIDI, зь якога чытаць падзеі. Пазнач -1, каб чытаць з усіх каналаў."
#: ../modules/controller_midi.c:226
#: ../modules/controller-midi.c:226
msgid "MIDI"
msgstr "MIDI"
#: ../modules/controller_midi.c:355
#: ../modules/controller-midi.c:355
#, c-format
msgid "Note %02x on"
msgstr "Нота %02x укл."
#: ../modules/controller_midi.c:358
#: ../modules/controller-midi.c:358
#, c-format
msgid "Note %02x off"
msgstr "Нота %02x выкл."
#: ../modules/controller_midi.c:361
#: ../modules/controller-midi.c:361
#, c-format
msgid "Controller %03d"
msgstr "Кантролер %03d"
#: ../modules/controller_midi.c:408
#: ../modules/controller-midi.c:408
msgid "MIDI Events"
msgstr "Падзеі MIDI"
#: ../modules/controller_midi.c:426
#: ../modules/controller-midi.c:426
msgid "GIMP"
msgstr "GIMP"
#: ../modules/controller_midi.c:428
#: ../modules/controller-midi.c:428
msgid "GIMP MIDI Input Controller"
msgstr "Кантролер уводу MIDI"
msgstr "Кантролер уводжаньня MIDI"
#~ msgid "Painter-style triangle color selector"
#~ msgstr "Мастакоўскі трохкутны выбіральнік"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp trunk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-04 18:18+0900\n"
"PO-Revision-Date: 2008-10-04 14:02+0900\n"
"POT-Creation-Date: 2008-11-01 11:08+0900\n"
"PO-Revision-Date: 2008-10-30 23:08+0900\n"
"Last-Translator: Nishibori Kiyotaka <ml.nishibori.kiyotaka@gmail.com>\n"
"Language-Team: Japanese <translation@gnome.gr.jp>\n"
"MIME-Version: 1.0\n"
@@ -620,11 +620,11 @@ msgstr "補間しない"
#: ../libgimpbase/gimpbaseenums.c:564
msgid "interpolation|Linear"
msgstr "バイリニア"
msgstr "線形"
#: ../libgimpbase/gimpbaseenums.c:565
msgid "Cubic"
msgstr "バイキュービック"
msgstr "キュービック"
#: ../libgimpbase/gimpbaseenums.c:566
msgid "Sinc (Lanczos3)"
@@ -759,7 +759,7 @@ msgstr "色管理用の操作モード"
#: ../libgimpconfig/gimpcolorconfig.c:44
msgid "The color profile of your (primary) monitor."
msgstr "(1台目の)モニタのカラープロファイルを指定します"
msgstr "( 1 台目の) モニタのカラープロファイルを指定します"
#: ../libgimpconfig/gimpcolorconfig.c:46
msgid ""
@@ -1044,8 +1044,8 @@ msgid ""
"Hexadecimal color notation as used in HTML and CSS. This entry also accepts "
"CSS color names."
msgstr ""
"HTMLとCSSで使われる色の16進表記を入力します。CSSで使われる色名の入力も可能"
"す"
"HTMLとCSSで使われる色の 16 進表記を入力します。CSSで使われる色名の入力も可能"
"す"
#: ../libgimpwidgets/gimpcolorselection.c:292
msgid "HTML _notation:"
@@ -1115,7 +1115,7 @@ msgstr "ページ %d"
#: ../libgimpwidgets/gimppageselector.c:1171
msgid "One page selected"
msgstr "1ページを選択"
msgstr "1 ページを選択"
#: ../libgimpwidgets/gimppageselector.c:1178
#: ../libgimpwidgets/gimppageselector.c:1182

View File

@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gimp-libgimp\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-09-17 06:01+0000\n"
"PO-Revision-Date: 2008-09-17 15:50+0900\n"
"Last-Translator: Mr.Dust <like.a.dust@gmail.com>\n"
"POT-Creation-Date: 2008-11-22 23:51+0900\n"
"PO-Revision-Date: 2008-11-22 23:53+0900\n"
"Last-Translator: Choi, JiHui <like.a.dust@gmail.com>\n"
"Language-Team: Mr.Dust <like.a.dust@gmail.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -21,22 +21,22 @@ msgstr ""
"X-Poedit-SourceCharset: utf-8\n"
#. procedure executed successfully
#: ../libgimp/gimp.c:1044
#: ../libgimp/gimp.c:1045
msgid "success"
msgstr "성공"
#. procedure execution failed
#: ../libgimp/gimp.c:1048
#: ../libgimp/gimp.c:1049
msgid "execution error"
msgstr "실행 오류"
#. procedure called incorrectly
#: ../libgimp/gimp.c:1052
#: ../libgimp/gimp.c:1053
msgid "calling error"
msgstr "호출 오류"
#. procedure execution cancelled
#: ../libgimp/gimp.c:1056
#: ../libgimp/gimp.c:1057
msgid "cancelled"
msgstr "취소됨"
@@ -1147,11 +1147,11 @@ msgstr "연결됨"
#: ../libgimpwidgets/gimpstock.c:117
msgid "Paste as New"
msgstr "새로 붙여 넣기"
msgstr "새로 붙여넣기"
#: ../libgimpwidgets/gimpstock.c:118
msgid "Paste Into"
msgstr "안에 붙여 넣기"
msgstr "안에 붙여넣기"
#: ../libgimpwidgets/gimpstock.c:119
msgid "_Reset"
@@ -1489,11 +1489,11 @@ msgstr "수채화"
msgid "Pressure"
msgstr "압력"
#: ../modules/color-selector-wheel.c:98
#: ../modules/color-selector-wheel.c:103
msgid "HSV color wheel"
msgstr "HSV 색상 휠"
#: ../modules/color-selector-wheel.c:129
#: ../modules/color-selector-wheel.c:134
msgid "Wheel"
msgstr "휠"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More