Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Sven Neumann

Hi,

<[EMAIL PROTECTED] ( Marc) (A.) (Lehmann )> writes:

> But parasites _is_ one metadata structure. I don't see why nesting etadata
> structures inside each other is a good thing - to me it only complicates
> things. parasites were created for metadata. If they don't work well
> enough for that parasites should be improved, rather than becoming a
> legacy layer.

Ack. One change we definitely should make soon is to enforce UTF-8
encoding on all strings used in parasites (names and values if defined
as strings).

> And the most natural place for this is parasites, which exist only to hold
> metadata. If their definition isn't clear enough then this is the problem
> to solve. Adding yet another layer makes the situation worse, not better

exactly. If there's a need to improve the current parasites, let's do
that now. I could imagine that a more hierachical structure might
help, but I'd like to see a real usage case before we consider doing
such a change. Is the EXIF data such a usage case?


Salut, Sven
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread pcg

On Wed, Feb 06, 2002 at 03:41:17PM +0100, Lutz Müller <[EMAIL PROTECTED]> 
wrote:
> It would be _really_ easy if you used the tag names for those parasites,
> i.e. gimp-exif-FillOrder or gimp-exif-SpectralSensitivity.

while i am not strictly opposed, these names are very ugly. more
important, though, non-exif-specific metadata (like the above), would gain
a lot by being in a common format. exif is not the only metadata format
around and it would be nice to have the gimp metadata an abstraction.

-- 
  -==- |
  ==-- _   |
  ---==---(_)__  __   __   Marc Lehmann  +--
  --==---/ / _ \/ // /\ \/ /   [EMAIL PROTECTED]  |e|
  -=/_/_//_/\_,_/ /_/\_\   XX11-RIPE --+
The choice of a GNU generation   |
 |
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread pcg

On Wed, Feb 06, 2002 at 02:11:28PM +0100, Dave Neary <[EMAIL PROTECTED]> wrote:
> Parasite naming is non-standard. Anyone can create a parasite with any
> name they want.

Untrue. Names beginning with "gimp-" are well-defined as belonging to the
core. The gimp itself must, at one point, know how to deal with these. The
core also is:

> the aim of having a metadata editor at some stage, 50 or 60 pieces of
> metadata with (possibly) non-standard naming is complicated.

There is no such thing as "non-standard naming" in this case. exif doesn't
provide a standard name, so you need to make one up. Wether oyu make up
one or 50 doesn't really matter, as long as it's documented.

> parasites if we were guaranteed a consistent approach throughout the
> gimp, but parasites don't give that guarantee by definition almost.

Why? What are the problems?

> The obvious way to maintain a consistency wrt the metadata is to
> define it in one place, maintain that list in one place, and have it
> parsed into a usable structure when needed.

I think this is exatcly what parasites provide.

> You say that any piece of metadata can easily be accessed by name. The
> problem is going to be:  What name? I think keeping stuff in one place
> offers consistency.

Well, the everything-in-a-big-blob-approach doesn't help naming at all. At
one point you simply have to make up names to access the exif information.

The parasites provide a namespace for this. Inventing
yet-another-metadata-in-metadata-abstraction doesn't buy clarity.

> (with a description) to the list. devel-docs/parasites.txt is
> something approaching that. But that makes maintenance pretty
> difficult, compared to having the code document itself (one metadata
> structure with typed fields, and a couple of parsing routines).

I think it's much easier to just look at the documentation rather than to
run through header files until I can find what I need, hopefully with a
sparse one-line comment, even.

> parasites. Having one metadata structure provides that one place.

But parasites _is_ one metadata structure. I don't see why nesting etadata
structures inside each other is a good thing - to me it only complicates
things. parasites were created for metadata. If they don't work well
enough for that parasites should be improved, rather than becoming a
legacy layer.

> the TIFF plug-in, the PNG developer knows nothing about it - if I as a
> lazy developer didn't add it to the list of supported metadata he
> wouldn't know it existed. And let's say I as the PNG developer want to
> use the same data, but I call it a slightly different name - now we
> have two parasites which do the same thing.

Your approach suffers exactly the same problem, btw.

> Those kind of problems are eliminated by definition if all the
> metadata's defined in one place.

And the most natural place for this is parasites, which exist only to hold
metadata. If their definition isn't clear enough then this is the problem
to solve. Adding yet another layer makes the situation worse, not better
;)

-- 
  -==- |
  ==-- _   |
  ---==---(_)__  __   __   Marc Lehmann  +--
  --==---/ / _ \/ // /\ \/ /   [EMAIL PROTECTED]  |e|
  -=/_/_//_/\_,_/ /_/\_\   XX11-RIPE --+
The choice of a GNU generation   |
 |
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread pcg

On Wed, Feb 06, 2002 at 02:17:21PM +0100, Raphael Quinet <[EMAIL PROTECTED]> wrote:
> EXIF data and simply copy the descriptions given in the EXIF standard.
> Some of the fields will have to be discarded (or set read-only or not
> persistent) because they only make sense for the original file format

