3 Cache-image Snip
The mrlib/cache-image-snip library provides the core
data structure for DrRacket’s "image.rkt" teachpack. Images in
the "image.rkt" teachpack are instances of the
cache-image-snip% class.
The library also defines a new type, argb, that represents a bitmap, but with alpha values. It has a maker, two selectors, and a predicate.
cache-image-snip% : class? |
superclass: image-snip% |
The cache-image-snip% class is a subclass of
image-snip% simply so that its instances can be compared with
image-snip% using equal?. All image-snip%
functionality is overridden or ignored.
(send a-cache-image-snip equal-to? snip equal?) → boolean? snip : (is-a?/c image-snip%) equal? : (any/c any/c . -> . boolean?) Calls the other-equal-to? method of snip if it is also a cache-image-snip% instance, otherwise calls the other-equal-to? of a-cache-image-snip.Returns a pixel array for this image, forcing it to be computed.
(send a-cache-image-snip get-argb-proc) → (argb? exact-integer? exact-integer? . -> . void?) Returns a procedure that fills in an argb with the contents of this image at the given offset
(send a-cache-image-snip get-argb/no-compute) → (or/c false/c argb?) Returns a pixel array for this image or #f if it has not been computed yet.Overrides get-bitmap in image-snip%.Builds (if not yet built) a bitmap corresponding to this snip and returns it.If the width or the height of the snip is 0, this method return #f.
Either returns false, or a procedure that draws the contents of this snip into a dc.
(send a-cache-image-snip get-pinhole) →
real? real? Returns the pinhole coordinates for this image, counting from the top-left of the image.
(send a-cache-image-snip get-size)
→
exact-nonnegative-integer? exact-nonnegative-integer? Returns the width and height for the image.
(send a-cache-image-snip other-equal-to? snip equal?) → boolean? snip : (is-a?/c image-snip%) equal? : (any/c any/c . -> . boolean?) Overrides other-equal-to? in image-snip%.Refines the comparison of other-equal-to? in image-snip% to exactly match alpha channels.
This snipclass is used for saved cache image snips.
(make-argb vectorof width height) → argb? vectorof : (integer-in 0 255) width : exact-nonnegative-integer? height : exact-nonnegative-integer?
Constructs a new argb value. The vector has four entries
for each pixel, an alpha, red, green, and blue value. The
int specifies the width of the image; the height is the
size of the vector, divided by 4, divided by the width.
(argb-vector argb) → (vectorof (integer-in 0 255)) argb : argb?
Extracts the vector from argb.
(argb-width argb) → exact-nonnegative-integer? argb : argb?
Extracts the width from argb.
(argb-height argb) → exact-nonnegative-integer? argb : argb?
Extracts the height from argb.
Returns #t if v is an argb, #f otherwise.
(overlay-bitmap dest dx dy img mask) → void? dest : argb? dx : exact-integer? dy : exact-integer? img : (is-a?/c bitmap%) mask : (is-a?/c bitmap%)
Changes argb, overlaying img with masking based on
mask at (dx, dy) from the top-left.
(build-bitmap draw width height) → (is-a?/c bitmap%) draw : ((is-a?/c dc<%>) . -> . any) width : (integer-in 1 10000) height : (integer-in 1 10000)
Builds a bitmap of size width by height, using the
procedure draw to render the bitmap content into the given
dc<%>.
(flatten-bitmap bitmap) → (is-a?/c bitmap%) bitmap : (is-a?/c bitmap%)
Builds a new bitmap that flattens the original bitmap
with its mask (as determined by get-loaded-mask in bitmap%), producing a bitmap that has no mask, and looks
the way that bitmap would draw (when drawn with the mask) onto a
white background.
(argb->cache-image-snip argb dx dy) → (is-a?/c cache-image-snip%) argb : argb? dx : real? dy : real?
Builds a bitmap that draws the same way as argb; the alpha
pixels are put into the bitmap’s get-loaded-mask
bitmap.
If the width or height of argb is 0, this returns #f.