#!/usr/local/bin/perl

use strict;
use GD;
require "arglib.pl";
require "datlib.pl";
require "imglib.pl";

my $settings=&parseArgs(@ARGV);
&initSettings($settings);
&showSettings($settings);
&setPlotAreaByBorder($settings);
&loadData($settings);
&adjustScales($settings);
&createImage($settings);
&saveImage($settings);

exit 1;


sub showSettings {
  my ($settings)=@_;
  printf STDERR "Settings:\n\n";
  foreach my $key (sort keys %$settings) {
    printf STDERR "  %-20s = %s\n",$key,$settings->{$key};
  }
  printf STDERR "\n";
}


sub initSettings {
  my ($settings)=@_;
  $settings->{DEBUG}=1 unless defined $settings->{DEBUG};
  $settings->{INVERT}=0 unless defined $settings->{INVERT};
  $settings->{IMG_WIDTH}=800 unless defined $settings->{IMG_WIDTH};
  $settings->{IMG_HEIGHT}=500 unless defined $settings->{IMG_HEIGHT};
  $settings->{BORDER}=10 unless defined $settings->{BORDER};
  $settings->{BORDER_COLOR}="#000000" unless defined $settings->{BORDER_COLOR};
  $settings->{BACKGROUND_COLOR}="#FFFFFF" unless defined $settings->{BACKGROUND_COLOR};
  $settings->{DATA_COLOR}="#FF0000" unless defined $settings->{DATA_COLOR};
  $settings->{TIMEMARK_COLOR}="#808080" unless defined $settings->{TIMEMARK_COLOR};
  $settings->{TIMEMARK_INTERVAL}=3600 unless defined $settings->{TIMEMARK_INTERVAL};
  $settings->{TIMEMARK_LABEL_RATIO}=3 unless defined $settings->{TIMEMARK_LABEL_RATIO};
  $settings->{TIMEMARK_LABEL_OFFSET}=5 unless defined $settings->{TIMEMARK_LABEL_OFFSET};
  $settings->{LABEL_OFFSET}=10 unless defined $settings->{LABEL_OFFSET};
  $settings->{LABEL}="San Jose, CA (http://avtanski.net/projects/magnetometer)" unless defined $settings->{LABEL};
  $settings->{SMOOTHING_FILTER_SIZE}=120 unless defined $settings->{SMOOTHING_FILTER_SIZE};
  $settings->{JUMP_CORRECTION}=1 unless defined $settings->{JUMP_CORRECTION};
  $settings->{JC_T1}=2.0 unless defined $settings->{JC_T1};
  $settings->{JC_T2}=0.1 unless defined $settings->{JC_T2};
  $settings->{JC_THRESHOLD}=1.0 unless defined $settings->{JC_THRESHOLD};
  $settings->{POST_FILTER}=0 unless defined $settings->{POST_FILTER};
  $settings->{PF_T}=10 unless defined $settings->{PF_T};
  $settings->{OUTPUT}="out.png" unless defined $settings->{OUTPUT};
  $settings->{INPUT}="in.dat" unless defined $settings->{INPUT};
  $settings->{YSCALE}=1.0 unless defined $settings->{YSCALE};
  $settings->{DT}=0 unless defined $settings->{DT};
  return $settings;
}



