{-#LANGUAGE FlexibleInstances, MultiParamTypeClasses, TypeFamilies #-}
module CV.DrawableInstances where
import Utils.DrawingClass 
import Utils.GeometryClass
import CV.Drawing 
import CV.Image
import CV.ImageOp
import CV.Bindings.Types
import CV.Bindings.Features


instance Draws C'CvSURFPoint (ImageOperation GrayScale D32) where
    draw (C'CvSURFPoint (C'CvPoint2D32f x y) l s d h) 
     = circleOp 1 (round x, round y) (fromIntegral s) (Stroked 1) 
        #> lineOp 1 1 (round x,round y) (round $ x+fromIntegral s*cos (realToFrac d)
                                        ,round $ y+fromIntegral s*sin (realToFrac d))  
    
instance Draws C'CvPoint2D32f (ImageOperation GrayScale D32) where
    draw (C'CvPoint2D32f x y) = circleOp 1 (round x, round y) 3 Filled