# -*- mode: Perl -*-
# /=====================================================================\ #
# |  graphicx                                                           | #
# | Implementation for LaTeXML                                          | #
# |=====================================================================| #
# | Part of LaTeXML:                                                    | #
# |  Public domain software, produced as part of work done by the       | #
# |  United States Government & not subject to copyright in the US.     | #
# |---------------------------------------------------------------------| #
# | Bruce Miller <bruce.miller@nist.gov>                        #_#     | #
# | http://dlmf.nist.gov/LaTeXML/                              (o o)    | #
# \=========================================================ooo==U==ooo=/ #
package LaTeXML::Package::Pool;
use strict;
use warnings;
use LaTeXML::Package;
use LaTeXML::Util::Image;

#**********************************************************************
# (See  LaTeXML::Post::Graphics for suggested postprocessing)
# Provides alternative argument syntax.
RequirePackage('graphics');

DefKeyVal('Gin', 'width',           'Dimension');
DefKeyVal('Gin', 'height',          'Dimension');
DefKeyVal('Gin', 'keepaspectratio', '', 'true');
DefKeyVal('Gin', 'clip',            '', 'true');

DefKeyVal('Gin', 'vrml', 'Semiverbatim');
DefKeyVal('Gin', 'magnifiable', '', 'true');

# Redefine
DefMacro('\includegraphics OptionalMatch:* []',
  '\@ifnextchar[{\@includegraphics#1[#2]}{\@includegraphicx#1[#2]}');

DefConstructor('\@includegraphicx OptionalMatch:* OptionalKeyVals:Gin Semiverbatim',
  "<ltx:graphics graphic='#path' candidates='#candidates' options='#2?#1(,clip=true)'/>",
  alias      => '\includegraphics',
  sizer      => \&image_graphicx_sizer,
  properties => sub {
    my ($stomach, $starred, $kv, $path) = @_;
    $path = ToString($path); $path =~ s/^\s+//; $path =~ s/\s+$//;
    my $searchpaths = LookupValue('GRAPHICSPATHS');
    if (my $svgpath = $kv && $kv->getValue('svgpath')) {    # Doesn't belong here!!!
      push(@$searchpaths, ToString($svgpath)); }
    my @candidates = pathname_findall($path, types => ['*'], paths => $searchpaths);
    if (my $base = LookupValue('SOURCEDIRECTORY')) {
      @candidates = map { pathname_relative($_, $base) } @candidates; }
    my $options = ToString($kv);
    $options .= ',clip=true' if $starred;
    (path => $path,
      candidates => join(',', @candidates),
      options => $options); });

#**********************************************************************
1;

