Artifact b01bbbfe5d1e59f2eefa0494a2a03590046ddada:


0000: 23 6c 61 6e 67 20 72 61 63 6b 65 74 2f 62 61 73  #lang racket/bas
0010: 65 0a 28 72 65 71 75 69 72 65 0a 20 66 66 69 2f  e.(require. ffi/
0020: 75 6e 73 61 66 65 0a 20 22 62 61 73 65 2e 72 6b  unsafe. "base.rk
0030: 74 22 29 0a 0a 28 64 65 66 69 6e 65 20 6c 69 62  t")..(define lib
0040: 63 64 2d 6e 61 74 69 76 65 0a 20 20 28 63 61 73  cd-native.  (cas
0050: 65 20 28 73 79 73 74 65 6d 2d 74 79 70 65 20 27  e (system-type '
0060: 6f 73 29 0a 20 20 20 20 5b 28 75 6e 69 78 20 6d  os).    [(unix m
0070: 61 63 6f 73 78 29 0a 20 20 20 20 20 28 66 66 69  acosx).     (ffi
0080: 2d 6c 69 62 20 22 6c 69 62 63 64 78 31 31 22 29  -lib "libcdx11")
0090: 5d 0a 20 20 20 20 5b 28 77 69 6e 64 6f 77 73 29  ].    [(windows)
00a0: 0a 20 20 20 20 20 28 66 66 69 2d 6c 69 62 20 22  .     (ffi-lib "
00b0: 63 64 22 29 5d 0a 20 20 20 20 5b 65 6c 73 65 0a  cd")].    [else.
00c0: 20 20 20 20 20 28 66 66 69 2d 6c 69 62 20 22 6c       (ffi-lib "l
00d0: 69 62 63 64 22 29 5d 29 29 0a 0a 3b 3b 20 7b 7b  ibcd")]))..;; {{
00e0: 7b 20 43 6f 6e 74 65 78 74 20 74 79 70 65 73 0a  { Context types.
00f0: 0a 28 64 65 66 69 6e 65 20 63 6f 6e 74 65 78 74  .(define context
0100: 3a 69 6d 61 67 65 0a 20 20 28 28 67 65 74 2d 66  :image.  ((get-f
0110: 66 69 2d 6f 62 6a 20 22 63 64 43 6f 6e 74 65 78  fi-obj "cdContex
0120: 74 49 6d 61 67 65 22 20 6c 69 62 63 64 2d 6e 61  tImage" libcd-na
0130: 74 69 76 65 20 28 5f 66 75 6e 20 2d 3e 20 5b 63  tive (_fun -> [c
0140: 6f 6e 74 65 78 74 20 3a 20 5f 63 6f 6e 74 65 78  ontext : _contex
0150: 74 5d 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 20  t]))))..(define 
0160: 63 6f 6e 74 65 78 74 3a 64 6f 75 62 6c 65 2d 62  context:double-b
0170: 75 66 66 65 72 0a 20 20 28 28 67 65 74 2d 66 66  uffer.  ((get-ff
0180: 69 2d 6f 62 6a 20 22 63 64 43 6f 6e 74 65 78 74  i-obj "cdContext
0190: 44 42 75 66 66 65 72 22 20 6c 69 62 63 64 2d 6e  DBuffer" libcd-n
01a0: 61 74 69 76 65 20 28 5f 66 75 6e 20 2d 3e 20 5b  ative (_fun -> [
01b0: 63 6f 6e 74 65 78 74 20 3a 20 5f 63 6f 6e 74 65  context : _conte
01c0: 78 74 5d 29 29 29 29 0a 0a 28 70 72 6f 76 69 64  xt]))))..(provid
01d0: 65 0a 20 63 6f 6e 74 65 78 74 3a 69 6d 61 67 65  e. context:image
01e0: 20 63 6f 6e 74 65 78 74 3a 64 6f 75 62 6c 65 2d   context:double-
01f0: 62 75 66 66 65 72 29 0a 0a 3b 3b 20 7d 7d 7d 0a  buffer)..;; }}}.