It might hurt, but I think the best thing is to not attach these values at
all, as there is no semantics attached to them until the core recognizes
and modifies them properly on edits (at least for most values).

The biggest problem is the format inside parasites - i personally dislike
gserialize (unused anyway), and strongly favour very simple decomposing,
i.e. scalars ("single-valued string-thingy") where possible. So the more
parasites the better ;)

-- 
  -==- |
  ==-- _   |
  ---==---(_)__  __   __   Marc Lehmann  +--
  --==---/ / _ \/ // /\ \/ /   [EMAIL PROTECTED]  |e|
  -=/_/_//_/\_,_/ /_/\_\   XX11-RIPE --+
The choice of a GNU generation   |
 |
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Nathan C Summers

On Wed, 6 Feb 2002, Dave Neary wrote:

> If we go with the more generic "metadata" option, then we would have
> the option of gimp-metadata-*. But that's minutiae at the moment.

Isn't the fact that it's a parasite "metadata-y" enough?  I suppose it's 
possible to attach a parasite to an image for something other than 
metadata, but I doubt that anyone will ever do it.

Rockwalrus

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Nathan C Summers

On Wed, 6 Feb 2002, Nick Lamb wrote:

> http://www.ecs.soton.ac.uk/~njl98r/chocbox2.png
  ^^^
Looks very nice, but please, please call the last field "Copyright" 
instead of "Digital Rights Management."

Rockwlrs

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] How's CVS-HEAD?

2002-02-06 Thread Sven Neumann

Hi Adam,

"Adam D. Moss" <[EMAIL PROTECTED]> writes:

> Thanks.  Well, 6 hours later I have gimp 1.3 built!  Yay!
> Naturally, it crashes on startup.  Boo!  After trying to
> 'ok' the second page of the gimp user installation wizard
> I get this:
> mct:~> gimp-1.3
> gimp-1.3: fatal error: Segmentation fault
> gimp-1.3 (pid:9613): [E]xit, [H]alt, show [S]tack trace or [P]roceed: s
> #0  0x40550924 in g_on_error_stack_trace (prg_name=0xb833
> "gimp-1.3")
> #1  0x4055083e in g_on_error_query (prg_name=0xb833 "gimp-1.3")
> #2  0x80816cd in gimp_eek (reason=0x819cea8 "fatal error", 
> #3  0x808162e in gimp_fatal_error (fmt=0x40676e90 "Segmentation fault")
> #4  0x8081225 in gimp_sigfatal_handler (sig_num=11) at main.c:501
> #5  0x405c7858 in sigaction () from /lib/libc.so.6
> #6  0x40564428 in g_main_context_iterate (context=0x8243550, block=0, 
> #7  0x40564635 in g_main_context_pending (context=0x0) at gmain.c:2261
> #8  0x40129e8e in gtk_events_pending () at gtkmain.c:863
> #9  0x808e980 in user_install_continue_callback (widget=0x825e568, 

well, naturally I can't reproduce this here. I've removed my
~/.gimp-1.3 directory and was able to finish user installation w/o a
problem. I can't see anything wrong with the code either:

  while (gtk_events_pending ())
gtk_main_iteration ();

that might be deprecated API (I haven't checked)  but it should work
in any case.

> And now I'm going to go seek out some beer and friends to
> commiserate with...

have fun. I'd really like to help you get a working gimp-1.3
installation, so please try to investigate the problem further and
report back.


Salut, Sven

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] How's CVS-HEAD?

2002-02-06 Thread Adam D. Moss

Sven Neumann wrote:
> yes, it should compile. As usual the files HACKING and INSTALL mention
> the build requirements. In particular these are:
[snip]

