選択されたウィンドウをハイライトする方法を解説する。
ここでは(2)と(5)のウィンドウが選択されているとする。表示は下のようにしたい。
選択されたウィンドウ毎にマスク処理を施していく。順番は表示順序で一番下から。今回のケースでは(5)から始める。
[1] まずウィンドウの領域をすべてハイライトする。この時点ではハイライトしたくない所も含まれる。
[2] 次にマスクを作成する為に(5)のウィンドウの上に重なっているウィンドウを探す。すると(3)と(4)が見つかる。※(2)も該当するが後でハイライト表示するので今回は無視している。
[3] (3)と(4)のウィンドウ領域を合成した領域を作る。実装コードでは NSBezierPathを使う。
[4] この領域をクリッピングエリアとして指定し、その上で(5)の領域を灰色で塗りつぶす。すると左上のマスクしたい部分だけが塗りつぶされる。これで(5)の見えている部分だけがハイライト表示となった。
[5] 同様にして他の選択されたウィンドウを処理する。(2)の場合は、上に(1)のウィンドウが重なっているので、これを元にしてマスク領域を作り塗りつぶす。
次回は実装コードの解説を行う。