INTERNET-DRAFT                                          James L. Seidman
<draft-seidman-clientsideimagemap-01.txt>             Spyglass, Inc.
Expires SIX MONTHS FROM--->                             August 8, 1995

      A Proposed Extension to HTML : Client-Side Image Maps

Status of this Memo

   This document is an Internet-Draft. Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups. Note that other groups may also distribute
   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six
   months and may be updated, replaced, or obsoleted by other
   documents at any time. It is inappropriate to use Internet-
   Drafts as reference material or to cite them other than as
   "work in progress."

   To learn the current status of any Internet-Draft, please check
   the "1id-abstracts.txt" listing contained in the Internet-
   Drafts Shadow Directories on ds.internic.net (US East Coast),
   nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
   munnari.oz.au (Pacific Rim).

   Distribution of this document is unlimited.  Please send
   comments to the HTML working group (HTML-WG) of the
   Internet Engineering Task Force (IETF) at <html-wg@oclc.org>.
   Discussions of the group are archived at
   URL: http://www.acl.lanl.gov/HTML_WG/archives.html.

Abstract

   The markup language known as "HTML/2.0" provides for image maps.
   Image maps are document elements which allow clicking on different
   areas of an image to reference different network resources, as
   specified by Uniform Resource Locators (URIs).  The image map
   capability in HTML/2.0 is limited in several ways, such as the
   restriction that it only works with documents served via the "HTTP"
   protocol, and the lack of a viable fallback for users of text-only
   browsers.  This document specifies an extension to the HTML
   language, referred to as "Client-Side Image Maps," which resolves
   these limitations.

Table of Contents

   1.  Introduction
       1.1  Purpose
       1.2  Overall Operation
   2.  Client-Side Image Map Extension
       2.1  Syntax
       2.2  Required Changes to HTML/2.0 DTD
       2.3  Backwards Compatibility
       2.4  Examples
   3.  References
   4.  Author's Address


1. Introduction

1.1  Purpose

   Image maps are an important feature of the point-and-click
   interface which makes the World Wide Web so popular. The most
   common use of image maps is to allow users to access different
   documents by clicking on different areas in an image.

   There are several limitations of the current image map
   implementation as it applies to this use. First, it only works
   over the HTTP protocol, making it unusable for reading local files
   or files accessed via alternate protocols. Second, a server
   transaction is required merely to determine where the link is
   directed. This can degrade performance noticeably when accessing
   distant sites. Third, unlike for normal links, there is no way for
   a browser to provide visual feedback to the user showing where a
   portion of an image map leads before the user actually clicks on
   it. Lastly, the method for specifying the active regions of image
   maps is server-dependent, compromising portability of documents.
   This extension to support client-side image maps addresses these
   issues.

   It is proposed that this extension be included in a future revision
   of the HTML specification.

1.2  Overall Operation

   Client-side image maps work by placing a complete representation of
   the active areas of an image, including their shape, size, and
   destination (URI), into an SGML-compliant textual form.  This
   markup may also optionally include a textual description for
   each area for display on non-textual browsers.  This
   representation, or "map," is given a name to identify it.

   When an image is included in an HTML document, it may include an
   attribute specifying a map to use.  The map may contained in the
   same file which references the image, but this it not required.
   If the map is in a different file, a URI to that file must be
   provided.

   The browser will parse the map and remember the contents.  When the
   user clicks on the map, the browser will match up the location with
   the specified destination for that location and access that URI.
   In the case of a non-graphical browser, the browser could display
   the textual descriptions for each area instead of the image.
   Clicking on a given textual description would then go to the
   associated destination.


2. Client-Side Image Map Extension

2.1 Syntax

   Adding a USEMAP attribute to an IMG element indicates that it is a
   client-side image map.  The USEMAP attribute can be used with the
   ISMAP attribute to indicate that the the image can be processed as
   either a client-side or server-side image map.  The argument to
   USEMAP specifies which map to use with the image, by specifying the
   URI for the file containing the map, followed by a '#', followed by
   the name of the map.  If the argument to USEMAP starts with a '#',
   the map is assumed to be in the same document as the IMG tag.  The
   presence of a USEMAP attribute overrides the effect of an enclosing
   anchor (A) element.

   The different regions of the image are described using a MAP
   element.  The map describes each region in the image and indicates
   where it links to. The basic format for the MAP element is as
   follows:

   <MAP NAME="name">
   <AREA [SHAPE="shape"] COORDS="x,y,..." [HREF="reference"]
         [NOHREF] [ALT="alt"]>
   </MAP>

   The NAME attribute specifies the name of the map so that it can be
   referenced by an IMG element.  Each AREA element contained inside
   the map element specifies a single clickable area of the image.
   The SHAPE attribute gives the shape of this area.  Possible shapes
   are "RECT", "CIRCLE", and "POLYGON", which specify rectangular,
   circular, and polygonal regions respectively.  If the SHAPE tag is
   omitted, SHAPE="RECT" is assumed.

   The COORDS tag describes the position of an area, using image
   pixels as the units with the origin at the upper-left corner of the
   image.  For a rectangle, the coordinates are given as
   "left,top,right,bottom".  The rectangular region defined includes
   the lower-right corner specified, i.e. to specify the entire area
   of a 100x100 image, the coordinates would be "0,0,99,99".

   For a circular region, the coordinates are given as
   "center_x,center_y,radius", specifying the center and radius of the
   circle.  All points up to and including those at a distance of
   "radius" points from the center are included.  For example, the
   coordinates "4,4,2" would specify a circle which included the
   coordinates (2,4) (6,4) (4,2) and (4,6).

   For a polygonal region, the coordinates specify successive
   vertices of the region in the format "x1,y1,x2,y2,...,xn,yn".
   If the first and last coordinates are not the same then a segment
   is inferred to close the polygon.  The region includes the
   boundary lines of the polygon.  For example, "20,20,30,40,10,40"
   would specify a triangle with vertices at (20,20) (30,40) and
   (10,40).  No explicit limit is placed on the number of vertices,
   but a practical limit is imposed by the fact that HTML limits
   an attribute value to 1024 characters.

   The NOHREF attribute indicates that clicks in this region should
   perform no action.  An HREF attribute specifies where a click in
   that area should lead.  A relative anchor specification will be
   expanded using the URI of the map description as a base, rather
   than using the URI of the document from which the map description
   is referenced. If a BASE tag is present in the document containing
   the map description, that URI will be used as the base.

   An arbitrary number of AREA tags may be specified.  If two areas
   intersect, the one which appears first in the map definition takes
   precedence in the overlapping region.  Multiple areas may share the
   same destination to create composite shapes.  Any portion of an
   image which is not described by an AREA tag defaults to having no
   action.

   The ALT attribute specifies optional text which describes a given
   area.  A text-only browser can display the textual contents for
   each area as a substitute for the image.