Thanks.  Well, 6 hours later I have gimp 1.3 built!  Yay!
Naturally, it crashes on startup.  Boo!  After trying to
'ok' the second page of the gimp user installation wizard
I get this:
mct:~> gimp-1.3
gimp-1.3: fatal error: Segmentation fault
gimp-1.3 (pid:9613): [E]xit, [H]alt, show [S]tack trace or [P]roceed: s
#0  0x40550924 in g_on_error_stack_trace (prg_name=0xb833
"gimp-1.3")
#1  0x4055083e in g_on_error_query (prg_name=0xb833 "gimp-1.3")
#2  0x80816cd in gimp_eek (reason=0x819cea8 "fatal error", 
#3  0x808162e in gimp_fatal_error (fmt=0x40676e90 "Segmentation fault")
#4  0x8081225 in gimp_sigfatal_handler (sig_num=11) at main.c:501
#5  0x405c7858 in sigaction () from /lib/libc.so.6
#6  0x40564428 in g_main_context_iterate (context=0x8243550, block=0, 
#7  0x40564635 in g_main_context_pending (context=0x0) at gmain.c:2261
#8  0x40129e8e in gtk_events_pending () at gtkmain.c:863
#9  0x808e980 in user_install_continue_callback (widget=0x825e568, 
#10 0x405255c6 in g_cclosure_marshal_VOID__VOID (closure=0x825e340, 
#11 0x4051002e in g_closure_invoke (closure=0x825e340, return_value=0x0, 
#12 0x405247c0 in signal_emit_unlocked_R (node=0x825b4b0, detail=0, 
#13 0x40522f6b in g_signal_emit_valist (instance=0x825e568,
signal_id=110, 
#14 0x40167e3e in gtk_signal_emit (object=0x825e568, signal_id=110)
#15 0x400ac0b2 in gtk_button_clicked (button=0x825e568) at
gtkbutton.c:548
#16 0x400ad259 in gtk_real_button_released (button=0x825e568)
#17 0x405255c6 in g_cclosure_marshal_VOID__VOID (closure=0x825d7e0, 
#18 0x4051041f in g_type_class_meta_marshal (closure=0x825d7e0, 
#19 0x4051002e in g_closure_invoke (closure=0x825d7e0, return_value=0x0, 
#20 0x40524262 in signal_emit_unlocked_R (node=0x825d818, detail=0, 
#21 0x40522f6b in g_signal_emit_valist (instance=0x825e568,
signal_id=109, 
#22 0x40167e3e in gtk_signal_emit (object=0x825e568, signal_id=109)
#23 0x400ac012 in gtk_button_released (button=0x825e568) at
gtkbutton.c:540
#24 0x400ad07e in gtk_button_button_release (widget=0x825e568,
event=0x8321500)
#25 0x4012b75c in _gtk_marshal_BOOLEAN__BOXED (closure=0x82521b8, 
#26 0x4051041f in g_type_class_meta_marshal (closure=0x82521b8, 
#27 0x4051002e in g_closure_invoke (closure=0x82521b8, 
#28 0x40524bcd in signal_emit_unlocked_R (node=0x8252200, detail=0, 
#29 0x40522fd8 in g_signal_emit_valist (instance=0x825e568,
signal_id=58, 
#30 0x40167e3e in gtk_signal_emit (object=0x825e568, signal_id=58)
#31 0x401f09d2 in gtk_widget_event_internal (widget=0x825e568,
event=0x8321500)
#32 0x401f05f1 in gtk_widget_event (widget=0x825e568, event=0x8321500)
#33 0x4012b5f0 in gtk_propagate_event (widget=0x825e568,
event=0x8321500)
#34 0x4012a34e in gtk_main_do_event (event=0x8321500) at gtkmain.c:1069
#35 0x402b6d80 in gdk_event_dispatch (source=0x8243520, callback=0, 
#36 0x4056333b in g_main_dispatch (context=0x8243550) at gmain.c:1616
#37 0x40564187 in g_main_context_dispatch (context=0x8243550) at
gmain.c:2152
#38 0x40564567 in g_main_context_iterate (context=0x8243550, block=1, 
#39 0x40564c80 in g_main_loop_run (loop=0x8320650) at gmain.c:2453
#40 0x40129c91 in gtk_main () at gtkmain.c:794
#41 0x8080463 in app_init (gimp_argc=0, gimp_argv=0xb6e8)
#42 0x80811d3 in main (argc=1, argv=0xb6e4) at main.c:451

And now I'm going to go seek out some beer and friends to
commiserate with...

--Adam
-- 
Adam D. Moss. ,,^^[EMAIL PROTECTED]http://www.foxbox.org/   co:3

But not us (no never) no not us (no never)
We are far too young and clever
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Dave Neary

Raphael wrote:
> On Wed, 06 Feb 2002, Dave Neary wrote:
>  > Where *is* the list of parasites? There are only (as you point
out)
>  > about 10 persistent parasites, and the list isn't maintained
anywhere.
>
> OK, so now the problem is clear: we need a way to enforce some
> consistency for the names of the parasites in the standard namespace
> ("gimp-*").

Agreed (if we decide to go for multiple parasites, and it seems like
I'm
becoming outgunned). We should also work out whether what we've
been talking about is exif, to the exclusion of other metadata, or
generic
metadata, which would include exif data as a subset.


> Maybe we could also define
> the "exif-*" namespace as common, although it could also be
> "gimp-exif-*".  Any plug-in that attempts to set or get a "gimp-*"
> parasite that has not been defined in some central place should
cause
> the core to generate some kind of warning.

If we go with the more generic "metadata" option, then we would have
the option of gimp-metadata-*. But that's minutiae at the moment.

> So, what about this solution: I convert the existing list of common
> parasites (only the "gimp-*" parasites in devel-docs/parasites.txt)
to
> a list of strings that can be put in a *.c or *.h file.  I also add
> the EXIF data to this list.  Then if the GIMP is compiled in debug
> mode, I would add some code in the PDB functions for accessing the
> parasites.  This code would trigger a g_warning if the name of a
> "gimp-*" parasite cannot be found in the pre-compiled list.

A parasite validator would certainly be a solution. The question would
then be whether the overhead of validating every parasite request
would
outweigh the overhead of parsing one metadata object :-)

> The code could also check the type of the parasite automatically,
but
> this would imply an API change for all PDB functions dealing with
> parasites and that would also require an upgrade of the XCF format.
> So this would break a lot of things, but maybe it is better to do it

