Exports and guarded constructors/mutators for all visuals
This commit is contained in:
parent
54d80c82a7
commit
df700e757b
1 changed files with 65 additions and 1 deletions
|
|
@ -305,6 +305,8 @@
|
|||
|
||||
;; Visuals
|
||||
;; Primitive shape visual types
|
||||
(export pixel-2d? make-pixel-2d
|
||||
pixel-2d-position set-pixel-2d-position!)
|
||||
(define-record-type <pixel-2d>
|
||||
(int:make-pixel-2d position)
|
||||
pixel-2d?
|
||||
|
|
@ -317,6 +319,9 @@
|
|||
(define set-pixel-2d-position!
|
||||
(guarded-mutator pixel-2d? 'position vector2?))
|
||||
|
||||
(export line-2d? make-line-2d line-2d-start-pos
|
||||
set-line-2d-start-pos! line-2d-end-pos set-line-2d-end-pos!
|
||||
line-2d-thickness set-line-2d-thickness!)
|
||||
(define-record-type <line-2d>
|
||||
(int:make-line-2d start-pos end-pos thickness)
|
||||
line-2d?
|
||||
|
|
@ -337,6 +342,9 @@
|
|||
(define set-line-2d-thickness!
|
||||
(guarded-mutator line-2d? 'start-pos (conjoin integer? positive?)))
|
||||
|
||||
(export circle-2d? make-circle-2d circle-2d-center
|
||||
set-circle-2d-center! circle-2d-radius set-circle-2d-radius!
|
||||
circle-2d-filled set-circle-2d-filled!)
|
||||
(define-record-type <circle-2d>
|
||||
(int:make-circle-2d center radius filled)
|
||||
circle-2d?
|
||||
|
|
@ -353,11 +361,15 @@
|
|||
(define set-circle-2d-center!
|
||||
(guarded-mutator circle-2d? 'center vector2?))
|
||||
(define set-circle-2d-radius!
|
||||
(guarded-mutator circle-2d? 'radius ((conjoin integer? positive?) radius)))
|
||||
(guarded-mutator circle-2d? 'radius (conjoin integer? positive?)))
|
||||
(define set-circle-2d-filled!
|
||||
(guarded-mutator circle-2d? 'filled boolean?))
|
||||
|
||||
;; TODO: might be nicer to have the origin and width/height inside a rect-2d type or similar
|
||||
(export rectangle-2d? make-rectangle-2d rectangle-2d-origin
|
||||
set-rectangle-2d-origin! rectangle-2d-width set-rectangle-2d-width!
|
||||
rectangle-2d-height set-rectangle-2d-height! rectangle-2d-filled
|
||||
set-rectangle-2d-filled! rectangle-2d-thickness set-rectangle-2d-thickness!)
|
||||
(define-record-type <rectangle-2d>
|
||||
(int:make-rectangle-2d origin width height filled thickness)
|
||||
rectangle-2d?
|
||||
|
|
@ -367,6 +379,28 @@
|
|||
(filled rectangle-2d-filled? int:set-rectangle-2d-filled!)
|
||||
(thickness rectangle-2d-thickness int:set-rectangle-2d-thickness))
|
||||
|
||||
(define (make-rectangle-2d origin width height filled thickness)
|
||||
(assert (vector2? origin))
|
||||
(assert ((conjoin integer? positive?) width))
|
||||
(assert ((conjoin integer? positive?) height))
|
||||
(assert (boolean? filled))
|
||||
(assert ((conjoin integer? positive?) thickness))
|
||||
(int:make-rectangle-2d origin width height filled thickness))
|
||||
|
||||
(define set-rectangle-2d-origin!
|
||||
(guarded-mutator rectangle-2d? 'origin vector2?))
|
||||
(define set-rectangle-2d-width!
|
||||
(guarded-mutator rectangle-2d? 'width (conjoin integer? positive?)))
|
||||
(define set-rectangle-2d-height!
|
||||
(guarded-mutator rectangle-2d? 'height (conjoin integer? positive?)))
|
||||
(define set-rectangle-2d-filled!
|
||||
(guarded-mutator rectangle-2d? 'filled boolean?))
|
||||
(define set-rectangle-2d-thickness!
|
||||
(guarded-mutator rectangle-2d? 'thickness (conjoin integer? positive?)))
|
||||
|
||||
(export triangle-2d? make-triangle-2d triangle-2d-vertex-1
|
||||
triangle-2d-set-vertex-1! triangle-2d-vertex-2 triangle-2d-set-vertex-2!
|
||||
triangle-2d-vertex-3 triangle-2d-set-vertex-3! triangle-2d-filled set-triangle-2d-filled!)
|
||||
(define-record-type <triangle-2d>
|
||||
(int:make-triangle-2d vertex-1 vertex-2 vertex-3 filled)
|
||||
triangle-2d?
|
||||
|
|
@ -375,11 +409,41 @@
|
|||
(vertex-3 triangle-2d-vertex-3 int:set-triangle-2d-vertex-3!)
|
||||
(filled triangle-2d-filled int:set-triangle-2d-filled!))
|
||||
|
||||
(define (make-triangle-2d vertex-1 vertex-2 vertex-3 filled)
|
||||
(assert (vector2? vertex-1))
|
||||
(assert (vector2? vertex-2))
|
||||
(assert (vector2? vertex-3))
|
||||
(assert (boolean? filled))
|
||||
(int:make-triangle-2d vertex-1 vertex-2 vertex-3 filled))
|
||||
|
||||
(define set-triangle-2d-vertex-1!
|
||||
(guarded-mutator triangle-2d? 'vertex-1 vector2?))
|
||||
(define set-triangle-2d-vertex-2!
|
||||
(guarded-mutator triangle-2d? 'vertex-2 vector2?))
|
||||
(define set-triangle-2d-vertex-3!
|
||||
(guarded-mutator triangle-2d? 'vertex-3 vector2?))
|
||||
(define set-triangle-2d-vertex-filled!
|
||||
(guarded-mutator triangle-2d? 'filled boolean?))
|
||||
|
||||
;; Visual component
|
||||
(export visual-2d? make-visual-2d visual-2d-draw set-visual-2d-draw!
|
||||
visual-2d-color set-visual-2d-color! visual-2d-layer set-visual-2d-layer!)
|
||||
(define-record-type <visual-2d>
|
||||
(int:make-visual-2d draw color layer)
|
||||
visual-2d?
|
||||
(draw visual-2d-draw int:set-visual-2d-draw!) ;; NOTE: Typing here: pixel-2d, line-2d, circle-2d, rectangle-2d, triangle-2d etc
|
||||
(color visual-2d-color int:set-visual-2d-color!)
|
||||
(layer visual-2d-layer int:set-visual-2d-layer!))
|
||||
|
||||
(define (make-visual-2d draw color layer)
|
||||
(assert ((conjoin triangle-2d? rectangle-2d? circle-2d? line-2d? pixel-2d?) draw))
|
||||
(assert (color? color))
|
||||
(assert (integer? layer)))
|
||||
|
||||
(define set-visual-2d-draw!
|
||||
(guarded-mutator visual-2d? 'draw (conjoin triangle-2d? rectangle-2d? circle-2d? line-2d? pixel-2d?)))
|
||||
(define set-visual-2d-color!
|
||||
(guarded-mutator visual-2d? 'color color?))
|
||||
(define set-visual-2d-layer!
|
||||
(guarded-mutator visual-2d? 'layer integer?))
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue