--- test/html-whatpm/table-script.js 2007/05/27 06:37:05 1.1 +++ test/html-whatpm/table-script.js 2007/06/30 08:26:08 1.3 @@ -1,6 +1,9 @@ -function tableToCanvas (table) { +function tableToCanvas (table, parent) { var canvas = document.createElement ('canvas'); - document.body.appendChild (canvas); + parent.appendChild (canvas); + if (window.G_vmlCanvasManager) { + canvas = G_vmlCanvasManager.initElement (canvas); + } var c2d = canvas.getContext ('2d'); var param = { @@ -46,14 +49,15 @@ } } +canvas.style.width = 'auto'; // NOTE: Opera9 has default style="" +canvas.style.height = 'auto'; +// NOTE: Set style="" before width/height="" for ExplorerCanvas compatibility canvas.width = param.cellLeft + (param.columnWidth + param.columnSpacing) * columnNumber + param.cellRight; canvas.height = param.cellTop + (param.rowHeight + param.rowSpacing) * rowNumber + param.cellBottom; -canvas.style.width = 'auto'; // NOTE: Opera9 has default style="" -canvas.style.height = 'auto'; var y = param.rowTop; for (var i = 1; i < table.row_group.length; i++) { @@ -114,6 +118,7 @@ c2d.closePath (); } +var map = document.createElement ('map'); var x = param.cellLeft; for (var i = 1; i < table.cell.length; i++) { var y = param.cellTop; @@ -132,6 +137,15 @@ ? param.headerCellFillStyle : param.dataCellFillStyle; c2d.strokeStyle = c[0].is_header ? param.headerCellStrokeStyle : param.dataCellStrokeStyle; + if (c[0].id) { + var area = document.createElement ('area'); + area.shape = 'rect'; + area.coords = [x, y, x + width, y + height].join (','); + area.alt = 'Cell (' + c[0].x + ', ' + c[0].y + ')'; + area.href = '#node-' + c[0].id; + area.id = 'cell-' + c[0].id; + map.appendChild (area); + } } else { c2d.rect (x, y, param.columnWidth, param.rowHeight); c2d.fillStyle = param.overlappingCellFillStyle; @@ -160,8 +174,21 @@ c2d.stroke (); c2d.closePath (); } + + if (map.hasChildNodes ()) { + var mapid = 'table-map-' + ++document.TableMapId; + map.name = mapid; + parent.appendChild (map); + var img = document.createElement ('img'); + img.src = canvas.toDataURL (); + img.useMap = '#' + mapid; + parent.appendChild (img); + canvas.style.display = 'none'; + } } // tableToCanvas +if (!document.TableMapId) document.TableMapId = 0; + /* Copyright 2007 Wakaba @@ -170,4 +197,4 @@ and/or modify it under the same terms as Perl itself. */ -/* $Date: 2007/05/27 06:37:05 $ */ +/* $Date: 2007/06/30 08:26:08 $ */