1cdf0e10cSrcweir:
2cdf0e10cSrcweir    eval 'exec perl -S $0 ${1+"$@"}'
3cdf0e10cSrcweir        if 0;
47e90fac2SAndrew Rist#**************************************************************
57e90fac2SAndrew Rist#
67e90fac2SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
77e90fac2SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
87e90fac2SAndrew Rist#  distributed with this work for additional information
97e90fac2SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
107e90fac2SAndrew Rist#  to you under the Apache License, Version 2.0 (the
117e90fac2SAndrew Rist#  "License"); you may not use this file except in compliance
127e90fac2SAndrew Rist#  with the License.  You may obtain a copy of the License at
137e90fac2SAndrew Rist#
147e90fac2SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
157e90fac2SAndrew Rist#
167e90fac2SAndrew Rist#  Unless required by applicable law or agreed to in writing,
177e90fac2SAndrew Rist#  software distributed under the License is distributed on an
187e90fac2SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
197e90fac2SAndrew Rist#  KIND, either express or implied.  See the License for the
207e90fac2SAndrew Rist#  specific language governing permissions and limitations
217e90fac2SAndrew Rist#  under the License.
227e90fac2SAndrew Rist#
237e90fac2SAndrew Rist#**************************************************************
247e90fac2SAndrew Rist
257e90fac2SAndrew Rist
26cdf0e10cSrcweir#
27cdf0e10cSrcweir# Create ordinary theme from HiContrast images.
28cdf0e10cSrcweir#
29cdf0e10cSrcweir
30cdf0e10cSrcweiruse File::Copy;
31cdf0e10cSrcweiruse File::Find;
32cdf0e10cSrcweiruse File::Path;
33cdf0e10cSrcweiruse File::Spec;
34cdf0e10cSrcweir
35cdf0e10cSrcweir( $src, $dst ) = @ARGV;
36cdf0e10cSrcweir
37cdf0e10cSrcweirif ( $src eq "" || $dst eq "" ) {
38cdf0e10cSrcweir    print STDERR "Usage: hicontrast-to-theme.pl src dest\n\n";
39cdf0e10cSrcweir    print STDERR "Create ordinary theme from HiContrast images.\n";
40cdf0e10cSrcweir    exit 1;
41cdf0e10cSrcweir}
42cdf0e10cSrcweir
43cdf0e10cSrcweir$dst = File::Spec->rel2abs( $dst );
44cdf0e10cSrcweir
45cdf0e10cSrcweir@hc_table = (
46cdf0e10cSrcweir    [ ".*_h.png",         "_h.png",    ".png" ],
47cdf0e10cSrcweir    [ ".*_sch.png",       "_sch.png",  ".png" ],
48cdf0e10cSrcweir    [ ".*_hc.png",        "_hc.png",   ".png" ],
49cdf0e10cSrcweir    [ "lch_.*.png",       "lch_",      "lc_" ],
50cdf0e10cSrcweir    [ "sch_.*.png",       "sch_",      "sc_" ],
51cdf0e10cSrcweir    [ "lch[0-9].*.png",   "lch",       "lc" ],
52cdf0e10cSrcweir    [ "sch[0-9].*.png",   "sch",       "sc" ],
53cdf0e10cSrcweir    [ "loh[0-9].*.png",   "loh",       "lo" ],
54cdf0e10cSrcweir    [ "lxh[0-9].*.png",   "lxh",       "lx" ],
55cdf0e10cSrcweir    [ "sxh[0-9].*.png",   "sxh",       "sx" ],
56cdf0e10cSrcweir    [ "avh[0-9].*.png",   "avh",       "av" ],
57cdf0e10cSrcweir    [ "avlh[0-9].*.png",  "avlh",      "avl" ],
58cdf0e10cSrcweir    [ "idh[0-9].*.png",   "idh",       "id" ],
59cdf0e10cSrcweir    [ "imh[0-9].*.png",   "imh",       "im" ],
60cdf0e10cSrcweir    [ "mih[0-9].*.png",   "mih",       "mi" ],
61cdf0e10cSrcweir    [ "tbh[0-9].*.png",   "tbh",       "tb" ],
62cdf0e10cSrcweir    [ "nah[0-9].*.png",   "nah",       "na" ],
63cdf0e10cSrcweir    [ "nch[0-9].*.png",   "nch",       "nc" ],
64cdf0e10cSrcweir    [ "nvh[0-9].*.png",   "nvh",       "nv" ],
65cdf0e10cSrcweir    [ "ouh[0-9].*.png",   "ouh",       "ou" ],
66cdf0e10cSrcweir    [ "ddh[0-9].*.png",   "ddh",       "dd" ],
67cdf0e10cSrcweir    [ "sfh[0-9].*.png",   "sfh",       "sf" ],
68cdf0e10cSrcweir    [ "srh[0-9].*.png",   "srh",       "sr" ],
69cdf0e10cSrcweir    [ "wrh[0-9].*.png",   "wrh",       "wr" ],
70cdf0e10cSrcweir    [ "alh[0-9].*.png",   "alh",       "al" ],
71cdf0e10cSrcweir    [ "ath[0-9].*.png",   "ath",       "at" ],
72cdf0e10cSrcweir    [ "bih[0-9].*.png",   "bih",       "bi" ],
73cdf0e10cSrcweir    [ "coh[0-9].*.png",   "coh",       "co" ],
74cdf0e10cSrcweir    [ "foh[0-9].*.png",   "foh",       "fo" ],
75cdf0e10cSrcweir    [ "fuh[0-9].*.png",   "fuh",       "fu" ],
76cdf0e10cSrcweir    [ "oph[0-9].*.png",   "oph",       "op" ],
77cdf0e10cSrcweir    [ "unh[0-9].*.png",   "unh",       "un" ],
78cdf0e10cSrcweir    [ "edh[0-9].*.png",   "edh",       "ed" ],
79cdf0e10cSrcweir    [ "cdh[0-9].*.png",   "cdh",       "cd" ],
80cdf0e10cSrcweir    [ "frh[0-9].*.png",   "frh",       "fr" ],
81cdf0e10cSrcweir    [ "fwh[0-9].*.png",   "fwh",       "fw" ],
82cdf0e10cSrcweir    [ "nuh[0-9].*.png",   "nuh",       "nu" ],
83cdf0e10cSrcweir    [ "prh[0-9].*.png",   "prh",       "pr" ],
84cdf0e10cSrcweir    [ "shh[0-9].*.png",   "shh",       "sh" ],
85cdf0e10cSrcweir    [ "trh[0-9].*.png",   "trh",       "tr" ],
86cdf0e10cSrcweir    [ "reh[0-9].*.png",   "reh",       "re" ],
87cdf0e10cSrcweir    [ "joh[0-9].*.png",   "joh",       "jo" ],
88cdf0e10cSrcweir    [ "fph[0-9].*.png",   "fph",       "fp" ],
89cdf0e10cSrcweir    [ "dah[0-9].*.png",   "dah",       "da" ]
90cdf0e10cSrcweir);
91cdf0e10cSrcweir
92cdf0e10cSrcweirmy (@from_stat, @to_stat);
93cdf0e10cSrcweir
94cdf0e10cSrcweirsub copy_normalized {
95cdf0e10cSrcweir    $file = $_;
96cdf0e10cSrcweir    for $hc ( @hc_table ) {
97cdf0e10cSrcweir        ( $what, $from, $to ) = @$hc;
98cdf0e10cSrcweir        if ( $file =~ /$what/&&!($file=~/\.svn/) ) {
99cdf0e10cSrcweir            my $dir = File::Spec->catdir( $dst, $File::Find::dir );
100cdf0e10cSrcweir
101cdf0e10cSrcweir            if ( ! -d $dir ) {
102cdf0e10cSrcweir                mkpath( $dir );
103cdf0e10cSrcweir            }
104cdf0e10cSrcweir
105cdf0e10cSrcweir            ( my $copy = $file ) =~ s/$from/$to/;
106cdf0e10cSrcweir            $copy = File::Spec->catfile( $dir, $copy );
107cdf0e10cSrcweir
108cdf0e10cSrcweir	        @from_stat = stat($file);
109cdf0e10cSrcweir	        @to_stat = stat($copy);
110cdf0e10cSrcweir			if ( $from_stat[9] > $to_stat[9] ) {
111*dcefce6cSYuri Dario				if ( $^O eq 'os2' ) {
112*dcefce6cSYuri Dario					$rc = unlink($copy);
113*dcefce6cSYuri Dario				}
114cdf0e10cSrcweir	            copy( $file, $copy ) || die $!;
115cdf0e10cSrcweir				utime( $from_stat[9], $from_stat[9], $copy );
116cdf0e10cSrcweir			}
117cdf0e10cSrcweir
118cdf0e10cSrcweir            last;
119cdf0e10cSrcweir        }
120cdf0e10cSrcweir    }
121cdf0e10cSrcweir}
122cdf0e10cSrcweir
123cdf0e10cSrcweirchdir( $src );
124cdf0e10cSrcweirfind( \&copy_normalized, '.' );
125