NAME

PlotCalendar::Day - Generate ascii or html for a single day in a calendar

SYNOPSIS

Creates a Day object for plotting as ASCII, HTML, or in a Perl/Tk Canvas. Intended to be gathered together by Month.pm to create a traditional calendar.

DESCRIPTION

Measurements in pixels because - well, because. It seemed simpler when I made the decision. And it works for both Tk and HTML.

The day is laid out like this :

------------------------------------------
|         |        |                     |
| digit   | digit  | Main day name       |
|         |        |                     |
|         |        |                     |
|         |        |                     |
|---------|--------|                     | <- bgcolmain
|                                        |
|                                        |
|                                        |
| Optional text                          |
|      .                                 |
|                                        |
| Optional Text                          |
|      .                                 |
|      .                                 |
|      .                                 | 
|      .                                 |
| Optional text                          |
|      .                                 |
|      .                                 |
|      .                                 |
|      .                                 |
------------------------------------------

Globals : height, width, dayfont, mainfont, optfont, fgcol,
bgcolmain, digit

Optionals : dayname, optext[...]

Font sizes in HTML translate as (rounding up) :
    6->-1
    8->+0
    10->+1
    12->+2
    14->+3

Various quantities can be set globally, or over-ridden for specific cases.

This is really meant to be called by month.pm to construct a calendar, but calling it with a *really big size* is a way to "zoom in" on a given day

EXAMPLE

	require PlotCalendar::Day;

	my $digit=10 ; # do it for the tenth
	my $day = PlotCalendar::Day->new($digit);

	#	 These are values with default settings, so these are optional

    ------------ size of whole thing in pixels, X,Y
	$day -> size(100,100);
    ------------ Global foreground and background colors
	$day -> color('BLACK','#33cc00',);
	$day -> color('WHITE','RED',);
    ------------ Font sizes for digits, dayname, and optional text
	$day -> font('14','10','8');
    ------------ styles for digits, dayname, and optional text
    ------------ b=bold, i=italic, u=underline, n=normal
	$day -> style('bi','nbu','i');
    ------------ Clip text to avoid wrapping? (yes/no)
	$day -> cliptext('yes');

	#	HTML only options
	
    ------------ is it allowed to expand vertically if there is too much text?
	$day -> htmlexpand('yes');

	#	These values are defaulted to blank

    ------------ day name
	$day -> dayname('Groundhog Day');
    ------------ if set, name is a hotlink
	$day -> nameref('<A href="http://ooga.booga.com/">');
    ------------ if set, text string is a hotlink. Note that an array is getting
    ------------ passed. Text is passed as an array also. Each line of text is
    ------------ an array element. THis example hotlinks only the first 2 lines.
	$day -> textref('<A href="http://booga.booga.com/">','<A href="mailto:>');
    ------------ Text strings, passed as elemnts of an array
	$day -> text('text string 1','text string 2','abcdefghijklmno 0 1 2 3 4 5 6 7 8 9 0',);
    ------------ override default text colors and set each string individually
	$day -> textcolor('BLUE','RED','GREEN',);
    ------------ override default text sizes and set each string individually
	$day -> textsize('8','10','8',);
    ------------ override default text styles and set each string individually
	$day -> textstyle('b','u','bi',);

    ------------ wrap a reference around the entire cell
	$day->htmlref('<A href="http://this_is_a_url/">');

    ------------ unload what I set
	my @size = $day->size;
	my @color = $day->color;
	my @font = $day->font;
	my @text = $day->text;
	my $dayname = $day->dayname;

	#	So, what do we have now?

    ------------ Create an ascii text cell
	#my $text = $day -> gettext;

    ------------ Create and return html for a cell in a table
	my $html = $day -> gethtml;

    ------------ Create and return Tk code (not implemented yet)
	#my $tk = $day -> gettk;

	print "<HTML><BODY>\n";
	print "<H1>Normal Day</H1>\n";
	print "<TABLE BORDER=1><TR>\n";
	print $html;
	print "</TR></TABLE>\n";

AUTHOR

Alan Jackson
March 1999
ajackson@icct.net