> as early as possible.  Any opinions on this?

Well, XCF was due an upgrade, but backward compatibility is a
concern...

> Note that the *.c or *.h file containing the list of common
parasites
> in the "gimp-*" namespace could be generated at build time from an
XML
> file.  That file could also hold the human-readable documentation of
> these parasites and it could be used to generate a text file or HTML
> file documenting the common parasites.

Sounds like a plan.

> The usage of non-standard parasites has not been a problem so far.
> All authors of plug-ins have correctly followed the guidelines
> described in devel-docs/parasites.txt.  From that point of view, I
do
> not think that it is really important to add a mechanism that checks
> if the "gimp-*" namespace is used correctly.  But I think that it
> could be a nice addition, so I will see what I can do about it until
> next week.

That's primarily because the use of parasites has been limited to a
few -
notably gimp-comment. Apart from 3/4 commonly used parasites it
hasn't come up. If we're passing image metadata around a lot it'll
certainly be more of a concern.

But we're getting towards agreement. I'm still not convinced that
that's the way to go, but I can see that it's certainly at least as
workable as my suggestion :)

Cheers,
Dave.


___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Dave Neary

Nick Lamb wrote:
> One thing I can't seem to find out (maybe I'm looking in the wrong
place)
> is whether EXIF data is supposed to follow derived works or not.
Some
> contributors to this thread seemed to feel that it was important
that
> a Gimp image must always preserve the EXIF data, but this would only
> make sense is EXIF is indeed a historical record of the source, and
not
> live metadata. Can someone clear that up (preferably with a
reference
> to an EXIF standards document or something) ?

Presumably (and this is just me - I have nothing to support this) that
depends on the data. For example, copyright would have to follow the
normal rules of derived works (whatever they may be), as would author,
but something like GPS (which relates directly to where the image was
originally captured) could be copied through unchanged. Some data
logically stays read-only, and some data should be modifiable (one
example of each would, presumably, be flash energy and image history
respectively).

Cheers,
Dave.

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Lutz Müller

On Wed, 2002-02-06 at 16:06, Raphael Quinet wrote:

> Thanks.  I will have a look at it as soon as possible.  But as I wrote
> previously and as Dave agreed, it would probably make more sense to
> merge this code directly into the JPEG plug-in instead of requiring an
> additional library.

As this conflicts directly with my dislike to copy & paste instead of
using common libraries, I won't do that. See, libexif is needed by
gphoto2, a command-line frontend to libgphoto2. And libexif-gtk is used
by gtkam, a GTK frontend to libgphoto2. I hope that libexif will be used
by other exif tools, especially command-line tools. I am not willing to
keep several libexif versions together or to answer for incompabilities
among those. Perhaps someone else...

> Also, the GTK+ user interface should probably be
> converted to a separate plug-in to view and edit all file properties.

libexif-gtk is an EXIF editor. If someone wants to write a gimp-parasite
editor, this is ok. But I'd still like to give users the possibility to
access/edit all EXIF data, because a gimp-parasite editor will never be
able to cover all EXIF tags. Just think of MakerNote the contents of
which vary from manufacturer to manufacturer.

Lutz
-- 
+--+  \|||/
| Lutz Müller+49 (7156) 34837  |  (o o)
|  +---ooO-(_)-Ooo---+
| Hans-Sachs-Strasse 5   |
| 71254 Ditzingenhttp://www.topfrose.de  |
| Germany[EMAIL PROTECTED]  |
++



signature.asc
Description: This is a digitally signed message part


Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Adam D. Moss

Raphael Quinet wrote:
>  > Also fair enough, though I'd consider prefixing these with exif-
>  > or similar to avoid polluting gimp-* forever.
> 
> If I am still following you correctly, this means that all parts of
> the EXIF data that should not be persistent

Sorry, I wasn't clear -- I wasn't really saying anything either
way about persistance, merely that some of the EXIF data is
going to be of very general use and some isn't so the latter
shouldn't be eating into our well-defined gimp-* namespace.

--Adam
-- 
Adam D. Moss. ,,^^[EMAIL PROTECTED]http://www.foxbox.org/   co:3

But not us (no never) no not us (no never)
We are far too young and clever
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Nick Lamb

http://www.ecs.soton.ac.uk/~njl98r/chocbox1.png
http://www.ecs.soton.ac.uk/~njl98r/chocbox2.png

A potential UI for a textual metadata editor using Dublin Core's element
names (and of course internally it could use any parasite names that
were deemed fit, but since parasite names are arbitrary text strings it
might as well be DC.Creator, DC.Title etc.)

EXIF's "Artist" is DC's "Creator" and PNG's "Author" (by convention)
EXIF and PNG's "Copyright" is DC's "Rights"

There are also a number of useful generic metadata structures in EXIF
like the GPS data which could arguably be shared with other systems, and
might therefore deserve a gimp-foo parasite name.

