#------------------------------------------------------------------------------
# File:         acdsee.config
#
# Description:  This config file defines ACDSee XMP region tags for writing.
#
# Usage:        exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
#
# Requires:     ExifTool version 10.28 or later
#
# Revisions:    2020/01/28 - Bryan K. Williams (aka StarGeek) Created
#------------------------------------------------------------------------------

my %sACDSeeDimensions = (
    STRUCT_NAME => 'ACDSee Dimensions',
    NAMESPACE   => {'acdsee-stDim' => 'http://ns.acdsee.com/sType/Dimensions#'},
    'w'           => { Writable => 'real' },
    'h'           => { Writable => 'real' },
    'unit'        => { },
);

my %sACDSeeArea = (
    STRUCT_NAME => 'ACDSee Area',
    NAMESPACE => { 'acdsee-stArea' => 'http://ns.acdsee.com/sType/Area#' },
    'x'     => { Writable => 'real' },
    'y'     => { Writable => 'real' },
    w       => { Writable => 'real' },
    h       => { Writable => 'real' },
);

my %sACDSeeRegionStruct = (
    STRUCT_NAME     => 'ACDSee Regions',
    NAMESPACE => { 'acdsee-rs' => 'http://ns.acdsee.com/regions/' },
    ALGArea         => { Struct => \%sACDSeeArea },
    DLYArea         => { Struct => \%sACDSeeArea },
    Name            => { },
    NameAssignType  => { },
    Type            => { },
);

%Image::ExifTool::UserDefined = (
    # new XMP namespaces (eg. xxx) must be added to the Main XMP table:
    'Image::ExifTool::XMP::Main' => {
        'acdsee-rs' => { # <-- must be the same as the NAMESPACE prefix
            SubDirectory => { 
                TagTable => 'Image::ExifTool::UserDefined::ACDSeeRegions' 
            },
        },
    },
);

%Image::ExifTool::UserDefined::ACDSeeRegions = (
    GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee', 2 => 'Image' },
    NAMESPACE => { 'acdsee-rs' => 'http://ns.acdsee.com/regions/' },
    WRITABLE => 'string', # (default to string-type tags)
    Regions => {
        Name => 'RegionInfoACDSee',
        # the "Struct" entry defines the structure fields
        Struct => {
            # optional structure name (used for warning messages only)
            STRUCT_NAME => 'ACDSee RegionInfo',        
            RegionList => {
                Struct => \%sACDSeeRegionStruct,
                List => 'Bag',
            },
            AppliedToDimensions => { Struct => \%sACDSeeDimensions },
        },
    },
);

#------------------------------------------------------------------------------
1;  #end