幾何図形演算子

幾何図形のモデル

形状はパスを用いて幾何的に定義される。 . ]]> で定義したとおり、パスはパスセグメントから構成され、パスセグメントは、パス要素から構成される。

connected (1) if they are in sequence in anypath segment or (2) if they are the initial and final path elements of a closedpath segment. ]]> 二つのパス要素は、(1)それらが同じパスセグメントに含まれている連続したパス 要素である場合、又は(2)それらがある閉パスセグメントの先頭のパス要素と末尾の パス要素である場合、接続しているという。 connection point. ]]> 二つのパス要素が連結している点を接続点と呼ぶ。

closed path segment is one for which the end point of the last path element coincides with and is connected to the start point of the initial path element. ]]> 最後のパス要素の最終点が最初のパス要素の始点と一致し、連結しているパスセ グメントを、閉パスセグメントとする。 closed path is one consisting solely of closed path segments. ]]> 閉パスセグメントだけからなるパスを、閉パスとする。

CurrentPath. ]]> パスは、基本演算子によって作られ、 作図状態変数CurrentPathに保持される。 SetPosition and may be extended by operators such asLineTo and CurveTo. ]]> パスセグメントはSetPositionによって開始され、 LineToCurveToなどの演算子によって延長することができる。 CurrentPathcan be obtained by GetPath and set by SetPath,and is cleared to the nullpath by the NewPath operator or by the imaging and clipping operators. ]]> CurrentPathGetPath演算子によって得ることができ、 SetPath演算子によって設定することができる。 またCurrentPathは、 NewPath演算子並びに作画及びクリップの演算子によってクリアされ、空パスとなる。 RectangleFilland RectangleStroke, and the clippingoperator RectangleClip construct a path in conjunction with their other activities. ]]> 幾つかの作画演算子、すなわちRectangleFill及びRectangleStroke、並びにクリップ演算子RectangleClip は、それら自身の作用 を行うとともに、パスを構築する。

パスは、マスク又はクリップ領域を指定するのに使われる場合に限り、幾何的に 解釈される。 このとき、パスを定義する点はユーザ座標系における幾何図形を定義するものと して解釈される。 StrokePath, FillPath,FillPathEvenOdd, RectangleFill,RectangleStroke, and the clipping operatorsClipPath, ClipPathEven and RectangleClipconvert this geometry to the Reference Coordinate System by applying theCurrentTransformation. ]]> 作画演算子StrokePathFillPathFillPathEvenOddRectangleFillRectangleStroke及びクリップ演算子 ClipPathClipPathEvenRectangleClipはこの 幾何図形を、CurrentTransformationを適用することによって、参照座標 系における幾何図形に変換する。 これら演算子の実行の結果できる幾何形状は演算子の定義によって決まる。

パスの構築及び操作に関する演算子

では、パスを構築する演算子及びパスを直接操作する演算 子について記述する。 CurrentPathGraphics State Variable also implicitly set the value of theCurrentPositionGraphics State Variable to the end point of the current path. ]]> 作図状態変数CurrentPathの値に影響を与えるすべてのパス構築演算 子は、暗黙のうちに現パスの終点の値を作図状態変数CurrentPositionの 値として設定する。 CurrentPositionGraphics State Variable is undefined. ]]> 空パスは現位置をもたない。空パスが生成された場合、作図状態変数Curren tPositionの値は未定義となる。

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

AppendPath