One thing I can't seem to find out (maybe I'm looking in the wrong place)
is whether EXIF data is supposed to follow derived works or not. Some
contributors to this thread seemed to feel that it was important that
a Gimp image must always preserve the EXIF data, but this would only
make sense is EXIF is indeed a historical record of the source, and not
live metadata. Can someone clear that up (preferably with a reference
to an EXIF standards document or something) ?

Nick.
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Raphael Quinet

On Tue, 06 Feb 2002, Adam D. Moss wrote:
 > Raphael Quinet wrote:
 >
 > > But it needs to be extended with all the names of the EXIF parasites.
 > > So I will try to do that this week.  Basically, I think that it would
 > > be enough to use the name "gimp-blah" for each "blah" field of the
 > > EXIF data and simply copy the descriptions given in the EXIF standard.
 >
 > Fair enough, though if a parasite is going in the general-purpose
 > gimp-* namespace care should probably be taken not to impose
 > constraints specific to the EXIF form of that metadata upon
 > a more general-purpose gimp-wide version.

OK, so this means that any EXIF data that could also be used by other
plug-ins (such as Artist, Copyright, ImageDescription, ColorSpace and
many others) should use the gimp-* namespace and the type checking
should be relaxed if we can forsee other uses than what is described
in the EXIF standard.  If would then be up to the JPEG save plug-in to
constrain this parasite to the acceptable range when it saves it as
EXIF.

 > > Some of the fields will have to be discarded (or set read-only or not
 > > persistent) because they only make sense for the original file format
 > > and are irrelevant once the image is converted to an RGB bitmap.
 >
 > Also fair enough, though I'd consider prefixing these with exif-
 > or similar to avoid polluting gimp-* forever.

If I am still following you correctly, this means that all parts of
the EXIF data that should not be persistent (such as SamplesPerPixel,
JPEGTables, YCbCrCoefficients, Interlace, ExifOffset and others that
are marked as "drop" in the PNG-EXIF proposal) would use a different
namespace.  These parasites would use the "exif-*" namespace and would
be discarded when the file is saved (even if it is saved in another
EXIF file, because that information must be re-constructed instead of
being copied).

On Tue, 06 Feb 2002, Lutz Müller wrote:
 > On Wed, 2002-02-06 at 14:50, Raphael Quinet wrote:
 > > Maybe we could also define
 > > the "exif-*" namespace as common, although it could also be
 > > "gimp-exif-*".
 >
 > It would be _really_ easy if you used the tag names for those parasites,
 > i.e. gimp-exif-FillOrder or gimp-exif-SpectralSensitivity.

Yes, that's what I was planning to do.  Except that I would convert
the MixedCaseNames to hyphen-separated-names in order to be consistent
with other parts of the GIMP.

So the parasites would be split in several categories:
1 - "gimp-*" for existing persistent parasites that are already shared
 by several plug-ins (e.g, "gimp-comment" although the definition
 of this one is much too vague, as a consequence of the different
 meaning that it can have in different image formats).
2 - "gimp-exif-*" for new persistent parasites derived from the EXIF
 specification and that could be used by other plug-ins such as
 TIFF or PNG.  I will probably follow the list given in the
 PNG-EXIF proposal.
3 - "exif-*" for new non-persistent parasites derived from the EXIF
 specification.  These ones might be displayed in the "File
 Properties" dialog if we ever have one, but they would never be
 saved again in a file and they would not be used by other
 plug-ins.

The second category could be merged with the first one if we drop the
"-exif" part of the name and put everything under "gimp-*".  I do not
know what is better.  Comments?

 > Besides, that would save you a lot of writing, as you can just point to
 > the EXIF reference for names.

Sure, that was my goal.

 > By the way, libexif-0.3 and libexif-gtk-0.2 is out. If you use that, you
 > can even access the thumbnail embedded in the EXIF data using gimp-1.2.2
 > and my patches posted earlier. Again, just a proof of concept, but it
 > works.

Thanks.  I will have a look at it as soon as possible.  But as I wrote
previously and as Dave agreed, it would probably make more sense to
merge this code directly into the JPEG plug-in instead of requiring an
additional library.  Also, the GTK+ user interface should probably be
converted to a separate plug-in to view and edit all file properties.

-Raphael




___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Lutz Müller

On Wed, 2002-02-06 at 14:50, Raphael Quinet wrote:
> The only
> thing that should be checked is the usage of the "gimp-*" names, which
> should have a pre-defined name and type.

There are currently only one or two pre-defined names and types that
relate to EXIF data. Once you have defined the parasites, I'll come up
with a converter "parasites <-> EXIF data".

> Maybe we could also define
> the "exif-*" namespace as common, although it could also be
> "gimp-exif-*".

It would be _really_ easy if you used the tag names for those parasites,
i.e. gimp-exif-FillOrder or gimp-exif-SpectralSensitivity.

Besides, that would save you a lot of writing, as you can just point to
the EXIF reference for names.

By the way, libexif-0.3 and libexif-gtk-0.2 is out. If you use that, you
can even access the thumbnail embedded in the EXIF data using gimp-1.2.2
and my patches posted earlier. Again, just a proof of concept, but it
works.

