]> gitweb.factorcode.org Git - factor.git/blob - basis/ui/images/images.factor
basis: Load images.{tiff,png} by default for FreeBSD. Add platforms back.
[factor.git] / basis / ui / images / images.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs cache combinators images.loader kernel
4 memoize namespaces opengl.textures sequences system
5 ui.gadgets.worlds vocabs ;
6 IN: ui.images
7
8 TUPLE: image-name path ;
9
10 C: <image-name> image-name
11
12 MEMO: cached-image ( image-name -- image ) path>> load-image ;
13
14 <PRIVATE
15
16 : image-texture-cache ( world -- texture-cache )
17     [ [ <cache-assoc> ] unless* ] change-images images>> ;
18
19 PRIVATE>
20
21 : rendered-image ( image-name -- texture )
22     world get image-texture-cache
23     [ cached-image { 0 0 } <texture> ] cache ;
24
25 : draw-image ( image-name -- )
26     rendered-image draw-texture ;
27
28 : draw-scaled-image ( dim image-name -- )
29     rendered-image draw-scaled-texture ;
30
31 : image-dim ( image-name -- dim )
32     cached-image dim>> ;
33
34 {
35     { [ os macosx? ] [ "images.loader.cocoa" require ] }
36     { [ os windows?  ] [ "images.loader.gdiplus" require ] }
37     { [ os { freebsd } member? ] [
38         "images.png" require
39         "images.tiff" require
40     ] }
41     [ "images.loader.gtk" require ]
42 } cond