/** * @fileoverview 表の操作。XML情報のcolspan、rowspanに基づいて接続したり、左右のケイを取ったりする * @author Kenshi Muto <kmuto@debian.org> * @version 3 * @requires libCommon.jsx */ /* Copyright: 2012 Kenshi Muto ---------------------------------------------------------------------- ソフトウェア使用許諾同意書 本ソフトウェアの利用・変更・再配布にあたっては、下記の使用許諾同意書に 同意する必要があります。 1. 本使用許諾同意書における「ソフトウェア」とは、機械可読の資料 (ライブ ラリ、スクリプト、ソースファイル、データファイル)、実行形式、および 文書を意味します。 2. 本ソフトウェアの使用許諾同意書に同意する限りにおいて、使用者は 本ソフトウェアを自由に利用、変更することができます。 3. 本ソフトウェアに変更を加えない限りにおいて、使用者は本ソフトウェアを 自由にコピー、再配布することができます。 4. 本ソフトウェアは無保証です。作者およびそれに関連する組織、配布者は、 本ソフトウェアの使用に起因する一切の直接損害、間接損害、偶発的損害、 特別損害、懲戒的損害、派生的損害について何らの責任・保証も負いません。 5. 本ソフトウェアを変更した上で再配布するときには、下記の事項すべてに 従わなければなりません。 - 使用許諾同意書の内容に変更を加えてはなりません。技術上の理由で 文字エンコーディングの変換を行うことは許可しますが、その使用者が 特殊な技術的措置なしに可読な形でなければなりません。 - 技術上の理由でバイナリ化・難読化を行う場合も、変更箇所を含めた ソフトウェアを、その使用者が可読可能な形式の形で同一のメディアで 提供しなければなりません。本使用許諾同意書の2条および3条により、 使用者が可読形式の該当ソフトウェアを変更、コピー、再配布することを 妨げてはなりません。 - ソフトウェア構成物の所定の作者名の欄に、変更者のクレジット (個人名、企業名、所属、連絡先など)を「追加」しなければなりません。 6. 本ソフトウェアを変更した上で再配布するときには、変更理由および その内容を明記することが推奨されます。 7. 使用者がソフトウェアに適用可能な特許に対して特許侵害にかかわる何らか の行動を開始した時点で、この使用許諾同意書は自動的に終了し、以降 使用者はこの使用許諾書によって与えられた一切の権利を放棄するものと します。 著作権所有者 Copyright (C) 2012 Kenshi Muto. All rights reserved. 使用許諾同意書バージョン1.0 著作権所有者による書面での事前の許可がない限り、この使用許諾同意書 に変更を加えてはなりません。 ---------------------------------------------------------------------- */ #include "../libs/libCommon.jsx" /** * 指定の表オブジェクトのcolspan、rowspanの処理を行い、その他のオプショナルな操作も行う * @param {Table} table Tableオブジェクト * @param {Object} obj パラメータオブジェクト * @param {Document} obj.document Documentオブジェクト * @param {boolean} obj.removeleft 左のケイの幅を0mmにする (obj.leftwidth=0と同じ) * @param {boolean} obj.removeright 右のケイの幅を0mmにする (obj.rightwidth=0と同じ) * @param {Number} obj.leftwidth 左のケイ幅(mm) * @param {Number} obj.rightwidth 右のケイ幅(mm) * @param {Number} obj.topwidth 上のケイ幅(mm) * @param {Number} obj.bottomwidth 下のケイ幅(mm) * @type Nothing */ function modifyTable(table, obj) { // 関連付けられたXMLにcolspan, rowspanがあるときにはセルを接続する for (var i = 0; i < table.rows.length; i++) { for (var i2 = table.rows[i].cells.length; i2 > 0; i2--) { var cell = table.rows[i].cells[i2 - 1]; if (cell.associatedXMLElement != null) { var colspan = cell.associatedXMLElement.xmlAttributes.item("colspan"); var rowspan = cell.associatedXMLElement.xmlAttributes.item("rowspan"); if (rowspan != null && cell.rowSpan == 1) { for (var i3 = 1; i3 < rowspan.value; i3++) { cell.merge(table.rows[i + i3].cells[i2 - 1]); // 下のセルと接続 } } if (colspan != null && cell.columnSpan == 1) { for (var i3 = 1; i3 < colspan.value; i3++) { cell.merge(table.rows[i].cells[i2]); // 右のセルと接続 } } } } } if (obj.removeleft == true) obj.leftwidth = 0; if (obj.removeright == true) obj.rightwidth = 0; // ケイの設定 var backunit = toMmMode(obj.document); for (var i = 0; i < table.rows.length; i++) { if (i == 0 && obj.topwidth) { for (var i2 = 0; i2 < table.rows[i].cells.length; i2++) { table.rows[i].cells[i2].topEdgeStrokeWeight = obj.topwidth; } } if (i == table.rows.length - 1 && obj.bottomwidth) { for (var i2 = 0; i2 < table.rows[i].cells.length; i2++) { table.rows[i].cells[i2].bottomEdgeStrokeWeight = obj.bottomwidth; } } if (obj.leftwidth) { table.rows[i].cells[0].leftEdgeStrokeWeight = obj.leftwidth; } if (obj.rightwidth) { table.rows[i].cells[table.rows[i].cells.length - 1].rightEdgeStrokeWeight = obj.rightwidth; } } revertMmMode(obj.document, backunit); }