Lutz
-- 
+--+  \|||/
| Lutz Müller+49 (7156) 34837  |  (o o)
|  +---ooO-(_)-Ooo---+
| Hans-Sachs-Strasse 5   |
| 71254 Ditzingenhttp://www.topfrose.de  |
| Germany[EMAIL PROTECTED]  |
++



signature.asc
Description: This is a digitally signed message part


Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Raphael Quinet

On Wed, 06 Feb 2002, Dave Neary wrote:
 > Parasite naming is non-standard. Anyone can create a parasite with any
 > name they want.  [...]
 > Where *is* the list of parasites? There are only (as you point out)
 > about 10 persistent parasites, and the list isn't maintained anywhere.
 > One possible approach to the metadata thing (I won't call it a problem
 > yet) is to maintain a list of all the parasites which are used along
 > with a description, and any time someone adds a parasite, they add it
 > (with a description) to the list. devel-docs/parasites.txt is
 > something approaching that. But that makes maintenance pretty
 > difficult, compared to having the code document itself (one metadata
 > structure with typed fields, and a couple of parsing routines).

OK, so now the problem is clear: we need a way to enforce some
consistency for the names of the parasites in the standard namespace
("gimp-*").  The plug-ins should be allowed to do anything they want
with the parasites in their own namespace (e.g., "jpeg-save-options"
or "tiff-save-options") and nobody has to worry about these.  The only
thing that should be checked is the usage of the "gimp-*" names, which
should have a pre-defined name and type.  Maybe we could also define
the "exif-*" namespace as common, although it could also be
"gimp-exif-*".  Any plug-in that attempts to set or get a "gimp-*"
parasite that has not been defined in some central place should cause
the core to generate some kind of warning.

So, what about this solution: I convert the existing list of common
parasites (only the "gimp-*" parasites in devel-docs/parasites.txt) to
a list of strings that can be put in a *.c or *.h file.  I also add
the EXIF data to this list.  Then if the GIMP is compiled in debug
mode, I would add some code in the PDB functions for accessing the
parasites.  This code would trigger a g_warning if the name of a
"gimp-*" parasite cannot be found in the pre-compiled list.

The code could also check the type of the parasite automatically, but
this would imply an API change for all PDB functions dealing with
parasites and that would also require an upgrade of the XCF format.
So this would break a lot of things, but maybe it is better to do it
as early as possible.  Any opinions on this?

Note that the *.c or *.h file containing the list of common parasites
in the "gimp-*" namespace could be generated at build time from an XML
file.  That file could also hold the human-readable documentation of
these parasites and it could be used to generate a text file or HTML
file documenting the common parasites.

 > I don't see the parasite handler as one place. As a scenario - say
 > that the TIFF plug-in wants to set some metadata information (but not
 > all of it) for a certain image, and later we are saving as PNG, and we
 > want to set some more metadata with the image, wouldn't you consider
 > the two plug-ins as two places? If I add a parasite to the metadata in
 > the TIFF plug-in, the PNG developer knows nothing about it - if I as a
 > lazy developer didn't add it to the list of supported metadata he
 > wouldn't know it existed. And let's say I as the PNG developer want to
 > use the same data, but I call it a slightly different name - now we
 > have two parasites which do the same thing. Those kind of problems are
 > eliminated by definition if all the metadata's defined in one place.

The usage of non-standard parasites has not been a problem so far.
All authors of plug-ins have correctly followed the guidelines
described in devel-docs/parasites.txt.  From that point of view, I do
not think that it is really important to add a mechanism that checks
if the "gimp-*" namespace is used correctly.  But I think that it
could be a nice addition, so I will see what I can do about it until
next week.

-Raphael

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Adam D. Moss

Raphael Quinet wrote:
> But it needs to be extended with all the names of the EXIF parasites.
> So I will try to do that this week.  Basically, I think that it would
> be enough to use the name "gimp-blah" for each "blah" field of the
> EXIF data and simply copy the descriptions given in the EXIF standard.

Fair enough, though if a parasite is going in the general-purpose
gimp-* namespace care should probably be taken not to impose
constraints specific to the EXIF form of that metadata upon
a more general-purpose gimp-wide version.

> Some of the fields will have to be discarded (or set read-only or not
> persistent) because they only make sense for the original file format
> and are irrelevant once the image is converted to an RGB bitmap.

Also fair enough, though I'd consider prefixing these with exif-
or similar to avoid polluting gimp-* forever.

FWIW I'm in favour of splitting out individual general-purpose
parasites rather than a monolithic EXIF parasite.

--Adam
-- 
Adam D. Moss. ,,^^[EMAIL PROTECTED]http://www.foxbox.org/   co:3
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] How's CVS-HEAD?

2002-02-06 Thread Sven Neumann

Hi,

"Adam D. Moss" <[EMAIL PROTECTED]> writes:

> Is it pretty much definitely compilable and runnable by
> mortals right now (funtionality aside)?  What additions
> have there been to the list of **essential** build libs/components
> since 1.2.x?

