Commit graph

23181 commits

Author SHA1 Message Date
Michael Natterer 598da617b0 Stop including single headers from gtk+ to be prepared for the upcoming
2008-05-23  Michael Natterer  <mitch@gimp.org>

	Stop including single headers from gtk+ to be prepared
	for the upcoming GTK_DISABLE_SINGLE_INCLUDES:

	* configure.in: add -DGTK_DISABLE_SINGLE_INCLUDES to CPPFLAGS.

	* app/display/gimpcanvas.h
	* app/display/gimpscalecombobox.h
	* app/display/gimpstatusbar.h
	* app/widgets/*.h
	* libgimp/gimpprogressbar.h
	* libgimp/gimpselectbutton.h
	* libgimpwidgets/*.h
	* libgimpwidgets/gimpstock.c
	* plug-ins/uri/gimpmountoperation.h: remove inclusion of parent
	classes and single files from gtk+.

	* app/widgets/gtkwrapbox.h
	* libgimp/gimpbrushmenu.c
	* libgimp/gimpfontmenu.c
	* libgimp/gimpgradientmenu.c
	* libgimp/gimppalettemenu.c
	* libgimp/gimppatternmenu.c
	* libgimp/gimpselectbutton.c: #include <gtk/gtk.h>

	* plug-ins/common/poppler.c: undef GTK_DISABLE_SINGLE_INCLUDES
	when including <poppler.h>.


svn path=/trunk/; revision=25781
2008-05-23 20:38:52 +00:00
Alexandre Prokoudine 19a6177f74 updated Russian translation
svn path=/trunk/; revision=25780
2008-05-23 16:39:06 +00:00
Sven Neumann a8bbbd004e updated German translation.
2008-05-23  Sven Neumann  <sven@gimp.org>

	* de.po: updated German translation.

svn path=/trunk/; revision=25779
2008-05-23 14:33:03 +00:00
Sven Neumann 35738aa952 string change.
2008-05-23  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpimagemaptool-settings.c: string change.

svn path=/trunk/; revision=25778
2008-05-23 14:21:32 +00:00
Sven Neumann 5aa59b3ba0 app/core/gimpchannel-select.c app/core/gimpdrawable-bucket-fill.c
2008-05-23  Sven Neumann  <sven@gimp.org>

	* app/core/gimpchannel-select.c
	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpdrawable-transform.c
	* app/core/gimpimage-crop.c
	* app/dialogs/image-scale-dialog.c
	* app/tools/gimpbycolorselecttool.c
	* app/tools/gimpfliptool.c
	* app/tools/gimpforegroundselecttool.c
	* app/tools/gimpfreeselecttool.c
	* app/tools/gimpfuzzyselecttool.c
	* app/tools/gimpmovetool.c
	* app/tools/gimpperspectivetool.c
	* app/tools/gimppolygonselecttool.c
	* app/tools/gimprotatetool.c
	* app/tools/gimpscaletool.c
	* app/tools/gimpsheartool.c
	* libgimpwidgets/gimpcolorprofilestore.c
	* plug-ins/gfig/gfig-dialog.c: use C_() instead of Q_() for
	translations with context.

svn path=/trunk/; revision=25777
2008-05-23 14:09:55 +00:00
Sven Neumann e5f0bd3b3b set XGETTEXT_KEYWORDS for use of msgctxtid.
2008-05-23  Sven Neumann  <sven@gimp.org>

	* Makefile.in.in: set XGETTEXT_KEYWORDS for use of msgctxtid.

svn path=/trunk/; revision=25776
2008-05-23 14:02:33 +00:00
Sven Neumann 73e717eb34 require glib-gettextize 2.16.
2008-05-23  Sven Neumann  <sven@gimp.org>

	* autogen.sh (GLIB_REQUIRED_VERSION): require glib-gettextize 2.16.

	* libgimp/libgimp-intl.h
	* plug-ins/pygimp/pygimp-intl.h: synced with gi18n-lib.h from glib
	2.16. This adds support for the C_() macro.

	* plug-ins/script-fu/script-fu-intl.h: just include gi18n.h instead
	of duplicating things from this header.

svn path=/trunk/; revision=25775
2008-05-23 13:36:31 +00:00
Sven Neumann e5667f73e8 added ChangeLog entry for Kevin taken from the SVN log
svn path=/trunk/; revision=25774
2008-05-23 09:48:36 +00:00
Michael Natterer 99a338132b left-align the labels in the new dynamics matrix. Add some code for RTL
2008-05-23  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimppaintoptions-gui.c: left-align the labels in the
	new dynamics matrix. Add some code for RTL layout that doesn't
	work properly yet.


svn path=/trunk/; revision=25772
2008-05-23 08:09:51 +00:00
Kevin Cozens f8ac996bbe Added extra check to stop "(let x 5)" syntax from causing seg fault in
2008-05-22  Kevin Cozens  <kcozens@cvs.gnome.org>

	* plug-ins/script-fu/tinyscheme/scheme.c: Added extra check to stop
	"(let x 5)" syntax from causing seg fault in Linux. See bug #508020.
	Removed some excess whitespace.

svn path=/trunk/; revision=25770
2008-05-22 22:08:18 +00:00
Michael Natterer bbbc6375e7 move generating the random axis to the right place.
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/paint/gimpbrushcore.c (gimp_brush_core_interpolate): move
	generating the random axis to the right place.


svn path=/trunk/; revision=25766
2008-05-22 20:17:49 +00:00
Michael Natterer d66828c883 replace the pressure-expanded, velocity-expanded and random-expanded
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/paint/gimppaintoptions.[ch]: replace the pressure-expanded,
	velocity-expanded and random-expanded properties by a single
	dynamics-expanded property.

	* app/tools/gimppaintoptions-gui.c: pack the toggle matrix into an
	expander, some cleanup.


svn path=/trunk/; revision=25765
2008-05-22 19:06:51 +00:00
Michael Natterer 791638fb15 revert accidential change of all occurences of "hardness" to "pressure" in
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimppaintoptions-gui.c: revert accidential change of
	all occurences of "hardness" to "pressure" in strings and function
	names.


svn path=/trunk/; revision=25764
2008-05-22 18:54:16 +00:00
Michael Natterer c03253684a factor out a utility function that creates a dynamics check button.
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimppaintoptions-gui.c: factor out a utility function
	that creates a dynamics check button.


svn path=/trunk/; revision=25763
2008-05-22 18:38:18 +00:00
Michael Natterer 3bcf7ff632 first version of a matrix of toggles for the dynamics parameters instead
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimppaintoptions-gui.c: first version of a matrix of
	toggles for the dynamics parameters instead of three expanders.


svn path=/trunk/; revision=25762
2008-05-22 18:28:39 +00:00
Martin Nordholts 91cf64359d Base a start of a new segment on the pending point, and enable 15 degree
2008-05-22  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpfreeselecttool.c: Base a start of a new segment on
	the pending point, and enable 15 degree constraints on the pending
	point when Ctrl is being held down.

svn path=/trunk/; revision=25761
2008-05-22 18:05:10 +00:00
Martin Nordholts 74e037bf80 app/core/gimpcurve-load.c (gimp_curve_load) Remove unused variables.
2008-05-22  Martin Nordholts  <martinn@svn.gnome.org>

	* app/core/gimpcurve-load.c (gimp_curve_load)
	* app/paint/gimppaintbrush.c (_gimp_paintbrush_motion): Remove
	unused variables.

svn path=/trunk/; revision=25760
2008-05-22 17:00:24 +00:00
Martin Nordholts cb13929f5c app/tools/gimpfreeselecttool.[ch] Fix that some
2008-05-22  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpfreeselecttool.[ch]
	* app/tools/gimpforegroundselecttool.c: Fix that some
	gimp_free_select_tool_-functions had the wrong name.

svn path=/trunk/; revision=25759
2008-05-22 16:58:21 +00:00
Michael Natterer fe70064f00 Applied slightly modified and fixed patch from Alexia Death which adds a
2008-05-22  Michael Natterer  <mitch@gimp.org>

	Applied slightly modified and fixed patch from Alexia Death which
	adds a "random" axis to the paint dynamics and fixes some issues
	in the previous paint dynamics commits. Fixes bug #529431.

	* app/core/core-types.h: add a "random" axis to GimpCoords.

	* app/display/gimpdisplayshell-coords.c: set it to a random value.

	* app/display/gimpdisplayshell-callbacks.c: on button_press,
	use the dynamics from the last motion event to avoid blotches
	at the beginning of paint strokes.

	* app/paint/gimppaintoptions.[ch]: add random properties the same
	way we do pressure and velocity. Add get_dynamic_size(),
	get_dynamic_color() and get_dynamic_hardness() functions which
	look at all dynamic parameters of the passed coords.

	* app/tools/gimppaintoptions-gui.c: add gui for the random options.

	* app/paint/gimpbrushcore.[ch]: remove calc_brush_scale() and use
	gimp_paint_options_get_dynamic_size_instead().
	Add "dynamic_hardness" parameters to paste_canvas(),
	replace_canvas() and get_brush_mask().

	* app/paint/gimpairbrushoptions.c
	* app/paint/gimpclone.c
	* app/paint/gimpconvolve.c
	* app/paint/gimpdodgeburn.c
	* app/paint/gimperaser.c
	* app/paint/gimpheal.c
	* app/paint/gimppaintbrush.c
	* app/paint/gimpsmudge.c: calculate the dynamic hardness and pass
	it to above brush core functions. Use the get_dynamic_color() to
	calculate the gradient color.


svn path=/trunk/; revision=25758
2008-05-22 16:38:57 +00:00
Sven Neumann ea80388073 use a logarithmic slider.
2008-05-22  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpposterizetool.c (gimp_posterize_tool_dialog):
	use a logarithmic slider.

svn path=/trunk/; revision=25757
2008-05-22 16:18:57 +00:00
Martin Nordholts 3ba5ecb5eb Remember the selection operation in use when the tool was started, and use
2008-05-22  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpfreeselecttool.c: Remember the selection operation
	in use when the tool was started, and use that when doing the
	selection. Improvements are still to be made with regards to
	synchronizing the tool options with the selection operation
	actually used.

svn path=/trunk/; revision=25756
2008-05-22 15:40:18 +00:00
Michael Natterer 8004eba247 check if the tool class has the "settings_name" string set to decide
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpimagemaptool.c: check if the tool class has
	the "settings_name" string set to decide whether to add
	the settings GUI.

	* app/tools/gimpdesaturatetool.c
	* app/tools/gimpposterizetool.c: don't set any settings
	strings. Presets make no sense for tools with just one parameter.


svn path=/trunk/; revision=25755
2008-05-22 15:39:00 +00:00
Sven Neumann 8a62ba6a5d changed order of parameters to be consistent with gimp_drawable_process().
2008-05-22  Sven Neumann  <sven@gimp.org>

	* app/core/gimpdrawable-operation.[ch]
	(gimp_drawable_apply_operation): changed order of parameters to be
	consistent with gimp_drawable_process().

	* app/core/gimpdrawable-process.[ch]: introduced a variant of
	gimp_drawable_process() for processing a GimpLut with
	gimp_lut_process().

	* app/core/gimpdrawable-brightness-contrast.c
	* app/core/gimpdrawable-color-balance.c
	* app/core/gimpdrawable-colorize.c
	* app/core/gimpdrawable-curves.c
	* app/core/gimpdrawable-desaturate.c
	* app/core/gimpdrawable-equalize.c
	* app/core/gimpdrawable-hue-saturation.c
	* app/core/gimpdrawable-invert.c
	* app/core/gimpdrawable-levels.c
	* app/core/gimpdrawable-posterize.c
	* app/core/gimpdrawable-threshold.c: changed accordingly.

svn path=/trunk/; revision=25754
2008-05-22 11:52:02 +00:00
Michael Natterer e3ffcae1bb Fix menu item label.
svn path=/trunk/; revision=25753
2008-05-22 11:25:56 +00:00
Michael Natterer 9f85ee0070 s/save/export/g, s/load/import/g, removed button tooltip members.
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpimagemaptool.[ch]: s/save/export/g,
	s/load/import/g, removed button tooltip members.

	* app/tools/gimpimagemaptool-settings.[ch]
	* app/tools/gimpbrightnesscontrasttool.c
	* app/tools/gimpcolorbalancetool.c
	* app/tools/gimpcolorizetool.c
	* app/tools/gimpcurvestool.c
	* app/tools/gimpdesaturatetool.c
	* app/tools/gimphuesaturationtool.c
	* app/tools/gimplevelstool.c
	* app/tools/gimpposterizetool.c
	* app/tools/gimpthresholdtool.c: changed accordingly.

	* app/tools/gimpimagemaptool-settings.c: clean up menu item creation.


svn path=/trunk/; revision=25752
2008-05-22 11:00:50 +00:00
Michael Natterer 4aaf1c4737 delete trailing whitespace.
2008-05-22  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpfreeselecttool.c: delete trailing whitespace.


svn path=/trunk/; revision=25751
2008-05-22 10:53:20 +00:00
Sven Neumann b3ac4eadb6 make the mnemonic work
svn path=/trunk/; revision=25750
2008-05-22 09:05:30 +00:00
Sven Neumann 0d6c259be3 added a call to gimp_tool_options_create_folder().
2008-05-22  Sven Neumann  <sven@gimp.org>

	* app/tools/gimp-tools.c (gimp_tools_init): added a call to
	gimp_tool_options_create_folder().

	* app/core/gimp-user-install.c (gimp_user_install_items): no need
	to create the tool-options folder here if we are doing that on
	each startup.

svn path=/trunk/; revision=25749
2008-05-22 09:01:08 +00:00
Sven Neumann e161a6148c use a combo-box for the curve type.
2008-05-22  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpcurvestool.c (gimp_curves_tool_dialog): use a
	combo-box for the curve type.

svn path=/trunk/; revision=25748
2008-05-22 08:39:30 +00:00
Sven Neumann a81c227a1a core/gimpdrawable-brightness-contrast.c core/gimpdrawable-color-balance.c
2008-05-22  Sven Neumann  <sven@gimp.org>

	* core/gimpdrawable-brightness-contrast.c
	* core/gimpdrawable-color-balance.c
	* core/gimpdrawable-colorize.c
	* core/gimpdrawable-equalize.c
	* core/gimpdrawable-hue-saturation.c
	* core/gimpdrawable-posterize.c
	* core/gimpdrawable-threshold.c: ported to 
gimp_drawable_process().


svn path=/trunk/; revision=25747
2008-05-22 06:04:01 +00:00
Martin Nordholts 41f102f1ab Don't return in the middle of the function.
2008-05-22  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpfreeselecttool.c
	(gimp_free_select_tool_cursor_update): Don't return in the middle
	of the function.

svn path=/trunk/; revision=25746
2008-05-22 05:44:28 +00:00
Wadim Dziedzic d35c006b4d Updated polish translation
2008-05-22  Wadim Dziedzic  <wadimd@svn.gnome.org>

	* pl.po: Updated polish translation

svn path=/trunk/; revision=25745
2008-05-21 23:35:44 +00:00
Martin Nordholts 79623b1ade "Draw a rough circle around the object to extract" -> "Rougly outline the
2008-05-21  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpforegroundselecttool.c
	(gimp_foreground_select_tool_oper_update): "Draw a rough circle
	around the object to extract" -> "Rougly outline the object to
	extract".

svn path=/trunk/; revision=25743
2008-05-21 19:48:02 +00:00
Martin Nordholts 17e98ebccc Don't expose implementation details.
2008-05-21  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpfreeselecttool.[ch]: Don't expose implementation
	details.

	* app/tools/gimpforegroundselecttool.c
	(gimp_foreground_select_tool_select): Use new
	gimp_free_select_get_points() functions since we don't know
	anything about how the Free Select Tool is implemented any longer.

svn path=/trunk/; revision=25742
2008-05-21 19:36:16 +00:00
Michael Natterer 986ba501f5 app/tools/gimpimagemaptool.[ch] turn the ugly row of favorites options
2008-05-21  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpimagemaptool.[ch]
	* app/tools/gimpimagemaptool-settings.c: turn the ugly row of
	favorites options buttons into a menu that's attached to an arrow
	button right of the favorites combo.


svn path=/trunk/; revision=25741
2008-05-21 19:14:46 +00:00
Michael Natterer 48fbb509a4 remove unused variable.
2008-05-21  Michael Natterer  <mitch@gimp.org>

	* app/tools/gimpcurvestool.c: remove unused variable.


svn path=/trunk/; revision=25740
2008-05-21 19:12:49 +00:00
Martin Nordholts 54884aea92 constify the points argument.
2008-05-21  Martin Nordholts  <martinn@svn.gnome.org>

	* app/core/gimpscanconvert.c (gimp_scan_convert_add_polyline):
	constify the points argument.

svn path=/trunk/; revision=25739
2008-05-21 19:11:42 +00:00
Michael Natterer 2a064f55a6 remove PixelProcessorFunc typedef.
2008-05-21  Michael Natterer  <mitch@gimp.org>

	* app/base/pixel-processor.h: remove PixelProcessorFunc typedef.

	* app/base/base-types.h: add it here.

	* app/config/gimpbaseconfig.c: #include "base/base-types.h"

	* app/core/gimpdrawable-curves.c
	* app/core/gimpdrawable-desaturate.c
	* app/core/gimpdrawable-invert.c: remove pixel processor include.

	* app/core/gimpdrawable-levels.c: port to gimp_drawable_process().


svn path=/trunk/; revision=25738
2008-05-21 19:07:26 +00:00
Michael Natterer 7add4e3247 use a stock_id that exists.
2008-05-21  Michael Natterer  <mitch@gimp.org>

	* app/gegl/gimpdesaturateconfig.c: use a stock_id that exists.


svn path=/trunk/; revision=25737
2008-05-21 19:04:56 +00:00
Michael Natterer 3b56173831 add missing include and missing call to gimp_drawable_mask_intersect().
2008-05-21  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable-process.c (gimp_drawable_process): add
	missing include and missing call to gimp_drawable_mask_intersect().


svn path=/trunk/; revision=25736
2008-05-21 18:50:13 +00:00
Martin Nordholts 3842f7cb03 Made the Foreground Select Tool work again.
2008-05-21  Martin Nordholts  <martinn@svn.gnome.org>

	Made the Foreground Select Tool work again.

	* app/tools/gimpforegroundselecttool.c
	(gimp_foreground_select_tool_control): Set tool->display =
	NULL when halting the tool.

	(gimp_foreground_select_tool_button_press): Only activate the
	tool control if it is not active (it might be actived already
	by the Free Select Tool).

	* app/tools/gimpfreeselecttool.c
	(gimp_free_select_tool_commit): Don't _halt explicitly
	here. If a tool implementation wants to halt in this
	situation, let them do that in their
	GimpFreeSelectTool::select() instead.

svn path=/trunk/; revision=25735
2008-05-21 18:23:23 +00:00
Sven Neumann a786d4deab app/core/Makefile.am new file holding code to apply a PixelProcessor to
2008-05-21  Sven Neumann  <sven@gimp.org>

	* app/core/Makefile.am
	* app/core/gimpdrawable-process.[ch]: new file holding code to
	apply a PixelProcessor to the full drawable.

	* app/core/gimpdrawable-desaturate.c
	* app/core/gimpdrawable-invert.c: use the new helper function.

	* app/core/gimpdrawable-desaturate.[ch] 
(gimp_drawable_desaturate):
	take a GimpProgress parameter.

	* tools/pdbgen/pdb/color.pdb: changed accordingly.

	* app/pdb/color-cmds.c: regenerated.


svn path=/trunk/; revision=25734
2008-05-21 16:45:44 +00:00
Martin Nordholts 97edc3567f Slightly improve one of the status bar messages.
2008-05-21  Martin Nordholts  <martinn@svn.gnome.org>

	* app/tools/gimpfreeselecttool.c
	(gimp_free_select_tool_status_update): Slightly improve one of the
	status bar messages.

svn path=/trunk/; revision=25733
2008-05-21 15:39:52 +00:00
Sven Neumann 5e93a2aed3 This ChangeLog entry is ass-signed to Mitch and Pippin.
svn path=/trunk/; revision=25732
2008-05-21 15:04:41 +00:00
Sven Neumann 3384081045 moved "tools-desaturate" into the separator with the other color tools.
2008-05-21  Sven Neumann  <sven@gimp.org>

	* menus/image-menu.xml.in: moved "tools-desaturate" into the
	separator with the other color tools. Added it to the
	"tools-color-menu".

svn path=/trunk/; revision=25731
2008-05-21 15:01:21 +00:00
Sven Neumann c19b2170ff changed to take a pointer as first argument as all PixelProcessor
2008-05-21  Sven Neumann  <sven@gimp.org>

	* app/base/desaturate.[ch]: changed to take a pointer as first
	argument as all PixelProcessor functions.

	* app/core/gimpdrawable-desaturate.c: changed accordingly.

	* app/tools/gimpdesaturatetool.[ch]: added legacy code path.

svn path=/trunk/; revision=25730
2008-05-21 14:20:15 +00:00
Sven Neumann 9519a1751d fold the three desaturate functions into one
svn path=/trunk/; revision=25729
2008-05-21 13:51:26 +00:00
Sven Neumann 595d54eddf app/base/Makefile.am moved legacy desaturate code here.
2008-05-21  Sven Neumann  <sven@gimp.org>

	* app/base/Makefile.am
	* app/base/desaturate.[ch]: moved legacy desaturate code here.

	* app/core/gimpdrawable-desaturate.c: use the code in app/base.

svn path=/trunk/; revision=25728
2008-05-21 13:34:07 +00:00
Michael Natterer 37ff630992 bail out if there is no config object.
2008-05-21  Michael Natterer  <mitch@gimp.org>

	* app/gegl/gimpoperationdesaturate.c
	(gimp_operation_desaturate_process): bail out if there is no
	config object.


svn path=/trunk/; revision=25727
2008-05-21 13:29:08 +00:00
Sven Neumann e86e003224 Add Desaturate as an image-map tool with live preview (bug #533808):
2008-05-21  Sven Neumann  <sven@gimp.org>

	Add Desaturate as an image-map tool with live preview (bug #533808):

	* app/gegl/Makefile.am
	* app/gegl/gegl-types.h
	* app/gegl/gimpdesaturateconfig.[ch]: added config object for the
	desaturate point filter.
	
	* app/gegl/gimpoperationdesaturate.[ch]: derive from
	GimpOperationPointFilter. Unrolled the inner loop.

	* app/core/gimpdrawable-desaturate.c: changed accordingly.

	* app/tools/Makefile.am
	* app/tools/gimpdesaturatetool.[ch]: added desaturate as an
	imagemap tool. So far only the GEGL code path is implemented.

	* app/tools/gimp-tools.c: register the new tool.

	* app/dialogs/dialogs.c: register the new tool dialog.

	* app/dialogs/Makefile.am
	* app/dialogs/desaturate-dialog.[ch]: removed the desaturate dialog.

	* app/actions/drawable-actions.c
	* app/actions/drawable-commands.[ch]: removed action
	"drawable-desaturate".

	* app/widgets/gimphelp-ids.h: changed help IDs accordingly.

	* menus/image-menu.xml.in: replaced "drawable-desaturate" with
	"tools-desaturate".

	* libgimpwidgets/gimpstock.h: added a define for
	GIMP_STOCK_TOOL_DESATURATE.

svn path=/trunk/; revision=25726
2008-05-21 13:11:06 +00:00