クリッピング演算子

クリッピングのモデル

作画演算子の効果が及ぶページ像の領域を、クリッピング領域と呼ぶ。 CurrentClippingRegion作図状態変数は、参照座標系内に表現される有効なクリッピング領域を表す。 上位ブロックがCurrentClippingRegionを変更しない限り、ページの先頭では、CurrentClippingRegionは、供給される媒体の出力可能領域を完全に含むように設定されている。 CurrentClippingRegionを変更する演算子は、CurrentPathから得られる領域とCurrentClippingRegionとの共通部分をとることによって、CurrentClippingRegionを変更する。

演算子

これらの演算子及びその意味に関する規定は、演算子を解釈した結果として内容例外を発生させうる条件についての規定を含む。 . ]]> 内容例外及び例外処理については、で定義する。 これらの演算子固有の例外に加えて、ほとんどどの演算子の解釈時にも発生しうる共通的な例外がある。 . ]]> これらの共通例外及びその意味については、で規定する。

ClipPath

ClipPath演算子は、オペランドをとらず、結果を返さない。 この演算子は、CurrentPath作図状態変数を用いてCurrentClippingRegion作図状態変数を変更するが、CurrentPathの値は変更しない。

ClipPath作画演算子は、暗黙のうちにCurrentPathのすべての開パスセグメントを閉じる。さらに、結果として得られる形状内部を、非ゼロ巻数規則に従って決定する。 次に、作図状態変数CurrentClippingRegionは、 現在のCurrentClippingRegionと、 CurrentPathから決定された形状の内側との共通部分に設定される。 CurrentPathが空パスの場合、 CurrentClippingRegionの値は、 空の領域を囲む実装依存の非空パスとなる。

ClipPathEvenOdd

ClipPathEvenOdd作画演算子は、オペランドをとらず、結果を返さない。 この演算子は、 CurrentPath作図状態変数を用いて CurrentClippingRegion作図状態変数を変更するが、 CurrentPathの値は変更しない。 ClipPathEvenOdd作画演算子は、暗黙のうちにCurrentPathのすべての開パスセグメントを閉じる。さらに、結果として得られる形状内部を、奇偶巻数規則に従って決定する。

次に、作図状態変数CurrentClippingRegionは、 現在のCurrentClippingRegionと、 CurrentPathから決定された形状の内側との共通部分に設定される。 CurrentPathが空パスの場合、 CurrentClippingRegionの値は、 空の領域を囲む実装依存の非空パスとなる。

RectangleClip

RectangleClip operator takes four operands ]]> RectangleClip演算子は、4個のオペランドをとり、結果を返さない。

  • <<<< ]]>
  • <<<<

    この演算子は、一つのパスセグメントからなる新しい閉じたく(矩)形パスを生成する。 次に、作図状態変数CurrentClippingRegionは、現在のCurrentClippingRegionと、く(矩)形パスから決定された形状の内側との共通部分に設定される。 新しいクリッピングパスを計算した後、 RectangleClip作画演算子は、 CurrentPath作図状態変数を空パスに設定し、 CurrentPosition作図状態変数を未定義にする。

    RectangleClip operator is equivalent to the following procedure: ]]> 高さ及び幅が正の場合、RectangleClip作画演算子は、 次に示す手続きと等価となる。

  • {
  • % く(矩)形のための新たなパスを開始
  • % あるコーナーでの位置
  • % 他のコーナーへ線をひく
  • 0
  • % く(矩)形の最後の二つの縁を追加
  • %CurrentClippingRegionとく(矩)形を交差
  • %新たなCurrentClippingRegionを生成
  • % く(矩)形パスの全ての痕跡を消去
  • }