Mercurial > pub > dyncall > bindings
comparison R/rdyncall/demo/ttf.R @ 0:0cfcc391201f
initial from svn dyncall-1745
| author | Daniel Adler |
|---|---|
| date | Thu, 19 Mar 2015 22:26:28 +0100 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:0cfcc391201f |
|---|---|
| 1 # Package: rdyncall | |
| 2 # File: demo/ttf.R | |
| 3 # Description: TrueType Font loading and drawing via SDL and SDL_ttf. | |
| 4 | |
| 5 dynport(SDL_ttf) | |
| 6 | |
| 7 fbSurf <- NULL | |
| 8 textSurf <- NULL | |
| 9 | |
| 10 numTexts <- 10 | |
| 11 | |
| 12 init <- function() | |
| 13 { | |
| 14 status <- TTF_Init() | |
| 15 | |
| 16 if (status != 0) { | |
| 17 stop(paste("TTF_Init failed: ", TTF_GetError(), sep="")) | |
| 18 } | |
| 19 | |
| 20 # tryPaths <- c("/Library/Fonts","/usr/X11R7","/usr/X11R6") | |
| 21 # tryFonts <- c("Sathu.ttf", "Vera.ttf") | |
| 22 | |
| 23 font <- TTF_OpenFont("/usr/X11R7/lib/X11/fonts/TTF/Vera.ttf",48) | |
| 24 # Library/Fonts/Sathu.ttf",48) | |
| 25 if (is.nullptr(font)) { | |
| 26 stop(paste("TTF_OpenFont failed: ", TTF_GetError(), sep="")) | |
| 27 } | |
| 28 | |
| 29 color <- new.struct(SDL_Color) | |
| 30 color$r <- color$g <- color$b <- 255 | |
| 31 textSurf <<- TTF_RenderText_Solid(font, "Hello World.") | |
| 32 | |
| 33 SDL_Init(SDL_INIT_VIDEO) | |
| 34 fbSurf <<- SDL_SetVideoMode(256,256,32,SDL_DOUBLEBUF) | |
| 35 | |
| 36 displace <<- rnorm(numTexts*2) | |
| 37 } | |
| 38 | |
| 39 main <- function() | |
| 40 { | |
| 41 | |
| 42 rect <- new.struct(SDL_Rect) | |
| 43 | |
| 44 rect$x <- 0 | |
| 45 rect$y <- 0 | |
| 46 rect$w <- textSurf$w | |
| 47 rect$h <- textSurf$h | |
| 48 | |
| 49 rect2 <- rect | |
| 50 | |
| 51 evt <- new.struct(SDL_Event) | |
| 52 | |
| 53 quit <- FALSE | |
| 54 | |
| 55 distance <- 0 | |
| 56 | |
| 57 while(!quit) { | |
| 58 | |
| 59 SDL_FillRect(fbSurf, as.struct( as.extptr(NULL), "SDL_Rect" ), 0xFFFFFFL) | |
| 60 rect | |
| 61 i <- 1 | |
| 62 while(i < numTexts*2) { | |
| 63 rect2$x <- rect$x + distance * displace[i] | |
| 64 rect2$y <- rect$y + distance * displace[i+1] | |
| 65 i <- i + 2 | |
| 66 SDL_BlitSurface(textSurf, as.struct(as.extptr(NULL),"SDL_Rect"),fbSurf,rect2) | |
| 67 } | |
| 68 SDL_Flip(fbSurf) | |
| 69 | |
| 70 distance <- distance + 1 | |
| 71 | |
| 72 while ( SDL_PollEvent(evt) ) { | |
| 73 if ( evt$type == SDL_QUIT ) | |
| 74 quit <- TRUE | |
| 75 else if (evt$type == SDL_MOUSEBUTTONDOWN ) { | |
| 76 rect$x <- evt$button$x | |
| 77 rect$y <- evt$button$y | |
| 78 distance <- 0 | |
| 79 } | |
| 80 } | |
| 81 | |
| 82 } | |
| 83 | |
| 84 } | |
| 85 | |
| 86 run <- function() | |
| 87 { | |
| 88 init() | |
| 89 main() | |
| 90 } | |
| 91 | |
| 92 |