yes, it should compile. As usual the files HACKING and INSTALL mention
the build requirements. In particular these are:

  autoconf >= 2.13
  automake >= 1.4
  libtool  >= 1.3.4

  pkg-config >= 0.7

  glib  >= 1.3.13
  pango >= 0.24  including FT2 support (freetype >= 2.0.1)
  atk   >= 0.10  (required by gtk+)
  gtk+  >= 1.3.13

Basically this boils down to a working GTK+-1.3.13 installation and
the usual autofoo tools.


Salut, Sven
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Raphael Quinet

On Wed, 06 Feb 2002, Adam D. Moss wrote:
 > Raphael Quinet wrote:
 > > The only thing that is missing is a standard list of names and types
 > > for all parasites.
 >
 > {docs|devel-docs}/parasites.txt

Err...  Right.  I knew that the file existed (I took a look at it the
last time we discussed the parasites) but I had forgotten its
location.  It is indeed included in the GIMP tarball, in the
devel-docs directory.

But it needs to be extended with all the names of the EXIF parasites.
So I will try to do that this week.  Basically, I think that it would
be enough to use the name "gimp-blah" for each "blah" field of the
EXIF data and simply copy the descriptions given in the EXIF standard.
Some of the fields will have to be discarded (or set read-only or not
persistent) because they only make sense for the original file format
and are irrelevant once the image is converted to an RGB bitmap.  I
will probably start with the list given in:
http://pmt.sourceforge.net/exif/drafts/d020.html

-Raphael

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Dave Neary

Raphael wrote:
> On Tue, 5 Feb 2002, Dave Neary wrote:
>  > Your points all have merit. My problem is now, and has always
been,
>  > that a parasite per piece of data would mean adding an extra 50
or 60
>  > parasites which would be relatively persistent. That makes things
>  > pretty complicated, to my mind.
>
> What's the problem with having 50 or 60 parasites attached to an
> image?  The parasites are very small and they are what the GIMP uses
> to store any kind of metadata about an image.  Each of these parts
can
> easily be accessed or modified by using its name.

Parasite naming is non-standard. Anyone can create a parasite with any
name they want. In terms of providing a consistent metadata set, with
the aim of having a metadata editor at some stage, 50 or 60 pieces of
metadata with (possibly) non-standard naming is complicated. Add to
that that not all metadata parasites will be registered in the same
place, and that any new plug-in can add new metadata, and we begin to
have a problem. I'd have no problem with using a large number of
parasites if we were guaranteed a consistent approach throughout the
gimp, but parasites don't give that guarantee by definition almost.
The obvious way to maintain a consistency wrt the metadata is to
define it in one place, maintain that list in one place, and have it
parsed into a usable structure when needed. You say that any piece of
metadata can easily be accessed by name. The problem is going to be:
What name? I think keeping stuff in one place offers consistency.

>  > Instead we could store the whole
>  > metadata in a nice format (say as xml?) as one parasite, and have
it
>  > parsed in one place. Then people who want to use bits of the
metadata
>  > would just use the bits they wanted, and ignore the bits they
didn't
>
> I do not understand what we would gain by using an XML format to
store
> a list of name-value pairs if the GIMP is already providing a
> mechanism for doing that: the parasites.  This would only add an
extra
> parsing step that is not necessary.  It is better to be able to
access
> any part of the data directly by using its name.

The extra parsing step certainly isn't necessary, but I don't see it
being a huge overhead. It'd be done twice in the lifetime of a
plug-in - once to parse the parasite into usable data, once to parse
the data back to a parasite. I don't see why that would present a huge
problem for the gains that I see.

>  > I think one structure, defined in one place, makes the handling
of
>  > metadata cleaner.
>
> Maybe I am sounding like a broken record, but there is already a
> structure that is designed for handling metadata: this is the list
of
> parasites.  This is precisely why the parasites were added to the
> GIMP: storage of metadata, and easy access by name.

Where *is* the list of parasites? There are only (as you point out)
about 10 persistent parasites, and the list isn't maintained anywhere.
One possible approach to the metadata thing (I won't call it a problem
yet) is to maintain a list of all the parasites which are used along
with a description, and any time someone adds a parasite, they add it
(with a description) to the list. devel-docs/parasites.txt is
something approaching that. But that makes maintenance pretty
difficult, compared to having the code document itself (one metadata
structure with typed fields, and a couple of parsing routines).

> The only thing that is missing is a standard list of names and types
> for all parasites.

This is a pretty big thing.

> It would be trivial to map the names of the all EXIF fields to
> individual parasites.  I will try to post a list before the end of
the
> week, and maybe that could be used as a starting point for a
"standard
> list of GIMP parasites".  I will also have a look at how much effort
> would be needed in order to have the types checked by the GIMP core.

This is certainly the obvious approach, if we are to use multiple
parasites. The problem (and now it's my turn to sound like a broken
record) is that the list would be independant of the code, and thus
there's never going to be one definitive reference for metadata
parasites. Having one metadata structure provides that one place.

