fudgets-0.18.3: hsrc/drawing/BitmapDrawing.hs
module BitmapDrawing where
import Graphic
import MeasuredGraphics(MeasuredGraphics(..))
import GCtx(GCtx(..))
--import Command
import Event(BitmapReturn(..))
import DrawTypes
import Geometry(Rect(..),origin)
import Xtypes
--import FudgetIO
import NullF() -- instances, for hbc
import LayoutRequest(refpLayout,plainLayout)
import Gc
import StdIoUtil(echoStderrK)
import Pixmap(readBitmapFile)
import Data.Maybe(maybeToList)
--import ContinuationIO(stderr)
data BitmapFile = BitmapFile String
instance Graphic BitmapFile where
measureGraphicK (BitmapFile filename) (GC gc _) k =
readBitmapFile filename $ \ bmret ->
case bmret of
BitmapReturn size optrefp pixmap ->
wCreateGC gc [GCGraphicsExposures False] $ \ gc' ->
k (LeafM ll (drawit gc'))
where r = Rect origin size
ll = refpLayout size True True (maybeToList optrefp)
drawit gc (Rect p _) = [(gc,[CopyPlane (Pixmap pixmap) r p 0])]
_ ->
echoStderrK ("Failed to load bitmap "++filename) $
k (LeafM ll drawit)
where ll = plainLayout 20 False False
drawit r = [(gc,[FillRectangle r])]