On this page:
cache-image-snip%
get-argb
get-argb-proc
get-argb/ no-compute
get-bitmap
get-dc-proc
get-pinhole
get-size
snip-class
make-argb
argb-vector
argb-width
argb-height
argb?
overlay-bitmap
build-bitmap
flatten-bitmap
argb->cache-image-snip
argb->bitmap
Version: 4.1

3 Cache-image Snip

 (require mrlib/cache-image-snip)

The mrlib/cache-image-snip library provides the core data structure for DrScheme’s "image.ss" teachpack. Images in the "image.ss" 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: snip%

(send a-cache-image-snip get-argb)  argb?

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.

(send a-cache-image-snip get-bitmap)

  (or/c false/c (is-a?/c bitmap%))

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.

(send a-cache-image-snip get-dc-proc)

  (or/c false/c ((is-a?/c dc<%>) real? real? -> void?))

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.

snip-class : (is-a?/c snip-class%)

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.

(argb? v)  boolean?

  v : any/c

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 new cache-image-snip% based on the contents of argb, using dx and dy as the pinhole.

(argb->bitmap argb)  (or/c false/c (is-a?/c bitmap%))

  argb : argb?

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.