2.2  Required Changes to HTML/2.0 DTD

   The required changes to the HTML/2.0 DTD to support this syntax
   would be as follows:

      Change the IMG element definition to be:
        <!ELEMENT IMG    - O EMPTY>
        <!ATTLIST IMG
                SRC %URI; #REQUIRED
                ALT CDATA #IMPLIED
                ALIGN (top|middle|bottom) #IMPLIED
                ISMAP (ISMAP) #IMPLIED
                USEMAP %URI; #IMPLIED
                %SDAPREF; "<Fig><?SDATrans Img: #AttList>#AttVal(Alt)</Fig>"
        >

      Add the following new definitions:
        <!ELEMENT MAP    - - +(AREA)>
        <!ATTLIST MAP
                NAME %linkName; #REQUIRED
        >

        <!ELEMENT AREA   - O EMPTY>
        <!ATTLIST AREA
                SHAPE (RECT|CIRCLE|POLYGON) RECT #IMPLIED
                COORDS CDATA #REQUIRED
                HREF %URI; #IMPLIED
                NOHREF (NOHREF) #IMPLIED
                ALT CDATA #IMPLIED
        >


2.3  Backwards Compatibility

   This extension is specifically designed to provide a variety of
   fallback options for browsers which do not support it.  These
   options are based on the assumption that browsers will ignore any
   attributes or elements which are not present in the HTML/2.0 DTD.

   An document can be written so that a client-side image map can have
   three different fallback behaviors.  First, the document can use
   the server-side image map capability, by specifying the ISMAP
   attribute as well as USEMAP.  In situations where this is possible,
   the image map will work whether or not the browser supports the
   client-side extension.

   Second, clicking on the image can direct the user to a single URI,
   regardless of where on the image he clicks.  This is accomplished
   by placing the image inside an anchor (A) element.  The fallback
   destination could provide the user with an error or a textual list
   of destinations.

   Lastly, the image can appear to not be a link at all (i.e. missing
   whatever visual cues a browser provides to indicate a hyperlink).
   This will be the result if the image element neither contains an
   ISMAP attribute nor is inside an anchor.

2.4  Examples

   The following three examples show markup demonstrating the three
   fallback mechanisms described in section 2.3:

      This image map will work with any graphical browser:
      <A HREF="/cgi-bin/imagemap/pic1">
      <IMG SRC="pic1.jpg" USEMAP="maps.html#map1" ISMAP></A>

      Clicking here will take you to a page with an error message if
      you don't have client-side image map support:
      <A HREF="no_csim.html">
      <IMG SRC="pic2.jpg" USEMAP="maps.html#map2"></A>

      You can only click here if your browser supports client-side
      image maps: <IMG SRC="pic3.jpg" USEMAP="maps.html#map3">

   The following example shows the use of a map in the same file as
   the image:

      <IMG SRC="picture.jpg" USEMAP="#mymap">

   The following example defines a simple map which describes an
   image with a circle in the middle overlapping two large
   rectangles:

      <MAP NAME="welcomemap">
      <AREA SHAPE=CIRCLE COORDS="50,50,40" HREF="about_us.html"
            ALT="About our company">
      <AREA SHAPE=RECT COORDS="0,0,100,50" HREF="products.html"
            ALT="Our products">
      <AREA SHAPE=RECT COORDS="0,51,100,100 HREF="technology.html"
            ALT="Technology for the next century">
      </MAP>

3. References

   [1] T. Berners-Lee, D. Connolly.  "HyperText Markup Language
       Specification - 2.0" Internet-Draft (work in progress),
       June 16, 1995.

   [2] J. Seidman, "An HTML Extension to Support Client-Side Image
       Maps"  The Second Internation WWW Conference '94 Advance
       Proceedings, pp 927-930.

   [3] "Standard Generalized Markup Language"  ISO Standard 8879:1986
       Information Processing Text and Office Systems.

   [4] T. Berners-Lee, R. T. Fielding, H. Frystyk Nielsen,
       "Hypertext Transfer Protocol -- HTTP/1.0" Internet-Draft
       (work in progress), March 8, 1995.

4. Author's Address

   James L. Seidman
   jim@spyglass.com
   Senior Software Engineer
   Spyglass, Inc.
   1230 East Diehl Road
   Naperville, IL 60563