Documentation for HAniS - the HTML5 Image AnimationS webapp
First release: November, 2014
Page updated: May 20, 2024
Current release version 4.56 (May 20, 2024)
Just get the ZIP file
Welcome to the homepage for the HTML5 AnimationS webapp (HAniS for short).
This is a re-casting of the FLAniS Flash applet
(which, of course was a re-casting of the original Java applet,
AniS...which itself was a spinoff of the VISITview teletraining package),
done in HTML5. Why? Modern mobile devices no longer support Java or
Flash. In addition, this version is coded in JavaScript (no
relation to "Java") which has been standardized by an independent
organization, rather than a company.
What does HAniS do? Like it predecessors, it is a tool you can
employ on your web pages that provides the ability to animate a
sequence of individual images. It also lets you use overlays and
provides many options for creating "hotspots", probing data, and the like.
This version is coded entirely in JavaScript and uses the HTML5
standards so is usable on multiple platforms with modern
browsers.
The HAniS Model is the same as it predecessors: once the
program starts, it reads configuration information that
persists throughout the run/session (like the controls and
layout). If your content (image
filenames, for example) is changing with time, and you want the
user to be able to "refresh" the content, then you put the
dynamic information into a file_of_filenames which is
re-read when a "refresh" is done, and usually contains the
updated image filenames (and perhaps other, dynamic content).
There are a few different ways of specifying the
configuration information, but the
file_of_filenames is a text file that must reside on the
server with your image files.
This document is the detailed information. If you want to take a quick look at the examples, please click here!. If you have
questions or comments, please let us know! If you find errors or things that are not
clear in this document, we would also appreciate hearing from you!
Quick Links in this Document
Quick Start
To run HAniS, you need these files:
- an HTML file that defines a <div> element where
the display will appear that contains the size (width)
specification and a mechansim to invoke the HAniS.setup() function that also
names the configuration file (see below).
- the configuration file that contains the options ("parameters")
- You may "in-line" these parameters as an alternative - see this example.
- Or you may now define these parameters in a JavaScript object - see this example.
- the minimized JavaScript
(hanis_min.js)
file.
- Optionally, you may also have a "file_of_filenames" and perhaps some other supporting files
to enable certain features (like the "probe"), as detailed below.
Downloading the code: You may pick up
this ZIP archive file which
contains the hanis_min.js file mentioned above, as
well as the easy-to-read source code.
The HTML format
Here is a skeleton HTML file.
This very basic skeleton is to illustrate a) how to embed the HAniS
display in your HTML, and b) how to invoke it.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My Animation</title>
<script type="text/javascript" src="./hanis_min.js"> </script>
</head>
<body style="width:800px;" onload="HAniS.setup('config.txt','handiv')">
<div id="handiv" style="width:800px;background-color:#808080;">
</div>
<hr>
<font size=-1>This webapp is Copyright© 2014-2021 by Tom Whittaker
</body>
</html>
You may use the above as a template, since very few changes will be needed. If you
copy this, then you must:
- Often in simpler layouts, you will want to set the
width
shown above in the <body> tag to meet
your needs -- this is the values for the entire "panel" -- including
your images and controls. The height
is computed automatically.
(Note: if you are using the API that allows you to define the
size dynamically, you do not need to set the width).
- The
HAniS.setup()
call gets it running. There are two
required parameters (NOTE: use single quote marks for these, since the
onload= already uses double-quotes):
- The name of the configuration file (
'config.txt'
is
this example), or the JavaScript object name, or in-line text with
all the parameters.
- The id of the
<div>
element to be used for the image window ('handiv'
in this example).
Alternatively, you may pass in the <div> object itself. If
no "id" is associated with this, an internally-generated one will be
used for creating elements needed.
- An optional 3rd parameter is the name of a JavaScript
function that you define that will be called after HAniS is done
initializing, laying out the interface, and is reading the
images. It has no arguments and is useful to allow for the
dynamic sizing of the display window.
- An optional 4th parameter that is a string containing
addition options to be appended to the ones specified in the
configuration file.
- Set the path to the
hanis_min.js
code (shown as ./
above).
The configuration file
This is a text file you create that contains the parameters and their values.
We have tried to keep the same keyword values in this version.
The general format is identical to previous versions:
keyword = value, value, value
Note that each parameter and its arguments MUST be on one line of text in the file! There are no "continuation" lines or marks available!
Here is an example of a very simple configuration file:
filenames=img0.png, img1.png, img2.png, img3.png
controls = startstop,step,zoom
What follows is an example of a more complex configuration file that includes
styling of the control widgets and uses overlays and the file_of_filenames,
etc.:
#This is a comment
debug=true
dwell = 500
auto_refresh = 1
file_of_filenames = fof.txt
controls = startstop,step,refresh,overlay
controls_style = padding:5px;background-color:green;
controls_tooltip = Start/Stop the animation, Step one frame, Refresh images
buttons_style=padding:5px;background:linear-gradient(white,blue);vertical-align:middle;margin-left:10px; font-family:arial;font-size:18px;padding:5px;border-radius:10px;
startstop_labels = Animate, Stop Them, 120
startstop_style=left:10px;background:linear-gradient(blue, white);
refresh_label=Refresh
step_style=width:50px;
overlay_labels=Reflectivity, Visible Satellite, Watches
overlay_transparent_amount = 100, 100, 40
overlay_labels_style=font-family:arial;color:white;font-size:20px;padding:2px;background-color:green;
overlay_tooltip = First overlay, Second overlay, Watch overlay
bottom_controls = speed,zoom, toggle
bottom_controls_style = padding:5px;background-color:pink;
bottom_controls_tooltip = Decrease or increase animation rate, click to zoom, Click on frame square to remove from animation; click again to add it back
speed_style=width:40px;
zoom_style=width:120px;
toggle_size = 20,10,20
Finally, information about specifying colors in the configuration
file. In HAniS, colors maybe specified in any of the following ways
(each of which is a string of characters):
- by name (e.g., red, yellow, green, blue, lavender...)
- by hexadecimal value in the form #RRGGBBAA
where "RR" is red, "GG" is green, "BB" is blue, and "AA" is
alpha (transparency).
- by hexadecimal value in the form: #RRGGBB or #RGB
Names and Definitions of Controls and Parameters
The rest of this document describes the parameter names and values
needed to drive the HAniS webapp. We begin with the controls and
then describe the specification of the filenames of the images.
Controls
This controls
parameter will position the controls
above the image window. If you
would like some (or all) of the controls below the image
window, use the bottom_controls
tag.
Note: You must not specify the same control in
both the controls
and the bottom_controls
parameters!
If you want to have your controls appear on more than one horizontal
line, preceed the first one on the new line with a /. For example:
controls=startstop, step, speed, /framelabel, looprock, refresh, overlay
would make two lines of controls, with the "framelabel" being the first one
on the second line. You may have more than one split. You may
also use this on the bottom_controls.
Here are the details about each control:
-
startstop is a button for starting and stopping the looping.
If it is not specified, the loop will run forever (if you have otherwise
set the
start_looping
parameter to "true"). You may use the "rate"
parameter to set the initial looping speed. The "spacebar" on the
keyboard will toggle the state of this control.
-
loophalt is a button that is used to control whether an
animation loops or stops at the last frame. The default is to loop.
This may be used in conjunction with the looprock control,
but that is not necessary. (If it is, you may want to change the
default button labels, which are "Halt" and "Loop", using the
loophalt_labels= parameter.)
-
looprock is a button that is used to control whether a movie
loop or a rock back-and-forth mode is used. The default is loop, but may be
specified as rocking using the "rocking" parameter.
-
step creates two little buttons useful for single stepping,
forward and backward. The left- and right-arrow keys on the keyboard
may also be used for this purpose. Alternatively, you may use
backward and forward as separate controls.
-
firstlast creates two buttons that allow the user to immediately
jump to the first or last frames in the sequence. Alternatively,
you may use first and last as separate controls.
-
speed two buttons that are used to decrease or
increase the animation rate. If not
used, a default rate of 3 frames per second is used
(unless overridden by the 'rate' parameter).
-
refresh is a button that will attempt to force a
reload of the image files. This is
useful for realtime data applications, where the contents of the
image files may be changing. NOTE: If you are using the
"file_of_filenames" method of naming the image files, it is
very important
not to change the total number of images if you change the
contents of the "file_of_filenames".
-
autorefresh is a button that will turn the auto
refresh function on and off. If you have the ability to zoom
or enhnace images, along with an auto refresh, you might want to
include this button (when an auto refresh cycle happens, all
zooming and enhancements are cancelled).
Normally the auto-refresh is enabled at the start. If you want
autorefresh to be initially turned off then append the characters
/off
...for example: autorefresh/off
.
-
toggle provides a way for the user to toggle images
in an animation sequence on and off. If you specify this control,
a series of little colored boxed will be displayed on a separate line.
As each frame is looped through, the box corresponding to the image will
change color. If the user clicks on a box, they will disable it
(clicking again will re-enable it). If the user SHIFT+clicks on a
box, they will cause the program to stop animating and show that frame. Note:
you may set the width, height, and spacing of these boxes -- see the
toggle_size parameter below.
If the user drags (mouse or finger) across a series of boxes,
they will change state. Holding CTRL down while doing that
will re-enable any "off" boxes.
-
zoom will provide a pixel-duplication zooming ability. When the
'zoom' button is clicked, the cursor will change shape. When the
user clicks with the left button that on the image,
it will be zoomed one factor (x2, x3, x4...)
at the cursor location. After the first zoom, the
button will be relabelled "un-zoom". The user may then 'roam' the
image around by dragging the mouse. More left-clicks will zoom
in farther; right-clicks or CTRL+click (command + click on Macs) will zoom out one step per click.
If the "un-zoom" button is clicked, the image will be restored to the original.
See the "active_zoom" parameter (below) to enable zooming without this
explicit control button. click to zoom in; CTRL+click to zoom out (Command+click
on Macs).
See the "keep_zoom" parameter (below) to make the zoomed state
persist after a "refresh" is done.
-
extrap will enable the extrapolation feature. To use this, you
must also supply information about the times of each of the frames. See the
parameters "times" and "extrap_times_template" for details.
-
overlay provides one or more checkboxes that allows for
images to be overlaid on the base image.
Each box will be labelled according to the
'overlay_labels' parameter. You may also use "radio buttons" instead
of checkboxes for some or all of these, using the 'overlay_radio'
parameter. See the "overlay_labels_spacer" parameter below for adding
some space around the checkboxes.
-
menu also provides one or more checkboxes for
overlays, but presents these in a pop-up, drop-down menu format,
using a "button" to activate the pop-up. As with the other
controls, you may style this button using the menu_style
parameter.
There will be one checkbox/label per line in the drop-down, and
you may use the overlay_labels_style parameter to change
the CSS styling (including the position, which by default is
in the upper-left corner of the image display). Otherwise, this
control can be used in place of the "overlay" control, above.
If you want the menu to be shown on start-up, append "/on" to
the declaration: menu/on
NOTE: you may define multiple menus in order to group the
overlay selections --
see this information
You may also designate one or more of these menus to be
always on, rather than selected by a button. See
this information as well as
this example.
-
mp4 control will allow the user to create an mp4.
See specific information here. Note
that no annotations or drawings will be included in the movie.
-
framelabel provides a text field into which a label will
be put for each image in a sequence of images. The text may be
specified using the frame_label PARAM or from the
file_of_filenames file (see below).
-
setframe creates a slider that allows the user to "slide" between images.
This control replaces other animation controls (like 'startstup').
The "setframe_label" defines the textual label for the control
(see "setframe_label"). The value of the slider will be changing
durin animations.
A "SHIFT+click" on the slider bar is used to set new bounds for the
animation. This should be done in pairs -- the first click sets the
lower bound, while the second click sets the upper bound, and
immediately starts the animation.
A "ALT+click" will reset the animation loop to the entire, original
range. This activity is most effective if used in combination with
the "toggle" controls so the user is clearly aware of the loop range
that is defined.
NOTE! Presently, Internet Explorer does not support the "slider",
so if you have users with IE, you should not use the
setframe control! You will have to let them click
step controls.
-
distance provides an on-screen distance measurement tool consisting of a line
the user draws by draggin the mouse/pointer, and a numeric value of the length of the line.
Normally, you should provide a map_scale parameter to define the
size of each pixel. You may also use coordinates parameter to
specify a map projection. You may also use the show_bearing
parameter to show the bearing either to or from the endpoint of the
"distance line".
Using distance/hold will cause the line and label to remain in the
scene until the next line is measured or the distance control
is toggled off.
-
probe allows the user to probe data values for overlays. Unlike AniS and FlAniS,
this is done using the colorized images and does not require a separate, gray-scale image.
However you must provide a look-up table (see "probe_table").
If you append "/on" to the control name ("probe/on") then the probe will initially be
enabled. Also, see the "active_probe" parameter to enable probing without this
explicit control button.
-
enhance provides a "drop-down menu" (also known as a "select" widget) with a list
of enhancement table names taken from the required enhancement_filename file. This
control provides the means to colorize gray-scale images, and may be applied to either the
"base" or one "overlay" (see "overlay_enhance") image set.
-
location will allow the latitude and longitude of the
ointer position to be displayed on the screen when enabled. You
must supply map projection data using the
coordinates parameter. See the
coordinates_display_style parameter for formatting of the
display.
-
show will cause the current "image scene" to be
displayed in a separate tab or window. This will only
show the image part of a scene -- no line drawing, pop-ups,
etc. The user can then (right-)click to save the image. You may use the
"show_prompt" parameter to set the prompting for this. Also, check
out the "show_image_file" parameter that will cause this to only
save the image file from the original URL, and not the "scene",
which may have been zoomed, etc.)
-
capture will cause the current "scene" to be
immediately captured and
written to disk as a PNG image file. The filename will be
"haimage.png" (or whatever the filesystem changes that into).
Unlike the show control, this will also capture any line
drawing, etc., on the screen.
(Note as of this release, the Safari browser will popup
a window with the image and you need to save it manually; it will
be given the name 'unknown'.)
-
saveall will cause all the images in the animation to
be saved. See the saveall_filename, saveall_list, saveall_toggle, and
saveall_prompt parameters.
-
mark will invoke the marking mode that will
capture selected points in the display and make them available
as text for copying or saving. On-screen prompts guide the user
through the process.
-
restore is a button that will cause the on/off
state of all overlays to be reset to their initial values.
-
anigif will cause the current animation images to be saved as
an "animated GIF". No drawing or "top" images will be included. See
specific information here
-
annotate will pop-up a dialog box where the user
is can select from a set of annotation tools (arrow,
circle, box, polygon, and text). Line width or font size and colors
may also be set. Once chosen, the user then clicks (for text) or
drags (for others) to place the annotation onto the scene.
For arrows, circles or boxes, dragging will
size the item, keeping it centered when the user first pressed.
For polygons, dragging will define the shape.
More than one annotation may be done. When the user is finished and clicks
the control button, the annotations will be removed from
the scene. Often, this is used with the Capture control
so that the annotations and underlying image is saved.
-
slide allows the user to "slide" between two images by
dragging the pointer left-and-right across the images. One image
must be the "background" ("base") image and the other one
must be an "overlay" (although it can be chosen by the user, if you
want to allow for different images).
Also, see the slidebar_style and active_slide parameters.
Note, currently the "overlay" cannot use the
auto_enhance option...
-
fade allows the user to "fade" between two images by
dragging the pointer left-and-right across the images. One image
must be the "background" ("base") image and the other one
must be an "overlay" (although it can be chosen by the user, if you
want to allow for different images).
Also, see the fadebar_style and active_fade parameters.
Note, currently the "overlay" cannot use the auto_enhance option...
Parameters that may also be used (details for those parameters
related to filenames and overlays appear after this section):
Tool-tips
Every control may have an optional "tool-tip" associated with it. The
format is:
controls_tooltip = value for the tip of first control, tip for the 2nd one, etc.
The order of the tooltips must be identical to the order of the controls
names in the controls parameter.
bottom_controls_tooltip = Click to step one frame forward/backward, Click to go to the
first or last frame,.....
specifies a "tooltip" for each of the bottom_controls
. If you use the "toggle"
control, there must be a place-holder "tooltip" in the list.
overlay_tooltip = Enable topographic display, Enable radar reflectivity display, Show the roads, Show the watches and warnings,....
specifies a "tooltip" for each of the overlays
. If you use the "hidden"
option on an overaly, there must be a place-holder "tooltip" in the list.
Style
Styling of the "control" widgets is generally done with CSS strings. Most on-screen styling (for
example, the display of the "probe") follows the format used in FlAniS..with the exception of the
"font".
By default, all control widgets also define a CSS "class" which is the name of
the control (or the control name followed by the state -- e.g.,
looprock loop). This allows for externally-defined styling to be
applied as well. To avoid conflicts with other stylesheets, you may
disable this by using the parameter:
set_className = false
Or define a stylesheet that is targetted to the <div>
element containing the HAniS animation, and
over-ride other specifications (e.g., #handiv.loop).
Note:
- colors are in the form:
0xRRGGBB
or #RRGGBB
or
#RGB
where each letter (R=red, G=green, B=blue) is a hexadecimal digit.
- font is a CSS-style string (e.g.,
12px arial
). The size must be first!
- shadow specs are optional and refer to the "drop shadow" effect
- Just a few examples of potentially useful CSS strings (also, look at the configuration file for
each example):
- height:20px;width:100px;
- font:20px arial;
- font-size:20px;
- font-family:arial;
- padding:5px;
- background:linear-gradient(white,green);
- border-radius:10px;
- margin-left:10px;
- color:white;
- background-color:green;
- background:URL("iconimage.png");
Styling of the widgets (buttons, etc) can be accomplished in a few ways:
- Using the generalized
controls_style
and/or bottom_controls_style
parameters. These are
CSS strings, mostly useful for setting background colors, etc..
- Using the
buttons_style
parameter to set styles for all control buttons.
This is a CSS string.
- Using a
_style
parameter for an individual control (e.g., startstop_style=
).
These are also CSS strings (e.g., width:100px;background-color:orange;
). For controls that have
two "states" (like startstop or zoom, you may specify two CSS strings, separated
by
an ampersand. For example: width:100px;background-color:orange;&width:100px;background-color:blue;
Most on-screen displays also have their own styles:
It is a often CSS string (e.g., background-color:pink;
).
Here are some details (details can be linked from the
Other parameters link above.
popup_window_size=800,300
sets the width and
height of the parent window.
popup_style=background-color:red;font-size:36pt;
sets the background color and font size for the "popup" window.
setframe_style
defines the style of the setframe control slider
setframe_label_style
sets the style for the textual part of the setframe control display.
This is a CSS string.
framelabel_style
specifies the CSS styling for the "framelabel" display -- usually
the height and width of the box.
checkbox_style
is a CSS string for the "checkbox" used for the "overlay controls" --
this is useful only to set the size of the actual checkbox (e.g., height:20px;width:20px;) and
may not be supported by all browsers!
-
divcan_style
for the <div> element which contains the image window
-
imagecan_style
for the canvas element
which contains the images and supplemental graphics (lines,
messages, etc). Use this with some caution!
initial_message_style
sets the CSS style for the
"initial_message" window.
coordinates_display_style
defines the style for the
display of the cursor coordinates.
distance_display_style
defines the style for the
display of the "distance" value.
probe_display_style
defines the style for the display of the
"probe" value.
times_label_style
defines the style for the display of the
"time" values.
dirspd_display_style
defines the style for the display of the
"direction and speed" values.
coordinates_display_style
defines the style for the
display of the "coordinates" values.
tipbox__display_style
defines the style for the display of the
"tooltip" box.
mark_prompts_style
defines the style for the display of the
"mark" control prompts..
fadebar_style
for changing the color, width, size,
style and position of the fade control bar.
slidebar_style
for changing the color, width, size,
style and position of the slide control bar.
Many of the styling specifications are done using CSS. Numerous examples are provided in the Examples section.
The style of the pointer (cursor) is left to the CSS type "default" except for when using the
"extrap" mode. However, you may specify alternate style for the following modes as well:
- location_cursor = default
- probe_cursor = default
- distance_cursor = default
In each case, you may specify a style other than "default". For example:
probe_cursor = crosshair
If the user invokes more than one mode at one time, HAniS will show the cursor style of
the last one selected.
Miscellaneous parameters
debug = true
Enables a "debug pop-up window" that will contain information about
errors encountered, and other information that might be helpful in
setting up your animations. The window may be moved around by
dragging on the "title bar". "Pop-Ups" must be enabled in the browser.
The default value for this parameter is "false".
use_progress_bar = true
By default, when images are being loaded from the server, a "Progress Bar" is
displayed on the screen that shows the progress of loading the images. Set this
to "false" to disable this.
initial_message = Please wait for the images to load<br>and then you may use the controls. <p>These images show the latest available<br>data from the server.<p>Click here to dismiss this message.
This causes a pop-up window to appear when HAniS starts up.
You may use full HTML tags for formatting. The overall style
may be specified by using the initial_message_style
parameter, setting the CSS values. The default is:
initial_message_style = background-color:red;top:10px;left:10px;height:100px;width:200px;
The pop-up will be dismissed when the user clicks on the
window. You may also specify the number of seconds the
window will remain visible using the
initia_message_timeout parameter. For example
initial_message_timeout = 5
will keep the message visible for 5 seconds. If you specify
auto for the value, the window will be removed after
all images are loaded.
window_size=800,400
Specifies that the display "window" for the images
will be 800x400. The actual images will be re-scaled to this
size.
To inherit the size of the <div> element for HAniS, you
may use the form: window_size=div . In this
configuration, HAniS will also "fill" the available space when
the image is zoomed/panned, as long as the aspect ratio is not
changed. This will also be adjusted if
you are using "dynamic sizing" of the browser window.
Normally, this is used with the "dynamic sizing" as illustrated
in this example.
enable_smoothing = true
Setting this value to "t" (true) will cause images to be
rendered with "smooth" edges using whatever built-in algorithm
is available for the browser. The default is "f" (false), so
images will not be smoothed.
overlay_smoothing = t, t, f, f, t, f
This is used to specify the smoothing for individual overlays. "t"
(or "y") indicates the overlay should be smoothed when zoomed;
whereas, "f" (or "n") indicates the overlay should not be smoothed.
Without the "overlay_smoothing" parameter, the value of the
"enable_smoothing" will be applied to all overlays.
dwell = 500
specifies that the nominal, default dwell rate for each frame is 500ms.
You may also specify the minimum, maximum and step for the
speed buttons. For example:
dwell = 500, 20, 2000, 50
indicates the minimum is 20ms, maximum is 2s, and the
step-per-click is 50ms.
pause = 2000 [,4500]
pause on the last frame of a loop the additional number of
milliseconds given (2 seconds in this example). The default
is zero. The optional second value is used with the
start_looping parameter when specifying a "starting
frame"...this value will keep the starting frame visible for
the specified number of milliseconds (or about 4.5 seconds
for the 4500 shown))))).
prevent_shortcuts = true
specifying this parameter will prevent HAniS from using
keyboard shortcuts (spacebar, left- and right-arrows, and
ALT+R and ALT+C). This will allow keyboard events to pass through;
otherwise, HAniS will prevent keyboard events from passing
through.
List of keyboard shortcuts:
- spacebar -> toggles stop/start
- left- and right-arrows -> step frames
- ALT+R -> reset zoom
- ALT+C -> capture current scene & save to local disk
keyboard_propagate = true
This will allow HAniS to act on some keystrokes, as noted above,
but then pass these event to the browser. Use with caution...
no_initial_focus = true
This will prevent HAniS from requesting the page's "focus" when
starting. Requesting the focus can result in an undesirable
page "scroll" at times.
start_looping = false
specifies that animation will not automatically start
as the images are being loaded from the server. Without this
option, the animation will start when the first image is
received.
You may also specify the frame number to show, as an optional
second argument (e.g., start_looping = false, 7). The
default is "1", the first frame. When you use this form,
HAniS will also give priority to requesting the images for
that frame from the server.
You may also specify a 3rd parameter that affects the
looping state after a refresh (manual or auto) is done.
If the 3rd parameter is present, then the "looping state"
when the "refresh" is done will be preserved.
If this 3rd parameter is true then after a
refresh, the designated frame (above) will be
shown. If the value is false, then the frame being
viewed when the refresh was done will not be changed.
An example: start_looping = false, 7, true
start_rocking = true
specifies that animation will start up in "rocking mode". You
must use this in conjunction with the looprock
control.
active_probe = true
specifies that the data probe will always be active; this
cannot be used in conjunction with the "probe control".
wheel_frames = true
specifies that the mouse "wheel" (and two-finger "drag") will
be used to step through frames, and not to zoom in and
out.
active_zoom = true
specifies that the zoom ability will always be active, unless
the zoom control is also specified. In addition to
"click-to-zoom" and "drag-to-roam", this parameter also enables zooming
using a mouse "wheel" (if available)
and by two-finger "pinching" (if touch is available).
If the zoom control is not used in conjuction with this parameter,
then zooming is always enabled. If the zoom control is used, then zooming will
only then be enabled. In this case, specifying the "active_zoom"
parameter will also allow for pinch and wheel actions; otherwise,
only tapping can be used for zooming.
keep_zoom = true
specifies that the zoom level and position will be restored
after a "refresh" is done. Without this parameter, the zoom
is reset to the "un-zoomed" view.
zoom_scale = 3.4
zoom_scale = 1.5, 3.0, 5.0, 8.8
zoom_scale = hi_res
sets the zoom scaling values.
- zoom_scale = 3.4 sets the zoom scaling
increment to 3.4. This means that for every click, the zoom
factor will change by 3.4/10. (The default is 10, which
is like the original value in AniS.) When using this form,
you may also define the maximum_zoom parameter to
set a limit.
- zoom_scale = 1.5, 3.0, 5.0, 8.8 defines the
zoom scaling factor for each click. The first click will
cause the image to be scaled by 1.5x from the original; the
2nd click, by 3.0x, etc.
- zoom_scale=hi_res will use the scaling factors
from the defined high_res_zoom parameter to be used
to define the scale factor for each click.
maximum_zoom = 15.4
sets the maximum zoom factor to 15.4. This is useful if you want to
prevent the user from zooming in "too far" (usually resulting in a
highly pixelated display).
This value should be a multiple of the "zoom_scale".
initial_zoom = 2.0,200,155
Specifies that the image window will initially have the zoom
factor set to 2.0 and that it will be centered at x=200, y=155.
If the center point parameters are not supplied, it will be
centered at the center of the original image.
When using window_size or automatic resizing, you can specify:
initial_zoom=auto. This will cause the zoom factor
to be computed so as to initially show the "full resolution"
image when HAniS starts. (You may also specify the center
point when using the "auto" mode.)
Note that when specifying this option, the "zoom" control will
automatically be started with the zoom "on".
cycle_zoom = true
will cause the zoom level to be reset back to the initialzoom
value (usually 1.0) when the maximumzoom has been reached
and the user clicks or taps again.
overlay_zoom = y,y,y,n
specifies whether an overlay will be zoomed along with other
images. If the value is "y"
, then the overlay will
be zoomed. This is the default.
If the value is "n"
then the overlay will NOT be zoomed.
This is useful for overlays which are legends, since the legend
information will remain on the frame during zoom and roam.
If the value is "d"
then the overlay will be
NOT be displayed when the scene is zoomed. It will only
appear when the scene is "un-zoomed".
high_res_zoom = 2.0, 2.5
specifies that high resolution images will be used when the
user zooms higher than 2.0x and 2.5x. Note: in order to
maintain the locations, the high resolution images must
be exactly these factors larger than the original images.
For example, the "2.0" means that if the original image
is 500x300, the first high resolution one must be 1000x600,
and the 2nd must be 1250x750.
If you only want these images to be used when the
user zooms (that is, without intermediate steps before
the higher resolution image is used), then also set
the parameter zoom_scale = hi_res
high_res_basemap = bgres1.png, bgres2.png
specifies that two higher resolution images are available for
the "background" image. These will be used when the user
zooms higher than the values specified in the "high_res_zoom"
parameter. Note: this can only be specified in the
file_of_filenames, and must be the same on each "frame" of
the animation (for example, geographically-related images
like map boundaries or roads).
high_res_overlay = 3,ovres1.png, ovres2.png & 5,images/hires/, images/hires2/
specifies that two higher resolution images are available for
overlay #3 (the third one in the overlay list), and will be
used when the user zooms to a higher value than specified
in the "high_res_zoom" parameter.
In addition, for overlay #5, the designated directories (for
the two resolutions) contain higher resolution images with
exactly the same filenames as the original overlays, so that
you may have high_res image for each frame.
Note that the image_base parameter value (if specified)
will be applied to these directory names as well as the images
for overlay #3, above.
Note: this can only be
specified in the file_of_filenames and must be the same on
each frame of the animation (for example, roads or city names).
coordinates = 43., -100., 30., -66.3
coordinates = PS, 60, 120, 33.5, 120.5, 6378137.000, 0.08181919157505, 5600., 1, 0, 36
coordinates = CE, 110., -4.4, 104.96, 206264.797, 35.84, 0, 36
coordinates = LCC, 55., 32., 90., 43.5, 101.5, 6378137.000, 0.08181919157505, 5000., 0,0
Specifies the map projection information used with the
location control. This may also be used with the
file_of_filenames. There are 3 forms:
If you are using images remapped from McIDAS,
click here for an example of obtaining
the correct projection parameters.
map_scale = 347.32
map_scale = 101.3, 83.1
specifies the conversion from pixels to "physical units". The
second form gives scale in (x,y) order and should be used for
non-equal scales.
show_bearing = to
specifies that when the distance line is drawn, the value of
the angle (bearing) to the endpoint of the line will be shown as
well as the distance. You may also specify "from" in order to get
the bearing from the endpoint to the origin.
distance_unit = km
specifies the string to be appended to the "distance readout" when
the distance control is used. If using coordinates,
this value is also used to convert to the desired unit. Valid
values are: km (kilometers), mi (statute miles), nm (nautical
miles).
auto_refresh = 16
specifies that the base images will be automatically
reloaded from the source every 16 minutes. If you want to
be able to enable/disable automatically refreshing images,
use the "autorefresh" control, described above.
sprites = spritefile.gif, 1,1, -16, -16, 19,1, 37,1, 1,19, 19,19, 37,19
specifies that the spritefile.gif file is an image file that contains (in this case)
6 individual "icons" (used in conjunction with the hotspot parameter, below).
[Collections of images within a single file are referred to as "sprites".]
The order of the arguments is:
- Image file name
- x, y, w, h (x,y position, and width,height) of first icon
- x, y, w, h of 2nd icon
- etc.
If the "w,h" values for an icon are listed as negative (the "-16,-16" in the example
above), then all subsequent icons have that same size. If you later include another
"w,h" values that are negative, then that becomes the width and height, etc.
You may also use an alternative form that is more suitable for
icons arranged on a rectangular spritesheet.
sprites = spritefile.gif, row, 10,20,20, row,8,20,20, 2,10,30, row...
Where each "row" signifies a row in the spritesheet. The
width and height are then specified. Each time the "row"
keyword is encountered, the x coordinate is set to 0
(zero) and the y coordinate is increment by the maximum
height in the previous row.
sprite_filenames = one.gif, two.gif, three.gif
Lists the filenames of individual "sprite" images to be used
with hotspots. The first image in the list is reference
as "1", except as noted below.
Note you may append "/zoom" and/or "/animate" to the filenames.
"/zoom" indicates that the icon image will be zoomed along with
the display images. "/animate" indicates you are using an
animated GIF image -- these are handled separately from
all other display elements. Use some caution as defining many
(meaning > 100) of these may impact the performance when the
scene changes (e.g., zooming).
To avoid conflicts with filename paths, you may use "?" in place
of "/" for these (e.g., "?zoom" or "?animate").
sprite_images_offset = 201
Specifies the indexing offset for the sprite_filenames
images (above) when used in conjuction with
spritesheets. The default is "1".
If this parameter is not specified and both sprites= and
sprite_filenames= are used, then if an indexed overlay
(see appending "/hotspot" to the overlay_label) is used, it will
only use the images from the sprite_filenames. Hotspots
defined in the config or file_of_filenames will only use the
spritesheet icons.
hotspot = 10, 20, 50, 50, nopan/4, fof, mynewfof.txt, Click here for a new view
hotspot = 30, 500, 50, 50, nopan, popup, this is the pop-up message
hotspot = 110, 0, icon, lnkimg.gif, pan, link, http://www.ssec.wisc.edu/hanis, show homepage, sametab
hotspot = 83.5, 92.1, sprite, 3, pan/2, popup, The message for the sprite icon
specifies four "hotspots" on the image display. This is
normally used within a "file_of_filenames"; however, you may
now use this within the config file as well (see note at the
end of this section).
The parameters are specified in one of three formats:
hotspot = x, y, width, height, pan, action, value [,tooltip [,tabname]]
hotspot = x, y, icon, filename, nopan, action, value [,tooltip [,tabname]]
hotspot = x, y, sprite, index, pan/overlay, action, value [,tooltip [,tabname]]
- x,y are the coordinates of the upper left corner of the
rectangular hotspot, and the center of an icon hotspot.
- width, height are the width and height of a rectangle that
is sensed when the user clicks on the screen
- pan says the hotspot will pan around
when the user zooms/pans. nopan means the hotspot is fixed.
NOTE: icon and sprite hotspots will not expand as the
scene is zoomed; the icon will always be presented in its
original size. Non-icon (rectangular) will zoom to a larger
size and the scene is zoomed. However, see "window_size" which may cause
the icon rendering to be changed.
Also, if you append "/4" to this option,
it means that this hotspot is only active when overlay #4 is enabled;
otherwise, it is always active.
If you use the sprite option, then the index is the
sprite index number (starting with 1) in the sprites file (see the sprites=
parameter, above).
- action may be:
- "fof" (wihtout quotes) to load a new file_of_filenames)
- "link" (without quotes) to load a new URL.
- "popup" (without quotes) to pop-up a text window with the text given
NOTE: for the popup action, you may set the size of the
pop-up window using the popup_window_size= parameter. You
may also set the "style", using the popup_style= parameter.
See the Style Section for an example.
NOTE: for the link action, the URL may optionally
contain the strings %LATITUDE%, %LONGITUDE%,
%FRAMENUMBER%, and/or %FRAMENUMBERINDEX%.
If the coordinates parameter has been used, then the
latitude and longitude coordinates of the cursor will replace
these "kewords" before the URL is sent. If the
%FRAMENUMBER% is
specified, the currently displayed frame number (first frame = "1")
will replace it in the URL string. If the
FRAMENUMBERINDEX% is specified, the currently displayed
frame number will be used as an index into the list specified in the
framenumber_index_values= parameter, and that value will be
placed into the URL string.
- value depends on the "action" chosen....it will either
be:
- a new file_of_filenames to be loaded
- a URL to pass back to the HTML
- a message to display in a text box. You may use HTML tags
within the text -- just no commas!
- optionally, a "tooltip" may be specified and will be
displayed when the user hovers the mouse pointer over the
hotspot.
- and if you are using the "link" action, you name also
include a tabname so that only one "tab" will be used for
all the links that the user might request.
NOTE -- sensing a hotspot click action takes priority over zooming. If the user puts the
mouse pointer on a hotspot and clicks, only the hotspot action will happen.
NOTE -- see "file_of_filenames", below, for additional information.
You may define the hotspot(s) in the main config file now.
If you have more than one, however, you must make the name
unique by appending a digit (or more). For example:
hotspot2 = .....
hotspot3 = .....
center_hotspots = true
will cause the "rectangular form" of the hotspots to be centered at
the (x,y) coordinates given.
show_hotspots = true, #ffffff80
will cause a semi-transparent white rectangle to appear whenever the
pointer is simply moved over a hotspot. Be careful when using this
and defining a large number of hotspots!
hotzone = 6, 0xff00ff, fof, mystuff/fof3.txt
hotzone = 6, 0xffff00, link, https://weather.gov
hotzone = 6, 0x00ffff, popup, This is the popup message...
specifies that overlay #6 should be treated as a image with
"hot zones". Usually, this image would be mostly
transparent, with the "hot zones" having an opaque color.
The colors specified above should exactlymatch the color of the
pixels in the "hot zone". If you want semi-transparency, you
must use the overlay_transparent_amount
parameter
(described below).
The action (fof, link, popup) are identical to the "hot spots", noted above.
NOTE: this can only be used in a file_of_filenames!!
hoverzone = 0xfe00fe, fof, temp/fof.txt, Click me, (100, 200, 200, 200, 200,100, 100,100, 100,200)
The polygon defined by the "x,y" coordinate pairs in the last parameter (inside the
parentheses) using the color "#fe00fe" will appear whenever the user moves the pointer over
the polygon region, and zooming is not enabled. If the user clicks in the
region, a new file_of_filenames will be loaded from the file temp/fof.txt
.
Other "actions" are "link" and "popup" as defined above.
NOTE: this can only be used in a file_of_filenames!!
overlay_allow_hoverzones = y,y,n,y,n
This parameter is used to disable the display of hoverzones
when the designated overlays are enabled. The parameter values
correspond to the "overlay number", and must include
place-holders for any hidden overlays. The default for all
overlays is "y" (meaning that hoverzones will always be
displayed and will take precedence over any hotzone defined
by an overlay.
show_image_file = true
This will cause the show control to pop up a new
tab or window with the image from the original URL.
This only works with "base images" and not overlays.
Do not include this parameter unless you want this feature!
show_prompt = Right-click to save or copy the image<br> <font size='-1'>(to save in some browsers, you may need to first 'Open in New Tab')</font> <p>
Will show the text (using HTML markup) at the top of the
image displayed when the show control is used, instead of
the default. Presently, some browsers will require an extra
step, as stated above, if the user wants to "Save As" the
image. (Note the text above is the default....)
anigif_filename = myanimation.gif
Defines the "default" filename for the animated GIF image. If not
specified, "hanimate.gif" will be used.
anigif_prompt = Enter filename for the animated GIF
When an "anigif" is done, this will prompt the user to enter a
filename; otherwise, the default (defined above) will be used.
mp4_quantization = 30
This sets the effective quality of the saved MP4 movie to
a "medium" value. You may specify values from 10 (high
quality, large file!) to 51 (very low quality, small file).
The default value is 27. See this page
for more information.
capture_filename = myimage.png
Defines the "base" filename for capture images. The default is "haimage.png".
capture_prompt = Enter filename for image
When a "capture" is done, this will prompt the user to enter a
filename; otherwise, the default "haimage.png" will be used.
saveall_list = 0,1,4
This says to save the "base" (aka "background") images (value=0) and the first and 4th
overlays, when using the saveall control. The default is to just save the base
images.
saveall_filename = localimage#.png
This specifies the "template" for the local filename. If you include the # character, then that
will be replaced by index numbers, starting at 0 (zero). If you do not include a #, then the
index numbers will be appended to the given name.
saveall_prompt = Enter the local filename template to use
This will cause a pop-up prompt to solicit the template for the filename to use. Again, if a # is
specified, that will be replaced by the index values.
NOTE: if neither the saveall_filename or saveall_prompt is specified, the default local filename
will be the same as the original image filename. This will also be the case if the user does not
enter a filename when the saveall_prompt is used.
saveall_toggle = true
When using the saveall control. setting this value to "true"
will cause only the images for the enabled frames to be saved (that
is, the toggle boxes are not red colored). The default is "false",
so all will be saved.
enhance_filename = myenhtables.txt
The named file contains one or more "enhancement tables" that
define how to colorize gray scale images.
Click here for more details.
This parameter may also be named "enhance_table".
When the enhance control is used, this parameter is
required.
Do not use the probe_table parameter when
this parameter is used!
initial_enhancement = 3
The specified enhancement table (starting with #1) will be used to
initially enhance the specified image (background of overlay).
keep_enhancement = true
During a "refresh", the enhancement will be remembered and then
applied to the updated images.
enhance_prompt = Choose colorization
Changes the default drop-down menu first item from the default
("Pick Enhancement") to whatever is specified.
overlay_enhance = 3
The overlay number 3 (the first overlay is #1) will be used with the
enhance tool to provide colorized views of this gray-scale
image.
If this parameter is not specified, then the enhancements will be
applied to the background ("base") images instead.
See "enhance_filename".
auto_enhance_background = 3
The enhancement table number 3 (the first table is #1) will be used
to automatically enhance (colorize) the gray-scale background images.
(Please note this may reduce the loop speed for larger images!)
auto_enhance = 2,4,x,1
The first 2 overlays (as gray-scale images) will be
automatically colorized (enhanced) using table numbers 2 and
4. The 4th overlay will be enhanced using table number 1. The
3rd overlay will not be enhanced. (The first table
entry is 1.)
(Please note this may reduce the loop speed for larger images!)
probe_table = probevalues.txt
Names the text file that contains the look-up values for the probe. See the example for details on the format of this file.
Do not use the enhance_filename parameter when
this is used!
This parameter may also be used in a file_of_filenames
to redefine the probe table on-the-fly.
probe_undefined = Missing, 2 [,equal]
Specifies that the displayed value for pixels whose RGB values
cannot be found in the table will say "Missing". The
optional value of "2" says that if a match cannot be made in
the table, see if any table entries have an RGB value within
2 counts of the pixel value; if so, show that value.
If the optional ",equal" is appended, then a match will be made
only to table entries that are equal (plus/minus the
delta value specified) to the RGB of the pixel.
overlay_probe_table = 2, 4, 0, 3
Specifies that the first overlay will use Table #2, the 2nd overlay will use Table #4, the 3rd
overlay is not to be probed, and the 4th overlay will use Table #3.
probe_base_image=true
This specifies that probing should use the "base" images instead of overlay
images (you cannot do both).
transparency = 255,0,127
Speicifies that for every overlay image (however, see below),
any pixel that has an
RGB value of (Red=255, Green=0, and Blue=127) will be made
transparent. Use this with caution for large numbers of
overlay images.
If the color value is a gray shade (where Red=Green=Blue)
then you may use the form: transparency = 255
(which would be "white").
transparency_list = 3,5,1,8
Specifies that the transparency value (above) will
only be applied to the overlays listed (first overlay is
"1"). With a large number of overlays, it is prudent to use
this option!
overlay_transparent_amount = 100, 40, 20
The non-transparent pixels in overlays should be set to
the opacity percentage indicated. In this case, the first
overlay (see overlay_labels) is 100 opaque, the second is 40%
and the third is 20%. 0 = totally transparent (you will not
see anything! 100 = totally opaque (what would normally
happen).
overlay_preserve=0,0,639,49 & 610,0,639,479, 10,420,639, 479
specifies that when images are zoomed, if the first designated
overlay in the overlay_preserve_list is "on", then
two regions (0,0,639,49 and 610,0,639,479) will be preserved.
If the second designated overlay is "on", then the region
(10,420,639,479) in that image will also be preserved.
The values of the coordinates are ordered:
x_upper_left,y_upper_left, x_lower_right, y_lower_right.
You must provide 4 points for each group. The
ampersand (&) is used to designate more than one
preserved region for a single overlay.
The (0,0) point for images is in the upper_left corner. The 'x'
coordinate is horizontal, the 'y' coordinate is vertical.
You must also provide a list of which overlays this
overlay_preserve should be applied to (see below), or no
preserve will be done.
If you are using a probe then the value of the probe
will not be displayed for the first "preserved region".
You can supress that using the optional parameter:
probe_hide=false
overlay_preserve_list=false, false, true, false, true, false
Specifies which overlays the "overlay_preserve" regions should
be applied to. You may use "t" and "f" for the values as well
as "true" and "false". You may also use "a" (for "always") to
indicate this preserved region should always be shown, whether
or not the associated overlay is being displayed.
image_preserve=0,0,639,49, 610,0,639,479
Specifies the region(s) in the background images that
should be preserved when the images are zoomed. (See above.)
hide_bottom = 24 [,true]
The bottom 24 lines of a zoomed image will be hidden when the
image is zoomed/roamed. This is usually used with the
image_preserver parameter to prevent annotation lines
on the bottom of an image from appearing in the zoomed and
roamed display, when these annotation lines have been "preserved".
The optional "true" parameter can be used when this "hide_"
is used along with a "_preserve" that is opaque and covers
spans across the entire bottom, to allow the image to show
more when zoomed. For example: hide_bottom=24,true
hide_top = 31 [,true]
The top 31 lines of a zoomed image will be hidden when the
image is zoomed/roamed. This is usually used with the
image_preserver parameter to prevent annotation lines
on the top of an image from appearing in the zoomed and roamed
display, when these annotation lines have been "preserved".
The optional "true" parameter can be used when this "hide_"
is used along with a "_preserve" that is opaque and covers
spans across the entire top, to allow the image to show
more when zoomed. For example: hide_top=31,true
hide_left =18 [,true]
The left 18 pixels of a zoomed image will be hidden when the
image is zoomed/roamed. This is usually used with the
image_preserver parameter to prevent annotation lines
on the left side of an image from appearing in the zoomed and roamed
display, when these annotation lines have been "preserved".
The optional "true" parameter can be used when this "hide_"
is used along with a "_preserve" that is opaque and covers
spans across the entire left side, to allow the image to show
more when zoomed. For example: hide_left=18,true
hide_right =23 [,true]
The right 23 pixels of a zoomed image will be hidden when the
image is zoomed/roamed. This is usually used with the
image_preserver parameter to prevent annotation lines
on the right side of an image from appearing in the zoomed and roamed
display, when these annotation lines have been "preserved".
The optional "true" parameter can be used when this "hide_"
is used along with a "_preserve" that is opaque and covers
spans across the entire right side, to allow the image to show
more when zoomed. For example: hide_right=23,true
hide_background = true
This option will supress the display of the background
image(s). It is useful when the background is blank.
Note that you must at least one opaque overlay image when
this option is used!
overlay_spacer = 10, 20, 1, 19
Add an extra 10 pixels to the spacing to the left of the first overlay checkbox, 20 pixels
between the 1st and 2nd, just one pixel between the 2nd and 3rd, and 19 pixels between the 3rd
and 4th. Values given are treated as a CSS style "margin-left:".
overlay_order = 2, 3, 4, 1
Defines the "stacking order" for overlays in the display. Without this parameter, overlays are
stacked in the order given in the overlay_labels parameter, with the first overlay being
on the bottom and the last one at the top. By using the overlay_order parameter, you
change the ordering. Here, the 4th overlay will be on the
bottom and the 3rd will be on top. The values are the stacking
order (1 at the bottom). The list is in order of the overlays
(so the first item on the list is the stacking order for the
first overlay).
You may also use the parameter name overlay_zorder
for bakcward compatibility.
If "animated sprite icons" are used, they will appear on top of the stack, regardless of the
order specified by the overlay_order parameter. See below.
overlay_ontop = 6
Indicates that overlay #6 will be displayed on top of everything else in the display,
including any "animated sprite icon images". This
is primarily useful for "navigation widgets" that use hotspots to all the user
to change the scene (usually invoking a different file_of_filenames that changes
to a different geographic region).
overlay_clear = n, z, s
Specifies that when a new file_of_filenames is loaded, whether the visible state of the overlay
shall be set to "off". Values are: "n" = never, "s" = if a hotspot, 'z' if a hotzone or hoverzone.
check_image_size = f
This will disable the checking of the dimensions (height and
width) of images are they are read. By default, all images
MUST be the same size as the first image read;
otherwise, they are treated as "missing". USE WITH CAUTION!
use_for_all_frames = 3,5, 0,1
The values are pairs of overlay and frame numbers (with overlay #0 refering to the
"base" images).
For the specified overlay, only image identified by the "frame number" will be read and
used for all frames. In the example, overlay #3 (numbering starts at 1) will only use the
image specified for frame #5 for all frames in the loop. Similarly, for the "base" images,
only the image named for the first frame will be used for all frames. NOTE: you must still
have placeholders for the unused image filenames.
overlay_slice = 2,5,7
This parameter is used only in the config file.
It specifies which overlays will be "sliced" (resampled) when
read and the slice parameter is designated in the
"file_of_filenames".
Note that when an overlay is specified herein, the
"check_image_size" will not be applied to the images
in that overlay.
slice = 100,130, 480, 321
slice = 100,130, 480, 321, 0, 0, 200, 100
This parameter specifies the domain from the original image(s)
that should be "sliced out" and used. This parameter is
only available in the "file_of_filenames". The slicing
will be applied only to those overlays designated in the
overlay_slice parameter (above).
The values are the x,y coordinate of the upper left and lower
right, respectively.
In the second form, the x,y coordinates in the target frame
are specified. By default, these are the size of the frame;
however, this parameter gives you the option to map the image
into a subset of the frame.
redirect = ../myotherdata/, 2,5, 7, 9
This parameter allows you to over-ride the "image_base" parameter
(or the default) for the specified overlays. This is only
available in the "file_of_filenames". The designated overlays
will be fetched from the designated path.
Styling Labels and Related Parameters
Each of the following parameters allows you to specify alternate labels for many of
the controls. For those controls having more than one label, you
may also specify a 3rd parameter which is the width (in pixels) of the
button -- this can be helpful to avoid any automatic resizing when toggling button states.
For the "...labels_colors" parameters, the first three values define the colors for the
"active" state of the button and are the a) text, b) top portion of the button,
and c) bottom portion of the button (the colors are automatically scaled between these).
The optional second set of 3 colors define the "in-active" state colors; the
default is off-white.
times = 1200,1300,1400,1500
Specify the times (hours and minutes, HHMM format) for each of the images
for use only with the extrap feature. There must be one item
for each frame.
extrap_times_filename = mytimes.txt
The times and associated frame numbers will be read from
"mytimes.txt" file. Each line of this file looks like:
1 2017133 16:44:29
Where the "1" is the frame number, the "2017133" is the Julian
date (ignored), and the "16:44:29" is the time in "hh:mm:ss"
format. This format was used by the old "Extrap" Java applet.
extrap_times_template=(\d\d\d\d)\d\d\.jpg
Specifies that the 'times' required for the extrap feature should
be picked up from the filenames specified in the
file_of_filenames. There must be one specification of:
(\d\d\d\d)
in the template, as this matches 4 digits and the parentheses indicate
the value is the time (HHMM format). In this case, the pattern will match the first
occurance on a line in the f_o_f that has 6 digits, followed by ".jpg".
So if a line looks like this:
rad030000.jpg
then the time for this image would be picked up as "0300".
If you imbed the times in the file_of_filenames using the "FlAniS method" of
enclosing the time in curly brackets (like: backimage.png {1330} overlay=....
),
then you must now use this:
extrap_times_template={(\d\d\d\d)}
times_label_style = 0xffff00, -5, CDT, 0x222, 14px arial, true
Provide for altering the values displayed on the "extrap" display. The parameters are:
color, UTC offset, timezone label, background_color, font, AM/PM (=true)
The optional "UTC offset" may be a decimal value (e.g., -5.5), and the "timezone label" is optional.
Both foreground and background colors are in the form:
0xRRGGBB (RR=red, GG=green, BB=blue), although you may also use
color names (e.g., red, green, etc)..
Finally, the 'true'
indicates that times should be labeled with "AM" or "PM" (12-hour
clock), instead of a 24-hour format.
extrap_prompts = Click on target's initial position,Click on target's final position,Move pointer around or click here to select target
The extrap function has three states. This parameter allows you to change the
prompting text for these. You must supply all 3 prompts.
extrap_prompts_position = bottom
This will cause the prompts for using the extrap tool to
appear near the bottom of the display window. The default is
near the top of window.
to_from_lock = false
Specifies that the extrapolation feature will show times along a line from the pointer
position. A value of true would reverse this.
overlay_labels_color = white, red, white, white, green, #f30
specifies the color of the text for the overlay_labels
on the checkboxes. There must be one specification for
each declared overlay, even if one is "hidden" or "always".
The colors may be a name, or the form "#RRGGBB" or "#RGB".
overlay_labels_style = font-family:arial;color:white;font-size:20px;padding:2px;background-color:green;
specifies the CSS of the overlay_labels. When using
the menu form of specifying overlay menus, this
parameter is used to define the characteristics of all the
menus. (See below...)
menuN_labels_style = bottom:-30px;display:flex;right:0px;font-family:serif;font-size:20px;font-weight:bold;background-color:orange;
when using the menu form of defining overlay selections,
this parameter is used to specify the CSS for an individual menu.
The "N" is a number corresponding to the menu in the
controls=" parameter.
NOTE: this parameter will replace the
overlay_labels_style parameter for the designated menu.
probe_display_style = #500, #fff,18px arial, #500, 10, 4,4
Set the background color to #500 (red), the foreground color to
#fff (white), and the font to 18px arial. There should be a
drop shadow, with a color of #500 (red), a blur of 10 and
offsets of 4 pixel and 4 lines. If the last 4 parameters
are omitted, not "drop-shadow" effect is used.
coordinates_display_style = orange, black,12px serif, Latitude = , Longitude = , 2 [, #330, 10, 10, 10]
Set the background color to "orange", the foreground color to
"black", and the font to "12px serif", the prefix on the
latitude value to "Latitude = ", the prefix on the longitude
value to "Longitude = ", and the number of decimal digits to
use for the values to "2". The optional
4 parameters are then end are for a "drop-shadow" effect, they
are: color, blur, x-ffset, and y-offset. By default, no
"drop-shadow" effect is used.
distance_display_style = #FF000060, yellow, 18px arial bold, 2, pink [,#330,10,10,10]
Set the background color to "red" with a transparency of "60",
the foreground color to "yellow", use a font of "18px arial bold",
show "2" decimal places, and draw the line in "pink". The optional
4 parameters are then end are for a "drop-shadow" effect, they
are: color, blur, x-ffset, and y-offset. By default, no
"drop-shadow" effect is used.
setframe_label = Image Frame Number *
set the template to use for labelling the "setframe" control
slider/scrollbar. The given string of characters must
contain an asterisk ("*") character; the actual frame number
will replace this when displayed.
frame_labels = label for 1, label for 2, label for 3, ...
Specify the labels to use for the framelable control.
There must be one label for each "frame". Note that you
can include some HTML in the label -- for example, if you
want the label to be a link to another URL, you might say:
frame_labels = label for 1, <a href="http://www.ssec.wisc.edu">label for 2</a>, label for 3,...
framenumber_index_values = one, two, three
provides a list of alternate labels that will be used for the
%FRAMENUMBERINDEX% in the action section of a hotspot.
mark_prompts = Click on first point to mark, Save points, Remove last point
When the mark mode is enabled using the mark
control, these are the on-screen prompts that the user will
see.
mark_prompts_style = 12pt arial [,white]
This sets the font for the prompts and, optionally, the color
of the marks and lines. The prompts will always be white
letters with a black background.
mark_close = false
When the mark mode is enabled using the mark
control, the polygon will not be closed and the
points listed will not repeat the starting point. The
default is "true" (closed polygon and first point also
listed at end).
mark_cursor = pointer
Change the "style" of the cursor when in "mark" mode. This must
be one of the CSS-defined types (crosshair, grab, default, etc..)
toggle_size = 5,10,3
This sets the toggle control's little boxes width to 5, the height to 10,
and the spacing between them to 3. This can be very helpful if
you have a large number of frames and don't want to make your webapp
width too large just to accomodate these boxes.
toggle_layout_width = t
This causes the toggle boxes to be able to use the entire
width of the <div> that contains the HAniS display. By default,
they will only use the width of the images.
toggle_colors = blue, red, orange
This sets the colors of the 3 states for toggle control's
little boxes. The defaults are blue, red, orange...as shown,
for "on", "off", "frame showing".
framelabel_position = 100,80
This sets the default position of the frame label window
to the x,y coordinates specified. These
coordinates are relative to the upper left corner of
the <div> that contains the HAniS display. If you move
this on top of the image, you must include a
framelabel_style and set the z-index to a
value greater than 99.
annotate_position = 100, -140
This sets the default position of the annotate control
panel to the x,y coordinates specified. These
coordinates are relative to the upper left corner of
the <div> that contains the HAniS display.
annotate_defaults = 5, 7, 2, Smokey skies
This sets the defaults for the annotate control pop-up
window for type, color, width/size, and text -- in that order.
It is keyed by numbers which represent the position
in the pull-down menu for each item.
Type = 1=Arrow, 2=Circle, 3=Box, 4=Polygon, 5=Draw, 6=Text, 7=Line
Color = 1=Black, 2=White, 3=Red, 4=Green, 5=Blue, 6=Yellow, 7=Orange, 8=Cyan, 9=Magenta
Width = 1, 2, 3, 4, 5, 6, 7, 8, 9=10,10=12, 11=14, 12=16, 13=18, 14=20, 15=24, 16=28, 17=32, 18=36, 19=38
skip_missing = 3
Whenever images are loaded, any frames that are "missing" will be
skipped during the animnation. If the toggle control is used,
the corresponding toggle box will be displayed using the
color defined with the skip_missing_color (see below).
The value ("3" shown) is the index of the overlay to test against.
The first overlay is number one.
A value of zero says to use the base (or background)
images instead of any overlay.
skip_missing_color = #504450
When the skip_missing option is used with the "toggle" control,
the default color of the box(es) for missing
frames is "transparent", so the background color will be shown. You may change this using the
skip_missing_color=#ff0000 parameter using the standard format:
#RRGGBB or #RRGGBBAA.
active_fade = true
The fade control will be active; you do not need to
declare the actual control unless you want the user to be able to
toggle the state on/off.
fadebar_style = color, line-width, box-width, box-height [,type
[,position]]
where
- color is the color of the widget, either as a
color word (like orange) or an RGBA color (like
#805030a0).
- line-width is the width of the lines
that draw the widget,
- box-width and box-height
are the size of the widget.
- type desinates the form,
and may be either rectangle, diamond, triagle, ellipse or
none. The default is triangle...and only the first letter
is needed. (You may also include the word fill to
specify a filled widget; otherwise, just an outline is drawn.
(e.g., tri fill)
- position allows you to place the widget vertcially
on the image: 0 (cetered), +N (N lines down from the top) or
-N (N lines up from the bottom). The default is 0 (centered).
active_slide = true
The slide control will be active; you do not need to
declare the actual control unless you want the user to be able to
toggle the state on/off.
slidebar_style = color, line-width, box-width, box-height [,type
[,position]]
See fadebar_style, above....the only difference is that
when using "slide", a vertical line is drawn through the middle of
the widget to separate the two images.
Setting non-default button and widget labels
Most also (optionally) end with the value of the "width" of the control button:
startstop_labels = Start, Stop, 20
startstop_style=font-weight:bold;position:absolute;top:20px;left:100px;background:linear-gradient(blue, white);
looprock_labels = Loop, Rock, 20
looprock_style=background-color:orange;
autorefresh_labels = Disable Auto Refresh, Enable Auto Refresh, 30
refresh_label = Refresh
zoom_labels = Zoom, Un-zoom, 30
zoom_style=background-color:green;
location_labels = Show Location, Hide Location, 100
location_style=background-color:green;
probe_labels = Show Probe, Hide Probe, 90
probe_style=background-color:green;
extrap_labels = Extrap, Normal, 40
extrap_labels__style=background-color:green;
probe_label = Readout, 25
looprock_style=background-color:green;
step_labels = Backward one, Forward one
step_style = height:25px;width:25px;
firstlast_labels = First, Last, 30
firstlast_style=background:linear-gradient(red,blue);
speed_labels = Slower, Faster
speed_style=height:30px;width:50px
show_labels = Capture Image, Capture Image
show_style=background-color:orange;
Using Multiple Menus for Overlay Selection
The menu control is used to provide a single
pop-up widget with the checkboxes for all overlays arranged in a
vertical column. This is used instead of the overlay
control. If you would like to have multiple menu
controls in order to group the overlays, do this:
- Instead of the menu control, specify any number of controls
with names like menu1, menu2, menu3, etc. These
must be in numerical order, starting with "1". For example:
controls = looprock, speed, firstlast, menu1, menu2, menu3, zoom
- Use the overlay_menu_links parameter to associate each
overlay (in the same order as the overlay_labels and whether hidden or not!!) with a menu. For example:
overlay_menu_links = 1,1,1,2,2,3,1,2,3,3
- To alter the default labels on the "multiple menu buttons", use
the "..._labels=" parameter as always. For example:
menu2_labels = "Sounder Items","Hide menu"
- Note that the multiple menu controls are treated like "radio
buttons" -- only one may be active at a time.
- You may also declare one or more menus to be "always on" -- that
is, displayed without a button to turn them on and off. Use the
"/always" option:
controls = looprock, speed, firstlast, menu1, menu2/always, menu3, zoom
which will cause menu2 to be always displayed.
- If you want to specify CSS for individual menus (which is
recommended for the "always on" menus, for sure), use the
menuN_labels_style= parameter
and see this example
Using a Base Address for Files and/or Images
The following parameters specify the prefix to be used on the
filenames when fetched by HAniS, except as noted. The
config file never uses these prefixes.
image_base = http://www.my.host/mydir/
this directs that the base URL of the image files (and the
file_of_filenames, if used) should be the value given. The
default URL is the directory containing the HTML. Note that
the hostname in the specified URL must be the same as the
hostname where the webapp is read from.
Note that if this is a directory reference, it MUST end
with a slash character (that is: / ).
image_only_base = http://www.my.host/myimagedir/
sets the base URL of the image files, but not the
file_of_filenames. See above.
overlay_base = http://www.my.host/mydir/olays/
this specifies that the base URL of the overlay image files
should be the value given. If this is not specified, but the
image_base_ is specified, the image_base_ will be
used. Note that the hostname in the specified URL must
be the same as the hostname where the webapp is read from.
Note that if this is a directory reference, it MUST end
with a slash character (that is: / ).
Image file names
All the image files can be in GIF, JPEG or PNG formats. The files
identified using the parameter names described in this section
should fill the desired window. If used, overlays should
be the same size and have the same geometry as these "background" images.
For the background images, the image files may be specified
in one of three, mutually exclusive, ways.
- Using a "root" name, to which successive numbers are appended
to create the actual filenames:
basename = file
num_frames = 4
base_starting_number = 0, 2
In this case, the root name is file and since there are 4
images specified with the numbering starting at 0 and an increment of 2,
the actual filenames must be: file0, file2, file4, and file6.
Please note that the default base_starting_number is zero, and
the default for the increment is 1.
Also, please see the Note below about this form and
wildcards
- Using the filenames themselvels:
filenames = file0, file1, file2, file3
- Using a file which contains a list of the image filenames
(one per record)
file_of_filenames = name-of-file-containing-filenames
where the file "name-of-file-containing-filenames" contains lines of text
that are in the form:
file0
file1
file2
file3
Lines beginning with # are ignored, so you may put comments
into your file_of_filenames. Similarly, "blank" lines
are also ignored.
NOTE: If you want to specify an optional frame label
(see the controls section above), you may put the value
with quote marks after the filenames. (The label may,
optionally, contain a date-time to be reformatted for the
user's timezone -- see "frame_label", above.) For example:
file0 "label one"
file1 "<a href='http://www.ssec.wisc.edu'>label two</a>"
file2 "label three"
NOTE: if you are using overlays, then you may put them into
the file_of_filenames as well. Please see the section, below,
on overlays.
NOTE: if you would like to re-define hotspots in the file_of_filenames,
use any of the forms specified in the definition of the
parameter "hotspot" (above). Some examples:
hotspot=x,y,w,h,pan,fof,mpx_ncr20090405.txt, Click here to load new data
hotspot=x,y,icon,himage3.png,pan,popup,This is the popup text and may be in bold
hotspot=x,y,icon,hotimage1.gif,nopan,link,http://www.ssec.wisc.edu,Click here to open a link to the SSEC homepage
....
You may also re-define the "map_scale" parameter within the file_of_filenames.
NOTE: For the first form (specifying a "basename"), you may also use
a wildcard format. There are two forms of this, one using a
single * (to substitute numbers 0,1,2...,10,11,.. at that
point) and the second using one or more ? (to substitute the
numbers with leading zeroes for all the ? marks). For example, if you say:
basename = file*.gif
the actual filenames must be: file0.gif, file1.gif, file2.gif, and file3.gif
You may also use the form:
basename = file????.gif
the actual filenames in this case must be: file0000.gif,
file0001.gif, file0002.gif, and file0003.gif
Note that in both these cases,
- you must use the
num_frames
parameter to defined the
total number of frames
- you may also use the
"base_starting_number" parameter to modify the starting
value (which otherwise defaults to zero), and increment (which
defaults to 1).
NOTE: For background images that are changing on the server, but have
the same filename, you may specify the parameter
background_static=n
to force the image(s) to be reloaded when a refresh is done.
Otherwise, whatever caching may be used by the browser will
likely be employed. (Also see:
nonstatic_prefix)
fof_substitute = myotherfof.txt
will force the list of image filenames in the named file to
be used when this file_of_filenames is loaded, completely replacing
the list of image filenames. Only the image filenames will be
replaced; all other parameters in this file_of_filenames will be
used as specified.
In addition, the following parameters may be included in
the file_of_filenames (you should not have
image filenames that begin with any of these words!):
frame_labels
fof_extension
fof_substitute
redirect
image_base
overlay_base
overlay_slice
slice
high_res_basemap
high_res_overlay
high_res_zoom
hoverzone
hotzone
hotspot
toggle_onoff
coordinates
map_scale
times
Overlays
You may also use overlays -- one or more images that are (optionally)
displayed on top of the base image, usually in such a
way that part of the base image shows through. For example, a
map or plotted data may be an overlay. In order to let some of the
base (background) image show through, you must have the
background of your overlays be "transparent". Presently only PNG
and GIF image formats permit this; however, you may use the
transparency parameter (above) to designate a particular color or
gray level to be made "transparent".
You may also specify the opacity/transparency of the non-transparent portions of overlay images
-- see the overlay_transparent_amount parameter (above).
You may also specify the color of the labels for each overlay using
the overlay_labels_colors parameter (above).
Normally, the overlay checkboxes and labels are shown in the
User Interface, just below the controls. If you would prefer
to have these in a pop-up / drop-down menu, then use the
"control" named menu. This provides a button, which
you may style, that will be used to pop-up (or hide) the
drop-down list of checkboxes.
In addition, you need to specify the overlay or
the menu (or multiple menus) control, and provide a few more parameters:
- Define the labels for the checkboxes and/or radio buttons:
overlay_labels = label1, label2, label3...
This specifies the labels that will be used on the controls for each
overlay. The ordering of the values should be the same as the
filenames (below). You'll want to keep these labels brief!
- Specify the initial state of each overlay. By default, all
overlays are initially "off". If you want to force one to be on,
append /on to the label. From the previous example:
overlay_labels = label1, label2/on, label3...
would force the second overlay to be initially turned on.
- An overlay with no control button. If the overlay is to be "on"
all the time (and thus, no checkbox or radio button will appear for
it), append /always to the label. For example:
overlay_labels = label1, label2/always, label3...
- An overlay used for displaying hotspots using sprite
icons. If the overlay is a special image wherein the pixel
values are used to
select from a spritesheet or sprite image file to
display hotspots,
then you must append /hotspots to the label. For example:
overlay_labels = label1, label2/hotspots, label3...
The image itself will never be shown. You may also combine this
with /always or /hidden.
The "red" pixel value (and blue and green, if you choose) must be
index values into the spritesheet or the sprite image
files. The first item is "1". Otherwise, "0" (zero, or RGB = #000)
must be used for all other pixels. Be certain to set the
transparency (if any) to 255 (opaque).
- Hidden overlays. If the overlay is to be linked (see
"overlay_links", below) and should have no checkbox or radio button
for it), use /hidden. This is usually useful when
linked
to an "owner" and will follow its state. (the
"hidden" item should have the negative link value, and thus is
the "target"). (Please note that if you are specifying the colors for
the overlay labels (see "overlay_labels_colors") you must specify a
color even for a hidden overlay!
You may also specify the /hidden/always together (in
that order!). This will both hide the checkbox (or radio button)
and force the overlay to not be displayed, but behave as
though it were -- so you may, for example, use a probe on
that image.
- Using "radio buttons". If you want to treat some or all of the
overlays as 'radio buttons' (that is, only one of them may be showing
at once), you may use the overlay_radio parameter. For
example:
overlay_radio = true,false,true,true,...
This would specify that overlays 1, 3, and 4 would be 'radio buttons'
and only one could appear (be "ON") at once. Overlay #2, however, may be
toggled on and off indepdently. If you want to use radio buttons for
all of your overlays, you may simply say <param
name="overlay_radio" value="true">
If you have more than one "group" of buttons, then you may
logically group them using a numeric index in this form:
overlay_radio = true/1, false, true/2, false/3, false/3, true/1, true/2
So the first and 6th buttons are together, and the 3rd and 7th
are in a separate group of "radio buttons". The 4th and 5th are
"checkboxes" that are also grouped, so only one (or none) will be
"on" at once.
- Hyperlinks can be used instead of checkboxes. If the
overlay_label contains (exactly): "<a href="
(without the quotes) then
the checkbox will not appear, and clicking on the name
with reference whatever hyperlink is given. Note that you must
provide an image filename, even though it will not appear. Plus,
any other overlay-related information.
- Layout of checkboxes and radio buttons. Normally, the
checkboxes and radio buttons will be laid out in a single row;
unfortunately, the layout manager will simply not show any that would
appear beyond the WIDTH. You may specify that the
checkboxes and/or radio buttons appear on two rows in the GUI. If you
preceed the label name with a "/" then this will start a second row.
For example:
overlay_labels = label1, label2/on, label3, /label4, label5/on...
specifies that the checkboxes for #1, #2 and #3 will appear on one
row, while the checkboxes for #4, #5, etc., will appear on a second
row. Using this option will increase the height
required for
the webapp!
You may force the checkboxes to be on the same line ("div") as the
other widgets using this parameter:
overlay_nonewdiv=t
meaning "no new div".
- Linking overlays together. It is also possible to link overlays
together so that when the user clicks one on, more than one is
activated. For example:
overlay_links = 0,1,0,-1,-2,0,2
The values of zero ("0") indicate no linking. Positive values are the
"owner" and the corresponding negative value is the "target". When an
"owner" is turned on, the corresponding "target" is also turned on.
When the "owner" is turned off, the "target" will not change,
unless it was a "/hidden" overlay (see above). Each "owner"
may have more than one "target", and vice-versa.
- Static and non-static overlay images.
If you have some overlays that are not "static" and need to
be reloaded from the server when the user clicks "Refresh", you
can use the overlay_static parameter to designate which one(s)
are static (unchanging) and which ones are not static, and should
be reloaded from the server.
overlay_static = y,y,n,n,y
Indicates the first, second and fifth overlays do not change and need
not be reloaded when a "refresh" is done.
The third and fourth will be reloaded when the user
so requests (or the automatic timer goes off). You may also use
the overlay_caching parameter -- it has the same meaning.
- To zoom, or not to zoom. It is often times useful for
some overlays not to be zoomed with the rest of the image(s) --
for example, legends. To keep a legend overlay on the image while the
rest are zoomed, use the overlay_zoom parameter.
nonstatic_prefix = ?ranval=
Change the default value from a simple ? to the character string
?ranval= when creating the URL Get request for images. So
instead of something like ?4382 being appended, this would
cause ?ranval=4382 to be appended to supress caching of
the image(s).
overlay_zoom =y,y,y,n
Indicates that the first 3 overlays will be zoomed along with the
base or background image. The 4th overlay, however, will not be
zoomed along with them.
- More parameters for overlays!!.
See information above about these parameter:
- overlay_menu_links
- overlay_radio
- overlay_transparent_amount
- transparency
- overlay_enhance
- overlay_allow_hoverzones (and hoverzones, hotzones, hotspots!)
- overlay_probe_table
- overlay_preserve
- overlay_preserve_list
- overlay_slice (also slice=)
- redirect
- overlay_spacer
- overlay_order
- overlay_clear
- overlay_labels_color
- overlay_base
- overlay_caching
- overlay_smoothing (also, enable_smoothing)
- Also, the various parameters related to enhancement
(colorizing gray scale images)
Overlay file names
Note: If you are using the file_of_filenames for the image
files, you must use that method for specifying the overlay filenames
as well! (See below...)
-
If you are not using the file_of_filenames for the background
image file(s), you may use the overlay_filenames parameter. The
grouping of names -- commas separate the overlays and ampersands separate frames for each
overlay.
overlay_filenames = ofileA0 & ofileA1 & ofileA2 & ofileA3, ofileB0 & ofileB1 & ofileB2 & ofileB3, ofileC0 & ofileC1 & ofileC2 & ofileC3
where the digits refer to a "frame number" and the letters
(A,B,C) refer to an "overlay number".
Note: if the same overlay image is to be used on all frames, you
need only specify the name once. For example, a basemap outline
image:
overlay_filenames = map.gif, ofileB0 & ofileB1 & ofileB2 & ofileB3, ofileC0 & ofileC1 & ofileC2 & ofileC3
- You may also use a text file (the "file_of_filenames"
form) to specify all the filenames. (As mentioned, this form is required if you
are also using the file_of_filenames for the background/base images).
To use overlays with this form,
the filenames for all the overlays for one frame appear on one line.
file0 overlay=ofileA0, ofileB0, ofileC0
file1 overlay=ofileA1, ofileB1, ofileC1
file2 overlay=ofileA2, ofileB2, ofileC2
file3 overlay=ofileA3,ofileB3, ofileC3
NOTE: You MUST supply all overlay file names for each frame, even
if the filename is repeated!!
NOTE: If you want to specify an optional frame label
(see the controls section above), you may put the value
with quote marks between the filenames and the keyword that
follows. For example:
file0 "label one" overlay=ofileA0, ofileB0, ofileC0
file1 "label two" overlay=ofileA1, ofileB1, ofileC1
-
If you are using the use_for_all_frames option, you do
not need to replicate those filenames for each frame. For
example:
back1.gif overlay=one.gif, two.gif, three.gif, four.gif
back2.gif
back3.gif
or if you have a mix:
back1.gif overlay=img1.gif, two.gif, three.gif, four.gif
back2.gif overlay=img2.gif
back3.gif overlay=img3.gif
and in this case, the use_for_all_frames would be:
use_for_all_frames = 2,1, 3,1, 4,1
HAniS public functions
There are a few functions that you may call from your own
JavaScript code while HAniS is running:
- HAniS.resetZoom()
This will reset the zoom to 1:1, and change the state of the
"zoom control button" if that is used.
- HAniS.setWindowSize(width, height)
This will cause the entire HAniS display panel (GUI components
and the image window) to be resized to the given width and height.
If needed, the image window will be adjusted to maintain the
aspect ratio.
- HAniS.reloadFOF()
This causes the current file_of_filenames to be
reloaded.
- HAniS.newFOF(filename, set_frame)
Loads filename as a new file_of_filenames.
If set_frame is "true" (without quotes), then the
frame number will be reset to 0; otherwise, it is left alone.
- HAniS.newFilenames(names)
The list is a string containing a comma-separated
list of new "filenames" to load and use. This can only be
used when the "filenames" parameter was used in the config
- HAniS.newOverlayFilenames(names)
The names is a list of overlay filenames in
the same format as the "overlay_filenames" parameter.
- HAniS.newBasenames( basename, starting_value, increment,
number_of_frames)
Similar to above, this will cause a new set of base images
to be loaded and used. This call defines the basename,
the starting_value of the number inserted into the
basename, the increment to use for successive names, and
finally, the number_of_images.
- HAniS.newProbeTable(filename)
Asynchronously loads a new probe table.
- HAniS.showFrame(framenumber)
Will cause the display to switch to showing frame number
specified (first frame is zero). NOTE: calling this
function will result in a frameChanged() callback to
occur! Be aware of an endless loop! If you have multiple
instances of HAniSF, only ONE should control the frame setting
and looping!
- HAniS.getFrame()
will return the currently displayed frame number (0-based).
- HAniS.frameChanged(callback)
sets a "callback method" (that you code) that will be called
whenever the frame is changed. This method must
execute very quickly!! (See NOTE above regarding
showFrame() ) )
- HAniS.doneLoading(callback)
set a "callback method" (that you code) that will be called
with one parameter (e.g., "callback(false)") set to "false" when
images start to load. It will be called again, with the parameter
set to "true" when the images have finished loading. This might
be useful when defining your own "please wait" widget.
- HAniS.getDwell()
will return the numeric value of the current dwell in
milliseconds.
- HAniS.dwellChanged(callback)
set a "callback method" (that you provide) that will be
called with one parameter (e.g., "callback(dwell_value)") each
time the dwell rate is changed, either by the "speed"
buttons or the "setspeed" slider. The "dwell_value" is the
current value of the dwell rate in milliseconds.
NOTE: Your callback method must execute very quickly!
- HAniS.zoomChanged(callback)
This sets the name of (your) function to be called when the zoom
changes or a "roaming" event happens. The named function must accept
(declare) exactly one parameter (argument) that should be passed to the
showZoom() function (below).
- HAniS.showZoom(xyz)
This changes the zoom and/or roam state of the instance. The
"xyz" parameter must be the parameter received by the
zoomChanged "callback" function. Note that calling
this function will not cause a zoomChanged() callback
to occur. This will allow for more than one panel to do zoom/roam
operations.
- HAniS.makeAniGIF()
This will mimmic what the "anigif" control does and create
an Animated GIF of the current loop.
- HAniS.makeMP4()
This will mimmic what the "mp4" control does and create
an MP4 movie of the current loop.
- Also note that the <div> element containing the top and
bottom controls (if any) will now contain an id property in the form:
handiv-top-controls and handiv-bottom-controls
where the handiv is the id of the <div> element
containing the HAniS display, as specified in the HTML.
Software Updates
Since the first release version, here is a summary of changes:
- Version 4.56
- Added an option to the distance control declaraction to
make the distance line and value remain in the scene after the mouse
button is released. Use distance/hold.
- Added another keyboard shortcut: CTRL+C to do an
immediate capture & save, regardless of whether the capture
control is used.
- Fixed an issue with the saveall control. On
Chrominum-derived browsers, only the first 10 frames were being saved.
- Added a parameter saveall_toggle=true to only save images
for frames that are enabled (that is not red-colored).
- Modified the way overlay_preserve regions work with "probe". The code will now suppress the "probe values" display when the pointer is moved into a region where an "overlay_preserve" has been done, either for the probed overlay or for one at a higher stacking level. Also, this is only done for the first preserved region on the overlay; thus allowing the probe to work on preserved regions that may represent "legends" that are colorized.
- Added a new parameter probe_hide=false to revert the above-mentioned change to the previous behavior where the probe tries to "probe" a preserved color/value.
- Fixed an issue regarding the probe display where the overlay_order parameter was not being correctly applied to the "stacking order" to determine which overlay should be probed.
- Version 4.55
- Let the Restore button re-enable the HoverZones.
- Do not check for image dimensions for any images for an
overlay, when that overlay is to be "sliced".
- Version 4.54
- Added new parameter nonstatic_prefix to specify an
alternative "prefix" to the random number value that is appended
to image file requests for "non-static" images. Added to accommodate
PHP scripts.
- Fixed an issue when using the "initialr_message" and also having
"active_zoom". Previously, when the user clicked on the "message"
to clear it, that event would get passed along and cause the image
to "zoom" one step. Not any more...
- Version 4.53
- Modified the reading of the file_of_filenames file so
that if "blank"
lines are not actually empty, but have a bunch of spaces or tabs or
the like, that they are not interpreted as "frame information".
- Version 4.52
- Fixed an issue when using enhancement tables, with also
probing. When the table had an inlo == inhi entry, the computation
of the scaled value= caused a NaN ("Not a Number") to be displayed
for the probe value.
- Version 4.51
- Added new control, fade to allow the user to fade between
two images.
- Added a new config parameter active_fade=true to enable
the fade without specifying the control.
- Added a new config parameter fadebar_style= to configure
the appearance of the control "thumb" for fading. The format of
this is identical to the fadebase_style, which was augmented as
follows:
fadebar_style = color, line-width, thumb-width, thumb-height,
[,type [,position]]
where:
type is either
rectangle, diamond, triangles, ellipse, or nonei
(and only the first letter need be specified!). The default is
"triangles".
You may also include the word "fill" and the form
will be filled (solid). For example: tri fill
In this case, you may want to specify a semi-transparent
color (e.g., #804080a0), instead of just a name (e.g., orange).
position is optionally used to position the "thumb". The default
location is vertically centered in the image.
- = 0 means to locate the middle of the thumb in the center (vertically) of the image
- = +N means to locate the middle of the thumb N lines from the top of the image
- = -N means to locate middble of the thumb N lines from the bottom of the image
- The slidebar_style (see below) now has the same format.
- Version 4.50
- Added new control, slide that will allow the user to
"slide" between two images.
- Added new config parameters in support of this new control:
- slidebar_style = color, line-width, thumb-width, thumb-height [,shape]
to define the characteristics of the "line" that separates the
two images as well as the "thumb" (which may be a "triangle" (the
default), a "rectangle" or a "diamond" shape).
- active_slide = true
to enable the slidebar without using the "control"
- Version 4.49
- Fixed an issue with the "n" option for the "overlay_zoom"
parameter.
- Version 4.48
- Fixed an issue that arose when using overlay_links with
multiple menus (via the overlay_menu_links parameter).
- Allow multiple instances of HAniS to control zooming and roaming
for others, so the user could zoom/roam in multiple panels to control
others.
- Version 4.47
- Allow passing either the <div> object or the <div>
"id" in the 2nd parameter to the setup() method.
- Version 4.46
- fix an issue with the optional "show this frame at startup" in
the "start_looping=" parameter. Using the (optional) "show this
frame frist" value also
causes the designated frame (image) to be requested from the server
first...but that doesn't mean it will be received by HAniS first.
- added a second (optional) value to the "pause=" parameter.
This will be the number of milliseconds to show the frame designated
from the "start_looping=" parameter, before starting the animation.
For example:
pause = 2000, 5000
means that during the animation, the last frame will be paused for the
usual 2 seconds, but during loading (or "refresh") the frame
designated by the "start_looping=" parameter will be shown for 5
seconds before the animation starts (assuming the "start_looping=true, 5"
for example, was set).
- the "progress bar" will now be removed from the display when all the images are loaded, even if the designated frame (above) is still showing.
- Version 4.45
- Refresh the image loading "progress bar" wheenver a request
status changes. This should fix the occasional "hug" progress bar
when the last image fails to load.
- Version 4.44
- Make "window_size=div" work with WebKit (Apple/Safari) and allow
the autoenhance to function properly. Most "probe" operations
also work in this mode; however, "_preserve" and "hide_" do not...
The aspect ratio is no longer required to be fixed as any zooming and
romaing will maintain the original aspect ratio and the image(s) may
be scrolled off the edge of the display.
This option may be used whether or not dynamic resizing is employed.
- Version 4.43
- The new "mp4" control to specify the control button. Like all other controls, you can change the labels, size, colors, etc.
- "mp4_prompt=" parameter to cause a pop-up prompt for the filename to save the animation as; without this, the default is used.
- "mp4_filename=" defines the filename for saving the mp4. This can be overridden by the user if you specify the "mp4_prompt=". The default value for this is "hanimate.mp4"
Note that the inverse of the "dwell" value will be used as the mp4
"frame rate", except that frame rates are integers and must be greater
than 0. Also, no extra "dwell" can be set for the last frame.
In order to make use of this capability, you must include the mp4
encoder library in your <script> declarations. A copy of this library is now also included in the HAniS distribution (ZIP) file....it is large (a little over 1MB) but self-contained:
h264-mp4-encoder.web.js
As with the animated GIF and the ZIP file for images, you only need to include the libraries if you are actually using them.
- When using the "window_size=div" option, the image aspect ratio
is now set equal to the <div> defined (well, the part of the
that is available for the image display, since we have to
accommodate the controls, too. When the user zooms, the space will be
filled up appropriately, while maintaining the aspect ratio.
- Version 4.42
- If you clicked outside the main HAniS <div> and then moved the
pointer back into the HAniS image area, the keyboard arrow keys (for
stepping frames) did not work until you clicked on a button. This was fixed.
- If you are using the "setframe slider" and define your own
"style" (as shown in
this
example), when on a mobile device, the "slider" simply scrolled
the whole page horizontally! If you did not define your own
appearance/style, this didn't happen. This was fixed by intercepting a
"touch move event".
- And, in the above scenario, if you positioned the "setframe
slider" on top
of the image display, you will need to add "z-index:20;" to
your "setframe_style=" parameter so that it receives
"events" when the user tries to "slide".
- Version 4.41
- Added the ability to save the current animation as an "animated
GIF". This uses an external library (four files which are included the HAniS ZIP file), that only needs to be included if using this feature. This addition includes:
- A new control, anigif (default label: "Make GIF"...and the label will change to show progress as the animated GIF is being rendered).
- Two new parameters:
- anigif_filename that defines the default filename for the animated GIF to be saved
- anigif_prompt defines a "prompt" message so the user can enter a filename of their choice (instead of the default, which will be used if the "anigif_prompt" is not specified).
See this page for details.
- Added a new parameter, "fof_substitute=" to allow you to use the image filenames from another file_of_filenames, instead of the ones specified in the current FoF. Trust me, this can be useful!
- Changed the "stacking order" of displays so that tooltips will show on top of even the "overlay_ontop=" images. It was pointed out that having tooltips for these images (typicalling "navigation icons") without visible tooltips (because they were display behind the icon image) was pretty useless....so I made the change. If this is an issue for anyone, let me know, and we will make it into Yet Another Parameter!
- Version 4.40
- Added parameter no_initial_focus=true to over-ride the
default action when HAniS starts up, which in some browsers this would force the page "focus" to be set onto the HAniS display.
- Fixed an issue when the initial_zoom= parameter was set
along with the hide_top= (or any of the "hide_" options), the
"hide" value was not actually being invoked until the user zoomed in
or out; it is now set initially.
- Version 4.39
- Version 4.38
- In the controls parameter for the menu items, you may now
append /always to the menu (or menus) to indicate they
should, well, always be "on" the screen.
For example:
controls = zoom, menu1, menu2/always, menu3, menu4, looprock, ....
- A new parameter was added to allow you to specify the CSS
(including, most importantly, the location) of a menu item.
For example:
menu2_labels_style = bottom:-35px;display:flex;right:0px;
You may, of course, include other options, as shown at the example cited above.
- Additions to the documentation page for these, as well as links to examples now embedded in the text (more to come!).
- New parameter: enhance_prompt allows you to change the default "Pick Enhancement" label in the pull-down of enhancements to text of your choice
- New parameter: initial_enhancement = gives you the ability to specify an enhancement table by "index number" (starting at 1) to be used to initially enhance the loaded images.
- New parameter keep_enhancement = true will keep the selected enhancement during a "refresh". This enhancement will be appliedafter the images are loaded. (WIthout this, no enhancement is applied..just as currently happens.)
- Added id property values to the top and bottom "controls"
<div> element. The names are -top-controls and
-bottom-controls, respectively, but prefixed by the name of
the element containing the HAniS display (e.g.,
handiv-top-controls).
- Added a new parameter: keyboard_propagate = true if you would like HAniS to pass keyboard events up to the browser. For example, if you want the users to be able to reload the entire page using the F5 key (in many browsers).
Use with caution!
- Version 4.37
- For the setframe slider, the user can now do a
SHIFT+click to set the lower- and upper-bounds (in that order)
of the loop. Doing an ALT+click on the slider will restore
all frames for the loop. The first SHIFT+click will set the lower bound, the 2nd one sets the upper bound. The animation will begin immediately thereafter.
- For the toggle boxes, the user can now drag the pointer
(or finger) across the little boxes to toggle their state. A
CTRL+drag will restore all the frames moved across.
(This turned out to be more awkward when having a large number of frames,
but I left it in for cases with fewer frames and larger
toggle_size boxes.)
[Cautionary note: neither of these options is really suitable for touch-only devices, although #2 would be usable as long as the toggle_size is madelarge enough for finger use.]
- Added two new public methods:
- HAniS.zoomChanged(callback) that sets the name of (your) function to be called when the zoom or roaming changes. The callback function must accept/declare one parameter (argument) -- this will contain all the data needed to be passed along to the "showZoom()" function.
- HAniS.showZoom(xyz) which changes the zoom state, based on the values in the xyz array (which is defined internally, and provided in the callback -- see the example, above)
Also, the concept of a "master" instance controlling others is not limited to
just one other "instance"...
- Added a new logo to the HAniS homepage, thanks to James Davies.
- Version 4.36
- Added code to update the displayed frame immediately when the
public function showFrame(frame) is called.
- Version 4.35
- Added a "line" option to the annotate control, to allow
for drawing a straight line.
- Version 4.34
- Compensate for when "coordinates=" is only defined within
the file_of_filenames.
- Version 4.33
- Connect the "coordinates" parameter to the distance
computation ("Great Circle" computation is used).
- Added the "show_bearing" parameter to show the to/from angle
when using the distance
- Allow the "location" control to show "pixel" ("image")
coordinates when "map_scale=1" is used with no "coordinates"
parameter.
- Two minor changes when doing distance:
- The position of the "distance display box" was moved right a
small amount
- The "distance readout box" is now drawn on top of the "distance
line"
- Version 4.32
- Fixed an issue with the 3rd parameter in the setup() call
-- the function to be called after HAniS initializes.
- Added the "overlay_smoothing" parameter to allow for selective
smoothing when overlays are zoomed.
- Version 4.31
- Added flexibility to using the file_of_filenames for images also
declared in the "use_for_all_frames" so you don't have to always
repeat the filenames for every frame. This was also a significant
performance improvement if you were also using the "transparency="
parameter.
- Added an optional 5th parameter to the "hotspot=" keyword that can be the "name" of the "tab" where the "link" should appear. Using this can avoid opening multiple tabs, so that the linked page(s) would show up in the same tab.
- Added a parameter "show_hotspots=true" that specifies that when the pointer is moved over a hotspot that is defined only as a rectangle, a "box" will be drawn to indicate "it is HOT"! You may set the color of this box by adding the value after "true" (the default is #FFFFFF80 -- semi-transparent white).
- Added a parameter "center_hotspots = true" if you would rather define the coordinates of "rectangular" hotspots as the center point, instead of the upper-left corner.
- Allowed "overlay labels" to be hyperlinks (but you still must
provide a placeholder image and any other overlay-associated
attributes). This option will only suppress the "checkbox".
- Version 4.30
- Fixed an issue with the "pinch zoom" on IOS devices when two
fingers hit the screen at the same time before "pinching", which
caused the center point of the zoom to be the upper left corner.
- Corrected an issue with the "call back function" reference in
the HAniS.setup() function.
- Added a new parameter, "start_rocking = true" that will cause the
startup animation to be in "rocking mode" (you need to have a "looprock" control defined!).
- Added the "/on" option to the "menu" control so that on startup the "menu"will be shown.
- Made a significant performance enhancement when you are using the "use_for_all_frames=" parameter, and particularly when also having "transparency=" set for the images. If you are defining just one overlay image for all frames, use this option to speed up loading and be sure to specify frame "1".
- You can now define multiple "menu" items for organizing the
overlay checkboxes. In conjunction with this, added a new parameter
"overlay_menu_links" which is used to associate overlays with specific
menus.
- Version 4.29
- Fixed issue with probe value not changing when animating using only background ("base") images.
- Version 4.28
- Added the loophalt control to allow the user to stop
the animation at the last frame.
- Version 4.27
- Added the menu control to present overlay checkboxes
in a pull-down list.
- Added a 4-th parameter on the HAniS.setup() function.
The string(s) in this parameter will be appendd to the other
configuration parameter(s).
- Version 4.26
- Added the public method HAniS.getDwell that will
return the numeric value of the current dwell rate (in milliseconds).
- Also added the public method dwellChanged(callback)
that will cause your "callback" function to be called each time
the dwell rate is changed. There will be one parameter: the
value of the dwell rate.
- Version 4.25
- Fix issue using touch in Firefox
- When doing a "pinch zoom", use the "zoom spot" at the midpoint of the two fingers
- For the "overlay_filenames" parameter, if an image (for
example, a basemap outline) is to be used on all frames, you need
only specify the filename once (and not once for each frame).
- Added two new JavaScript files to the ZIP file (hanisf.js and hanisf_min.js) that
allow HAniS to be invoked as a function, thus allowing more than
one instance.
- Version 4.24
- Added the wheel_frames parameter to switch the use of
the mouse "wheel" so it steps through frames and does not
zoom.
- Version 4.23
- Minor change to the size of the Progress Bar to accommodate
text.
- Added the ability to extract background and overlay images
from a single ZIP file. See
this page for details.
- Version 4.22
- Keep hotspot(s) defined in the config file unless
over-ridden by hotspots in the file_of_filenames
- Added two new forms of the zoom_scale parameter
to allow for fixed zoom factors, and to use the
high_res_zoom scaling directly.
- Version 4.21
- Added an optional 3rd argument on the "start_looping"
- If there is no 3rd value, then the "old" (current release)
behavior is unchanged. This 3rd parameter will cause the
looping state to be restored after the refresh is done.
Also when the looping had been stopped:
- If the value is True, then when a "refresh" is done, then it will go to
the "designated frame" and remain stopped
- If the value is False, then it will stay on the same frame after
the refresh
- Version 4.20
- Added a "mark_cursor=" parameter to allow you to define the cursor type for the "mark" control
- Reworked the logic for the four "hide_....." parameters to provide a smoother user
experience. The hiding will now take place when the user clicks-to-zoom in addition to when
they "roam". Previously, it only took effect when they "roamed". This change provides a
smoother transition.
- Added an optional second value to the "hide_....." parameters -- either "true" or "false"
(default). This helps out when a "_preserve" is opaque and spans an entire side.
For example: "hide_right=200,true" would go along with a "_preserve" that covers the
right-most 200 pixels with an opaque part of the image (for example, a legend).
If you specify "true", then when the image is zoomed and roamed, it is assumed that the
"_preserve" second along that axis (top, bottom, left or right) is opaque and covers the entire
side. This will allow HAniS to show the non-preserved part of the image, which can otherwise be
hidden behind the opaque, preserved part. This is particularly useful if the preserved part is
very wide (on the left or right) or high (on the top or bottom).
The default value ("false") causes the legacy behavior, which is consistent with "_preserve"s
that do not cover an entire side.
- Version 4.19
- "hide_left =" and "hide_right =" take care of those legends on
the left and right side you want to hide when zoomed & roamed.
These operate the same way as the existing "hide_top" and
"hide_bottom"....except, of course, they are for the left and
right sides.
- "mark_close = false" will prevent the "mark" control from
duplicating the last point in the "save" listing (although the
polygon will still be drawn "closed")
- "location_cursor = " , "probe_cursor=" and "distance_cursor =
" will allow you to change these cursors to any of the CSS-style
cursors (e.g., default, grab, crosshair, etc). The "extrap"
cursor continues to be only the crosshair. If you use multiple
activities at the same time, the cursor style will be the last
one selected; when that activity is closed, the style will revert
to the previous one.
- Version 4.18
- Fixed a problem in only Internet Explorer not reading text
files
- Version 4.17
- When the "start_looping" parameter is used and sets the "begin
frame", HAniS will request the images for that frame (background
and then overlays) first -- in other words, out of sequential
order.
- Added public methods:
- getFrame() -- will return the current frame number (0-based)
- frameChanged(callback) -- sets a "callback method"
(that you write) that will be called whenever the frame is
changed. This method must execute quickly.
- newOverlayFilenames(names) -- updates the filenames
for overlays, using the format of the "overlay_filenames="
parameter.
- newProbeTable(filename) -- changes the probe table to
the specified one.
- doneLoading(callback) -- your "callback" method will be called
when images start loading (with a single parameter = "false") and when
loading is completed ("true"). This is useful it you
want to define your own "wait" widget during image loading.
- The "probe_table=filename" may now also be included in the
file_of_filenames if you need to change the probe table
on-the-fly.
- Added "hide_background=true" for those folks who want to use a
background image that is always hidden by an overlay. This
option will prevent it from being shown while overlays are being
loaded.
- Corrected the documentation for the "overlay_preserve" and
added the ability to have more than one preserved region per
overlay. For example:
overlay_preserve = 0,0,500,20 & 0,480,500,500 , 100,100, 200, 200
will preserve two regions on the first enabled overlay in the
"overlay_preserve_list", and just the one (100,100,200,200)
region in the 2nd enabled overlay.
- Version 4.16
- When zoomed, a "right click" will now zoom out in steps
- Modified the "slice" parameter to allow for the sliced image to be
drawn onto just a sub-set of the main image display.
- Version 4.15
- Re-factored some code related to CSS "classnames" and added
class names for two more controls to complete the set.
- Expanded the "high_res_overlay" to allow for using high
resolution zoomed images for more than one overlay.
- Added the capability to animate "high_res_overlay" images
- Version 4.14
- Added public function "HAniS.showFrame(f)" to allow externally-set frame to show.
- Added a new parameter, "probe_base_image=true" to enable probing on the base image(s). You cannot probe overlays at the same time, however...
- Added a new example showing how to use external CSS to style the "setframe" (slider) control: https://www.ssec.wisc.edu/hanis/examples/ha5b.html
- Added a page showing how to create the "coordinates="
parameter values when using re-mapped McIDAS AREA files:
http://www.ssec.wisc.edu/hanis/mccoord.html
- Added a new parameter, "prevent_shortcuts=true" to disable the use of keyboard shortcuts (arrows, spacebar and ALT+R)
- Version 4.13
- Fixed a problem when zooming and the mouse button is
released outside the "image display". This caused
zooming/roaming to stop working in Chrome and Edge.
- Allow for "tooltips" for the "setframe" and "framelabel" controls. Previously, they were not used.
- Version 4.12
- The declaration of the "probe" control now may have "/on" appended so that the probe will
initially be active. For example: controls = probe/on
- For the "sprite_filenames" parameter, allow the "/animate" and "/zoom" options to be specified
as "?animate" and "?zoom" so that an explicit path to the file can be used (e.g.,
sprite_filenames = ../graph/spr.gif?animate)
- Fix issue when hiding the "location" display that it would not disappear until some mouse or
touch event happened.
- Added "yellow" and "orange" colors for annotations
- Allow touch control of annotation widget. If "active_zoom" is specified, pinch and wheel
zooming are both available. If the "zoom" control is also used, then these will only be
active when "zoom" is enabled. If the "zoom" control is not specified, then they will always
be available.
- Enable "pinch zoom" when the "wheel" option is enabled, as is the case when "active_zoom" is
enabled.
- Added a new control: "restore". This is a button that when clicked will return the states of
all the overlays to their start-up, initial condition. Any links will also be reset. This
control has all the usual attributes ("restore_style", etc).
- Version 4.11
- For the "units" specified in the probe and enhancement tables,
you may now
use HTML "special characters", such as "°"
in order to get a degree (°) symbol.
- If you always want the probe to be active, you may omit the
"control", and specify the parameter: active_probe = true
- For the probe_undefined parameter, you may use the value
"hide" (without the quotes) for the "missing" value. This will
cause the probe to be hidden whenever a "missing" value would
have been displayed.
- If you use active_zoom, then the mouse wheel (if there is
one) will be active. We are working on also enabling a two-finger
"pinch zoom" in this configuration as well.
- Added public functions:
newFilenames()
newBasenames()
that allow you to change the image filenames and
basename+starting+increment+number_of_frames, respectively. This
is restricted to use only when defining "base images" via the
config file -- things like overlays, hotspots, etc. cannot be
redefined this way. In addition, if you are using any of these,
you must not try to
increase the number of frames. Please use file_of_filenames and
the newFoF() function otherwise.
- Added an optional "increment" value to the
base_starting_number= parameter, to allow for a value other
than (the default of) 1.
- Version 4.10
- Fixed an issue when using the "/on" option for an overlay that is also designated as the
"overlay_enhance" overlay. Previously, the "enhance" drop-down menu was not active until the overlay
was toggled off and then back on. This update makes the drop-down active immediately.
- Relax the requirement for "true" or "false" values in the config file to be just "t" or "f".
- Version 4.9
- Added parameter "cycle_zoom = true" will cause the zoom to zoom level to be
set back to a value of 1.0. This can be useful for touch devices when a "pinch zoom" is not
supported.
- Allow the use of %LATITUDE% and %LONGITUDE% in the hotspot link URL when the "coordinates="
parameter is only the upper left and lower-right locations.
- Added %FRAMENUMBER% to the hotspot link URL to pass the frame number along, as well. The
first frame is "1".
- For the "sprite_filenames", added a "/zoom" and "/animate" options for each named image file.
In particular, the "/animate" option indicates that the icon is an animated GIF image -- these
must be rendered in a different manner. Note that using many dozens of animated GIFs can impact
the response when changing a scene (like zooming).
- Added an "overlay_ontop=" parameter to ensure that the named overlay will
be displayed on top of everything else. This is useful for "navigation widgets" that are then
used with the "hotspot" parameter to load up different data (usually regions). Otherwise, all
overlays are stacked according to the order in the "overlay_labels" parameter, with the exception
of the "animated icons", mentioned above, which must be placed at the top of this stack.
- Fixed an issue when using the "overlay_transparent=" and "hi-res" zooming, that was
incorrectly applying the transparency value to the hi-res zoomed image.
- Changed the logic when using both a spritesheet and a list of sprite image files, so that if
no "sprite_images_offset" is defined, then images from the spritesheet will be used when the
associated hotspot is defined in the config or file_of_filenames, and images from the
"sprite_filenames" list will be used when the hotspot is defined using an "index overlay".
- Fixed an issue with the "Annotate" widget losing focus and
thus becoming not usable. Also, fixed an issue of entering
text when the widget was over the display area.
- Version 4.8
- Make the keyboard shortcuts active whenever the mouse
pointer is moved into the HAniS scene.
- Version 4.7
- New parameters, overlay_slice= (config file) and
slice= (file_of_filenames only), are used to extract a
sub-domain of an overlay image when a new file_of_filenames is
loaded. This slice is then treated as if it were
the whole image. Normally, the original image is resampled with
"smoothing" enabled. You may use the slice_smoothing=f
parameter to disable that.
- A new parameter only for use in
the "file_of_filenames", redirect=, enables you to replaced the
image_base parameter contents with a difference path, but only
for designated overlays.
- For the overlay_preserve_list, you may now also specify an
"a" option (in addition to the "y" or "n". The "a" means
"always". This is useful if you always want the preserved region
displayed, not just when the associated overlay is active.
- If the overlay you are slicing is also one that is being used
as a "preserve", then
the preserve will be applied to the original image, not the
sliced image.
- The "spacebar" can now be used to toggle the animation on and
off. This means there are now 4 "keyboard shortcuts"....the two
arrow keys for stepping frames, the ALT+R to reset the
- Version 4.6
- Allow hotspots to be defined for an individual frame, so that
one could create an animation of icons or sprites. The "pan"
parameter can be followed by ?frame#... For example:
hotspot = 100.3, 241.5, icon, iconimg.gif, pan/3?4, popup, This
is the message
says the icon will appear when overlay #3 is active, but only on
frame #4.
- Hotspot type "sprite" may now also use a list of image files,
using the "sprite_filenames=" parameter, where you simply list
the image files to use. for example:
sprite_filenames = one.gif, two.gif, three.gif
If you use both a spritesheet (i.e., "sprites=") and the
"sprite_filenames=", you must provide an "offset" for the
indexing of the "sprite_filenames" images, since the two sets of
images are treated as the single entity "sprite" in the hotspot
use.
For example: sprite_images_offset = 201 means that the first
"sprite_filenames" icon image will be indexed (named, if you
will) as number 201, instead of 1 (which would otherwise be the
default). The number you pick is arbitrary, but should be
greater than the actually number of sprites in the spritesheet.
- You may also now use overlay images to identify the
position of hotspot icons (sprites). If you create images where
the pixel "red" value is an "index" into either the spritesheet
table or the sprite images listed in the (new)
"sprite_filenames=" parameter just discussed, then these sprites
(icons) will be shown whenever the overlay is enabled. The
overlay image itself is not actually shown. This allows you to
animate the sprite icon images in space and/or time.
To use this pseudo-overlay to specify the location and
index of the sprites, you would append /hotspots to
the associated overlay_labels= parameter. For example:
overlay_labels = label1, label2/hotspots, label3...
-
Added a second option to the "start_looping=false" parameter to
allow you to specify the frame number to show on startup. This is normally
frame #1, but this option will allow you to change this. For example:
start_looping = f, 8
will cause frame #8 to be shown when HAniS starts. This may
not be desirable if the number of frames is large. If the
value is greater than the number of frames, or the designated
frame is "missing", the results may also be undesirable.
- Version 4.5
- When more than one overlay is selected for probiing, the probe
value will now only show values for the highest overlay
- New parameter: "annotate_defaults" will set the default
values for the type, color, width, and text (in that order) The
argument values are numeric, corresponding to the order in the
associated pull-down menus for each item.
- A new alias: "overlay_zorder" is now an alias for
"overlay_order". This is for backward compatibility with FlAniS
- Version 4.4
- All controls that have a "state" (for example, "startstop") can now have two CSS styles
defined in their "...._style=" parameter. The two specifications are separated by an ampersand
character (instead of the usual comma, since the comma may appear in the CSS spec).
- Fixed an issue of displaying "preserved" regions when the auto-resize is enabled.
- Added support to unzoom on touchscreen computers using "CTRL+tap". At this time there
is no mechanism to "unzoom" using a touch device without a keyboard, when active_zoom is enabled.
- Sense when more than one "line" is used for overlay checkboxes and compute sizing accordingly.
- Fixed an issue when using active_zoom that maintains the zoom state when reloading the same
file_of_filenames.
- Accommodate an empty button_style specification
- Allow hoverzones when active_zoom is enabled but when the display is un-zoomed.
- Added parameter extrap_prompts_position to allow you
to move these prompts to the bottom of the display window. The
default is still near the top.
- Version 4.3
- Added "extrap_times_filename" parameter to read the old
AniS-style file of frame numbers and times for use with the
"extrap" control.
- Added "transparency_list" parameter to explicitly designate
which overlays should have their pixels checked for the
"transparency" value
- Fixed an issue related to reloading the file_of_filenames when
the animation is not running that was always resetting the frame
to the first one. Now, the frame will not be changed unless a
new file_of_filenames is loaded via hotspots, hotzones, etc.
- Changed the signature on the public callable "newFoF()" to
include a parameter to indicate whether the frame number should
be set to the first frame or left alone.
- Make sure that the "extrap" mode does not try to grab a frame
that has been removed by the "skip_missing" directive.
- Modified the handling of the overlay checkbox labels so that
they are also clickable.
- Version 4.2
- Fixed an issue with the frame "toggles" when loading a
file_of_filenames that contains a different number of frames than
the one being replaced. Although the documentation says this
should not be done, thanks to the persistence of one user, most
(if not all) the issues with doing that have now been resolved,
so it appears we can remove that restriction!
- Added a parameter, "annotate_position" that allows you to set
the initial position the "annotation tool box" widget somewhere
other than the default (which can cover up some of the control
buttons). An example:
annotate_position = 200, 340
puts the upper-left corner of the box at x=200 and y=340 in
"document" coordinates, not "hanis" coordinates. That is
to say in CSS-lingo, the "position" is "absolute"...
- Fixed an issue when the "coordinates" parameter was used
in the file_of_filenames -- the "type" was not being
identified when it has a leading "space" character.
- Version 4.1
- Added new control: saveall (as in Save All)
- associated parameters:
- saveall_list = 0,1,4
This says to save the "base" (aka "background") images (value=0) and the first and
4th overlays. The default is to save the "base" images.
- saveall_filename = localname
This specifies the "template" for the local filename. If you include the #
character, then that will be replaced by index numbers, starting at 0 (zero). If you do not
include a #, then the index numbers will be appended to the given name.
- saveall_prompt=Enter the local filename template to use
This will cause a pop-up prompt to solicit the template for the filename to use.
Again, if a # is specified, that will be replaced by the index values.
NOTE: if neither the saveall_filename or saveall_prompt is specified, the default local
filename will be the same as the original image filename. This will also be the case if the user
does not enter a filename when the saveall_prompt is used.
- The startstop_style parameter now allows for two values, separated by an ampersand (&) and not
a comma (since a comma can be part of the CSS). Here's an example:
startstop_style = width:100px;background:radial-gradient(green,white); &
width:100px;background:radial-gradient(red,white);
- Added the parameter capture_filename to allow you to set the base filename for the
"capture". The default remains "haimage.png".
- Added a free-hand drawing tool for the annotate control. Unlike the "polygon", this does
not close off the free-hand drawing.
- Version 4.0
- Added the ability to define the "missing value" string to the "enhancement_table" structure so
that when these are used for a "probe", you can override the default "None" string. (This has
always been the case with the "probe_table".)
- Fixed a problem when using "enhancement tables" with the probe where the table contained a
mixture of numeric ranges and strings for the values.
For the grayscale data values on the boundary, a value was displayed as "NaN".
- Added a new parameter: "use_for_all_frames" that allows you to specify an overlay number and a
frame number. For that overlay, only image identified by the "frame number" will be read and
used for all frames. This was implemented to solve a specified issue involved with an
auto-generated file_of_filenames.
- Version 3.9
- Corrected an issue when stepping frames using
"forward" and "backward" or "step" controls.
When stepping backward and the first frame was "off",
the stepping would get stuck.
- Added a new parameter "toggle_layout_width=t" that
will cause the "toggle boxes" to use the
entire width of the <div> defined for HAniS.
The default is to use the width of the image.
- Added a new parameter: "skip_missing". The default
for this is "false" to continue current
behavior. If, however, you set the value to a an
overlay number (or "0" for the base images), if
any frames for that overlay (or base) are not
available when being read, the frame will be
skipped when animating.
Currently, if the frame is missing, a blank frame will be shown.
Or, if caching is enabled, the
older cached frame will be shown depending on what status the server returns.
- Added a new parameter: "skip_missing_color".
When the skip_missing option is used with the "toggle" control,
the default color of the box(es) for missing
frames is "transparent", so the background color will be shown.
You may change this using the
"skip_missing_color=#ff0000" parameter (the value shown is red,
using the standard format: #RRGGBB or #RRGGBBAA).
- Version 3.8
- Added a control: "annotate". This gives the user the ability to add
drawing and text annotations to the screen (usually for capturing an image).
When activated, the "annotate" control will pop up a control box
that may be moved around. This box allows the user to select the
annotation type (arrow, circle, box, polygon or text), plus the
color and width/font size.
The user may draw as many of these features as desired. There is
also an Erase button that removes the "last" item (repeatedly).
- Added the "SHIFT+click" for the toggle boxes to conform
to the documentation.
- Added a new parameter, set_className to allow users
to disable this feature (which is enabled by default).
- Version 3.7
- Added a new parameter: "auto_enhance" to provide a function
similar to the way FlAniS did on-the-fly colorizations from
gray-scale overlay images. The gray-scale images are zoomed (and
roamed) and the colorizing is done after that. This maintains
the "data" values in the original imagery; however, it will
likely slow down looping for larger images. Tests showed very
little impact for images that were 800x400, except at high
animation speeds.
- Similarly, the "auto_enhance_background" parameter provides
this function for the background images.
- Changed the hotspot/zone and hoverzone parameter parsing to
allow for equal signs (=) in the URL.
- Allow for a selected latitude and longitude to be put into the
"link" URL for these as well. If "coordinates" are defined, then
the string in the specified link that is %LATITUDE% will be
replaced by the latitude, and %LONGITUDE% will be replaced by the
longitude
- Version 3.6
- Added the "transparency=" parameter that will automatically set
the specified color to "transparent" in all overlays.
Beware, however, that having a large number of
overlays and/or frames can still noticeably reduce the user
experience, so if you can, always generate your overlay images as
GIF or PNG with a transparent background.
- Changed the "sprites=" keyword to allow for a more compact
description of spritesheets that are arranged in a mostly
rectangular form.
- Refactored the code for handling parameters to make it more
compact.
- Attempt to allow for the contents of the main HAniS
<div> to be
externally removed and then re-generated by another call to
HAniS.setup(). It is usually best to use the
"file_of_filenames" (which can also
be invoked by an outside event) to change scenes, etc.
- Version 3.5
- Added a public function, HAniS.setWindowSize(width,
height) that can be used to dynamically change the window
size. See Example 11c.
- Added an optional 3rd parameter to the HAniS.setup()
function that provides a callback when HAniS has finished its
initialization. This is intended to be used with the dynamic
setting of the window size, described above.
- Added the initial_zoom parameter to allow the setting
of the initial zoom factor and an optional center point,
including an "auto" option that causes the zoom factor to be
initially set so that the "full resolution" of the image is
initially shown.
- Allow the use of both "/hidden" and "/always" together
(e.g., "/hidden/always") for the overlay
parameter to both hide the checkbox and never show the overlay
(although, it will behave as though it is "on", so it could
be probed).
- Added the option to the window_size parameter to
have HAniS set the windows size such that it will fit within the
containing <div> element. window_size=div
- Added a "sprite" option for hotspots. This allows
you to have just one image file that contains many, many individual
icon images. A new parameter, sprites has been also added
that defines the image file and the location (and size)of the individual
sprites (icons) in the file.
- Version 3.4
- Changed the Capture control to remove any on-screen
prompts from the captured image.
- Added the show_image_file parameter to change how
the Show control fetches the image to save. Using this
parameter will cause Show to re-fetch the image from the original
URL instead of using the internally-rendered image.
- Reversed the search order testing for hits on hotspots so that
those icons plotted last will be searched first, since they would
appear "on top" of any one plotted earlier.
- Version 3.3
- Added new controls: left, right, and first, last
These controls can be used in place of the step and
firstlast controls.
- Added a new control: capture to provide a means to
capture the current display, including line drawings, to an image
file.
- Added a new control: initial_message that will
provide a one-time pop-up text box that you can use to provide
initial information. A "initial_message_style" parameter can
be used to specify the style of the pop-up box (location, size,
colors, etc). An "initial_message_timeout" is also available
to automatically remove the message after the specified number
of seconds or when the images are done loading.
- Allow hotspots to be specified in the config
file (see documentation about this).
- Version 3.2
- Allow for hotspots to be "always on" and not connected to an
overlay. This is consistent with the documentation.
- Version 3.1
- Modified the "setframe" (slider) so that it moves when the
frame is changed during looping. In addition, since IE/Edge
displays the "slider value" as a "tooltip" when manually moving
the handle, the internal values were changed to start at "1".
- Added new parameter: "check_image_size". If you set this to
"false", then images may be of different sizes (width / height).
The default is "true", so all images must be of the same size
(any image that is not the same size as the first image will be
treated as "missing"). Use this option with caution!
- Added preliminary support for a new control, named "mark"
that enables the ability to mark and then export points in the
scene. Associated parameters: "mark_prompts" and
"mark_prompts_style". This option will evolve...
- Fixed the behavior of the "icon" mode of the "hotspot" when
linked to an overlay, so that the hotspot icons only appear when
the associated overlay is visible.
- Enabled hotspots to be used with the "fof_extension".
- Version 3.0
- Added a "d" option to the "overlay_zoom" parameter, which
specifies that the designated overlay will be disabled (hidden)
whenever the scene is zoomed. This can be used to remove an
overlay from the display which does not render well when zoomed.
- Added the "location" control to enable/disable the display of
the location of the cursor.
- added the "coordinates" parameter to specify the geographic
coordinates used for displaying the latitude and longitude values
of the pointer location.
The previous versions of AniS and FlAniS used the latitude and
longitude of the upper left and lower right points to compute the
values, using a default Cylindical Equal-Distant projection.
This is also available, but we have also extended
the "coordinates" parameter to allow for Polar Stereographic
(Ellipsoid) projections (see the documentation)
coordinates = 43., -100., 40, -70
coordinates = CE, 120, 33., ....
coordinates = PS, 60, 23, 100, ....
- Added the "coordinates_display_style" parameter to specify the
styling for the latitude/longitude readout.
- Minor change to parameter parsing to allow for an equal sign
in ("=") to be used in the value of the parameters
- Added the "overlay_base" parameter to allow for the overlay
images to have a different path than the base image.
- Added the "divalign" parameter so that the main <div> elements
can be aligned to something other than "center" (the default)
- Version 2.9
- Fixed issue of disabling the first or last frames when in
"rock" mode that caused a hang.
- Version 2.8
- Added the show control to allow the image portion of
the scene to be captured and displayed in a separate tab or
window. It can then be saved, copied, etc. Any "drawing"
(lines, popups, etc) on the scene will not be captured. See
example 4.
- Added a new parameter, show_prompt to allow you to
specify an alternative to the default prompt message that is
displayed with the 'show' image.
- Version 2.7
- Added the start_looping option to allow for the
animation to not start as the images are loaded. Also,
try to start initially on the first frame (previously, the 2nd
frame was the first one shown).
- Updated the documentation about "tooltips" for the controls
to make it clear there must be a tooltip for each and
every control (including "overlay" and "framelabel"). Example
6 now illustrates this.
- Changed the code that handles parameter values of
"true/false" and "yes/no" to use just the first letter of the
value regardless of case.
- Version 2.6
- Added the ability to define a "group" for the checkboxes for
overlays, using the overlay_radio parameter. This causes
group(s) of checkboxes to behave like "radio buttons", except
that you can de-select all of them. (Radio buttons always have
one selected.). Example:
overlay_radio = true/1, false, false/2, true/1, false, false/2 ,false/2
- Added new parameter in the config file,
image_only_base that defines the
"prefix" for the path to only the images. The "image_base"
parameter, when used in the config file, is used for both the
image filenames and the name of the "file_of_filenames".
- Changed the code so that the documentation of the external
call
HAniS.newFOF(path)
agrees. The "path" is
never prefixed with the "image_base" parameter value.
- Added new parameter: toggle_colors to allow for the
colors of the toggle boxes to be changed.
- Allow for a JavaScript object to be used to define the
parameters in the HAniS.setup(), in addition to either a "config
file" or an in-line string of characters. For example:
var myconfig = {
dwell:"500",
auto_refresh : "1",
file_of_filenames : "fof11.txt",
controls : "startstop,step,refresh,overlay",
controls_style : "padding:5px;background-color:green;",
controls_tooltip : "Start/Stop the animation, Step one frame, Refresh images"
};
- Fixed an issue with framelabels not responding to a
"firstlast" control properly.
- Fixed (in 2.51) an issue with not being able to click on the "toggle
boxes" when using the "window" parameter, introduced in verison 2.5.
- Version 2.5
- Version 2.4
- Changed the logic for the "Start/Stop" button so that when a
user tries to stop the animation during loading, the button
labels will reflect the state correctly.
- Fixed a typo in the parsing of the
dwell = def, min, max, step
parameter which caused the min to get set equal to the max.
- Added a new example showing how to put more than one
animation on a page.
- Updated the documentation (this page) to clarify (I hope)
the meaning of the values for "static=" settings.
- Version 2.3
- Fixed an issue that caused an internal error
when a hotzone pointed to a "hidden" overlay,
that had been linked to a visible (active) overlay checkbox.
- Version 2.2
- Added the overlay_nonewdiv parameter to force the overlay checkboxes into the same
line ("div") as the controls.
- Reworked the logic for the vertical centering of the overlay checkboxes and associated
labels to be more consistent.
- Version 2.1
- Finished implementation of allowing for control widgets to
be split between 2 or more lines, using the "/" prefix on the
control name..
- Allow bottom_controls to also be split onto more than
one line.
- Version 2.0
- Fix one issue with enhancements not resetting when data
reloaded
- Integrate pinch-zoom for touch devices. This
two-fingered action will zoom the entire page, not the
HAniS image (which is zoomed and roamed using the zoom control).
During the 'pinch', users may 'roam' the whole page by moving both fingers
together. A 'single finger motion' will be interpreted by HAniS
and not the browser.
- Version 1.91
- Fix issue with "probe_display_style" not picking up the "font"
correctly.
- Allow the "/on" and "/always" options on the overlay_labels
to be used with the enhance control.
- Version 1.9
- Added ---- parameter to define the minimum, maximum and
increment of speed changes for the speed control.
- Implemented the enhance control to allow for
gray-scale images to be "colorized" based on a pre-defined table
- Added the enhance_table (which is also known as the
enhance_filename) that specifies the filename of the
enhancement table(s)
- Added the enhance_overlay parameter that specifies
which overlay will be used for enhancements. If this parameter
is not specified along with the enhance control, then the
"background" (or "base") images will be enhanced.
- Enabled the probe to be used with the enhancement
function for one overlay.
- Version 1.8
- Changed the reading of the config file to use the
anti-caching strategy that is also used for the
file_of_filenames and image files (when the
"_static" option is set).
- Added the hide_top parameter to complement the
existing "hide_bottom" parameter.
- Version 1.7
- Enabled the overlay_filenames parameter which allows
overlay filenames to be specified without the use of the
"file_of_filenames".
- Added the background_static parameter to force
background ("base") images to be treated as non-static. This is
particularly useful when not using a dynamic "file_of_filenames"
parameter.
- Refactored a bit of code dealing with the "non-static"
images to make it more efficient.
- Fixed the autorefresh control -- it was not enabling
the toggling of the labels and not toggling the auto refresh
state correctly. Note: the FlAniS "autotoggle" control
name has been removed -- you must use "autorefresh" for this
control in HAniS.
- Version 1.6
- Allow for more than one "preserve zone" in the background image using the
"image_preserve" parameter
- Fix CSS default issue on "z-order" of the image and drawing frames.
- Version 1.5
- Added the ability to use "in-line" parameters instead of a config file
- Version 1.4
- Added the "popup_window_size" parameter that allows setting of the width and
height of the parent window used for popup text display.
- Version 1.3
- Corrected a problem with the coordinate of non-icon hotspots
- Do not allow hotspots located in the upper-right corner of
the image display to be active when the extrap mode is
active.
- Version 1.2
- Added the "overlay_allow_hoverzones" parameter to allow
overlays to switch off the use of hoverzones
- Reworked the logic for the "overlay_order" and clarified the
documentation.
- Version 1.1
- Corrected documentation for "times_label_style" parameter.
- Added documentation for "extrap_prompts" parameter.
- When "extrap" feature is enabled, disable "hotzones" to avoid "clicking conflicts"
- Display "12" for the hour when the "AM/PM" mode is set and the hour is "00".
- Version 1.0
Significant differences between FlAniS and HAniS
- HAniS may be used on computers, tablets, phones, etc., as it is coded in HTML5
- The "file_of_filenames" text file may have a "fof_extension" parameter, which names a file that may contain dynamic content for hotzones and hotspots.
- Styling of the control widgets (buttons, etc) is now done using CSS-style specifications which provide more tailoring
- There is no "fader" option in HAniS (but see this
HTML5 implementation if you want to use fading and/or wiping!)
- The "probe" control has been implemented using color lookup tables similar to the "enhancement" tables in AniS/FlAniS.
- The "hotspot" concept has been augmented by creating "hotzones" (defined by overlays) and "hoverzones" (defined by polygons). In all cases, the 3 main "action" options (popup, link, fof) are available.
- The "extrapolation" feature was recoded to be more "user-friendly" for linear extrapolation.
- The "speed control" has been changed from a slider to two buttons (which, of course, you can set the labels on). This was done because it was found that sliders are difficult to use on touch-screen devices.
- Only one instance of HAniS may be used on a "page"; however,
see this example for a way to have more than one animation on a page using the HTML <iframe> tag.
- The "static" and "caching" approaches that evolved in FlAniS has been replaced. We now rely on the browser to cache images that do not change. Non-static overlay images are designated using the same "overlay_static" parameter. The "background" (or "base") image may be tagged as non-static using the "background_static" parameter.
- In order to allow for using higher resolution GIS-type data (terrain, roads, cities, etc), the idea of a "high_res_basemap" and "high_res_overlay" have been added, where you can specify an "alternate" image to be used when the zoom level passes a specified amount. These high_res images must have dimensions proportional to the original images. underlying image(s) to show through.
Join the HAniS mailing list
If you would like to get notified of updates to HAniS,
send an message
using this form. and we'll get you signed up. Note this is the
same list that is used for AniS and FlAniS as well -- it's just
one big, happy family...
We are grateful to the Space Science & Engineering Center (SSEC)
at the University of Wisconsin-Madison, for their continued
encouragement and for providing hosting for HAniS and the mailing
list.
Contributed code
Many thanks to James Davies for the HAniS "logo" art at the top of
this page!
Additional code was contributed by Catalyst IT. Map projection
code was derived from the mapx library from the National
Snow and Ice Data Center in Colorado.
The Animated GIF library was developed and is licensed by Johan Nordberg
(https://github.com/jnordberg/gif.js)
The MP4 encoder was developed and is licensed by Trevor Sundberg
(https://github.com/TrevorSundberg/h264-mp4-encoder/)
Copyright Notice
The software described herein, HAniS (HTML5 AnimationS), an
HTML5-based animator for the web and is Copyright© 2014-
by StormQuest Technologies and Tom Whittaker.
This program was developed through funding provided by StormQuest
Technologies. Other organizations have contributed support for
requested enhancements.
This program is free software; you can redistribute it and/or modify
it but you may NOT repackage and sell it.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.
The developers or their employers are not responsible for any
and all ramifications, etc., which may result from using this software,
or software derived therefrom. Furthermore, you agree to hold us
harmless from any consequences related to the use of this
software.
That's it.