-
Notifications
You must be signed in to change notification settings - Fork 14
Clipping Region
RyanGlScott edited this page Oct 9, 2014
·
5 revisions
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Graphics.Blank
main :: IO ()
main = blankCanvas 3000 $ \ context -> do
send context $ do
let x = width context / 2;
let y = height context / 2;
let radius = 75;
let offset = 50;
{-
* save() allows us to save the canvas context before
* defining the clipping region so that we can return
* to the default state later on
-}
save();
beginPath();
arc(x, y, radius, 0, 2 * pi, False);
clip();
-- draw blue circle inside clipping region
beginPath();
arc(x - offset, y - offset, radius, 0, 2 * pi, False);
fillStyle "blue";
fill();
-- draw yellow circle inside clipping region
beginPath();
arc(x + offset, y, radius, 0, 2 * pi, False);
fillStyle "yellow";
fill();
-- draw red circle inside clipping region
beginPath();
arc(x, y + offset, radius, 0, 2 * pi, False);
fillStyle "red";
fill();
{-
* restore() restores the canvas context to its original state
* before we defined the clipping region
-}
restore();
beginPath();
arc(x, y, radius, 0, 2 * pi, False);
lineWidth 10;
strokeStyle "blue";
stroke();