mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-10-06 01:12:40 +02:00
Compare commits
167 Commits
142b79b728
...
GIMP_2_6_4
Author | SHA1 | Date | |
---|---|---|---|
|
7f693281d9 | ||
|
feda20f0b3 | ||
|
f9e8fb9991 | ||
|
c295f28c4d | ||
|
487e416c42 | ||
|
efd5c8f4bc | ||
|
0d669e76f6 | ||
|
815c8c6af6 | ||
|
a988981c8f | ||
|
0bd92c01ac | ||
|
76d43759b6 | ||
|
f9d0c373d1 | ||
|
2f8cf85eeb | ||
|
72ef363094 | ||
|
0dbac3183b | ||
|
9d0e60e1bf | ||
|
1eada4e802 | ||
|
1dec860bd1 | ||
|
502458b5d2 | ||
|
5cde3344f5 | ||
|
952efd1fc2 | ||
|
00532e4c68 | ||
|
8cb2399a6d | ||
|
c7519202cc | ||
|
4ef9010e25 | ||
|
c805ee969a | ||
|
0098ac4fbd | ||
|
e9f606917e | ||
|
05cc3ef351 | ||
|
72a27966aa | ||
|
ba6ccc8e16 | ||
|
1a996fa051 | ||
|
216b0f2e76 | ||
|
bcbd2fb9ea | ||
|
eca52e47ba | ||
|
6b7134cc16 | ||
|
e74df7b28d | ||
|
627736b8d1 | ||
|
9a3e7c5557 | ||
|
30130874e9 | ||
|
beaca73f41 | ||
|
71fe89d878 | ||
|
420ff86aa2 | ||
|
9dfd140dc2 | ||
|
dcc79eec24 | ||
|
b4459bb65b | ||
|
95438acb2e | ||
|
50bf14ad79 | ||
|
87a36289f6 | ||
|
bb701a93ce | ||
|
12a1ab7e11 | ||
|
323b5c63f4 | ||
|
a9afbf144f | ||
|
bb5288edb2 | ||
|
9c1a56ca48 | ||
|
ddeaefad21 | ||
|
1cf264c333 | ||
|
9b77a17ab1 | ||
|
231478f87e | ||
|
e88b920e95 | ||
|
59e86cd7f7 | ||
|
da51068265 | ||
|
bf06538f08 | ||
|
f589f79dad | ||
|
4d960c813c | ||
|
5e7fea1fa0 | ||
|
7b16775970 | ||
|
4a69180038 | ||
|
deeb37611d | ||
|
7e613cb725 | ||
|
579196d85f | ||
|
f7a24e615a | ||
|
46df773a7c | ||
|
b9f26b0878 | ||
|
39bc923949 | ||
|
97090b5e83 | ||
|
d0f8b82b49 | ||
|
3bde105cc6 | ||
|
8e76c83094 | ||
|
22ca0ca2ec | ||
|
2363b9da61 | ||
|
ce84deadad | ||
|
822c75a811 | ||
|
bdd117f7a3 | ||
|
1adaf5d4bb | ||
|
e0569162a7 | ||
|
6793220b35 | ||
|
c962de9995 | ||
|
734d303422 | ||
|
18271766d8 | ||
|
4b331aa251 | ||
|
862570bb91 | ||
|
6d9b3ce298 | ||
|
392935c9fe | ||
|
d939fcb1e4 | ||
|
bf73252534 | ||
|
ca80cf72b4 | ||
|
a4bd329270 | ||
|
28ba204bb5 | ||
|
f9b8861f17 | ||
|
e3a95e0625 | ||
|
b9a232a130 | ||
|
c7062fbe13 | ||
|
ff3915faad | ||
|
c49a888f90 | ||
|
da52731c61 | ||
|
9b6b2150f3 | ||
|
c7da31ff67 | ||
|
f141af3118 | ||
|
e116ec86f6 | ||
|
22df4530dd | ||
|
b431ad5b7c | ||
|
546bad8d6c | ||
|
5c4e7329cc | ||
|
3f3b0629f2 | ||
|
b3fc164e3a | ||
|
5fec7a5fec | ||
|
05f306be9a | ||
|
c827e2f876 | ||
|
506c041b6c | ||
|
8e0eec5e24 | ||
|
61fce9da50 | ||
|
7eddc7067e | ||
|
f40d14687e | ||
|
74099ec043 | ||
|
8ea8575729 | ||
|
66878a5596 | ||
|
48bb457d2d | ||
|
01f7d36fb7 | ||
|
98d91c753c | ||
|
8635688949 | ||
|
e74d529b5b | ||
|
d748c9b6e0 | ||
|
c9bd78cd16 | ||
|
1dedf9dd93 | ||
|
fd440511ec | ||
|
d1ece07d46 | ||
|
fd794dcd81 | ||
|
0f1c045e6e | ||
|
1509ad199a | ||
|
ee0700eab4 | ||
|
1f964d809b | ||
|
295aaddec6 | ||
|
3cb4decc3e | ||
|
a1dba13e8b | ||
|
d1605dff42 | ||
|
6462994811 | ||
|
eea2cb805a | ||
|
74b9c377d1 | ||
|
1054e1f3dc | ||
|
2145d1b848 | ||
|
2e55bbad69 | ||
|
49095c2b72 | ||
|
a057214ad6 | ||
|
fdfff5d785 | ||
|
c77ab8f021 | ||
|
bb8427568c | ||
|
69f584c215 | ||
|
8ab4012d0b | ||
|
8e607bf30c | ||
|
cae04603dd | ||
|
4e35289b4b | ||
|
fb58d98168 | ||
|
e97a0a1900 | ||
|
d8a1a39157 | ||
|
27967223ef | ||
|
3c261c36db |
757
ChangeLog
757
ChangeLog
@@ -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
111
NEWS
@@ -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
|
||||
=================================================
|
||||
|
||||
|
@@ -182,6 +182,7 @@ gimp_console_2_6_LDADD = \
|
||||
$(FONTCONFIG_LIBS) \
|
||||
$(FREETYPE_LIBS) \
|
||||
$(GEGL_LIBS) \
|
||||
$(GLIB_LIBS) \
|
||||
$(RT_LIBS) \
|
||||
$(INTLLIBS) \
|
||||
$(GIMPICONRC)
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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"
|
||||
|
@@ -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 */
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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);
|
||||
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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 }
|
||||
};
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
||||
|
@@ -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 */
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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, µ);
|
||||
|
||||
return (100 * minor + micro >= 100 * required_minor + required_micro);
|
||||
}
|
||||
|
@@ -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__ */
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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>
|
||||
|
@@ -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.
|
||||
|
@@ -53,6 +53,10 @@ struct _GimpDBusService
|
||||
struct _GimpDBusServiceClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* opened) (GimpDBusService *service,
|
||||
const gchar *uri);
|
||||
};
|
||||
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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:
|
||||
|
@@ -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",
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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 *
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -48,6 +48,9 @@ struct _GimpCurvesTool
|
||||
GtkWidget *yrange;
|
||||
GtkWidget *graph;
|
||||
GtkWidget *curve_type;
|
||||
|
||||
/* export dialog */
|
||||
gboolean export_old_format;
|
||||
};
|
||||
|
||||
struct _GimpCurvesToolClass
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -61,6 +61,9 @@ struct _GimpLevelsTool
|
||||
GtkAdjustment *high_output;
|
||||
|
||||
GtkWidget *active_picker;
|
||||
|
||||
/* export dialog */
|
||||
gboolean export_old_format;
|
||||
};
|
||||
|
||||
struct _GimpLevelsToolClass
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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));
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
@@ -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);
|
||||
|
47
configure.in
47
configure.in
@@ -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
|
||||
##########################################################
|
||||
|
@@ -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.
|
||||
|
@@ -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) \
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
@@ -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),
|
||||
|
@@ -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):
|
||||
|
@@ -3120,7 +3120,7 @@
|
||||
(is-constructor-of "GimpPaletteSelectButton")
|
||||
(return-type "GtkWidget*")
|
||||
(properties
|
||||
'("title")
|
||||
'("title" (optional))
|
||||
'("palette-name" (argname "palette_name") (optional))
|
||||
)
|
||||
)
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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)
|
||||
],
|
||||
[],
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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 \
|
||||
|
24
plug-ins/script-fu/scripts/plug-in-compat.init
Normal file
24
plug-ins/script-fu/scripts/plug-in-compat.init
Normal 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)
|
||||
)
|
@@ -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
|
||||
|
404
po-libgimp/be.po
404
po-libgimp/be.po
@@ -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 "Мастакоўскі трохкутны выбіральнік"
|
||||
|
571
po-libgimp/cs.po
571
po-libgimp/cs.po
File diff suppressed because it is too large
Load Diff
732
po-libgimp/hu.po
732
po-libgimp/hu.po
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
@@ -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 "휠"
|
||||
|
||||
|
722
po-libgimp/nl.po
722
po-libgimp/nl.po
File diff suppressed because it is too large
Load Diff
710
po-libgimp/pl.po
710
po-libgimp/pl.po
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
Reference in New Issue
Block a user