index.html 0100664 0000026 0000031 00000001103 06716651636 0013005 0 ustar 00yo btron2 0000243 0000002
TRON Architecture: Designed by Ken Sakamura
Copyright (C) 1999 TRON Association
本仕様書の著作権は、社団法人トロン協会に属しています。
TRONは、The Realtime Operating system Nucleusの略称です。
BTRONは、Business TRONの略称です。
共通して使われる型の定義を以下に記述する。
typedef char B; /* 符号付き 8ビット整数 */ typedef short H; /* 符号付き16ビット整数 */ typedef int W; /* 符号付き32ビット整数 */ typedef unsigned char UB; /* 符号無し 8ビット整数 */ typedef unsigned short UH; /* 符号無し16ビット整数 */ typedef unsigned int UW; /* 符号無し32ビット整数 */ typedef char VB; /* 不定型 8ビットデータ */ typedef short VH; /* 不定型16ビットデータ */ typedef int VW; /* 不定型32ビットデータ */ typedef void *VP; /* 不定型データへのポインタ */ typedef void (*FP)(); /* 一般関数ポインタ */
以上のデータ型はITRONと共通である。
Volatile
: コンパイラによる最適化禁止指定typedef volatile W _W; /* 最適化禁止の符号付き 8ビット整数 */ typedef volatile H _H; /* 最適化禁止の符号付き16ビット整数 */ typedef volatile B _B; /* 最適化禁止の符号付き32ビット整数 */ typedef volatile UW _UW; /* 最適化禁止の符号無し 8ビット整数 */ typedef volatile UH _UH; /* 最適化禁止の符号無し16ビット整数 */ typedef volatile UB _UB; /* 最適化禁止の符号無し32ビット整数 */ typedef volatile void _void;
#define CONST const /* 変数・関数の代入禁止指定 */ #define LOCAL static /* モジュール(*)内でのみ使われる */ /* 変数・関数 */ #define EXPORT /* プログラム中の任意の箇所で参照 */ /* 可能な変数・関数の定義 */ /* 1個の変数・関数について EXPORT */ /* 宣言はプログラム中に1箇所だけ */ /* 記述 */ #define IMPORT extern /* プログラム中の任意の箇所で参照 */ /* 可能な変数・関数の参照宣言 */ /* 1モジュールに1個の参照宣言で */ /* EXPORT された変数・関数の使用が */ /* 可能 */ #define VOID void /* 空の型 */
プログラムはソースコードをコンパイル・リンクして作成されるが、 そのソースコードは通常、 複数のソースファイルに分割して記述されている。 以降、本書ではこのソースファイル 1 個の単位をモジュールと呼ぶ。
typedef float FLOAT; /* 単精度(32ビット)浮動小数点 */ typedef double DOUBLE; /* 倍精度(64ビット)浮動小数点 */ typedef int BOOL; /* TRUE or FALSE */ typedef W (*FUNCP)(); /* W 関数へのポインタ */
typedef enum { False = 0, True = 1 } Bool; /* ブール値 */
typedef W ID; /* ID番号 */
typedef W MSEC; /* ミリ秒 */ typedef W STIME; /* システム時間 */ /* 1985/01/01 00:00:00 GMT からの秒数 */
typedef UH TC; /* TRON 文字コード */ #define TNULL ((TC) 0) /* 文字列終端の文字コード値 */
ビッグエンディアンの場合
typedef union { W err; /* エラーコード */ struct { H eclass; /* エラークラス */ UH detail; /* 詳細エラー */ } c; } ErrCode;
リトルエンディアンの場合
typedef union { W err; /* エラーコード */ struct { UH detail; /* 詳細エラー */ H eclass; /* エラークラス */ } c; } ErrCode;
システムコールの関数値は以下のいずれかである。
typedef W ERR; /* エラーコード */ /* エラーまたは正常のみ戻す場合に使用 */ typedef W WERR; /* システムコール関数値 */ /* エラーまたは意味のある値を戻す */ /* 場合に使用 */
エラーコードとして通常は ERR
を使用し、
詳細が必要な場合は ErrCode
を使用する。
#define OK (0) /* 正常(OK) */
#define CLR 0x0000 /* クリア指定 */ #define NOCLR 0x0008 /* ノークリア指定 */ #define DELEXIT 0x8000 /* 終了時削除指定 */
typedef struct Size { H h; /* 幅 */ H v; /* 高さ */ } SIZE;
typedef struct point { H x; /* 水平座標値 */ H y; /* 垂直座標値 */ } PNT;
typedef union rect { struct _rect { H left; /* 左の座標値 */ H top; /* 上の座標値 */ H right; /* 右の座標値 */ H bottom; /* 下の座標値 */ } c; struct { PNT lefttop; /* 左上の点 */ PNT rightbot; /* 右下の点 */ } p; } RECT;
#define L_FSNM 20 /* ファイルシステム名の長さ(文字数) */ typedef struct { TC fs_name[L_FSNM]; /* ファイルシステム名 */ UH f_id; /* ファイルID */ UH atr1; /* 属性データ1 */ UH atr2; /* 属性データ2 */ UH atr3; /* 属性データ3 */ UH atr4; /* 属性データ4 */ UH atr5; /* 属性データ5 */ } LINK;
typedef W WID; /* ウィンドウID */
TRON 仕様コードでは、 多国語文字を扱うことを考えるが、 国語によって 1 バイトコードで足りるものと、 足りないものがある。 このため、TRON 仕様では 1 バイトコードと 2 バイトコードを扱う。 しかし、 基本的には 1 バイトコードと 2 バイトコードを混在させて使うことは避け、 1 バイトコードで足りる国語については 1 バイトコードを使い、 不足する国語では 2 バイトコードを使用する。
従来、コードに割り当てられていない文字を外字として扱っていたが、 TRON 仕様コードではこの意味での外字はおこらないように、 全ての文字に対してコードを割り当てる方式を取る。 漢字の場合でも、45,000 文字程度で全てを網羅できる。 このようにして定めた、 一つの文字コードの集合を文字セットと呼ぶ。 会社のマークなどのパターンは、文字とは別扱いで、 イメージとして扱うようにする。 コードで区別すべき文字が必要となる場合は、新しく登録する。
本仕様書および JIS X 0208 で規定されていない独自の文字コードはデータの交換に用いてはならない。
同じ文字に対していくつかの書体が存在する。 例えばゴシックと明朝のような場合である。 これらは同じ文字コードを割り当て、 書体が異なってもデータベース検索の場合に同一文字として扱うことができるようにする。 同じ文字セットの中に存在する複数の書体の異なる文字集合を書体セットと呼ぶ。
JIS X 0201 では、7 ビットと 8 ビットの情報交換符号を規定している。 TRON 仕様コードでは 8 ビットおよび 16 ビットコード体系を取るので、 JIS X 0201 の 8 ビットコードの規定からの制限を考慮する。
8 ビットコード表で、C0 集合の 00/0 〜 01/15、 および 02/0、07/15 は制御コードとして使用する。 また、C1 集合の 08/0 〜 09/15、および 10/0、15/15 は制御コード用であるが未定義領域とする。
また、日本の場合は、漢字、仮名、ラテン文字のいずれも使用するので、 1 バイトコードと 2 バイトコードを頻繁に切り換えるのは不適当である。 従って、日本語は全て 2 バイトコードで扱い、1 バイトコードでは扱わない。
TRON 仕様では半角、全角の概念はなく、 これらは文字指定付箋を用いて扱う。 文字指定付箋については3.5.4文字指定付箋を参照のこと。
JIS X 0208 では、8,836 字の領域を確保し、 そのうち 6,877 字を割り当てている。 このうち漢字は 6,353 字である ( JIS X 0208-1983 )。
TRON 仕様コードは JIS X 0208 に定義されている文字を準用する。 またコードの位置もそのまま用いる。
TRON 仕様日本文字コード体系は、 2 バイトの文字コード体系であり、 JIS X 0208 のスーパーセットとする。
(00)(00)〜(00)(20),(00)(7F)のコードは制御コードとして割り当てる。 ( 制御コードの第 2 バイトは TRON 仕様 1 バイトコード系、 2 バイトコード系に共通である)
このうち、以下のコードは TRON 仕様で特別な意味を持ち、 無効コードを除き、特殊文字キーより発生可能なコードである。
(00) | 無効コード | このコードがあっても、あたかも無いように処理する
文字コードとしては無効であるが、
通常は文字列の終了を示す目的に使用する |
(09) | タブ | 次タブ位置または次フィールドへの遷移 |
(0A) | 改段落 | 通常の改行または段落替え 段落の概念を用いる場合、 段落内の改行は改行を用いる |
(0B) | 改コラム | |
(0C) | 改ページ | |
(0D) | 改行 | フィールド内の改行または段落内の改行 |
(20) | セパレータ | 語あるいは文節の区切れ |
フィールドの定義については3.5.3行書式指定付箋を参照のこと。
第1ブロック: | (21)(21)×(7E)(7E) | Aゾーン | 8,836文字 | |||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
第2ブロック: | (80)(21)×(FD)(7E) | Bゾーン | 11,844文字 | |||||||||||||||||||||||||||||||||||||||||
第3ブロック: | (21)(80)×(7E)(FD) | Cゾーン | 11,844文字 | |||||||||||||||||||||||||||||||||||||||||
第4ブロック: | (80)(80)×(FD)(FD) | Dゾーン | 15,876文字 |
Aゾーンには、JIS X 0208 を対応付ける。
Bゾーンは、JIS X 0208 で不足している文字のうち、 利用頻度の高い文字を集める。 この中には、漢字以外に記号、他文字属の一部も含む。
C, D ゾーンは、A , B ゾーンよりも頻度の低い文字を集める。
言語指定コード (FE)(21)〜(FE)(7E)、(FE)(80)〜(FE)(FE)
言語および文字属の切り換え指定を行なう。
第 2 バイトが0xFE
の場合、
さらに言語指定コードが続くことを示す。
2 バイトで表現しうる言語指定数は 220 である。
TRON 仕様特殊コード (FF)(21)〜(FF)(7E) 94 文字
文章中に挿入される特殊コードとして用いる。
TRON 仕様エスケープ (FF)(80)〜(FF)(FE)
文書中に埋め込まれる指定付箋挿入等の区切り記号として用いる。 区切り記号の後に付箋情報が続く (付箋情報については 3.3TADデータ構成の概要を参照のこと)。
2 バイトで表現しうる TRON 仕様エスケープ数は 127 である。
0xFF
)/(0xFF
) は数値として見た場合の -1 であり、
EOF
として使用する。
NL
,HT
(TAB
),
SP
(3種),(NULL
)
は文字コードとしてテキストに混在して使用する。
日本語モードの場合: | ||
漢字固定ピッチ | SP (0x21 /0x21 ) |
− 空白キー |
英語モードの場合: | ||
英字固定ピッチ | SP (0x00 /0xA0 ) |
− 空白キー |
プロポーショナル | SP (0x00 /0x20 ) |
− 変換・逆変換キー |
本仕様書では、TAD ( TRON APPLICATION DATABUS ) に関しての詳細のデータ構造を説明することを目的としているため、 基本的な BTRON 仕様の実身、仮身、付箋等の概念、 および TAD の目的、概念、位置付け等に関しては特に説明していない。
また、BTRON 仕様システム、 特にファイルシステムとディスプレイ・プリミティブ、 および TRON 仕様コードに関しての知識を有することを前提としている。
TAD ( TRON APPLICATION DATABUS ) 実身構成は、 BTRON 仕様の実身 ( ファイル ) の全体構成を規定するものである。
BTRON 仕様の実身 ( ファイル ) には、以下の情報が格納されている。
実身 (ファイル) の所有者、所属グループ、 アクセス管理、 アクセス属性等の BTRON 仕様ファイルシステムとして定義される。
実身のアプリケーションレベルでの基本タイプを示すもので、
ピクトグラムに 1 対 1 対応する。
また、実行プログラム、デバイス実身等の識別情報も含む。
実身のデータは、各種のレコードの1次元連鎖より構成され、 各レコードは、レコードタイプにより、その内容が規定される。
BTRON仕様実身(ファイル)はレコードの列から構成され、その各レコードは、 レコードタイプに応じて、そのデータ構成が規定されている。 レコードのサブタイプは、通常レコードの検索等のために使用され、 その内容は特に規定されない。
以下にレコードタイプと、そのデータ構成の規定を示す。
レコードタイプ | データ構成の規定 | |
---|---|---|
0 | リンクレコード | 標準データタイプ |
1 | TAD 主レコード | TAD データ構成 |
2 | TAD 注釈レコード | TAD データ構成 |
3 | TAD 補助レコード | TAD データ構成 |
4 | 予約レコード | − |
5 | 設定付箋レコード | TAD データ構成 |
6 | 指定付箋レコード | TAD データ構成 |
7 | 機能付箋レコード | TAD データ構成 |
8 | 実行機能付箋レコード | TAD データ構成 |
9 | 実行プログラムレコード | 標準オブジェクト形式 |
10 | データボックスレコード | データボックス定義形式 |
11 | フォントデータレコード | 標準フォントデータ形式 |
12 | 辞書データレコード | 標準辞書データ形式 |
13 | 予約レコード | − |
14 | 予約レコード | − |
15 | システムデータレコード | システムアプリケーション定義 |
16〜31 | アプリケーションレコード | アプリケーション定義 |
実身のメインデータであり、TAD データ形式である。 基本エディタでの処理対象となる。
実身の注釈としての補助データであり、TAD データ形式である。 実行プログラムファイル内のヘルプ・データ、コピーライトデータ等に使用され、 基本エディタでの処理対象とならない。
実身の補助データであり、TAD データ形式である。 その使用方法はアプリケーションに依存し、 基本エディタでの処理対象とならない。
実身に貼られた設定付箋である。
実身に貼られた指定付箋である。
実身に貼られた機能付箋である。
実身の実行メニューとして表示され、実行される機能付箋である。
実行プログラムの標準オブジェクト形式であり、サブタイプはCPUのタイプを示す。
0x100〜0x13F | TRONCHIP 系 | 0x00 | TRONCHIP32 |
0x140〜0x14F | 68000 系 | 0x40 | 68000 |
0x41 | 68010 | ||
0x42 | 68020 | ||
0x150〜0x15F | NS32000 系 | 0x50 | 32032 |
0x160〜0x16F | 86 系 | 0x60 | 8086 / 8088 |
0x61 | 80186 | ||
0x62 | 80286 | ||
0x63 | 80386 | ||
0x170〜0x17F | V シリーズ |
データボックスのデータ定義であり、 データマネージャによりサポートされるデータ形式である。
標準のフォントデータ形式。
標準の辞書データ形式。
システムで使用される標準のシステムデータ形式である。
アプリケーションで定義されるデータ形式である。
TAD データ構成は、 BTRON 仕様ファイル内の TAD データレコードの内容を規定するものである。
TAD データ構成は、ファイル内のデータ形式を規定するとともに、 トレー経由、またはドラッグによるアプリケーション間のデータ交換のためにも使用される。
TAD データ構成は、セグメント と呼ばれるデータ要素の一次元要素連鎖であり、 セグメントには、固定バイト長の固定長セグメントと、 可変バイト長の可変長セグメントがある。 各セグメントは、TRON 仕様多国語文字コード体系の下に定義されているため、 TAD データ構成は TRON 仕様文字コード列そのものであると言える。
TRON 仕様多国語文字コードとして定義されている、 広義の文字コードそのものであり、以下のものが含まれる。
・通常の文字コード | : 1または2バイト・コード |
・制御コード | : (0x00 〜0x20 ) の1バイト・コード |
・言語指定コード | : (0xFE )で始まる多バイトコード |
・特殊コード | : (0xFF )(0x21 〜0x7E )の2バイトコード |
なお、TAD データ構成では、基本的に下記の 制御コードのみを使用する。
無効コード | 0x00 |
タブコード | 0x09 |
改段落コード | 0x0A |
改コラムコード | 0x0B |
改ページコード | 0x0C |
改行コード | 0x0D |
セパレータ(スペース) | 0x20 |
TRON 仕様多国語文字コードとして定義されている
TRON 仕様エスケープであり、
先頭バイトが (0xFF
)、第 2 バイトが、
(0x80
〜0xFE
) の値を持つ。
第 2 バイトはセグメントの種別を表すため、
セグメント ID と呼ばれる。
セグメント ID の直後にデータ本体のバイト長が入るが、
バイト長の形式として、
通常セグメントと
ラージセグメント
の 2 つの形式が存在し、ラージセグメントは、
バイト長さが 65,536 バイト以上の場合にのみ使用される。
バイト長は必ず偶数となるように必要に応じて "0"
のバイトが最後に追加される。
データは上位バイトが先にくる
ビッグエンディアンの形式となる。
下図に可変長セグメントの形式を示す。
標準可変長セグメントとして以下のものが定義されている。
セグメントタイプ セグメントID (予約) (0x80〜0x9F) 文章付箋セグメント TS_Txxxx (0xA0〜0xAF) 図形描画セグメント TS_Fxxxx (0xB0〜0xBF) (予約) (0xC0〜0xDF) 管理情報セグメント TS_INFO (0xE0) 文章開始セグメント TS_TEXT (0xE1) 文章終了セグメント TS_TEXTEND (0xE2) 図形開始セグメント TS_FIG (0xE3) 図形終了セグメント TS_FIGEND (0xE4) 画像セグメント TS_IMAGE (0xE5) 仮身セグメント TS_VOBJ (0xE6) 指定付箋セグメント TS_DFUSEN (0xE7) 機能付箋セグメント TS_FFUSEN (0xE8) 設定付箋セグメント TS_SFUSEN (0xE9) (予約) (0xEA 〜 0xFE)
TAD データは、大きく文章データと、図形データに分類される。
文章データは 1 次元データとも呼ばれ、 データ要素を一次元平面上で表現したデータである。 文章データの個々のデータ要素は 2 次元の大きさを持つ場合もあるが、 位置は 1 次元、即ち順序関係として表現される。
文章データには、 文章データを実際に 2 次元平面 ( 用紙 ) 上に表現するための 各種のレイアウト情報も含まれるが、 これはあくまでもレイアウタへの入力情報であり、 文章データ自体としては、 レイアウトされた結果としての 2 次元平面上での表現を直接表しているものでない。
図形データは 2 次元データとも呼ばれ、 データ要素を2次元平面上で直接的に表現したデータである。 図形データの個々のデータ要素は 2 次元座標平面上での大きさと位置を持つ。
図形データは左上を ( 0, 0 ) とし、 下 / 右方向に無限に広がる 2 次元座標平面 ( 用紙 ) 上の 1 つの長方形領域内のデータを表現しているもので、 各データ要素は、その位置、 大きさをその座標平面上での座標値として持っている。 座標値は 0 〜 32,767 の範囲の非負の整数値である。
図形データの座標系はあくまで 2 次元座標平面 ( 用紙 ) 上での表現上の座標系であり、 実際の物理的な大きさを直接表現しているものではない。
文章データと図形データは任意に ネスティング可能であり、 一番外側のデータの種別により、 文章データか図形データかが分類される。 ネスティングした文章データ、図形データは、 埋め込み文章データ、 埋め込み図形データ とも呼ばれる。
同種の ( 文章 / 図形 ) データがネスティングした場合は、 原則として未定義の属性は、 外側で定義された属性のうち、最も内側で定義された属性が適用される。 一番外側でも未定義な場合は、 データを解釈するアプリケーションに依存した適当な デフォールト値として解釈される。
別種の ( 図形 / 文章 ) データがネスティングしている場合は、 同種のデータのうち、最も外側のものが一番外側と判断される。 即ち、別種のデータがネスティングしている場合は、 そこで外側からの属性の継承が切断される。 ただし、 座標系、領域に関しては、同種、別種に無関係にすぐ外側のものが適用される。 同種、または別種のデータがネスティングしている場合、 あるデータ内で定義された属性は外側のデータには適用されない。
例 : 図形データ A 図形データ B -- 属性の上位スコープは A 図形データ C -- 属性の上位スコープは A 図形データ D -- 属性の上位スコープは C, A 文章データ E -- 属性の上位スコープなし 文章データ F -- 属性の上位スコープは E 図形データ G -- 属性の上位スコープなし
( 埋め込み ) 文章 / 図形データには、以下の情報が定義される。
図形データとして描画される長方形領域、 および描画のための座標系を示し、大きさ、値ともに意味を持つ。 描画領域外をはみ出る部分はクリッピングされ、 図形データには含まれない。
意味を持たない。
図形データ中に埋め込まれた文章データの場合、
文章データをレイアウトする長方形領域を示し、
大きさのみが意味を持つ。
文章データ中に埋め込まれた文章データの場合は、意味を持たない。
描画領域の座標系の単位を、
1 cm 当たりの座標数または 1 inch 当たりの座標数により示す。
文章データの場合は、中に含まれる図形データ、画像データの表示領域の単位、
および書式のマージンの単位等を示すために使用される。
座標系単位の値が 0 の場合は、未定義であり、
すぐ外側と同一であると見なされる。
意味を持たない。
描画領域の表現を写像する外側の描画領域内での位置と大きさを示す。
従って、表示領域は外側の描画座標系 / 単位で規定される。
文章データ内に埋め込まれている場合は、大きさのみ意味を持つ。
表示領域の大きさ / 外側の描画座標単位 / 外側の倍率と、
描画領域の大きさ / 描画座標単位/倍率により、
描画領域の表現は拡大または縮小されて表示領域に写像される。
図形データ内に埋め込まれた文章データは、 描画領域として指定された領域内にレイアウトされた結果としての表現を意味し、 2 次元データと見なされる。 この場合、ページ、用紙の概念は存在しないため、 文章データ中のページ、用紙のレイアウトに関する指定は無視される。
図形データ内に埋め込まれた図形データは、座標系 / 倍率が異なる場合、 または、図形のグルーピングのために使用される。
文章データ内に埋め込まれた文章データは、座標系単位が異なる場合、 または、グルーピングを行なうために使用できるが、 埋め込まれた文章データも 1 次元データであるため、 その順番のみが意味を持つ。 2 次元のレイアウト済みの表現としての文章を埋め込む場合は、 埋め込み図形データ内の埋め込み文章データとする必要がある。
画像データは、 ( 圧縮 ) ビットマップ形式により表現されたイメージ・データであり、 単位系、カラー表現等のデータを解釈するための情報を持っている。
画像データは、それ自体で 1 つの独立したデータとしての意味を持つが、 TAD データ構造としては、1 つのセグメントとして取り扱われ、図形データ、 または文章データの 1 つの要素として取り扱われる。
TAD データ構造は、以下に示すBNF表記により定義される。
【TAD データ】 | ::= | 《管理情報セグメント》【TAD 本体】 |
【TAD 本体】 | ::= | 【文章データ】|【図形データ】 |
【文章データ】 | ::= | 《文章開始セグメント》【文章要素並び】《文章終了セグメント》 |
【文章要素並び】 | ::= | 《空》|【文章要素並び】【文章要素】 |
【文章要素】 | ::= | 【文字コード】| |
《文章付箋セグメント》| | ||
【図形データ】| | ||
【文章データ】| | ||
《画像セグメント》| | ||
《仮身セグメント》| | ||
《指定付箋セグメント》| | ||
《機能付箋セグメント》 | ||
【文字コード】 | ::= | 《通常文字コード》| |
《制御コード》| | ||
《言語指定コード》| | ||
《特殊文字コード》 | ||
【図形データ】 | ::= | 《図形開始セグメント》【図形要素並び】《図形終了セグメント》 |
【図形要素並び】 | ::= | 《空》|【図形要素並び】【図形要素】 |
【図形要素】 | ::= | 《図形描画セグメント》| |
【文章データ】| | ||
【図形データ】| | ||
《画像セグメント》| | ||
《仮身セグメント》| | ||
《指定付箋セグメント》| | ||
《機能付箋セグメント》 |
この章では、TAD データの要素である各セグメントの構造の詳細を説明するが、 文章付箋セグメントに関しては第 4 節で、 図形描画セグメントに関しては第 5 節で説明する。
各セグメントのデータ構造は、以下の形式で説明している。
ID : -- セグメントIDを示す。 LEN : -- データ本体のバイト長を示し、"〜"は可変長を意味する。 DATA: -- データ本体の内容を示す。
また、データ本体の内容は、以下に示すデータ表記を使用している。 8 ビット以上のビット長さを持つデータは、 上位バイトが先にくるビッグエンディアンの形式である。
typedef struct { H h -- 水平座標値 H v -- 垂直座標値 } PNT;
typedef struct { DBYTE left -- 左の座標値 DBYTE top -- 上の座標値 DBYTE right -- 右の座標値 DBYTE bottom -- 下の座標値 } RECT;
>0: 1 cm 当たりの座標数 <0: 1 inch 当たりの座標数の負数 =0: 未定義 (外側の座標系で定義される単位と同じ) 例 : 400 -- 1 / 400 cm 単位 -240 -- 1 / 240 inch 単位
UUSS SSSS SSSS SSSS U: 単位指定 0: 外側の座標系で定義される単位 1: 1/20 級 ( 1 / 80 mm ) 単位。 2: 1/20 ポイント ( 1 / 1440 inch ) 単位。 3: 予約 S: U で指定した単位での文字サイズ。0 の場合は未定義 であることを意味する。
1NNN NNNN NNNN NNNN -- 絶対指定 0AAA AAAA BBBB BBBB -- 比率指定 絶対指定 : 座標系単位での値 ( N ) 比率指定 : 基準値 × ( A / B ) の値 ( B = 0 の時は比率 1 と見なす )
AAAA AAAA BBBB BBBB A / B の値が比率となる ( B = 0 の時は比率 1 と見なす )
TAD データの解釈のために必要な バージョン等の管理情報を保持するためのセグメントで、 実身等の 1 つの独立した TAD データの場合は、 TAD 本体 ( 文章 / 図形データ ) 前に必ずなくてはならない。 このセグメントは参照情報として意味を持つが、 バージョンが異なる場合の処理はインプリメントに依存する。 原則として、バージョンアップがあった場合、仕様は上位互換となる。
ID : TS_INFO -- 管理情報セグメント LEN : 〜 DATA: UH subid -- 項目ID UH sublen -- 項目のバイト数 UH data[] -- 項目データ本体(sublen バイト) : : $lt;上記の繰り返し>
subid: 0 -- TAD 規格のバージョン番号 sublen: 2 data: UH ver -- 以下の形式の 3 桁 BCD コードによるバージョン番号 0000 AAAA BBBB CCCC : バージョン A.BC 例:バージョン1.2のとき AAAA = 0001 BBBB = 0010 CCCC = 0000 subid: 1〜 -- 予約
文章データの開始および終了を表すセグメントで、 文章開始セグメントと文章終了セグメントに囲まれた部分が 1 つの文章データとなる。
ID : TS_TEXT -- 文章開始セグメント LEN : 24 DATA: RECT view -- 表示領域 RECT draw -- 描画領域 UNITS h_unit -- 水平ユニット UNITS v_unit -- 垂直ユニット UH lang -- デフォールト言語 UH bgpat -- 背景パターン ID ID : TS_TEXTEND -- 文章終了セグメント LEN : 0 DATA: なし
日本語: | 0x0021 |
図形データの開始および終了を表すセグメントで、 図形開始セグメントと図形終了セグメントに囲まれた部分が 1 つの図形データとなる。
ID : TS_FIG -- 図形開始セグメント LEN : 24 DATA: RECT view -- 表示領域 RECT draw -- 描画領域 UNITS h_unit -- 水平ユニット UNITS v_unit -- 垂直ユニット W ratio -- 倍率 ID : TS_FIGEND -- 図形終了セグメント LEN : 0 DATA: なし
画像セグメントは、画像データを表すセグメントであり、 TAD 文章データ、図形データの中に埋め込まれる。 画像セグメントは、それ自体で独立した座標単位およびカラー情報を持ち、 BTRON仕様ディスプレイ・プリミティブ で規定されている圧縮ビットマップ形式で表現される。
xxxx xxxx Ixxx PRRR
カラーマップ ( ピクセル値に対応するカラー表現を示した配列 )
のバイト数、およびオフセットを示す。
カラーマップのバイト数 ( cinfo[0]
) = 0
の場合は、カラーマップ
は未定義であることを意味する。
カラー表現データ ( ピクセル値 ) が
どのようにカラー表現に対応するかを示す。
cinfo[0] = 0
の場合は、
カラー表現データは未定義であることを意味する。
cinfo[0] -- 白黒の有効階調ビット数とその位置 cinfo[1] -- 未使用 cinfo[2] -- 未使用 cinfo[3] -- 未使用
cinfo[0] -- 赤の有効階調ビット数とその位置 cinfo[1] -- 緑の有効階調ビット数とその位置 cinfo[2] -- 青の有効階調ビット数とその位置 cinfo[3] -- 未使用
cinfo[0] -- シアンの有効階調ビット数とその位置 cinfo[1] -- マゼンタの有効階調ビット数とその位置 cinfo[2] -- 黄の有効階調ビット数とその位置 cinfo[3] -- 黒の有効階調ビット数とその位置
各データの下位バイトは階調ビット数を示し、
上位バイトはピクセル値上の LSB を 0 としたビット位置を示す。
例として、ピクセル値の表現が、
....BBBBGGGGGGRRRRRR
の場合は、
cinfo[0] → 0x0006 cinfo[1] → 0x0606 cinfo[2] → 0x0c04となる。
UH ext_id -- 拡張情報のタイプ ( ext_id の MSB = 0 ) UH len -- 拡張情報のバイト数 UB data[] -- 拡張情報本体 ( len バイト )
UH ext_id -- 拡張情報のタイプ( ext_id の MSB = 1 ) UH len -- 拡張情報のバイト数 UW offset -- 拡張情報本体へのオフセット
len : 4 data: COLOR bgcol -- 背景色の指定
仮身セグメントは、仮身を示すセグメントであり、TAD 文章データ、 図形データの中に埋め込まれて、他の実身の参照を意味する。 仮身セグメントには、仮身を表示するための各種の情報、 およびデフォールト・アプリケーション実行のための固有データ情報が入る。 仮身自体の内容は、リンク ( 仮身 ) レコードとして別に存在し、 実身中の出現順により 1 対 1 に仮身セグメントとの対応が取られる。 リンク・レコードには BTRON 仕様ファイル管理機能で使用されるファイルを示す情報の他に、以下の情報が含まれている。
仮身セグメントおよびリンクレコードは、 BTRON仕様実身/仮身マネージャ機能によりサポートされるため、通常、アプリケーションは直接アクセスしない。
ID : TS_VOBJ -- 仮身セグメント LEN : 〜 DATA: RECT view -- 表示領域 H height -- 開いた場合の仮身高さ CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 COLOR bgcol -- 開いた場合の背景色 UH dlen -- 固有データのバイト長 UB data[dlen] -- 固有データ( dlen バイト)
機能付箋セグメントは、
アプリケーションを起動するための各種のパラメータを保持するもので、
他に付箋自身の表示用の情報も保持している。
通常、機能付箋セグメントは、
独立した機能付箋レコードまたは実行機能付箋レコードとして存在する。
機能付箋セグメントが独立した機能付箋レコード
または実行機能付箋レコードとして存在する場合には、
セグメント先頭のセグメント ID、0xFF
、
およびデータ長のフィールドは省略されレコードの内容は DATA 部のみとなる。
セグメント ID とデータ長は、レコードタイプとレコード長で示される。
ID : TS_FFUSEN -- 機能付箋セグメント LEN : 〜 DATA: RECT view -- 表示領域 CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 UH pict -- ピクトグラム / タイプ UH appl[3] -- アプリケーション ID UB name[32] -- 付箋名 UB type[32] -- データタイプ名 UH dlen -- 固有データのバイト長 UB data[dlen] -- 固有データ ( dlen バイト )
指定付箋セグメントは、TAD データの中に埋め込まれる、 アプリケーション固有のデータとして解釈されるデータである。
1 つ以上の指定付箋セグメントを
独立した指定付箋レコードとして存在させることができる。
指定付箋レコードに1つの指定付箋セグメントしか含まれない場合でも、
セグメント先頭のセグメント ID、0xFF
、
およびデータ長のフィールドは省略することはできない。
固有データのバイト長は、仮身セグメントや、
機能付箋セグメントと異なり、UW
となる。
ID : TS_DFUSEN -- 指定付箋セグメント LEN : 〜 DATA: RECT view -- 表示領域 CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 UH pict -- ピクトグラム / タイプ UH appl[3] -- アプリケーション ID UB name[32] -- 付箋名 UW dlen -- 固有データのバイト長 UB dat[dlen] -- 固有データ ( dlen バイト )
文章付箋セグメントは、 文章データ中に埋め込まれる指定付箋であり、 ページ割付け指定、行書式指定、文字指定、 文字修飾指定等の主に文章データを 2 次元的に表現するための情報を保持している。 文章付箋セグメントは文章データ中に埋め込まれるため、位置情報を持たない。 また、名称、表示色等の表示情報も持たないため、 文章付箋セグメント自体の表示方法はアプリケーションに依存する。 標準文章付箋セグメントとして、以下のものが定義されている。
標準文章付箋セグメント | セグメントID | |
---|---|---|
文章ページ割付け指定付箋 | TS_TPAGE | (0xA0) |
行書式指定付箋 | TS_TRULER | (0xA1) |
文字指定付箋 | TS_TFONT | (0xA2) |
特殊文字指定付箋 | TS_TCHAR | (0xA3) |
文字割付け指定付箋 | TS_TATTR | (0xA4) |
文字修飾指定付箋 | TS_TSTYLE | (0xA5) |
(予約) | ------ | (0xA6 〜0xAC) |
変数参照指定付箋 | TS_TVAR | (0xAD) |
文章メモ指定付箋 | TS_TMEMO | (0xAE) |
文章アプリケーション指定付箋 | TS_TAPPL | (0xAF) |
文章付箋セグメントは以下に示す構造を持ち、 サブ ID により詳細な内容が規定される。 なお、サブ ID は、0 〜 127 の範囲の値を TAD 標準として使用し、 128 〜 255 は未定義 ( アプリケーション依存 ) とする。 アプリケーション依存の文章付箋セグメントには、 アプリケーション ID が含まれていないため、 異なるアプリケーション間での互換性は保証されない。
文字割付け付箋、および文字修飾付箋は、 サブ ID により区別される開始付箋と終了付箋に囲まれた範囲に対してのみ有効となる。 他の文章付箋セグメントは、 環境条件の指定であるため有効範囲の指定は特になく、 再度、環境が指定されるまで有効となる。 文章付箋セグメントの機能は非常に広範囲に渡るため、 基本レベルと拡張レベルの文章付箋セグメントにレベル分けされており、 原則的に文章を取り扱うアプリケーションは、 少なくとも基本レベルはサポートしているものとする。
文章ページ割付け指定付箋は、 文章データを指定した用紙上に ページ単位でレイアウトを行なうための情報を保持する付箋であり、 図形データ中に埋め込まれた文章データの場合は通常無視される。
文章データをレイアウトする用紙の大きさを指定する。 ここで指定するのは、レイアウト用紙であり、 実際に印刷される時の用紙 ( 印刷用紙 ) ではない。 レイアウト用紙にレイアウトした結果を、実際にどの印刷用紙に、 どのように印刷するか ( 例えば、印刷方向 ( ポートレイト / ランドスケープ ) は、 印刷時の指定による。 例えばレイアウト用紙が A4 の時、印刷時に、印刷用紙を A5 とすると、 A4 用紙にレイアウトされた結果が、 A5 用紙に縮小されて印刷されることになる。
LEN : 14 SUBID: 0 ATTR : UB attr -- 面付け、綴じ方向指定 DATA : UH length -- 用紙の長さ UH width -- 用紙の幅 UH top -- オーバーレイ上マージン ( 天 ) UH bottom -- オーバーレイ下マージン ( 地 ) UH left -- オーバーレイ左マージン ( ノド ) UH right -- オーバーレイ右マージン ( 小口 )
オーバーレイ・マージンは、後述するオーバーレイ領域のマージン指定であり、
実際に文字をレイアウトする本文領域のマージンではない。
用紙の大きさ、オーバーレイ・マージンの指定は、
すべて座標系単位の値で示される。
用紙とオーバーレイ・マージンの関係を以下に示す。
文章データの本文のレイアウト領域のマージンを指定する。
LEN : 10 SUBID: 1 ATTR : UB − -- 未使用 DATA : UH top -- 上マージン ( 天 ) UH bottom -- 下マージン ( 地 ) UH left -- 左マージン ( ノド ) UH right -- 右マージン ( 小口 )
ここでのマージンは、本文のレイアウト用のマージンを意味する。
通常、本文のレイアウト領域はオーバーレイ領域より小さい。
用紙指定で 2 面付け指定を行なった場合は、
偶数ページでは、左右マージンは逆転する。
また、右綴じの指定を行なった場合も、左右マージンは逆転する。
マージンの値が、0xFFFF
の場合は、
そのマージンは変更せずに現在の値を適用することを意味する。
例えば、左マージンのみを変更する場合は、上マージン、
下マージン、右マージンの値を 0xFFFF
とする。
マージンの指定は、すべて座標系単位の値で示される。
ページのレイアウトを複数コラム ( 段組み ) で行なうための指定であり、 コラム数と、コラムマージン ( コラム間余白 ) を指定する。 各コラムは均等幅となる。
LEN : 4, 6 SUBID: 2 ATTR : UB column -- コラム数、およびコラム長均等化指定 DATA : UH colsp -- コラムマージン [ UH colline -- コラム間罫線 ]
DIWW KKKK
段組みの場合は、改コラムコード ( 0x0B
) により、
次 ( 右 ) のコラムに移行する。
例えば、column = 3 の時は、以下に示す段組みとなる。
コラム長の均等化を指定した場合、 次のコラム指定付箋の直前までの文章データを各コラムに均等に振り分け、 文章データが格納された各コラムの長さが揃うようにレイアウトされる。 直後に段抜き見出しを配置するような場合や文書の最終データの場合に使用される。 コラム長の均等化を指定しない場合は、改コラムコードが現れない限り、 各コラムに順に文章データをページの最下部まで詰めてレイアウトされる。
ページ途中でコラム数を変更する場合、前のコラムが均等化指定されていれば、 指定位置から新しいコラム数に変化するが、 固定長指定の場合は次ページ以降しか変化しない場合がある。 例えば、2 段組から段組なしへ変更した場合を以下に示す。
用紙上に重ねてレイアウトするオーバーレイ情報を定義する。 オーバーレイは最大 16 枚まで重ねることができる。 この機能は、通常は柱、ノンブル等の指定に使用されるが、 用紙の右マージン ( 小口 ) や左マージン ( ノド ) 部分、 さらに本文のレイアウト領域にも重なった指定も可能である。 この指定付箋はオーバーレイの定義を行なうだけで、 実際にそのオーバーレイが有効となるのは、 用紙オーバーレイ指定付箋でオーバーレイ番号が指定された場合である。
LEN : 〜 SUBID: 3 ATTR : UB attr -- オーバーレイ番号 / ページ適用属性 DATA : UB data[] -- オーバーレイする文章データ
xxPP NNNN
【文字サイズ指定等の環境設定】 AAA【充填文字】BBB【充填文字】CCC<改段落> 【充填行】 DDD【充填文字】【変数参照:ページ番号】【充填文字】FFF<改段落>
指定した用紙オーバーレイを、 この付箋がレイアウトされたページから実際に適用することを指定する。 用紙オーバーレイ指定付箋が現れるとそれまでの指定は無効となり、 その付箋で指定されるオーバーレイ番号群によって新たな設定がされる。 オーバーレイ指定をすべて取り消すためには、 オーバーレイ番号を 1 つも指定しない用紙オーバーレイ指定付箋の指定が必要となる。 用紙オーバーレイ処理がされた結果がレイアウト用紙となり、 その上に本文がレイアウトされる。
LEN : 4 SUBID: 4 ATTR : UB --- -- 未使用 DATA : UH overlay -- オーバーレイ指定
指定した大きさの枠をあけてレイアウトすることを指定する。 この付箋の直後に図形データが存在する場合は、 その図形データを枠内の中央に配置する。
LEN : 10 SUBID: 5 ATTR : UB attr -- 枠あけ属性 DATA : RECT area -- 枠あけ領域
APKx HHVV
attr が P = 0 の時は、枠あけ指定付箋が現れた位置以降で、 H, V あるいは area で指定された条件を満たす位置にレイアウトする。 従って、付箋が現れたページに配置されないことがありうる。 一方、P = 1 の時は、付箋の現れたページ内の条件を満たす位置に配置するため、 文章データの再レイアウト処理が発生する。
現在のページ番号、およびページ番号の増加ステップ数を指定する。 この付箋が存在するページから有効となる。
LEN : 4 SUBID: 6 ATTR : B step -- ページの増加ステップ DATA: UH num -- ページ開始番号
指定した条件に適合した場合に、改ページを行なう。
LEN : 2,4 SUBID: 7 ATTR : UB cond -- 条件 DATA :[ SCALE remain -- 残り領域指定 ]
見だしの直後で改ページされることを防ぐためには、 下記のパラメータを持つ付箋を見だしデータの直前に設定する ( この機能は、 タブ書式指定付箋の属性 P = 1 の場合に相当する )。
cond ( 条件 ) = 2 remain = ( 見だし行の高さ ) + ( 行間 ) + ( 本文行の高さ )
cond ( 条件 ) = 2 remain = ( 段落全体の高さ ( 行間も含む ) )
用紙の空き領域を空行で充填する。 1 つのページに複数の充填行がある場合は、 それぞれの充填行の高さは均等となる。
LEN : 2 SUBID: 8 ATTR : UB − -- 未使用
行書式指定付箋は、
行書式に関連する指定を行なう付箋であり、
必ず行または段落の区切りに存在する。
行または段落の区切りでない場合は、
この付箋の直前に行または段落の区切りがあるものと見なされる。
段落の概念を持たない従来のデータを交換する場合、
改行機能を現わすためには改段落コード ( 0x0A
) を用い、
改行コード ( 0x0D
) はフィールド内の改行でのみ使用する。
行ピッチの値としては、
改段落コードの場合には段落ピッチが、
改行コードの場合には改行ピッチが用いられる。
行書式としては、大きく以下の 2 種類があり、
いずれも段落単位で指定することになる。
次 ( 右 ) のフィールドへ移動する。
右端のフィールドでのタブコードは一番先頭 ( 左 )
のフィールドへ移動する。
行の間隔を指定する。行の区切りとなる。
LEN : 4 SUBID: 0 ATTR : UB attr -- 属性指定 DATA : SCALE pitch -- 間隔指定
Dxxx xxxG
横書きの場合は、以下のようになる。
行高さの定義は、 行中の最大の文字の大きさ ( 拡大縮小された結果を含む ) である。 但し、行中の文字に付加された添字 あるいはルビ文字列は行の高さには含まれない。 埋め込み図形および仮身の高さは行高さに含まれるが、 行間隔の基準値には含まれない。
行間隔を指定する SCALE タイプのデータ。 比率指定の場合の基準値は行高さ ( ただし、埋め込み図形、仮身の高さを除く ) となる。
行揃えの方法を指定する。行の区切りとなる。
LEN : 2 SUBID: 1 ATTR : UB align -- 行揃えの方法 align: 行揃えの方法 0: 左揃え 1: 中央揃え 2: 右揃え 3: 両端揃え 4: 均等揃え
両端揃えと均等揃えの違いは、 揃える対象の文字列が割り付け対象領域の両端に接するか、 両端に均等間隔の空白が埋められるかの違いである。
タブ書式を指定する。段落の区切りとなる。
LEN : 〜 SUBID: 2 ATTR : UB attr -- 属性 DATA : SCALE height -- 書式高さ指定 SCALE pargap -- 段落間隔指定 H left -- 行頭マージン H right -- 行末マージン H indent -- インデントマージン H ntabs -- タブストップ設定数 UH tabs[] -- タブストップ位置 ( ntabs 個 )
Rxxx xxPP
<段落 1> <書式指定付箋 A> <段落 2> <段落 3> <段落 4> <書式指定付箋 B> <段落 5> 段落 1 と 2 の間隔 : A の height 段落 2 と 3 の間隔 : A の pargap 段落 3 と 4 の間隔 : A の pargap 段落 4 と 5 の間隔 : B の height
フィールド書式を指定する。段落の区切りとなる。 フィールド書式中では、 データ列中のタブコードにより次の右側のフィールドへ移動し、 改段落コードにより新たな下の段落へ移動する。 フィールド書式は主に、タブコードで区切られたデータ1つのフィールドとした表 形式のデータ表現に使用される。
LEN : 〜 SUBID: 3 ATTR : UB attr -- 属性 DATA: SCALE height -- 書式指定付箋自身の高さ SCALE pargap -- 段落間隔 UH line -- フィールド段落線属性 H nfld -- フィールド設定数 -- UH fld -- フィールド開始位置 │ UH left -- フィールド内左マージン │ UH right -- フィールド内右マージン │ UH margin -- 小数点位置/インデントマージン -- UH f_attr -- フィールド属性 : : 上記のデータをフィールド設定数分繰り返す。
Rxxx xxPP
DIWW KKKK
左揃え -- インデントマージン 中央揃え -- 無視される 右揃え -- 無視される 両端揃え -- インデントマージン 均等揃え -- 無視される 小数点揃え -- 小数点揃え位置
HxWW KKKK xxxx xAAA
フィールド 1 | 5 |
フィールド 2 | 10 |
フィールド 3 | 25 |
フィールド 1 | 中央揃え、下線あり |
フィールド 2 | 左揃え、下線あり |
フィールド 3 | 任意 |
線の太さ | 線の種類 | |
上線: | 太線 | 実線 |
下線: | 任意 | 任意 |
フィールド1 | 5 |
フィールド2 | 10 |
フィールド3 | 20 |
フィールド4 | 30 |
フィールド5 | 40 |
揃え | 下線有無 | 左側の縦線 | |
フィールド1 | 中央揃え | なし | 太実線 |
フィールド2 | 中央揃え | なし | 太実線 |
フィールド3 | 中央揃え | なし | 細点線 |
フィールド4 | 中央揃え | なし | 細点線 |
フィールド5 | 任意 | なし | 太実線 |
線の太さ | 線の種類 | |
上線: | 太線 | 実線 |
下線: | 細線 | 実線 |
フィールド1 | 5 |
フィールド2 | 10 |
フィールド3 | 20 |
フィールド4 | 30 |
フィールド5 | 40 |
揃え | 下線有無 | 左側の縦線 | |
フィールド1 | 中央揃え | あり | 太実線 |
フィールド2 | 中央揃え | あり | 太実線 |
フィールド3 | 中央揃え | あり | 細点線 |
フィールド4 | 中央揃え | あり | 細点線 |
フィールド5 | 任意 | なし | 太実線 |
線の太さ | 線の種類 | |
上線: | 太線 | 実線 |
下線: | 任意 | 任意 |
<TAB>食費<TAB>娯楽費<TAB>雑費<TAB><改段落>
1月<TAB>42,000<TAB>10,000<TAB>6,200<TAB><改段落> 2月<TAB>51,000<TAB>6,500<TAB>12,000<TAB><改段落> 3月<TAB>44,000<TAB>40,000<TAB>10,000<TAB><改段落>
<改段落>
レイアウトする文字の方向を指定する。段落の区切りとなる。
LEN : 2 SUBID: 4 ATTR : UB txdir -- 文字列方向 txdir: で文字列の方向、即ち、縦書きか横書きかを示す。 0 : 横書き (左→右) 1 : 横書き (右→左) 2 : 縦書き
ページ途中で文字方向を変更した場合の解釈は以下のようになる。
行頭位置を一時的に移動する。
LEN : 2 SUBID: 5 ATTR : UB --- -- 未使用
直後の文字の文字開始位置に行頭位置を一時的に移動する。
改行、改段落、改コラムコード、もしくは、改行、改段落を伴う付箋が出現するまで有効となる。
1行内に複数個の「行頭移動指定付箋」が存在した場合は、最初のみ有効となり、
2番目以降は無視される。
文字指定付箋は、文字の表現形態の指定を行なう文章付箋セグメントである。
現在処理中の国語の文字セットでのフォントを、 フォントクラスおよびフォント ( ファミリー ) 名により指定する。
LEN : 4〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UH class -- フォントクラス [UB name[]] -- フォント ( ファミリー ) 名
フォントのバリエーションとしてのフォント属性を指定する。
LEN : 4 SUBID: 1 ATTR : UB − -- 未使用 DATA : UH attr -- フォント属性
文字サイズの指定を行なう。
LEN : 4 SUBID: 2 ATTR : UB − -- 未使用 DATA : CHSIZE size -- 文字サイズ
この付箋は基準となる文字サイズを指定し、文字拡大/縮小指定付箋、 または別の文字サイズ指定付箋が現れない限り、このサイズで表示される。 文字サイズ指定付箋が存在しない間は、 アプリケーション依存のデフォルトの文字サイズが基準となる。
文字サイズの拡大 / 縮小の指定を行なう。
LEN : 6 SUBID: 3 ATTR : UB − -- 未使用 DATA : RATIO h_ratio -- 文字高さ ( サイズ ) の拡大率 RATIO w_ratio -- 文字幅の拡大率
拡大 / 縮小の基準となる文字サイズは、 直前の文字サイズ指定付箋で指定された値であり、 拡大/縮小された値ではない ( アプリケーション依存のデフォルトの文字サイズが基準となる ) 。 例えば、通常幅 ==> 1 / 2幅 ==> 通常幅 の表現をこの付箋で行なう場合には、 文字幅を 1 / 2 倍にする付箋の後の文字列が 1 / 2 幅となり、 次に文字幅を 1 倍 ( 2 倍ではない ) にする付箋の後の文字列が通常幅となる。
文字の間隔を指定する。
LEN : 4 SUBID: 4 ATTR : UB attr -- 属性指定 DATA : SCALE pitch -- 間隔指定
DSxx xxxG
文字の回転を指定する。
LEN : 4 SUBID: 5 ATTR : UB abs -- 絶対 / 相対指定 DATA : UH angle -- 文字の横軸の反時計回りの回転角度 ( 360 度の剰余が有効 )
xxxx xxxA
文字のカラーを指定する。
LEN : 6 SUBID: 6 ATTR : UB − -- 未使用 DATA : COLOR color -- 文字カラーの指定
文字の基準位置 ( ベースライン ) の移動量を指定する。
LEN : 4 SUBID: 7 ATTR : UB attr -- 属性指定 DATA : SCALE base -- 基準位置移動量
Dxxx xxxx
特殊文字指定付箋は、 1 つの特殊な文字として取り扱われる文章付箋セグメントである。
任意の固定幅の空白を示す。 これは、1 つの文字として取り扱われるため、 行をまたがることはない。 つまり、指定された空白幅に満たないうちに行末に至った場合、 次の行の先頭から固定幅空白全体 ( 残りの空白ではない ) が配置される。
LEN : 4 SUBID: 0 ATTR : UB − -- 未使用 DATA : SCALE width -- 空白の幅
1 行または 1 つのフィールドの空き領域を指定した文字列で充填する。 1 行または 1 つのフィールド中に複数の充填文字がある場合は、 それぞれの充填文字の幅は均等となる。
LEN : 〜 SUBID: 1 ATTR : UB − -- 未使用 DATA: UB str[] -- 充填文字列
充填される領域は行またはフィールドの左端から右端の間であり、 以下に示す用途に使用される。
(1) 【充填文字:空白】AA<改行> (2) 【充填文字:空白】AA【充填文字:空白】<改行> (3) AA【充填文字:空白】BB<改行> (4) AA【充填文字:空白】BB【充填文字:空白】CC<改行> (5) 【充填文字:空白】A【充填文字:空白】B【充填文字:空白】<改行> (6) ○○【充填文字:abc】<改行> (7) 第1項【充填文字:--】1<改行><TAB>1.1【充填文字:--】2<改行>
罫線列を示す。この付箋は主に既存のデータの変換を目的としている。
LEN : 4 + 罫線列データ数 SUBID: 2 ATTR : UB type -- 罫線のタイプ DATA : UH count -- 罫線列の繰り返し数 UH lines[] -- 罫線指定データ列( LEN で指定されたデータ数 )
UUUU KKKK
UH vline : 上下の罫線属性 ( 上位バイトが上 ) UH hline : 左右の罫線属性 ( 上位バイトが左 ) : : ( 上記の 2 ワードのデータ列 )文字間 / 行間罫線の場合 ( type 1 ) :
UH tlline : 上及び左の罫線属性 ( 上位バイトが上 ) : : ( 上記の 1 ワードのデータ列 )罫線文字の場合 ( type 2 ):
UH code : 罫線文字の TRON コード : : ( 上記の1ワードのデータ列 )
上 -- vline の上位バイト 下 -- vline の下位バイト 左 -- hline の上位バイト 右 -- hline の下位バイト
( 文字罫線 )
罫線として取り扱う文字の TRON 仕様コードを指定する。
vline, hline, tlline で指定される罫線の属性は、以下のデータであり、
線幅 = 0 の場合は、その部分の罫線がないことを意味する。
DIWW KKKK
文字割付け指定付箋は、文字のレイアウトに関連する指定を行なうもので、 開始付箋と終了付箋に囲まれた範囲の文字データに対して有効となる。
文字列の途中での改行を禁止することを指定する付箋であり、結合開始と結合終了 で囲まれた、文字列の途中での改行を禁止する。 結合文字列が 1 行の幅より大きい場合の処理はインプリメントに依存する。
LEN : 2 SUBID: 0 -- 結合開始指定付箋 ATTR : UB − -- 未使用 LEN : 2 SUBID: 1 -- 結合終了指定付箋 ATTR : UB − -- 未使用
指定した幅の領域に文字を指定した方法により割付けることを指定する。 この付箋は、変数参照指定付箋と組み合せて、 不定長の文字列を固定の枠に割付ける場合に有効となる。
LEN : 4 SUBID: 2 -- 文字割付け開始指定付箋 ATTR : UB kind -- 種類 DATA : SCALE width -- 割り付け幅 LEN : 2 SUBID: 3 -- 文字割付け終了指定付箋 ATTR : UB − -- 未使用
【割付け開始】対象文字・・・【割付け終了】
文字の前または後ろに付く、上付き / 下付きの添字を指定する。 前付きの時は対象文字の直前に、後ろ付きの時は対象文字の直後に付箋をおく。
LEN : 6 SUBID: 4 -- 添字開始指定付箋 ATTR : UB type -- タイプ DATA : SCALE pos -- 文字位置の移動量 RATIO size -- 文字サイズの比率 LEN : 2 SUBID: 5 -- 添字終了指定付箋 ATTR : UB − -- 未使用
Fxxx xxDU
【添字開始】添字・・・【添字終了】対象文字 -- 前付き 対象文字【添字開始】添字・・・【添字終了】 -- 後付き
(1) 【上付き】AA【下付き】BB【終了】□ (2) 【上付き】AA【上付き】BB【終了】□ (3) 【上付き】AA【終了】【下付き】BB【終了】□ (4) 【上付き】AA【終了】【上付き】BB【終了】□
※ (2) では2つの添字のベース位置指定が異なるとする
(1) □【上付き】AA【下付き】BB【終了】 (2) □【上付き】AA【上付き】BB【終了】 (3) □【上付き】AA【終了】【下付き】BB【終了】 (4) □【上付き】AA【終了】【上付き】BB【終了】
※ (2) では2つの添字のベース位置指定が異なるとする
ルビを付けるための指定である。
LEN : 〜 SUBID: 6 -- ルビ開始指定付箋 ATTR : UB attr -- ルビ属性 DATA : UB rubi[] -- ルビ文字列 LEN : 2 SUBID: 7 -- ルビ終了指定付箋 ATTR : UB − -- 未使用
UUUU xxxP
【ルビ開始(ルビ文字)】対象文字・・・【ルビ終了】
行頭、行末の禁則処理の指定である。
LEN : 〜 SUBID: 8 -- 行頭禁則指定 ATTR : UB kind -- 行頭禁則タイプ [DATA : UB ch[]] -- 行頭禁則対象文字 LEN : 〜 SUBID: 9 -- 行末禁則指定 ATTR : UB kind -- 行末禁則タイプ [DATA : UB ch[]] -- 行末禁則対象文字
XXXL KKKK
文字修飾指定付箋は、文字の修飾を行なうもので、 開始付箋と終了付箋に囲まれた範囲の文字データに対して修飾が行なわれる。
文字列の修飾を指定する。
LEN : 2,6 SUBID: type -- 文字修飾開始付箋 ATTR : UB attr -- 属性 DATA : [COLOR color] -- 修飾カラー指定(省略可能) LEN : 2 SUBID: type + 1 -- 文字修飾終了付箋 ATTR : UB − -- 未使用 SUBID: 文字修飾のタイプ ( 終了付箋の場合の SUBID は対応する値 + 1 となる。)
0 : | 下線開始 | 1: | 下線終了 |
2 : | 上線開始 | 3: | 上線終了 |
4 : | 打ち消し線開始 | 5: | 打ち消し線終了 |
6 : | 枠囲み線開始 | 7: | 枠囲み線終了 |
8 : | 上 ( 右 ) 傍点開始 | 9: | 上 ( 右 ) 傍点終了 |
10 : | 下 ( 下 ) 傍点開始 | 11: | 下 ( 下 ) 傍点終了 |
12 : | 反転開始 | 13: | 反転終了 |
14 : | 網掛開始 | 15: | 網掛終了 |
18 : | 無印字開始 ( 終了付箋までのデータを印字しない ) | ||
19 : | 無印字終了 | ||
20〜127 : | ( 予約 ) | ||
128〜 : | 未定義 ( アプリケーション依存 ) |
下線、上線、打ち消し線、枠囲み線 の場合 : 以下の線属性
DIWW KKKK
上、下傍点の場合 : 以下の傍点属性
xxxx KKKK
反転の場合: 以下の反転属性
Axxx xxxx
網掛 / 背景の場合: 以下のパターン属性
AIDD KKKK
無印字の場合 : 意味を持たない。
【文字修飾開始】対象文字・・・【文字修飾終了】従って、異なる種類の文字修飾(例えば、網掛と下線) は重複して指定することができる。
【網掛開始】AA【下線開始】BB【網掛終了】CC【下線終了】 下線 |------| AABBCC |------| 網掛
変数参照指定付箋は、変数を参照する付箋であり、 指定した変数の現在の値を表現する文字列に置き換わることになる。
指定した変数の現在値を表現する文字列に置き換える。 変数の参照方法として、ID 番号を指定する場合と、 変数名を指定する場合がある。
LEN : 4 SUBID: 0 -- 変数参照 ATTR : UB − -- 未使用 DATA : H var_id -- 変数ID LEN : 〜 SUBID: 1 -- 変数参照 ATTR : UB − -- 未使用 DATA : UB name[] -- 変数名
参照する変数は、特定の ID または名前で予めユーザの実行環境に登録され ている必要があり、この登録は基本的に設定付箋により行なわれる。 正の変数 ID は自動的に登録されるシステム変数に使用され、 以下のものが定義されている。
0 : 自分自身の実身名 100 : 年 ( 西暦下 2 桁 ) 101 : 年 ( 元号 ) 110 : 月 ( 数字 ) 111 : 月 ( 数字 2 桁 ) 112 : 月 ( 英小文字 3 文字 ) 113 : 月 ( 英大文字 3 文字 ) 120 : 日 ( 数値 ) 121 : 日 ( 数値 2 桁 ) 200 : 現在ページ番号 ( 数字表現 ) 201 : 現在ページ番号 ( 小文字ローマ数字表現 ) 202 : 現在ページ番号 ( 大文字ローマ数字表現 ) 250 : 全体ページ番号 ( 数字表現 ) 251 : 全体ページ番号 ( 小文字ローマ数字表現 ) 252 : 全体ページ番号 ( 大文字ローマ数字表現 )
負の変数 ID は、アプリケーションにより定義されるユーザ変数として使用される。
文章メモ指定付箋は、ユーザが任意に設定したメモを保持する付箋である。 この内容は単なるメモとしての文字列であるが、 アプリケーションによっては、 メモ文字列の内容が所定の文字列と一致した場合には、 何らかの効果を持つ場合もある。
ユーザが設定したメモを保持する。
LEN : 〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UB memo[] -- メモ文字列
文章アプリケーション指定付箋は、 アプリケーションが独自に定義して使用する付箋であり、 その内容はアプリケーションにより規定される。 内容を定義しているアプリケーション ID が内部に含まれており、 同一データタイプ ID を持つアプリケーションのみ、 その内容を理解できることになる。
アプリケーション固有のデータを保持する。
LEN : 〜 SUBID: − -- アプリケーション定義 ATTR : UB − -- アプリケーション定義 DATA : UH appl[3] -- アプリケーションID UB param[] -- アプリケーション・パラメータ appl: 付箋の内容を定義しているアプリケーション ID。 アプリケーション ID 中のデータ ID 毎にこの付箋の内容が定義され る。
ルビを付けるための指定である。
LEN : 〜 SUBID: 6 -- ルビ開始指定付箋 ATTR : UB attr -- ルビ属性 DATA : UB rubi[] -- ルビ文字列 LEN : 2 SUBshared_data/tad3.html 0100664 0000353 0000031 00000155042 06716713367 0015320 0 ustar 00kubo btron2 0000243 00000023.6 図形描画セグメント この章の目次にもどる
前頁:3.5 文章付箋セグメントにもどる
次頁:第4章 フロッピーディスク形式にすすむ
3.6 図形描画セグメント
3.6.1 概要
図形描画セグメントは、 図形を表現するために図形データ中に埋め込まれるセグメントである。 標準図形描画セグメントとして、以下のものが定義されている。
図形描画セグメント | セグメントID | |
---|---|---|
図形要素セグメント | TS_FPRIM | (0xB0) |
データ定義セグメント | TS_FDEF | (0xB1) |
グループ定義セグメント | TS_FGRP | (0xB2) |
マクロ定義/参照セグメント | TS_FMAC | (0xB3) |
図形修飾セグメント | TS_FATTR | (0xB4) |
図形ページ割付け指定付箋 | TS_FPAGE | (0xB5) |
(予約) | ------ | (0xB6〜0xBD) |
図形メモ指定付箋 | TS_FMEMO | (0xBE) |
図形アプリケーション指定付箋 | TS_FAPPL | (0xBF) |
図形描画セグメントは以下に示す構造を持ち、 サブIDにより詳細な内容が規定される。 なお、 サブID は、0〜127の範囲の値をTAD標準として使用し、 128〜255は未定義(アプリケーション依存)とする。 アプリケーション依存の図形描画セグメントには、 アプリケーションIDが含まれていないため、 異なるアプリケーション間での互換性は保証されない。
図形描画セグメントも文章付箋セグメントと同様に、 基本レベルと拡張レベルにレベル分けされており、 原則的に図形を取り扱うアプリケーションは、 少なくとも基本レベルはサポートしているものとする。
図形要素セグメントは、 図形データとして表現される実際の図形を示すセグメントであり、 標準の図形要素として、以下のものがある。 これらの図形要素セグメントの基本的な考え方 (ハーフオープンプロパティ等)は、ディスプレイプリミティブでの規定に従う。
<閉じた図形要素>長方形 -- 長方形 角丸長方形 -- 角の丸い長方形 楕円 -- 楕円および正円 扇形 -- (楕)円弧と、その両端と中心を結ぶ線で囲まれた図形 弓形 -- (楕)円弧と、その両端を結ぶ線で囲まれた図形 多角形 -- 多角形、および角の丸い多角形 曲線 -- 点列による曲線で囲まれた図形<開いた図形要素>
直線 -- 直線 楕円弧 -- 楕円弧および円弧 折れ線 -- 連続した直線列 曲線 -- 点列による曲線<点図形要素>
マーカー列 -- 任意位置のマーカーの列<任意図形要素>
任意図形 -- 外周点の列で指定した図形
図形要素セグメントには、以下の共通的なパラメータが存在する。 これらのパラメータは、図形要素セグメント毎に指定される。
<描画モード>描画モードは、描画の対象とするピクセルに、 書き込むべきピクセル値(src)と、 既に現在のピクセル値 (dest) と、 描画後のピクセル値 (result) との関係を規定するものであり、 以下に示すものが用意されている。
0 STORE : (src) → (result) 1 XOR : (src) XOR (dest) → (result) 2 OR : (src) OR (dest) → (result) 3 AND : (src) AND (dest) → (result) 4 CPYN : (NOT (src)) → (result) 5 XORN : (NOT (src)) XOR (dest) → (result) 6 ORN : (NOT (src)) OR (dest) → (result) 7 ANDN : (NOT (src)) AND (dest) → (result) 8〜 予約<線属性>
開いた図形、
および閉じた図形の外周線に使用される線の属性を示す UH の値。
任意図形には適用されない。
TTTT TTTT WWWW WWWW
開いた図形、
および閉じた図形の外周線に使用される描画パターンを示す UH の値。
線属性の線幅が0の場合、および任意図形には適用されない。
0 : 透明 0以外: 「パターン定義セグメント」により定義されたID<塗り潰しパターン>
閉じた図形、
および任意図形の内部の塗り潰しに使用される描画パターンを示す UH の値。
開いた図形には適用されない。
0 : 透明 0以外: 「パターン定義セグメント」により定義されたID<回転角>
長方形、楕円、楕円弧等の図形要素は、
その外接長方形により図形が定義される。
この外接長方形は、水平軸(横辺)が水平の長方形を、
その左上の点を中心として、
反時計周りに回転した図形として表現される。
回転角は、この回転角度を示す。UH の値で、360の剰余の値が有効となる。
多角形、直線、折れ線、曲線、および任意図形には適用されない。
長方形を示す。
LEN : 18 SUBID: 0 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角 RECT frame -- 外接長方形
角丸長方形を示す。
LEN : 22 SUBID: 1 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 UH rh -- 丸めの水平直径 UH rv -- 丸めの垂直直径 RECT frame -- 外接長方形
楕円、または正円を示す。
LEN : 18 SUBID: 2 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 RECT frame -- 外接長方形
扇形を示す。
扇形は(楕)円弧と、その両端と中心を結ぶ線で囲まれた図形である。
LEN : 26 SUBID: 3 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 RECT frame -- 外接長方形 PNT start -- 開始点 PNT end -- 終了点
弓形を示す。
弓形は(楕)円弧と、その両端結ぶ線で囲まれた図形である。
LEN : 26 SUBID: 4 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 RECT frame -- 外接長方形 PNT start -- 開始点 PNT end -- 終了点
多角形を示す。
LEN : 〜 SUBID: 5 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH round -- 角の丸めの円の直径:拡張レベル UH np -- 点数(>2) PNT pt[np] -- 点の配列(np 個の要素)
直線を示す。
LEN : 14 SUBID: 6 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID PNT start -- 開始点 PNT end -- 終了点
楕円弧、または円弧を示す。
LEN : 24 SUBID: 7 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH angle -- 回転角度 RECT frame -- 外接長方形 PNT start -- 開始点 PNT end -- 終了点
折れ線(連続した直線列)を示す。
LEN : 〜 SUBID: 8 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH round -- 角の丸め:拡張レベル UH np -- 点数 (>1) PNT pt[np] -- 点の配列(np 個の要素)
点列による曲線を示す。
LEN : 〜 SUBID: 9 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID H type -- 曲線のタイプ UH np -- 点数 (>0) PNT pt[np] -- 点の配列(np 個の要素)
マーカ列を示す。
LEN : 〜 SUBID: 10 ATTR : UB mode -- 描画モード DATA : UH marker -- マーカーID UH np -- 点数 (>0) PNT pt[np] -- 点の配列(np 個の要素) pt[] で指定した np 個の位置に marker で指定したマーカーを描画する。 marker: 「マーカー定義セグメント」により定義されたマーカーID。
外周点の列で指定した任意図形を示す。 任意図形は、各垂直座標毎に水平座標の複数の点を指定することにより定義され、 2つの隣接した水平座標値で囲まれた範囲が、任意図形の領域となる。
LEN : 〜 SUBID: 11 ATTR : UB mode -- 描画モード DATA : UH f_pat -- 塗り潰しパターンID UH sy -- 垂直座標の開始値(最小値) UH nr -- 垂直座標数 H bx -- 水平座標値のバイアス <垂直座標値 sr 〜 sr+nr-1 にそれぞれ対応した、以下に示す 水平座標値列の要素が nr 個連続する> UH nh -- 水平座標の数 UH h[nh] -- 水平座標の値 (nh 個の要素) : :
データ定義セグメントでは、 図形要素セグメントから参照される以下のデータの定義を行なう。
定義したデータは、定義以降に有効となり、 定義時に指定したIDにより参照されることになる。 同一のタイプのデータの同一のIDが既に定義されていた場合は、 新しい定義が有効となる。
データのタイプによっては、 デフォールトとして定義済みのいくつかのIDが存在するが、 そのIDを別の定義とすることも可能である。
定義したIDは、その図形データの中でのみ有効であり、 埋め込み図形データを含む場合は、 埋め込み図形データ内にも有効となる。 即ち、図形データがネスティングしている場合は、以下のようになる。
現在(一番内側)の図形データ内で定義されているIDが有効であるが、現在の 埋め込み図形データ内で定義されていない場合は、一番近い外側の図形データ 内で定義されているIDが有効となる。
図形データ内で使用するカラーマップを定義する。 この定義以降に、インデックスによるカラー表現が使用された場合に、 このカラーマップが有効となる。
LEN : 〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UH nent -- エントリ数 COLOR col[nent] -- カラーマップ (nent 個の要素)
パターン定義や、マーカー定義に使用される、マスクデータを定義する。
LEN : 〜 SUBID: 1 ATTR : UB type -- マスク定義タイプ DATA : UH id -- 定義するマスクID <type=0の場合> UH hsize -- 横のサイズ UH vsize -- 縦のサイズ UB mask[] -- マスクビットマップ
1 0 % メッシュマスク 2 12.5 % メッシュマスク 3 25 % メッシュマスク 4 50 % メッシュマスク 5 75 % メッシュマスク 6 87.5 % メッシュマスク 7 100 % メッシュマスク 8 縦線 9 横線 10 右上がり斜線 11 右下がり斜線 12 縦横クロスハッチ 13 斜線クロスハッチ
線パターン、または塗り潰しパターンを定義する。
LEN : 〜 SUBID: 2 ATTR : UB type -- パターン定義タイプ DATA : UH id -- 定義するパターンID <type=0の場合> UH hsize -- 横のサイズ UH vsize -- 縦のサイズ UH ncol -- 前景カラー数 COLOR fgcol[ncol] -- 前景色 (ncol 個の要素) COLOR bgcol -- 背景色 UH mask[ncol] -- マスクID(ncol 個の要素)
LEN : 〜 SUBID: 3 ATTR : UB type -- 線種定義タイプ DATA : UH id -- 定義する線種ID <type=0 の場合> UH nb -- 線種定義バイト数 UB mask[nb] -- 線種定義バイト列
0 実線 1 破線 2 点線 3 一点鎖線 4 二点鎖線 5 長破線
LEN : 〜 SUBID: 4 ATTR : UB type -- マーカー定義タイプ DATA : UH id -- 定義するマーカーID <type=0 の場合> UH size -- マーカーサイズ COLOR fgcol -- マーカー色 [UH mask -- マスクデータID]
0 点 ・ 1 プラス + 2 星印 * 3 丸 ○ 4 バツ ×
グループ定義開始セグメントと終了セグメントで囲んだセグメント群が1つのグル ープとしてまとまっていることを示す。グループは任意のネスティングが可能であ る。
このグループ定義は、座標系、データ定義の有効範囲等には一切影響を与えないた め、主にアプリケーションによるデータの意味付けに利用される。座標系、データ 定義が異なる場合は、埋め込み図形データとして定義する必要がある。
LEN : 4 SUBID: 0 -- グループ開始 ATTR : UB − -- 未使用 DATA : UH id -- グループID LEN : 2 SUBID: 1 -- グループ終了 ATTR : UB − -- 未使用
マクロ定義開始セグメントと終了セグメントで囲んだ
セグメント群を1つのマクロとして定義する。
定義したマクロは後にマクロ参照付箋により参照することができる。
マクロは任意のネスティングが可能である。
定義したマクロIDのスコープは、データ定義セグメントの場合と同様である。
LEN : 4 SUBID: 0 -- マクロ定義開始 ATTR : UB − -- 未使用 DATA : UH id -- 定義するマクロID LEN : 2 SUBID: 1 -- マクロ定義終了 ATTR : UB − -- 未使用 id: 定義するマクロのID。(0〜)
マクロを参照する。パラメータを持たないため、 マクロの参照は単なる置換を意味する。
LEN : 4 SUBID: 2 ATTR : UB − -- 未使用 DATA : UH id -- 参照するマクロID
図形修飾セグメントは、直後に続く有効セグメントを修飾する機能を持つ。 有効セグメントとは、実際に図形描画を行なうセグメントを意味し、 その有効範囲は以下に示す通りとなる。
通常の図形セグメント -- そのセグメントのみ グループセグメント -- グループ内全体 マクロ参照セグメント -- マクロ内全体 埋め込み図形 -- 埋め込み図形全体 埋め込み文章 -- 埋め込み文章全体 画像セグメント -- そのセグメントのみ
LEN : 〜 SUBID: 0 ATTR : UB type -- 修飾タイプ DATA : <type=0の場合> UH arrow -- 矢印属性
xxxx xxxx xxxx xxES S: 開始点に矢印 E: 終了点に矢印
直後に続く有効セグメントの一時的な座標変換(傾斜、回転、移動)を行なう。
LEN : 6, 8, 10 SUBID: 1 ATTR : UB − -- 未使用 DATA : H dh -- 水平座標移動量 H dv -- 垂直座標移動量 [UH hangle -- 水平軸回転角度] [H vangle -- 垂直軸回転角度]
この付箋の直後に続く有効セグメントの座標値 (x,y) を以下の一連の座標変換 処理によって変換した結果 (x''', y''') の図形を意味する。
x' = x + y・tan(vangle) y' = y
x'' = x'・cos(hangle) + y'・sin(hangle) y'' = −x'・sin(hangle) + y'・cos(hangle)
x''' = x''+ dh y''' = y''+ dv
直後の有効セグメントが、埋め込み図形、埋め込み文章、および画像セグメントの 場合は、view 座標系に対する変換を意味する。即ち、draw から view への変換が なされたのち、上記の座標変換が行なわれる。
図形ページ割付け指定付箋は、 図形データを指定した用紙上にページ単位でレイアウトを行なうための情報を保持する付箋である。 図形ページ割付け指定付箋は、文章ページ割付け指定付箋と全く同一の内容を持ち、以 下のように対応づけられる。
文章ページ割り付け指定付箋 | 図形ページ割り付け指定付箋 |
---|---|
(TS_TPAGE : 0xA0) | (TS_FPAGE : 0xB5) |
0:用紙指定付箋 | 0:用紙指定付箋 |
1:マージン指定付箋 | 1:マージン指定付箋 |
2:コラム指定付箋 | 2:− (未定義) |
3:用紙オーバーレイ定義付箋 | 3:用紙オーバーレイ定義付箋 |
4:用紙オーバーレイ指定付箋 | 4:用紙オーバーレイ指定付箋 |
5:枠あけ指定付箋 | 5:− (未定義) |
6:ページ番号指定付箋 | 6:ページ番号指定付箋 |
7:条件改ページ指定付箋 | 7:− (未定義) |
8:充填行指定付箋 | 8:− (未定義) |
図形ページ割り付け指定付箋が図形要素セグメントの後に存在している場合、 および、複数個存在した場合の処理は処理系に依存する。
図形メモ指定付箋は、ユーザが任意に設定したメモを保持する付箋である。 この内容は単なるメモとしての文字列であるが、 アプリケーションによっては、 メモ文字列の内容が所定の文字列と一致した場合には、 何らかの効果を持つ場合もある。 図形メモ指定付箋は表示に関する情報を保持していないため、 表示方法はアプリケーションに依存する。
ユーザが設定したメモを保持する。
LEN : 〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UB memo[] -- メモ文字列
図形アプリケーション指定付箋は、 アプリケーションが独自に定義して使用する付箋であり、 その内容はアプリケーションにより規定される。 内容を定義しているアプリケーションIDが内部に含まれており、 同一データタイプIDを持つアプリケーションのみ、 その内容を理解できることになる。 図形アプリケーション指定付箋は表示に関する情報を保持していないため、 表示方法はアプリケーションに依存する。
アプリケーション固有のデータを保持する。
LEN : 〜 SUBID: − -- アプリケーション定義 ATTR : UB − -- アプリケーション定義 DATA : UH appl[3] -- アプリケーションID UB param[] -- アプリケーション・パラメータ
管理情報セグメント | TS_INFO | (0xE0) | |
文章開始セグメント | TS_TEXT | (0xE1) | |
文章終了セグメント | TS_TEXTEND | (0xE2) | |
図形開始セグメント | TS_FIG | (0xE3) | |
図形終了セグメント | TS_FIGEND | (0xE4) | |
画像セグメント | TS_IMAGE | (0xE5) | |
仮身セグメント | TS_VOBJ | (0xE6) | |
指定付箋セグメント | TS_DFUSEN | (0xE7) | |
機能付箋セグメント | TS_FFUSEN | (0xE8) | |
設定付箋セグメント | TS_SFUSEN | (0xE9) | |
文章ページ割付け指定付箋 | TS_TPAGE | (0xA0) | |
行書式指定付箋 | TS_TRULER | (0xA1) | |
文字指定付箋 | TS_TFONT | (0xA2) | |
特殊文字指定付箋 | TS_TUB | (0xA3) | |
文字割付け指定付箋 | TS_TATTR | (0xA4) | |
文字修飾指定付箋 | TS_TSTYLE | (0xA5) | |
(予約) | ------ | (0xA6〜0xAC) | |
変数参照指定付箋 | TS_TVAR | (0xAD) | |
文章メモ指定付箋 | TS_TMEMO | (0xAE) | |
文章アプリケーション指定付箋 | TS_TAPPL | (0xAF) | |
図形要素セグメント | TS_FPRIM | (0xB0) | |
データ定義セグメント | TS_FDEF | (0xB1) | |
グループ定義セグメント | TS_FGRP | (0xB2) | |
マクロ定義/参照セグメント | TS_FMAC | (0xB3) | |
図形修飾セグメント | TS_FATTR | (0xB4) | |
図形ページ割付け指定付箋 | TS_FPAGE | (0xB5) | |
(予約) | ------ | (0xB6〜0xBD) | |
図形メモ指定付箋 | TS_FMEMO | (0xBE) | |
図形アプリケーション指定付箋 | TS_FAPPL | (0xBF) |
ID : TS_INFO -- 管理情報セグメント LEN : 〜 DATA: UH subid -- 項目ID UH sublen -- 項目のバイト数 UH data[] -- 項目データ本体(sublen バイト) : :<上記の繰り返し>
ID : TS_TEXT LEN : 24 DATA: RECT view -- 表示領域 RECT draw -- 描画領域 UNITS h_unit -- 水平ユニット UNITS v_unit -- 垂直ユニット UH lang -- デフォールト言語 UH bgpat -- 背景パターンID
ID : TS_TEXTEND LEN : 0 DATA: なし
ID : TS_FIG LEN : 24 DATA: RECT view -- 表示領域 RECT draw -- 描画領域 UNITS h_unit -- 水平ユニット UNITS v_unit -- 垂直ユニット W ratio -- 倍率
ID : TS_FIGEND LEN : 0 DATA: なし
ID : TS_VOBJ LEN : 〜 DATA: RECT view -- 表示領域 H height -- 開いた場合の仮身高さ CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 COLOR bgcol -- 開いた場合の背景色 UH dlen -- 固有データのバイト長 UB data[dlen] -- 固有データ(dlen バイト)
ID : TS_FFUSEN LEN : 〜 DATA: RECT view -- 表示領域 CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 UH pict -- ピクトグラム/タイプ UH appl[3] -- アプリケーションID UB name[32] -- 付箋名 UB type[32] -- データタイプ名 UH dlen -- 固有データのバイト長 UB data[dlen] -- 固有データ(dlen バイト)
ID : TS_DFUSEN LEN : 〜 DATA: RECT view -- 表示領域 CHSIZE chsz -- 文字サイズ COLOR frcol -- 枠の色 COLOR chcol -- 文字の色 COLOR tbcol -- タイトル背景色 UH pict -- ピクトグラム/タイプ UH appl[3] -- アプリケーションID UB name[32] -- 付箋名 UW dlen -- 固有データのバイト長 UB dat[dlen] -- 固有データ(dlen バイト)
ID : TS_TPAGE LEN : 14 SUBID: 0 ATTR : UB attr -- 面付け、綴じ方向指定 DATA : UH length -- 用紙の長さ UH width -- 用紙の幅 UH top -- オーバーレイ上マージン(天) UH bottom -- オーバーレイ下マージン(地) UH left -- オーバーレイ左マージン(ノド) UH right -- オーバーレイ右マージン(小口)◎ マージン指定付箋:
ID : TS_TPAGE LEN : 10 SUBID: 1 ATTR : UB − -- 未使用 DATA : UH top -- 上マージン(天) UH bottom -- 下マージン(地) UH left -- 左マージン(ノド) UH right -- 右マージン(小口)○ コラム指定付箋:
ID : TS_TPAGE LEN : 4,6 SUBID: 2 ATTR : UB column -- コラム数、およびコラム長均等化指定 DATA : UH colsp -- コラムマージン [UH colline -- コラム罫線]○ 用紙オーバーレイ定義付箋:
ID : TS_TPAGE LEN : 〜 SUBID: 3 ATTR : UB attr -- オーバーレイ番号/ページ適用属性 DATA : UB data[] -- オーバーレイする文章データ○ 用紙オーバーレイ指定付箋:
ID : TS_TPAGE LEN : 4 SUBID: 4 ATTR : UB --- -- 未使用 DATA : UH overlay -- オーバーレイ指定○ 枠あけ指定付箋:
ID : TS_TPAGE LEN : 10 SUBID: 5 ATTR : UB attr -- 枠あけ属性 DATA : RECT area -- 枠あけ領域○ ページ番号指定付箋:
ID : TS_TPAGE LEN : 4 SUBID: 6 ATTR : B step -- ページの増加ステップ DATA: UH num -- ページ開始番号○ 条件改ページ指定付箋:
ID : TS_TPAGE LEN : 2,4 SUBID: 7 ATTR : UB cond -- 条件 DATA : [SCALE remain -- 残り領域指定]○ 充填行指定付箋:
ID : TS_TPAGE LEN : 2 SUBID: 8 ATTR : UB − -- 未使用
ID : TS_TRULER LEN : 4 SUBID: 0 ATTR : UB attr -- 属性指定 DATA : SCALE pitch -- 間隔指定◎ 行揃え指定付箋:
ID : TS_TRULER LEN : 2 SUBID: 1 ATTR : UB align -- 行揃えの方法◎ タブ書式指定付箋:
ID : TS_TRULER LEN : 〜 SUBID: 2 ATTR : UB attr -- 属性 DATA: SCALE height -- 書式高さ指定 SCALE pargap -- 段落間隔指定 H left -- 行頭マージン H right -- 行末マージン H indent -- インデントマージン H ntabs -- タブストップ設定数 UH tabs[] -- タブストップ位置(ntabs個)○ フィールド書式指定付箋:
ID : TS_TRULER LEN : 〜 SUBID: 3 ATTR : UB attr -- 属性 DATA: SCALE height -- 書式高さ指定 SCALE pargap -- 段落間隔指定 UH line -- フィールド段落線属性 H nfld -- フィールド設定数 +- UH fld -- フィールド開始位置 | UH left -- フィールド内左マージン | UH right -- フィールド内右マージン | UH margin -- 小数点位置/インデントマージン +- UH f_attr -- フィールド属性 : :○ 文字方向指定付箋:
ID : TS_TRULER LEN : 2 SUBID: 4 ATTR : UB txdir -- 文字列方向○ 行頭移動指定付箋:
ID : TS_TRULER LEN : 2 SUBID: 5 ATTR : UB --- -- 未使用
ID : TS_TFONT LEN : 4〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UH class -- フォントクラス [UB name[] ] -- フォント(ファミリー)名◎ フォント属性指定付箋:
ID : TS_TFONT LEN : 4 SUBID: 1 ATTR : UB − -- 未使用 DATA : UH attr -- フォント属性◎ 文字サイズ指定付箋:
ID : TS_TFONT LEN : 4 SUBID: 2 ATTR : UB − -- 未使用 DATA : CHSIZE size -- 文字サイズ◎ 文字拡大/縮小指定付箋:
ID : TS_TFONT LEN : 6 SUBID: 3 ATTR : UB − -- 未使用 DATA : RATIO h_ratio -- 文字高さ(サイズ)の拡大率 RATIO w_ratio -- 文字幅の拡大率◎ 文字間隔指定付箋:
ID : TS_TFONT LEN : 4 SUBID: 4 ATTR : UB attr -- 属性指定 DATA : SCALE pitch -- 間隔指定○ 文字回転指定付箋:
ID : TS_TFONT LEN : 4 SUBID: 5 ATTR : UB abs -- 絶対/相対指定 DATA : UH angle -- 文字の横軸の反時計回りの回転角度○ 文字カラー指定付箋:
ID : TS_TFONT LEN : 6 SUBID: 6 ATTR : UB − -- 未使用 DATA : COLOR color -- 文字カラーの指定○ 文字基準位置移動付箋:
ID : TS_TFONT LEN : 4 SUBID: 7 ATTR : UB attr -- 属性指定 DATA : SCALE base -- 基準位置移動量
ID : TS_TUB LEN : 4 SUBID: 0 ATTR : UB − -- 未使用 DATA : SCALE width -- 空白の幅○ 充填文字指定付箋:
ID : TS_TUB LEN : 〜 SUBID: 1 ATTR : UB − -- 未使用 DATA: UB str[] -- 充填文字列○ 文字罫線指定付箋:
ID : TS_TUB LEN : 4+罫線列データ数 SUBID: 2 ATTR : UB type -- 罫線のタイプ DATA : UH count -- 罫線列の繰り返し数 UH lines[] -- 罫線指定データ列( LEN で指定されたデータ数)
○ 結合指定付箋: ID : TS_TATTR LEN : 2 SUBID: 0 -- 結合開始指定付箋 ATTR : UB − -- 未使用 ID : TS_TATTR LEN : 2 SUBID: 1 -- 結合終了指定付箋 ATTR : UB − -- 未使用○ 文字割付け指定付箋:
ID : TS_TATTR LEN : 4 SUBID: 2 -- 文字割付け開始指定付箋 ATTR : UB kind -- 種類 DATA : SCALE width -- 割り付け幅 ID : TS_TATTR LEN : 2 SUBID: 3 -- 文字割付け終了指定付箋 ATTR : UB − -- 未使用○ 添字指定付箋:
ID : TS_TATTR LEN : 6 SUBID: 4 -- 添字開始指定付箋 ATTR : UB type -- タイプ DATA : SCALE pos -- 文字位置の移動量 RATIO size -- 文字サイズの比率 ID : TS_TATTR LEN : 2 SUBID: 5 -- 添字終了指定付箋 ATTR : UB − -- 未使用○ ルビ指定付箋:
ID : TS_TATTR LEN : 〜 SUBID: 6 -- ルビ開始指定付箋 ATTR : UB attr -- ルビ属性 DATA : UB rubi[] -- ルビ文字列 ID : TS_TATTR LEN : 2 SUBID: 7 -- ルビ終了指定付箋 ATTR : UB − -- 未使用○ 禁則指定付箋:
ID : TS_TATTR LEN : 〜 SUBID: 8 -- 行頭禁則指定 ATTR : UB kind -- 行頭禁則タイプ [DATA : UB ch[]] -- 行頭禁則対象文字 ID : TS_TATTR LEN : 〜 SUBID: 9 -- 行末禁則指定 ATTR : UB kind -- 行末禁則タイプ [DATA : UB ch[]] -- 行末禁則対象文字
ID : TS_TSTYLE LEN : 2,6 SUBID: type -- 文字修飾開始付箋 ATTR : UB attr -- 属性 DATA : [COLOR color ] -- 修飾カラー指定(省略可能) ID : TS_TSTYLE LEN : 2 SUBID: type+1 -- 文字修飾終了付箋 ATTR : UB − -- 未使用 SUBID: 0: 下線開始 1: 下線終了 2: 上線開始 3: 上線終了 4: 打ち消し線開始 5: 打ち消し線終了 6: 枠囲み線開始 7: 枠囲み線終了 8: 上(右)傍点開始 9: 上(右)傍点終了 10: 下(下)傍点開始 11: 下(下)傍点終了 12: 反転開始 13: 反転終了 14: 網掛開始 15: 網掛終了 16: 背景開始 17: 背景終了 18: 無印字開始(終了付箋までのデータを印字しない) 19: 無印字終了 20〜127: (予約) 128〜 : 未定義(アプリケーション依存)
ID : TS_TVAR LEN : 4 SUBID: 0 -- 変数参照 ATTR : UB − -- 未使用 DATA : H var_id -- 変数ID ID : TS_TVAR LEN : 〜 SUBID: 1 -- 変数参照 ATTR : UB − -- 未使用 DATA : UB name[] -- 変数名
ID : TS_TMEMO LEN : 〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UB memo[] -- メモ文字列
ID : TS_TAPPL LEN : 〜 SUBID: − -- アプリケーション定義 ATTR : UB − -- アプリケーション定義 DATA : UH appl[3] -- アプリケーションID UB param[] -- アプリケーション・パラメータ
ID : TS_FPRIM LEN : 18 SUBID: 0 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角 RECT frame -- 外接長方形◎ 角丸長方形セグメント:
ID : TS_FPRIM LEN : 22 SUBID: 1 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 UH rh -- 丸めの水平直径 UH rv -- 丸めの垂直直径 RECT frame -- 外接長方形◎ 楕円セグメント:
ID : TS_FPRIM LEN : 18 SUBID: 2 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 RECT frame -- 外接長方形◎ 扇形セグメント:
ID : TS_FPRIM LEN : 26 SUBID: 3 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 RECT frame -- 外接長方形 PNT start -- 開始点 PNT end -- 終了点◎ 弓形セグメント:
ID : TS_FPRIM LEN : 26 SUBID: 4 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH angle -- 回転角度 RECT frame -- 外接長方形 PNT start -- 開始点 PNT end -- 終了点◎ 多角形セグメント:
ID : TS_FPRIM LEN : 〜 SUBID: 5 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH round -- 角の丸めの円の直径:拡張レベル UH np -- 点数(>2) PNT pt[np] -- 点の配列(np 個の要素)◎ 直線セグメント:
ID : TS_FPRIM LEN : 14 SUBID: 6 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID PNT start -- 開始点 PNT end -- 終了点◎ 楕円弧セグメント:
ID : TS_FPRIM LEN : 24 SUBID: 7 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH angle -- 回転角度 RECT frame -- 外接長方形 PNT start -- 開始点 PNT end -- 終了点◎ 折れ線セグメント:
ID : TS_FPRIM LEN : 〜 SUBID: 8 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH round -- 角の丸め:拡張レベル UH np -- 点数 (>1) PNT pt[np] -- 点の配列(np 個の要素)○ 曲線セグメント:
ID : TS_FPRIM LEN : 〜 SUBID: 9 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID H type -- 曲線のタイプ UH np -- 点数 (>0) PNT pt[np] -- 点の配列(np 個の要素)○ マーカー列セグメント:
ID : TS_FPRIM LEN : 〜 SUBID: 10 ATTR : UB mode -- 描画モード DATA : UH market -- マーカーID UH np -- 点数 (>0) PNT pt[np] -- 点の配列(np 個の要素)◎ 任意図形セグメント:
ID : TS_FPRIM LEN : 〜 SUBID: 11 ATTR : UB mode -- 描画モード DATA : UH f_pat -- 塗り潰しパターンID UH sy -- 垂直座標の開始値(最小値) UH nr -- 垂直座標数 H bx -- 水平座標値のバイアス <垂直座標値 sy 〜 sy+nr-1 にそれぞれ対応した、以下に示す 水平座標値列の要素が nr 個連続する> UH nh -- 水平座標の数 UH h[nh] -- 水平座標の値 (nh 個の要素) : :
ID : TS_FDEF LEN : 〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UH nent -- エントリ数 COLOR col[nent] -- カラーマップ (nent 個の要素)◎ マスクデータ定義セグメント:
ID : TS_FDEF LEN : 〜 SUBID: 1 ATTR : UB type -- マスク定義タイプ DATA : UH id -- 定義するマスクID <type=0の場合> UH hsize -- 横のサイズ UH vsize -- 縦のサイズ UB mask[] -- マスクビットマップ◎ パターン定義セグメント:
ID : TS_FDEF LEN : 〜 SUBID: 2 ATTR : UB type -- パターン定義タイプ DATA : UH id -- 定義するパターンID <type=0の場合> UH hsize -- 横のサイズ UH vsize -- 縦のサイズ UH ncol -- 前景カラー数 COLOR fgcol[ncol] -- 前景色 (ncol 個の要素) COLOR bgcol -- 背景色 UH mask[ncol] -- マスクID(ncol 個の要素)○ 線種定義セグメント:
ID : TS_FDEF LEN : 〜 SUBID: 3 ATTR : UB type -- 線種定義タイプ DATA : UH id -- 定義する線種ID <type=0 の場合> UH n -- 線種定義バイト数 UB mask[nb] -- 線種定義バイト列○ マーカー定義セグメント:
ID : TS_FDEF LEN : 〜 SUBID: 4 ATTR : UB type -- マーカー定義タイプ DATA : UH id -- 定義するマーカーID <type=0 の場合> UH size -- マーカーサイズ COLOR fgcol -- マーカー色 [UH mask -- マスクデータID]
○ グループ定義セグメント: ID : TS_FGRP LEN : 4 SUBID: 0 -- グループ開始 ATTR : UB − -- 未使用 DATA : UH id -- グループID ID : TS_FGRP LEN : 2 SUBID: 1 -- グループ終了 ATTR : UB − -- 未使用
ID : TS_FMAC LEN : 4 SUBID: 0 -- マクロ定義開始 ATTR : UB − -- 未使用 DATA : UH id -- 定義するマクロID ID : TS_FMAC LEN : 2 SUBID: 1 -- マクロ定義終了 ATTR : UB − -- 未使用○ マクロ参照セグメント:
LEN : 4 SUBID: 2 ATTR : UB − -- 未使用 DATA : UH id -- 参照するマクロID
ID : TS_FATTR LEN : 〜 SUBID: 0 ATTR : UB type -- 修飾タイプ DATA : <type=0の場合> UH arrow -- 矢印属性○ 座標変換セグメント:
ID : TS_FATTR LEN : 6, 8, 10 SUBID: 1 ATTR : UB − -- 未使用 DATA : H dh -- 水平座標移動量 H dv -- 垂直座標移動量 [UH hangle -- 水平軸回転角度] [H vangle -- 垂直軸回転角度]
◎ 用紙指定付箋: ID : TS_FPAGE LEN : 14 SUBID: 0 ATTR : UB attr -- 面付け、綴じ方向指定 DATA : UH length -- 用紙の長さ UH width -- 用紙の幅 UH top -- オーバーレイ上マージン(天) UH bottom -- オーバーレイ下マージン(地) UH left -- オーバーレイ左マージン(ノド) UH right -- オーバーレイ右マージン(小口)◎ マージン指定付箋:
ID : TS_FPAGE LEN : 10 SUBID: 1 ATTR : UB − -- 未使用 DATA : UH top -- 上マージン(天) UH bottom -- 下マージン(地) UH left -- 左マージン(ノド) UH right -- 右マージン(小口)○ 用紙オーバーレイ定義付箋:
ID : TS_FPAGE LEN : 〜 SUBID: 3 ATTR : UB attr -- オーバーレイ番号/ページ適用属性 DATA : UB data[] -- オーバーレイする文章データ○ 用紙オーバーレイ指定付箋:
ID : TS_FPAGE LEN : 4 SUBID: 4 ATTR : UB --- -- 未使用 DATA : UH overlay -- オーバーレイ指定○ ページ番号指定付箋:
ID : TS_FPAGE LEN : 4 SUBID: 6 ATTR : B step -- ページの増加ステップ DATA: UH num -- ページ開始番号
ID : TS_FMEMO LEN : 〜 SUBID: 0 ATTR : UB − -- 未使用 DATA : UB memo[] -- メモ文字列
ID : TS_FAPPL LEN : 〜 SUBID: − -- アプリケーション定義 ATTR : UB − -- アプリケーション定義 DATA : UH appl[3] -- アプリケーションID UB param[] -- アプリケーション・パラメータ
TADデータ構成では、 異なるプロセッサ間を含めたデータの互換性を完全に保証するために8ビット以上のビット長を持つデータのバイトオーダーは、 上位バイトが先にくるビッグエンディアン形式に統一している。
しかしながら、この形式はリトルエンディアン形式の CPU 上で動作する既存のアプリケーションを移植する場合等には負担となる場合もあるため、 これを救済するために、 リトルエンディアンのデータ形式を持つTADデータ構成を、 準TAD規格として規定する。
準TAD規格は、TAD規格に対して以下に示す変更/制限を行なったものである。
準TAD規格に基づいたシステム/アプリケーションは、 以下の点を遵守しなくてはいけない。
ID : TS_FPRIM LEN : 〜 SUBID: 5 ATTR : UB mode -- 描画モード DATA : UH l_atr -- 線属性 UH l_pat -- 線パターンID UH f_pat -- 塗り潰しパターンID UH round -- 角の丸めの円の直径:拡張レベル UH np -- 点数(>2) PNT pt[np] -- 点の配列(np 個の要素)◎ 直線セグメント:
ID : TS_FPRIMshared_data/fd_format.html 0100664 0000026 0000031 00000067076 06716716451 0016120 0 ustar 00yo btron2 0000243 0000002第4章 フロッピーディスク形式 この章の目次にもどる
前頁:3.6 図形描画セグメントにもどる
第4章 フロッピーディスク形式
4.1 概要
TRON仕様では、 データの交換媒体であるフロッピーディスクの標準形式を規定している。 これは、基本的にアプリケーションプログラム、 およびアプリケーションデータの交換用フロッピーディスクに対してのみ適用されるが、 マシンに依存したシステムフロッピーディスク等の場合も同一形式であることが望ましい。
フロッピーディスクのセクタは 物理ブロックとも呼び、 物理的なアクセスの単位となる。 また、論理的なアクセス/アドレシングの単位を 論理ブロックと呼び、 連続した n 個の物理ブロック(セクタ)から構成される。 論理ブロックの大きさは標準フ ロッピーディスクでは 1024 バイトとする。
単にブロックといった場合は論理ブロックを示し、 論理ブロック単位のアドレスをブロックアドレスと呼ぶ。
最大論理ブロック数、 最大ファイル参照カウントの制限を緩和した拡張形式がある。 拡張形式も基本的には標準形式と同一である。 拡張形式に関しては、標準形式と異なる部分のみ記述する。
4.2 ファイルシステム構成
4.2.1 全体構成
標準フロッピーディスクは以下に示す全体の構成を持つ。
図 56 : 全体構成 4.2.2 システムブロック構成
システムブロック はファイルシステム全体の情報を保持するブロックであり、 以下に示す構成を持つ。
図 57 : システムブロック構成 システムヘッダは、128 バイトから構成され、以下の構成を持つ。 この部分はファイルシステムの生成時に作成され、 以後、"*" を付けたデータ以外は変更されない。
図 58 : システムヘッダの構成 各データの内容を以下に示す。 各データは上位バイトが先(若いアドレス)にくるビッグエンディアン形式である。
標準形式の場合 | 0x42FE |
拡張形式の場合 | 0x52FE |
標準形式の場合 | 0x6400 |
拡張形式の場合 | 0x6401 |
SFIDT | = (最大ファイル数×ファイルIDテーブルの1エントリバイト数) / 論理ブロックのバイト数 |
= (NFMAX×4)/1024 |
SFNMT | = (最大ファイル数×ファイル短縮名テーブルの1エントリバイト数) / 論理ブロックのバイト数 |
= (NFMAX×4)/1024 |
標準形式の場合 | |
NBMP | ≧ 論理ブロックの総数/8 |
≧ NLB/8 | |
拡張形式の場合 | |
NBMP | ≧ 論理ブロックの総数/32 |
≧ NLB/32 |
0x0021
となる。
0(レベル0) | アクセス管理は行なわない。 |
1(レベル1) | アクセス管理を部分的に行なう。 |
2(レベル2) | アクセス管理を完全に行なう。 |
ビットマップは論理ブロックの管理に使用され、 使用ブロックビットマップと不良ブロックビットマップの2つがある。
1 つの論理ブロックが1つのビットに一対一対応し、 使用ブロックビットマップでは、"0" で未使用、 "1" で使用中または不良を示し、 不良ブロックビットマップでは、 "0" で正常、"1" で不良を示す。 不良ブロックに対応する使用ブロックビットマップ上のビットは、 必ず "1" に設定される。
ファイルIDテーブルは、 そのファイルシステム内に存在するファイルの開始ブロックアドレス (3バイト) とファイルの参照カウント (1バイト) をファイル ID 順に並べたテーブルであり、 システムヘッダ内にある最大ファイル数分のエントリから構成される。
ファイルの参照カウントは、 そのファイルを参照している同一ファイルシステム内の固定リンク数を示す。 参照カウント0は、 どこからも参照されておらずファイルが削除可能であることを示す。
標準形式では、最大ファイル参照カウントは 255 となる。 拡張形式では、ファイル参照カウントが 255 以上になった場合は、 ファイルIDテーブルのファイル参照カウント値を 255 とし、 実際の参照カウント値 ( 255 以上 ) をファイルヘッダへ記録する。
標準フロッピーでは、 最大ファイル数は NFMAX であり、 ファイル ID テーブル全体は (NFMAX×4) バイトから構成される。
ID に対応する 4 バイトのエントリが0の場合は、 未使用エントリを意味する。
ファイル短縮名テーブルは、 そのファイルシステム内に存在するファイルのファイル名を短縮化 (ハッシュ化) した4バイトの値をファイル ID 順に並べたテーブルであり、 システムヘッダ内にある最大ファイル数分のエントリから構成される。
標準フロッピーでは、 最大ファイル数は NFMAX であり、 ファイル短縮名テーブル全体は (NFMAX×4) バイトから構成される。
40 バイトのファイル名全体は各ファイルのヘッダ部分に入るが、 このテーブルはファイル名によるファイルの検索を高速に行なうために使用される。
ファイル短縮名は以下の方法により生成される。
短縮名 = 0; for (i = 0; i < 10; i++) { 短縮名 = 短縮名 ^ NAME[i]; 短縮名 を右に1ビット回転シフトする。 }
ファイル領域にはそのファイルシステム内のすべてのファイルが入り、 その先頭にはルートファイルが必ず存在する。 ルートファイルはファイルシステムの生成時(フォーマット時) に自動的に生成されるファイルで以下の特徴を持つ。
1 つのファイルは、順序付けられたレコード列から構成され、 1 つのレコードは可変長のバイト列から構成される。 1 つのファイルは、ヘッダブロック、データブロック、インデックスブロック、 および間接ブロックから構成され、 その構成はインデックスレベルと呼ぶ値により異なる。 インデックスレベルはレコードインデックスの多重度を示す値で、 レコードの数に応じて動的に変化する。 インデックスレベルが 0 , 1 , 2 の場合のファイルの構成を以下に示す。
なお、リンクファイルはヘッダブロックからのみ構成される。
ファイルのヘッダブロックは、以下に示す構成となる。
ファイルヘッダは 192 バイトで構成され、 ファイルの各種の管理情報が保持されている。 以下にファイルヘッダの内容を示す。
各データの内容を以下に示す。 各データは上位バイトが先(若いアドレス)にくる ビッグエンディアン形式である。
0x54726f6e
の固定パターン
TTTT xxxx BAPO xRWE
T : ファイルタイプ | 0 リンクファイル |
1 通常ファイル | |
2〜 予約 | |
P : 削除不可属性 | |
O : 変更(書込)不可属性 | |
A : アプリケーション属性1 | |
B : アプリケーション属性2 | |
RWE : ファイル所有者のアクセスモード | |
x : 予約 (0) |
0x82dde96b
の固定パターン
リンクファイルの場合は、 ファイルヘッダに続くフラグメントテーブルの部分に以下に示す 90 バイト対象ファイルの所在を示すファイル所在データが入る。 各データは上位バイトが先 (若いアドレス) にくるビッグエンディアン形式である。
フラグメントテーブルは、 レコードの削除/サイズ縮小等によって発生した 1 つの論理ブロック内の断片的な空き領域 (フラグメント) を登録するテーブルであり、 レコードの追加 / サイズ拡張で新たな領域が必要となった場合参照されるテーブルである。
このテーブルには現在そのファイルに対して割り当てられている論理ブロック中の空き領域 (フラグメント) が最大 32 個まで登録される。 フラグメントが 32 個以上となった場合は、もっともサイズの小さいフラグメントはテーブルから取り除かれる。
レコードの削除 / サイズ縮小等が行なわれていない場合でも、 通常は、最後に書き込んだブロックの残り領域が 1 つのフラグメントとして登録されることになる。
フラグメントテーブルは以下に示す構成をとり、 各エントリは 6 バイトから構成される。 未使用エントリは、フラグメントサイズ = 0 で示される。 エントリは、必ずサイズの大きい順に並び、 途中に未使用エントリが入ることはない。 即ちフラグメントサイズ = 0 のエントリがあった場合は、 それ以後のエントリはないものと見なされる。
リンクファイルの場合は、 フラグメントテーブルの代わりにファイル所在データが入る。
レコードインデックスは各レコードの管理情報を保持している 16 バイトのインデックスである。 インデックスレベル = 0 の場合は、 ヘッダブロックに最大 40 個のレコードインデックスが入り、 インデックスレベル < 0 の場合は、 インデックスブロックに入る。
1つのレコードが複数の論理ブロックにまたがる場合は、 通常のレコードインデックスの直後に接続インデックスと呼ぶ論理ブロックの割り当て情報を示すインデックスエントリが続く。 この接続インデックスは内部的なものであり、 レコードの数としてはカウントされない。
以下に各レコードインデックスの構成を示す。
各データの内容を以下に示す。 各データは上位バイトが先 ( 若いアドレス ) にくるビッグエンディアン形式である。
100T TTTT
T:レコードタイプ | 0 リンクレコード |
1〜 その他のレコード |
割り当てられている論理ブロック | |
連続カウント 1 | X |
連続カウント 2 | X, X+1 |
連続カウント n | X, X+1, ... X+n-1 |
レコードインデックスの形式は、先頭の2バイトの値により決められる。
第1バイト | 第2バイト | |
接続インデックス | ≠0 | any |
通常インデックス | =0 | ≠0 |
リンクインデックス | =0 | =0x80 |
未使用インデックス | =0 | =0 |
間接インデックスは、インデックスレベル >0 の場合に使用され、 レコードインデックスを含む論理ブロックを示す以下の 8 バイトのエントリである ( 1 論理ブロックに 128 個、ヘッダブロック内は 80 個)。
最初の 4 バイトのデータは、 間接インデックスで示される間接ブロックまたはインデックスブロックが含む有効なレコード数 (接続インデックス、 未使用インデックスを除いたレコードインデックスの数) を示す。 これは、 レコードの位置によるシークを行なう場合に使用される。
論理ブロックアドレス = 0 の間接インデックスは未使用エントリと見なされ、 未使用インデックスは、 論理ブロック内の任意の位置に存在してよい。 なお、 間接ブロック中で使用されていない部分は、 すべて未使用エントリで埋められていなければいけない。
レコードインデックスの最大数はインデックスレベルの値により以下のようになる。
インデックスレベル | 最大レコードインデックス | |
0 | 40 | |
1 | 5120 | (64×80) |
2 | 655360 | (64×128×80) |
レコードインデックスとデータブロックとの対応の例を以下に示す。
レコードインデックスは、 ヘッダブロックまたはインデックスブロックの中で、 レコード順に並べられているが途中 ( 最初、最後も含む ) に任意個の未使用インデックスが入っていてもよい。 ただし、 接続インデックスは、 通常インデックスの直後から隙間無く連続して入っていなくてはいけない。 接続インデックスが複数の論理ブロックにまたがる場合でも、 論理ブロックの切れ目(最後、最初)に未使用エントリが入ってはいけない。
なお、 インデックスブロック中で使用されていない部分は、 すべて未使用インデックスで埋められていなければいけない。
インデックスレベル = 1 で、以下の状態の場合を考える。
間接インデックス | インデックスブロック | |
53個 | → | A:64個のエントリ(内、接続インデックス11) |
42個 | → | B:50個のエントリ(内、接続インデックス 8) |
20個 | → | C:20個のエントリ(内、接続インデックス 0) |
未使用 |
この例で、 110番目のレコードをアクセスしたい場合は、 110-53-42=15から、 インデックスブロックCの15番目のレコードインデックスを使用することになる。
また、10番目のレコードの直前にレコードを追加した場合は、 インデックスレコードAを2つに分割 ( 通常は2等分 ) しインデックスブロックA' と A''を生成して、 間接インデックスに登録することになる。 レコードの追加後の状態は以下に示す通りとなる。
間接インデックス | インデックスブロック | |
26個 | → | A' :33個のエントリ(内、接続インデックス7) |
28個 | → | A'':32個のエントリ(内、接続インデックス4) |
42個 | → | B :50個のエントリ(内、接続インデックス8) |
20個 | → | C :20個のエントリ(内、接続インデックス0) |
未使用 |
データブロックにはレコードの実際のデータが、 レコードインデックスで示されたブロック、 オフセットに入るが、 1つの論理ブロック内のフラグメントを管理するために、 1つの論理ブロック内のレコードとレコードの境界には空き領域を示す 2 つの区切りコードを格納する必要がある。
区切りコードは空き領域のサイズをバイト数で示した2バイトのコードであり、 空き領域の先頭と最後にそれぞれ入る。 レコードとレコードの間が隙間無く詰まっている場合は値 0 の区切りコードが連続して2つ入ることになる。 論理ブロックの先頭、および最後の区切りレコードは省略される。
以下に1つの論理ブロック内の区切りコードを示す。 図で、→はレコードインデックス内のオフセットを意味し、 ⇒はフラグメントテーブル内のオフセットを示す。 いずれの場合も区切りコードの直後の位置を示す。
1 つの論理ブロック内の隣接する空き領域は常にマージされ 1 つの空き領域にまとめられるため、 2 つ以上の空き領域が連続して存在することはない。
レコードの生成、追加、削除、サイズ変更、再配置等の操作では、 区切りコードを正しく設定し直す必要があり、 その結果、論理ブロック全体が空き領域となった場合はそのブロックを解放することになる。
TRON 標準フロッピーディスク形式では、 異なるプロセッサ間を含めたフロッピーディスクの交換を完全に保証するために 8 ビット以上のビット長を持つデータのバイトオーダーは、 上位バイトが先にくるビッグエンディアン形式に統一している。
しかしながら、 この形式はリトルエンディアン形式の CPU 上で動作する BTRON では負担となる場合もあるため、 これを救済するために、 リトルエンディアンのデータ形式を持つフロッピーディスク形式を、 準標準フロッピーディスク形式として規定する。
準標準フロッピーディスク形式は、 TRON 標準フロッピーディスク形式に対して以下に示す変更 / 制限を行なったものである。
システムヘッダの TRON ディスク ID、 およびディスク形式 ID のバイトオーダーにより、 TRON 標準フロッピーディスク形式か、 準標準フロッピーディスク形式かの識別が行なわれる。 すなわち、BTRON標準の場合は、0x42, 0xFE, 0x64, 0x00 であり準標準の場合は、0xFE, 0x42, 0x00, 0x64 となる。
準標準フロッピーディスク形式に基づいたシステムは、 以下の点を遵守しなくてはいけない。
本仕様書の中で、 ビッグエンディアン形式によって記述された図は、 準標準フロッーディスクにおいては、 M(Most Significant Bit) と L(Least Significant Bit)の表記が逆になる。 ここではそのすべてを掲げないが、 その一例として、 準標準フロッピーディスク形式によるレコードインデックスの構成を示す。
また、システムブロックにおけるビットマップ構成は、以下のようになる。
TRON標準フロッピーディスク形式の仕様に基づいて実現された フロッピーディスクのいくつかの例をあげる。
以下に各レコードインデックスの構成を示す。
各データの内容を以下に示す。 各データは上位バイトが先 ( 若いアドレス ) にくるビッグエンディアン形式でshared_data/index.html 0100664 0000353 0000031 00000012043 06716716530 0015560 0 ustar 00kubo btron2 0000243 0000002