>  > And herein lies the crux - one object which is parsed by any
object
>  > that wants to use bits of it, or multiple objects which are the
>  > bits. I think the cleanliness of having everything in one place
is
>  > appealing.
>
> Well, that depends on your point of view: as I see it, the "one
place"
> is the list of parasites.  Several plug-ins are already using this
> "one place" and the access functions provided by the PDB to get or
> change some elements from this list.  I still do not see any
advantage
> in using only one element from this list to store another list (or
> another type of data structure, although I do not expect that we
need
> anything more complex than a list to be used by more than one
> plug-in).

I don't see the parasite handler as one place. A

[Gimp-developer] How's CVS-HEAD?

2002-02-06 Thread Adam D. Moss


Is it pretty much definitely compilable and runnable by
mortals right now (funtionality aside)?  What additions
have there been to the list of **essential** build libs/components
since 1.2.x?

I ask because I want to get this rgb->indexed rewrite out
of my tree before it rots even further and I'd rather integrate
it myself than throw some months-old source at the treemasters,
though not if it looks like the mere prerequisite chain build
process will reduce me to tears like it did the last time I tried. :)

Thanks,
--Adam
-- 
Adam D. Moss. ,,^^[EMAIL PROTECTED]http://www.foxbox.org/   co:3
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Adam D. Moss

Raphael Quinet wrote:
> The only thing that is missing is a standard list of names and types
> for all parasites.

{docs|devel-docs}/parasites.txt
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer



Re: [Gimp-developer] EXIF information in JPEG files

2002-02-06 Thread Raphael Quinet

On Tue, 5 Feb 2002, Dave Neary wrote:
 > Raphael wrote:
 > > There are several reasons for using individual parasites for each
 > > part of the EXIF data instead of using a single parasite including
 > > the whole structure:
 >
 > [snipped points]
 >
 > Your points all have merit. My problem is now, and has always been,
 > that a parasite per piece of data would mean adding an extra 50 or 60
 > parasites which would be relatively persistent. That makes things
 > pretty complicated, to my mind.

What's the problem with having 50 or 60 parasites attached to an
image?  The parasites are very small and they are what the GIMP uses
to store any kind of metadata about an image.  Each of these parts can
easily be accessed or modified by using its name.  The GIMP parses the
list of parasites for you, so you only have to write a few of lines of
code to get the current value of "gimp-comment" (the comment attached
to the image) or "hot-spot" (the position of the hot spot if you are
editing a cursor) and modify it.

 > Instead we could store the whole
 > metadata in a nice format (say as xml?) as one parasite, and have it
 > parsed in one place. Then people who want to use bits of the metadata
 > would just use the bits they wanted, and ignore the bits they didn't

I do not understand what we would gain by using an XML format to store
a list of name-value pairs if the GIMP is already providing a
mechanism for doing that: the parasites.  This would only add an extra
parsing step that is not necessary.  It is better to be able to access
any part of the data directly by using its name.

Using a format such as XML could be useful if many plug-ins had to
attach complex data structures such as trees or nested lists to the
image (and if these data structures would be used by more than one
plug-in) but I do not see any need for that.  The EXIF data block
itself is a list of name-value pairs so the GIMP parasites are
perfectly suitable for that.

 > I think one structure, defined in one place, makes the handling of
 > metadata cleaner.

Maybe I am sounding like a broken record, but there is already a
structure that is designed for handling metadata: this is the list of
parasites.  This is precisely why the parasites were added to the
GIMP: storage of metadata, and easy access by name.

The only thing that is missing is a standard list of names and types
for all parasites.  Here is a partial list of the names that I could
find in the last stable release of the GIMP:
- "gimp-comment" (string) image comment
- "hot-spot" (string) hot spot position, given as two numbers in ASCII
- "icc-profile" (raw) ICC color profile used in TIFF images
- "gimp-brush-pipe-parameters" (raw) GIMP-specific data for brushes
In addition, several plug-ins define their own parasites (such as
"jpeg-save-options" or "ifscompose-parasite") that are only useful for
themselves and does not need to be understood by other plug-ins.

It would be trivial to map the names of the all EXIF fields to
individual parasites.  I will try to post a list before the end of the
week, and maybe that could be used as a starting point for a "standard
list of GIMP parasites".  I will also have a look at how much effort
would be needed in order to have the types checked by the GIMP core.

 > > The parasites are just untyped blocks of data, so a plug-in could
 > > certainly copy everything, modify a part of the data and then
 > > re-attach the updated parasite to the image.  But again this would
 > > assume that all file plug-ins that want to use (a part of) the
 > > metadata are able to parse the EXIF block.  I would prefer to avoid
 > > this requirement.
 >
 > And herein lies the crux - one object which is parsed by any object
 > that wants to use bits of it, or multiple objects which are the
 > bits. I think the cleanliness of having everything in one place is
 > appealing.

Well, that depends on your point of view: as I see it, the "one place"
is the list of parasites.  Several plug-ins are already using this
"one place" and the access functions provided by the PDB to get or
change some elements from this list.  I still do not see any advantage
in using only one element from this list to store another list (or
another type of data structure, although I do not expect that we need
anything more complex than a list to be used by more than one
plug-in).

-Raphael

___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer