You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.2 KiB
Racket
30 lines
1.2 KiB
Racket
#lang pitfall/racket
|
|
(provide GlyphPosition)
|
|
|
|
;; Represents positioning information for a glyph in a GlyphRun.
|
|
(define-subclass object% (GlyphPosition
|
|
;; The amount to move the virtual pen in the X direction after rendering this glyph.
|
|
[xAdvance 0]
|
|
;; The amount to move the virtual pen in the Y direction after rendering this glyph.
|
|
[yAdvance 0]
|
|
;; The offset from the pen position in the X direction at which to render this glyph.
|
|
|
|
[xOffset 0]
|
|
;; The offset from the pen position in the Y direction at which to render this glyph.
|
|
[yOffset 0]
|
|
[advanceWidth 0])
|
|
|
|
(as-methods
|
|
scale)
|
|
)
|
|
|
|
|
|
(define/contract (scale this factor)
|
|
(number? . ->m . (is-a?/c GlyphPosition))
|
|
(set-field! xAdvance this (* factor (· this xAdvance)))
|
|
(set-field! yAdvance this (* factor (· this yAdvance)))
|
|
(set-field! xOffset this (* factor (· this xOffset)))
|
|
(set-field! yOffset this (* factor (· this yOffset)))
|
|
(set-field! advanceWidth this (* factor (· this advanceWidth)))
|
|
this)
|