AppendPath imaging operator takes one operand ]]> AppendPath演算子は、次に示す1個のオペランドをとる。

  • < ]]>
  • <

    結果は返さない。 pathto the Path referenced by the value of the CurrentPathGraphics State Variable. ]]> AppendPath演算子はpathが参照するパスの複製を作図状態変数CurrentPathの値が参照するパスに連結する。 CurrentPosition GraphicsState Variable is set to the end point of the last path segment in the appended Path. ]]> 作図状態変数CurrentPositionの値は、連結されてできたパスの最後 のパスセグメントの終点となる。

    ArcToClockwise

    ArcToClockwise imaging operator takes five operands ]]> ArcToClockwise作画演算子は、次に示す5個のオペランドをとる。

  • <2/: <1/: <<< ]]>
  • <2/: <1/: <<<

    結果は返さない。 ArcToClockwise作画演算子は、次に示す有向円弧からなる新しいパ ス要素を生成する。

    • 中心は、( 半径は、1/); ]]> 始点は、(1/)である点
    • 2/), ]]> 終点は、(2/)である点
    • 向きは、時計回り

    CurrentPosition Graphics State Variable is set to that end point. ]]> 作図状態変数CurrentPositionの値は、生成したパス要素の終点の 値となる。

    CurrentPath is the null path,ArcToClockwise begins a new path segment consisting of the start point of the new path element followed by the new path element. ]]> CurrentPathが空パスの場合、ArcToClockwiseは新しい パス要素の始点にその新しいパス要素を続けた新しいパスセグメントを開始する。

    CurrentPath is not the null path, and if the start point of the new path element coincides with the end point of thelast segment of the CurrentPath, the path element is appendedto that path segment. ]]> CurrentPathが空パスでなく、 新しいパス要素の始点がCurrentPathの 最後のパスセグメントの終点と一致する場合、 ArcToClockwise作画演算子は、 そのパス要素をそのパスセグメントに連結する。 CurrentPath, ArcToClockwise appends to theCurrentPath a line segment whose startpoint is the end point of the last segment of the CurrentPath and whose end point is the start point of the new path element, then appends the new path element to the line segment. ]]> そうではなく、 新しいパス要素の始点が CurrentPathの最後のパスセグメントの終点と一致しない場合、 ArcToClockwiseは、 始点がCurrentPathの最後のパスセグメントの終点であり、 終点が新しいパス要素の始点である線分をCurrentPathに連結し、 次に、その新しいパス要素をその線分に連結する。

    ArcToCounterClockwise

    ArcToCounterClockwise imaging operator has the same semantics as the ArcToClockwise operator (see ), but draws a counterclockwise arc. ]]> ArcToCounterClockwise作画演算子は、 反時計回りの弧を描くことを除いて、 ArcToClockwise演算子(参照)と 同一の意味をもつ。 ArcToCounterClockwise operator takes five operands ]]> 特に、ArcToCounterClockwise演算子は、 次に示す5個のオペランドをとる。

  • <t2: Number>
  • <t1: Number>
  • <r: Number>
  • <y: Number>
  • <x: Number> ]]>
  • <2/: <1/: <<<

    結果は返さない。 ArcToCounterClockwise作画演算子は、次に示す有向円弧からなる 新しいパ ス要素を生成する。

    • x, y); ]]> 中心は、(
    • r; ]]> 半径は、
    • x, y) are (r, t1); ]]> 始点は、(1/)である点
    • x, y) are (r, t2),
    • ]]> 終点は、(2/)である点
    • 向きは、反時計回り

    CurrentPosition Graphics State Variable is set to that end point. ]]> 作図状態変数CurrentPositionの値は、生成したパス要素の 終点の値となる。

    CurrentPath is the null path, ArcToCounterClockwise begins a new path segment consisting of the start point of the new path element followed by the new path element. ]]> CurrentPathが空パスの場合、 ArcToCounterClockwiseは、 新しいパス要素の始点に その新しいパス要素を続けた新しいパスセグメントを開始する。

    CurrentPath is not the null path, and if the start point of the new path element coincides with the end point of the last segment of the CurrentPath, the path element is appended to that path segment. ]]> CurrentPathが空パスでなく、 新しいパス要素の始点がCurrentPathの 最後のパスセグメントの終点と一致する場合、 ArcToCounterClockwise作画演算子は、 そのパス要素をそのパスセグメントに連結する。 CurrentPath, ArcToCounterClockwise appends to the CurrentPath a line segment whose start point is the end point of the last segment of the CurrentPath and whose end point is the start point of the new path element, then appends the new path element to the line segment. ]]> そうではなく、 新しいパス要素の始点が CurrentPathの最後のパスセグメントの終点と一致しない場合、 ArcToCounterClockwiseは、 始点がCurrentPathの最後のパスセグメントの終点であり、 終点が新しいパス要素の始点である線分をCurrentPathに連結し、 次に、その新しいパス要素をその線分に連結する。

    ClosePathSegment

    ClosePathSegment imaging operator takes no operand and returns no results. ]]> ClosePathSegment演算子はオペランドをとらず、結果も返さない。 CurrentPath is the null path,ClosePathSegment has no effect. ]]> 現パスセグメントがすでに閉じている場合、又はCurrentPathが空パスである場合、ClosePathSegmentは何もしない。 cpsbx, cpsby)are the UCS coordinates of the start point of the last path segment of the CurrentPath, ClosePathSegmentis equivalent to {cpsbxcpsbyLineTo }, with the additional property that the initial path element of the last path segment is connected to the new final path element of that path segment at the start point of the initial path element and the end point of the new path element. ]]> そうではなく、CurrentPathの最後のパスセグメントの始点 のユーザ座標系における座標が(cpsbx, cpsby)である場合、 ClosePathSegmentは、 {cpsbx cpsby LineTo} と等価となる。これに加えて、最後のパスセグメントの最初のパス要 素は、そのパスセグメントに新たに追加されたパス要素に、最初のパス 要素の始点、すなわち新しいパス要素の終点において接続される。 CurrentPositionGraphics State Variable is set to the point with UCS coordinates(cpsbx, cpsby). ]]> 作図状態変数CurrentPositionの値は、ユーザ座標系における点(cpsbx, cpsby)となる。

    StrokePathoperator, appropriate stroke ends will be realized at the start and end points of that path segment (see ). ]]> パスセグメントの最後のパス要素の終点をそのパスセグメントの始点に一致させ ても、閉パスとはならない。そのようなパスは、まだ開パスであり、StrokePath演算子を実行すると、そのパスセグメントの始点及び終点に特定の終端形状 が現れる。 丸型終端の場合、その効果はそのパスセグメントの接続点に丸型接続を適用した 場合と区別できなくてもよい。

    CurrentPathimmediately after a ClosePathSegment operator will begin a new pathsegment, even if it is drawn from the end point reached byClosePathSegment. ]]> ClosePathSegment演算子実行の直後に別のセグメントを CurrentPathに連結すると、新しいパスセグメントを開始する。たとえ、ClosePathSegmentによる終点から描かれる場合でも。

    CurveTo

    CurveTo imaging operator takes six operands ]]> CurveTo演算子は、次に示す6個のオペランドをとる。

  • <3/: <3/: <2/: <2/: <1/: <1/: ]]>
  • <1/: <3/: <3/: <2/: <2/: <1/:

    結果は返さない。 CurrentPath Graphics State Variable. ]]> CurveTo演算子は、 ベジエ曲線からなる新しいパス要素を作図状態変数 CurrentPathの最後のパスセグメントに連結する。 CurrentPath. ]]> このパス要素の始点は、 CurrentPathの最後のセグメントの終点とする。 x3, y3). ]]> このパス要素の終点は、ユーザ座標系で (x3, y3)となる。 CurrentPositionGraphics State Variable is set to that end point. ]]> 作図状態変数CurrentPositionの値は、生成したパス要素の終点と なる。 x1, y1)and (x2, y2). ]]> このパス要素は、 ユーザ座標が(x1, y1)及び (x2, y) である二つのベジエ制御点をもつ。

    CurrentPathis (x0, y0),the new path element consists of the points onthe parametric curve represented by the equations ]]> より正確には、 CurrentPathの最後のパスセグメントの終点が 点(x0, y0)の場合、 新しいパスセグメントは、 次の方程式によって記述されるパラメトリック曲線上の点からなる。

    0 ≤ t ≤ 1の範囲のtについて、

  • x = axt3 + bxt2 + cxt + dx
  • y = ayt3 + byt2 + cyt + dy

    ここで、

  • ax = x3 - 3x2 + 3x1 - x0
  • ay = y3 - 3y2 + 3y1 - y0
  • bx = 3x2 - 6x1 + 3x0
  • by = 3y2 - 6y1 + 3y0
  • cx = 3x1 - 3x0
  • cy = 3y1 - 3y0
  • dx = x0
  • dy = y0

    x0, y0) to (x1, y1) at itsstart point and is tangent to the line segment from(x2, y2) to (x3, y3) at its end point, provided those points are distinct. ]]> 新しいパス要素は、点 (x0, y0) から点 (x1, y1) への線分にその始点で接し、点 (x2, y2) から点 (x3, y3) への線分にその終点で接する。ただし、これらの点が異なる点である場 合に限る。

    CurrentPath is the null path, RaiseErrorshall be invoked with NoCurrentPosition as its operand. ]]> CurrentPathが空パスの場合、 NoCurrentPositionをオペランドとして RaiseErrorを実行する。

    CurveToRelative

    CurveToRelative imaging operator takes six operands ]]> CurveToRelative 演算子は、次に示す6個のオペランドをとる。

  • <3/: <3/: <2/: <2/: <1/: <1/: ]]>
  • <3/: <3/: <2/: <2/: <1/: <1/:

    結果は返さない。 cpsx, cpsy) is the UCS point which corresponds to the end point of the last path segment of the CurrentPath,CurveToRelative appends a new path element consisting of a Bézier curve to the last path segment of the CurrentPath Graphics State Variable. ]]> (x/, y/)が 現パスの最後のセグメントの終点のユーザ座標系での点である場合、 CurveToRelativeは、 ベジエ曲線からなる新しいパス要素を 作図状態変数CurrentPathの最後のパスセグメントに連結する。 CurrentPath. ]]> このパス要素の始点は、CurrentPathの最後のセグメントの終点とする。 cpsx+x3, cpsy+ y3). ]]> このパス要素の終点は、ユーザ座標系上で (cpsx+x3, cpsy+y3)となる。 CurrentPosition Graphics State Variable is set tothat end point. ]]> 作図状態変数CurrentPositionの値は、 生成されたパス要素の終点となる。 cpsx+x2, cpsy+y2)and (cpsx+x3, cpsy+y3). ]]> このパス要素は、ユーザ座標が (cpsx+x2, cpsy+y2)及び (cpsx+x3, cpsy+y3)である 二つのベジエ制御点をもつ。 . ]]> この曲線の方程式はで示す。

    CurrentPathis the null path, RaiseError shall be invoked withNoCurrentPosition as its operand. ]]> CurrentPathが空パスの場合、 NoCurrentPositionをオペランドとして RaiseErrorを実行する。

    GetPath

    GetPath imaging operator takes no operands andreturns one result ]]> GetPath演算子はオペランドをとらず、次に示す1個の結果を返す。

  • < ]]>
  • <

    path is a reference to a copy of the Path thatis referenced by the value of the CurrentPathGraphics State Variable. ]]> ここで path は、作図状態変数CurrentPathの値が参照するパスの 複製への参照とする。 CurrentPath is not affected by GetPath. ]]> CurrentPathは、GetPath演算子の影響を受けない。

    GlyphToPath

    GlyphToPath imaging operator takes two operands ]]> GlyphToPath 演算子は、次に示す2個のオペランドをとる。

  • << ]]>
  • <<

    結果は返さない。 GlyphToPath appends to theCurrentPatha set of path segments which describe the glyph shapes as they would be presentedby the ShowString operator (see ). ]]> GlyphToPath はCurrentPathShowString演算子(参照)を実行した場合に提示されるグリフ形状を記述するパス セグメントの集合を連結する。 fillis true, the path segments are constructed in such a way as to make them suitablefor filling or clipping via the FillPath or one of theClipPath operators. ]]> FillPathによる塗りつぶ(潰し)し又はClipPath演算子群のいずれかのよるクリップに適したパスセグメントが構築される。 fill is false, the path segments areconstructed in such a way as to make them suitable only for being stroked viathe StrokePath operator. ]]> StrokePath演算子による線引きに適したパ スセグメントが構築される。 CurrentPositionGraphics State Variable is set to the end point of the last generated path segmentadded to the CurrentPath. ]]> 作図状態変数CurrentPositionの値は、最後に生成されたCurrentPathに追加されたパスセグメントの終点となる。

    StrokePath operator to a path suitablefor filling, or of applying the FillPath or one of thetwo ClipPath operatorsto a path suitable for stroking, is not defined by this International Standardand may result in an exception being raised. ]]> StrokePath演算子を塗りつぶ(潰)しに適したパスに適用した場合、又はFillPath演算子若しくは2種類の ClipPath演算子のうちの一 つを線引きに適したパスに適用した場合の結果は、この規格では定義しない。この場 合、例外が発生してもよい。

    CurrentPathis the null path, RaiseError shall be invoked withNoCurrentPosition as its operand. ]]> CurrentPathが空パスの場合、 NoCurrentPositionをオペランドとして RaiseErrorを実行する。

    LineTo

    LineToimaging operator takes two operands ]]> LineTo演算子は、次に示す2個のオペランドをとる。

  • << ]]>
  • <<

    結果は返さない。 CurrentPath and whose end point has UCS coordinates(x, y), tothe CurrentPath Graphics State Variable. ]]> LineTo演算子は、CurrentPathの最後のパスセグメン トの終点を始点とし、ユーザ座標(x, y)をもつ点を終点とする線分から なる新しいパス要素を作図状態変数CurrentPathに連結する。 CurrentPositionGraphics State Variable is set to that end point. ]]> 作図状態変数CurrentPositionの値は、生成されたパス要素の終点 となる。

    CurrentPathis the null path, RaiseError shall be invoked withNoCurrentPositionas its operand. ]]> CurrentPathが空パスの場合、 NoCurrentPositionをオペランドとして RaiseErrorを実行する。

    LineToRelative

    LineToRelative imaging operator takes two operands ]]> LineToRelative演算子は、次に示す2個のオペランドをとる。

  • << ]]>
  • <<

    結果は返さない。 cpsx, cpsy) is the UCS point which correspondsto the end point of the last segment of the CurrentPath, LineToRelative appends a new path element to the lastsegment of the CurrentPath consistingof a straight line segment, whose start point is the end point of the last pathsegment of the CurrentPath and whose end point has UCScoordinates(cpsx+x, cpsy+ y). ]]> (cpsx, cpsy)が 現パスの最後のセグメントの終点のユーザ座標系に おける点である場合、CurrentPathの最後のセグメントの終点を始点とし、 ユーザ座標系での点 (cpsx+x, cpsy+y)を終点とする 線分からなる新しいパス要素を CurrentPathの最後の要素に連結する。 CurrentPositionGraphics State Variable is set to that end point. ]]> 作図状態変数CurrentPositionは、生成されたパス要素のその終点 となる。

    CurrentPathis the null path, RaiseError shall be invoked withNoCurrentPosition as its operand. ]]> CurrentPathが空パスの場合、 NoCurrentPositionをオペランドとして RaiseErrorを実行する。

    NewPath

    NewPath operator takes no operands and returns no results. ]]> NewPath演算子はオペランドをとらず、結果を返さない。 CurrentPath to the null path,and makesthe value of the CurrentPosition Graphics State Variableundefined. ]]> NewPath演算子は作図状態変数CurrentPathを 空パスにし、作図状態変数CurrentPositionの値を未定義にする。

    OutlineStroke

    OutlineStroke imaging operator takes no operands and returns no results. ]]> OutlineStroke演算子はオペランドをとらず、結果を返さない。 CurrentPathGraphics State Variable with a path that exactly encloses the shape that wouldresult if the StrokePath operator were applied to theCurrentPath. ]]> OutlineStroke演算子は、作図状態変数CurrentPathの 値を、CurrentPathStrokePath演算子を適用した場合に 結果として生じる形状をすきまなく包むパスによって置換する。 OutlineStroke is suitable as the implicit operand to FillPath or ClipPath. ]]> OutlineStrokeの結果として生じるパスは、FillPath又 はClipPathに対する暗黙のオペランドとするのに適している。 StrokePath,as it may contain interior path elements or disconnected path segments that are produced by OutlineStroke's stroke to outline conversion process. ]]> 一般に、このパスは、StrokePathを適用するには適していない。な ぜなら、それはOutlineStrokeによる線引きされた線から輪郭線への変換 プロセスによって生じた内部パス要素又は接続されていないパスセグメントを含んで いる可能性があるからである。 OutlineStrokeapplied to the CurrentPathwould not affect the pageimage, then the CurrentPath is set to the null path,and the value of the CurrentPosition Graphics StateVariable shall be undefined. ]]> OutlineStrokeCurrentPathに適用してもページ画 像に影響を与えない場合、CurrentPathを空パスにし、作図状態変数CurrentPositionの値を未定義にする。

    SetPath

    SetPath imaging operator takes one operand ]]> SetPath演算子は、次に示す1個のオペランドをとる。

  • < ]]>
  • <

    結果は返さない。 CurrentPathGraphics State Variable to a reference to a copy of the Path referenced bypath. ]]> SetPath演算子は、 pathが参照するパスの複製への参照を、 作図状態変数CurrentPathの値として設定する。 CurrentPosition Graphics State Variable is set tothe end point of the last path segment of the Path referenced bypath. ]]> 作図状態変数CurrentPositionの値は、pathが参照する パスの最後のパスセグメントの終点となる。

    線引き及び塗りつぶ(潰)しの演算子

    では、パスによって記述された領域を線引きするため、 又は塗りつぶ(潰)すために用いられる演算子について述べる。 これら演算子及びその意味に関する規定には、演算子を解釈した結果として内容 例外を発生させる条件についての規定をも含む。 . ]]> 内容例外及び例外処理についてはで定義する。 演算子固有の例外に加え、ほとんどどの演算子の解釈時にも発生しうる共通的な 例外もある。 . ]]> このような共通例外及びその意味についてはで述べる。

    FillPath

    FillPath imaging operator accepts no operands andreturnsno results. ]]> FillPath演算子はオペランドをとらず、結果は返さない。 CurrentPathGraphics State Variable. ]]> この演算子は、作図状態変数CurrentPathを用いて定義されたマスクを用い て作画操作を実行する。 CurrentPathto the null path and makes the CurrentPositionGraphics State Variable be undefined. ]]> この演算子は、CurrentPathの値を空パスにし、作図状態変数CurrentPositionの値を未定義にする。

    FillPath implicitlycloses any open path segments and defines a mask which includesthe interior and boundary of the resulting shape determined accordingto the non-zero winding rule. ]]> 作画操作実行において、FillPathは暗黙のうちにすべての開パスセ グメントを閉じ、非ゼロ巻数規則によって決まる形状の内部及び境界を含むマスクを 定義する。 CurrentColor and CurrentClippingRegionto add an image element to the current page image. ]]> このマスクは次に CurrentColor及び CurrentClippingRegionとともに、1個の作画要素を現ページ像に追加するのに用いられる。

    FillPath operator when the CurrentPathconsists of a single line segment is equivalent to {0 SetStrokeWidth StrokePath}. ]]> CurrentPathが単一の線分からなる場合に FillPath演算子を実行した場合の効果は、 {0 SetStrokeWidth StrokePath} と等価となる。

    FillPathEvenOdd

    FillPathEvenOdd imaging operator accepts no operands and returns no results. ]]> FillPathEvenOdd演算子はオペランドをとらず、結果を返さない。 CurrentPathGraphics State Variable. ]]> この演算子は、作図状態変数CurrentPathを用いて定義されたマスクを用い た作画操作を実行する。 CurrentPathto the null path and makes the CurrentPositionGraphics State Variable be undefined. ]]> この演算子は、CurrentPathの値を空パスにし、作図状態変数CurrentPositionの値を未定義にする。

    FillPathEvenOddimplicitly closes any openpath segments and defines a mask which includes the interior and boundary ofthe resulting shape determinedaccording to the even/odd winding rule. ]]> 作画操作実行において、FillPathEvenOddは暗黙のうちにすべての開 パスセグメントを閉じ、奇偶巻数規則によって決まる形状の内部及び境界を含むマス クを定義する。 CurrentColor and CurrentClippingRegion to add animage element to the current page image. ]]> このマスクは次に CurrentColor及び CurrentClippingRegionとともに1個の作画要素を現ページ像に追加するのに用いられる。

    FillPathEvenOdd operator when theCurrentPath consists of a single line segment is equivalentto {0 SetStrokeWidth StrokePath}. ]]> CurrentPathが単一の線分からなる場合に FillPathEvenOdd演算子を実行した場合の効果は、 {0 SetStrokeWidth StrokePath}と等価となる。

    StrokePath

    StrokePath imaging operator accepts no operands and returns no results. ]]> StrokePath演算子はオペランドをとらず、結果を返さない。 CurrentPath, CurrentDashPattern, CurrentMiterLimit, CurrentStrokeAdjust, CurrentStrokeWidth, CurrentStrokeJoin,and CurrentStrokeEndas specified below. ]]> この演算子は、CurrentPathCurrentDashPatternCurre ntMiterLimitCurrentStrokeAdjustCurrentStrokeWidthCurrentStrokeJoin及びCurrentStrokeEnd によって定義されるマスクを用いて、次に示すとおりに作画操作を実行する。 CurrentPathto the null path and makes the CurrentPositionGraphics State Variable be undefined. ]]> この演算子は、CurrentPathの値を空パスにし、 作図状態変数CurrentPositionの値を未定義にする。

    StrokePath constructs a mask in the UserCoordinate Space, transforms the mask to ReferenceCoordinate Space using theCurrentTransformation, and paints an image element using this mask, the CurrentColor, and theCurrentClippingRegion. ]]> 作画操作を実行する過程で、 StrokePath演算子は、 ユーザ座標空間中にマスクを構成し、 そのマスクをCurrentColor及びCurrentClippingRegionを用いて、 1個の作画要素を描く。 StrokePath ]]> これらの機能を実行する過程で、StrokePath演算子は次に示す処理を行う。

    • 下に記述するとおり、ユーザ座標空間中に形状を構成する。
    • この形状を、 次のものを用いて、基本作画操作を実行する。
      • 上記形状をその内部及び境界とするマスク
      • CurrentClipRegion
    破線パターンの例

    solid line or a dashedline along each of the path segments, depending on the value ofCurrentDashPattern (see ). ]]> 第2ステップで構成される形状は、各パスセグメントに沿い、CurrentDashPatternの値に依存して、実線又は破線となる(参照)。 CurrentDashPattern is theempty Vector, the shape is constructed by ]]> CurrentDashPatternのベクタ要素が空ベクタの場合、形状は次のとお り構成される。

    • 各パスセグメントの幅を一様な) to the ends of each path segment; ]]> 各パスセグメントの終端にCurrentStrokeEndで指定された終端形状を適用する (参照)。
    • CurrentStrokeJoin (as shown in ), and possibly as modified by CurrentMiterLimit (see ) to connection points of a path segment. ]]> パスセグメントの接続部分に、 参照)を適用し、 これをできる限り参照)。

    CurrentStrokeWidthGraphics State Variableis 0, the actual stroke width used is the smallest width the presentation deviceis capable of producing. ]]> 作図状態変数CurrentStrokeWidthの値が0の場合、 実際に使われる線幅は、提示装置が生成できる最小幅となる。

    CurrentStrokeWidth if the value of theCurrentStrokeAdjust Graphics State Variable is true; ]]> 実際の線幅は、作図状態変数CurrentStrokeAdjustの値が真の場合 、CurrentStrokeWidthと異なってもよい。 CurrentStrokeAdjust is true, the strokewidth and the coordinates of a stroke are automatically adjusted as necessaryto produce lines of uniform thickness, and whose widths are no more than±half a pixel different from the requested width (as determined by the valueof the CurrentStrokeWidth Graphics State Variable). ]]> CurrentStrokeAdjustの値が真の場合、線幅及び線引きの座標は、一 様な幅の線を生成することができるように自動的に調整される。その線の幅は要求さ れた線の幅(作図状態変数CurrentStrokeWidthの値によって決まる)と 1画素の半分以上異なることはない。

    CurrentDashPattern isnon-empty, a newpath is constructed in User Coordinate System and a shape is constructed usingthat path as described above. ]]> CurrentDashPatternのベクタ要素が空でない場合、ユーザ座標系に 新しいパスが生成され、一つの形状がそのパスを用いて構築される。

    CurrentDashPattern Graphics StateVariable is ]]> 作図状態変数CurrentDashPatternの値が

  • < ]]>
  • <

    CurrentPath to User Coordinate System generated in the first step as follows: ]]> である場合、新しいパスは、 第1ステップで生成した、 CurrentPathをユーザ座標系に変換した結果を、 次に示すとおりに処理することによって得られる。

    • ベクタ これらの距離は、交互に描線の長さと描線間の間隙の長さを指定する。 パスを線引きし始める前に、 描線パターンを生成するのに使われる長さの列は、 要素から上記のオフセット 新しいパスは、

      CurrentPath to UserCoordinateSpace contains no displacement from the start point of the path, the path issaid to have zero length. ]]> CurrentPathをユーザ座標空間へ変換した結果できるパスが、パスの 始点からの移動を含まない場合は、パスは長さゼロであるといわれる。 パス要素を含まないパスを線引きすることは、 ページ像に何ら影響を与えない。 NewPath xy SetPositionStrokePath} produces no marks on the current page. ]]> たとえば、{NewPath xy SetPosition StrokePath}は、 現ページに何の痕跡も生成しない。 CurrentStrokeEndGraphics State Variable specifies round stroke ends; in this case the strokeends will appear when the path is stroked. ]]> 長さゼロのパスを線引きすることも、作図状態変数CurrentStrokeEndが丸型終端を指定していない限り、ページ像に何ら影響を与えない。丸型終端の 場合は、パスが線引きされたときに終端が目に見えるようになる。

      CurrentMitreLimitの線引き接続への影響

      miter length is the distance from the point at whichthe inner edges of the stroke (as constructed in User Coordinate System by theStrokePath operator) intersect to the point at which theoutside edges of the stroke intersect. ]]> 任意の与えられた角(交差する二つのパス要素の接続点)におけるマイタ長とは 、線引きの内側の辺同士が交わる点(StrokePath演算子によってユ ーザ座標空間に構成されるものとしての)から線引きの外側の辺が交わる点まで の距離とする。 この距離はパス要素の間の角度が減少するにつれ増大する。

      CurrentMiterLimit Graphics State Variable value is employedto prevent this distance, the diagonal length of the miter, from exceeding adesired maximum length when the value of the CurrentStrokeJoinspecifies that the StrokePath operator use miter joins. ]]> 作図状態変数CurrentMiterLimitの値はこの距離、すなわちマイタ の対角長が、CurrentStrokeJoinの値が StrokePath演算子 がマイタ接続を使うという指定であるときに、望ましい最大長を越えるのを防ぐため に用いられる。 CurrentMiterLimit, the StrokePathoperator constructs the stroke for the join as if the value of theCurrentStrokeJoinGraphics State Variable specified a bevel join rather than a miter join. ]]> 与えられた接続のマイタ長の実際の線幅に対する比率が CurrentMiterLimitを越えると、StrokePath演算子はその接続に対し作図状態変数 CurrentStrokeJoinの値がマイタ接続ではなくべベル接続を指定してい るものとして線引きを構成する。 マイタ長の線幅に対する比率を表す式は次のとおり。

      Miter length / stroke width = 1 / sin (angle / 2) ]]>

    • 1 / sin (angle / 2)

      angle is the angle of the intersection of thetwo path elements. ]]> ここで、 長方形の塗りつぶ(潰)し及び線引きの演算子

      パスの定義と、その線引き又は塗りつぶ(潰)しとを組み合わせた演算子が二つある。

      RectangleFill

      RectangleFill imaging operator takes four operands ]]> RectangleFill演算子は、次に示す4個のオペランドをとる。

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

      結果は返さない。 CurrentPath Graphics State Variable or theCurrentPosition Graphics State Variable. ]]> この演算子は、一つのパスセグメントによって新たな閉長方形を生成し、 それを塗りつぶ(潰)し、パスを破壊する。 ただし、この過程で作図状態変数CurrentPath及び CurrentPositionのどちらについても、 読み出しも変更もしない。

      height and width are positive, theRectangleFill operator is equivalent to the following procedure: ]]> height及びwidthが正であるという仮定のもと では、RectangleFill演算子は、次の手続きと等価となる。 扱いをどうするか

    • {
    • SaveGraphicsState
    • % 長方形を作るための新しいパスを開始する
    • NewPath
    • % 1隅に位置付ける
    • x y SetPosition
    • % 二つの隅へ線を引く
    • width 0 LineToRelative
    • 0 height LineToRelative
    • % 残りの2辺を付け加える
    • width Negate 0 LineToRelative
    • ClosePathSegment
    • % 結果を塗りつぶ(潰)す
    • FillPath
    • % 長方形のパスの軌跡を消去する
    • RestoreGraphicsState
    • }

      RectangleStroke

      RectangleStroke imaging operator takes either four operands ]]> RectangleStroke演算子は、次に示す4個のオペランド

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

      又は次に示す5個のオペランドをとる。

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

      結果は返さない。 CurrentPath Graphics State Variable or theCurrentPositionGraphics State Variable. ]]> この演算子は、1個のパスセグメントによって新たな閉長方形を生成し、 それを塗りつぶ(潰)し、パスを破壊する。 ただし、この過程で作図状態変数CurrentPath及び CurrentPositionのいずれについても 読み出しも変更もしない。

      matrix operand is present, the RectangleStrokeoperator concatenates atrix to the CTM after definingthe rectangular path, but before stroking that path. ]]> RectangleStroke演算子は、 長方形のパスを定義した後、ただし、パスを塗りつぶ(潰)す前に、 CTM = Current Transformation Matrix ? matrixapplies to the strokewidth and dash pattern, if any, but not to the path itself. ]]> height and width are positive, theRectangleStroke operator is equivalent to the followingprocedure: ]]> RectangleStroke演算子は、次の手続きと等価となる。 扱いをどうするか

    • {
    • SaveGraphicsState
    • % 長方形を作るための新しいパスを開始する
    • NewPath
    • % 1隅に位置付ける
    • x y SetPosition
    • % 他の隅へ線を引く
    • width 0 LineToRelative
    • 0 height LineToRelative
    • % 残りの2辺を付け加える
    • width Negate 0 LineToRelative
    • ClosePathSegment
    • matrix operand present]]> % CTM = Current Transformation Matrix ?
    • matrix Concat
    • % 残りの2辺を付け加える
    • StrokePath
    • % 長方形のパスの軌跡を消去する
    • RestoreGraphicsState
    • }

      作図状態変数演算子

      この節では、線引き及び塗りつぶ(潰)しプロセスのさまざまなパラメタを制御する作図状態 変数の値を得たりそれに影響を与えるために用いられる演算子について記述する。

      GetDashPattern

      GetDashPattern operator takes no operands and returns two results ]]> GetDashPattern演算子はオペランドをとらず、次に示す2個の結果を返す。

    • << ]]>
    • <<

      pattern is a reference to a Vector in which the elements areof type Number and the two results together form the current value ofthe CurrentDashPatternGraphics State Variable in the Graphics State. ]]> ここで pattern は、要素が数型であるベクタへの参照であり、その二つの結果は 組となって、作図状態における作図状態変数CurrentDashPatternの現 在の値を構成する。

      GetMiterLimit

      GetMiterLimit operator takes no operands and returns one result ]]> GetMiterLimit演算子は、オペランドをとらず、次に示す1個の結果 を返す。

    • < ]]>
    • <

      limit is the value of the CurrentMiterLimitGraphics State Variable in the Graphics State. ]]> ここでlimitはグラフィックス状態における作図状態変数CurrentMiterLimitの値である。

      GetStrokeAdjust

      GetStrokeAdjust operator takes no operands and returns one result ]]> GetStrokeAdjust演算子はオペランドをとらず、次に示す1個の結果 を返す。

    • < ]]>
    • <

      adjust is the value of the CurrentStrokeAdjustGraphics State Variable in the Graphics State. ]]> ここで adjustはグラフィック状態における作図状態変数CurrentStrokeAdjustの値である。

      GetStrokeEnd

      GetStrokeEnd operator takes no operands and returns one result ]]> GetStrokeEnd演算子はオペランドをとらず、次に示す1個の結果を 返す。

    • < ]]>
    • <

      end is the value of the CurrentStrokeEndGraphics State Variable in the Graphics State. ]]> ここで、CurrentStrokeEnd の値とする。

      GetStrokeJoin

      GetStrokeJoin operator takes no operands and returns one result ]]> GetStrokeJoin演算子はオペランドをとらず、次に示す1個の結果を 返す。

    • < ]]>
    • < join is the value of the CurrentStrokeJoinGraphics State Variable in the Graphics State. ]]> ここで、CurrentStrokeJoinの値とする。

      GetStrokeWidth

      GetStrokeWidth operator takes no operands and returns one result ]]> GetStrokeWidth演算子はオペランドをとらず、1個の結果を返す。

    • < ]]>
    • <

      width is the value of the CurrentStrokeWidthGraphics State Variable in the Graphics State. ]]> ここでCurrentStrokeWidthの値である。

      SetMiterLimit

      SetMiterLimit operator takes one operand ]]> SetMiterLimit演算子は、次に示す1個のオペランドをとる。

    • < ]]>
    • <

      結果は返さない。 CurrentMiterLimitGraphics State Variableto x, where x shall have valuegreater than or equal to 1. ]]> この演算子は、CurrentMiterLimitの値として設定する。 ここで、CurrentMiterLimitis defined in . ]]> CurrentMiterLimitの効果はで定義される。

      SetStrokeAdjust

      SetStrokeAdjust operator takes one operand ]]> SetStrokeAdjust演算子は次に示す1個のオペランドをとる。

    • < ]]>
    • < 結果は返さない。 CurrentStrokeAdjustGraphics State Variableto the value of adjust. ]]> この演算子は、CurrentStrokeAdjustの値として設定する。 CurrentStrokeAdjustis defined in the semantics of the StrokePath operator. ]]> SetStrokeAdjust演算子の効果は、StrokePath演算子の意味によっ て定義する。

      SetStrokeEnd

      SetStrokeEnd operator takes one operand ]]> SetStrokeEnd演算子は次に示す1個のオペランドをとる。

    • < ]]>
    • < n = 0, 1, or 2, and returns no results. ]]> ここで、n = 0、1又は2とする。結果は返さない。 CurrentStrokeEndGraphics State Variable to one of the following as shown in . ]]> この演算子は、に示す値のいずれかを、 作図状態変数CurrentStrokeEndに設定する。 Valuestroke ends 0 0 - 断ち切り型終端を選択する。 線引きはパスの終点で四角く切り落とされる。パスを越えての突出はない 1 1 - 丸型終端を選択する。 ライン幅に等しい直径の円が終点の回りに描かれそれが塗りつぶ(潰)される。 2 2 - 突出部のある角型終端を選択する。 線引きはパスの終点をライン幅の半分だけ越えて続き、四角く切り落とされる。

      CurrentStrokeEnd on the mask generatedby StrokePath is shown in . ]]> StrokePath演算子が生成するマスクに対する CurrentStrokeEndの効果を、に示す。 終端形状

      SetStrokeJoin

      SetStrokeJoin operator takes one operand ]]> SetStrokeJoin演算子は次の1個のオペランドをとる。

    • < ]]>
    • <

      ここで、n = 0、1又は2とする。結果は返さない。 CurrentStrokeJoinGraphics State Variable to one of the following as shown in . ]]> この演算子は、に示す値のいずれかを、 作図状態変数CurrentStrokeJoinに設定する。 扱いをどうするか Valuemiter join 0 マイタ接続を選択する。 線引きの外側の辺はそれらがぶつかるまで延長される。 1 丸型接続を選択する。 CurrentStrokeWidthis drawn around the point where the path elements connect and is filledin ]]> ライン幅に等しい直径の円がセグメントが出会う点の周囲に描かれ塗りつぶ(潰)される。 2 べベル接続を選択する。 ぶつかるセグメントは断ち切り型終端で終了する。 そしてその結果できるセグメントの終端を越えた部分の段が三角形で塗 りつぶ(潰)される。

      CurrentStrokeJoin on the mask generated by StrokePathis shown in . ]]> StrokePath演算子が生成するマスクに対する、 CurrentStrokeJoinの効果を、に示す。 接続形状

      SetStrokeWidth

      SetStrokeWidth operator takes one operand ]]> SetStrokeWidth演算子は1個のオペランドをとる。

    • < ]]>
    • <

      結果は返さない。 CurrentStrokeWidthGraphics State Variable to x.]]> この演算子は、CurrentStrokeWidth の値として設定する。 CurrentStrokeWidthis defined by theStrokePath operator. ]]> CurrentStrokeWidthの効果は、 StrokePath演算子が定義する。